#python #bioinformatics #biopython #sequence-alignment
#питон #биоинформатика #биопитон #выравнивание последовательности
Вопрос:
У меня есть список перестановок последовательностей ДНК, в которых получается оценка выравнивания пар последовательностей. Я не знаю, почему этот процесс вызывает утечку памяти, когда список перестановок большой, потому что объект выравнивания создается в каждом взаимодействии. Вот пример подсчета баллов:
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))
Комментарии:
1. что такое
alignments
? A dict / defaultdict? Может ли это быть причиной увеличения объема памяти?2. Выравнивания — это диктат, но выравнивания — это не проблема, потому что я пытался сохранять одно за другим, и объем памяти значительно увеличился. Я предположил, что существует внутренний объект, который неправильно уничтожается. Итак, я решил использовать другую библиотеку (skbio), и проблема разрешилась! Спасибо!