问题描述
我有一份 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 (将#修改为@)