У меня есть тысячи последовательностей ДНК в диапазоне от 100 до 5000 bp, и мне нужно выровнять и рассчитать показатель идентификации для указанных пар. Biopython pairwise2 отлично справляется, но только для коротких последовательностей, и когда размер последовательности становится больше 2 КБ, он показывает сильную утечку памяти, которая приводит к «MemoryError», даже если используются опции «score_only» и «one_alignment_only»!Выравнивание последовательностей ДНК внутри python
whole_coding_scores={}
from Bio import pairwise2
for genes in whole_coding: # whole coding is a <25Mb dict providing DNA sequences
alignment=pairwise2.align.globalxx(whole_coding[genes][3],whole_coding[genes][4],score_only=True,one_alignment_only=True)
whole_coding_scores[genes]=alignment/min(len(whole_coding[genes][3]),len(whole_coding[genes][4]))
Результат вернулся из суперкомпьютеров:
Max vmem = 256.114G #Memory usage of the script
failed assumedly after job because:
job 4945543.1 died through signal XCPU (24)
Я знаю, что есть и другие инструменты для выравнивания, но в основном они могут просто написать счет в выходной файл, который нужно читать и проанализирован снова для получения и используя оценки выравнивания. Есть ли какой-либо инструмент, который может выровнять последовательности и возвращать оценку выравнивания внутри среды python, как это делает parwise2, но без утечки памяти?
К сожалению, NWalign не работает на Python3! – user3015703