如何解决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 举报,一经查实,本站将立刻删除。