微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bio.Align 使用 smith-waterman 局部对齐导致内存泄漏

如何解决Bio.Align 使用 smith-waterman 局部对齐导致内存泄漏

我有一份 DNA 序列的排列列表,其中获得了序列对的比对分数。当排列列表很大时,我不知道为什么这个过程会导致内存泄漏,因为在每次交互中都创建了对齐器对象。这里的分数计算示例:

for sequence1,sequence2 in sequence_permutation:
   score = self.__calculate_sequence_similarity(sequence1,sequence2)
   alignments[sequence1].append(sequence2)

save_aligments(alignments)

def __calculate_score_alignment(self,sequence1,sequence2): 
   from Bio.Align import substitution_matrices
   from Bio import Align
   from Bio.SubsMat import MatrixInfo

   aligner = Align.PairwiseAligner()
   aligner.mode = 'local'
   aligner.substitution_matrix = substitution_matrices.load('BLOSUM62')
   return aligner.score(sequence1,sequence2)


def __calculate_sequence_similarity(self,sequence1: str,sequence2: str) -> float:         
   if not sequence1 and not sequence2:
      return -1

   score = self.__calculate_score_alignment(sequence1,sequence2)
   score1 = self.__calculate_score_alignment(sequence1,sequence1)
   score2 = self.__calculate_score_alignment(sequence2,sequence2)

   return score / (math.sqrt(score1) * math.sqrt(score2))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。