Я использую Biopython, чтобы открыть большой файл fasta с одной записью (514 мегабаз), чтобы я мог извлечь последовательность ДНК из определенных координат. Возвращать последовательность достаточно медленно, и мне просто интересно, есть ли более быстрый способ выполнить эту задачу, которую я не понял. Скорость не будет проблемой для одного или двух попаданий, но я перебираю список из 145 000 координат, и это займет несколько дней :/
import sys
from Bio import SeqIO
from Bio.Seq import Seq
def get_seq(fasta, cont_start, cont_end, strand):
f = fasta
start_pos = cont_start
end_pos = cont_end
for seq_record in SeqIO.parse(f, "fasta"):
if strand == '-' :
return seq_record.seq[int(start_pos):int(end_pos)].reverse_complement()
elif strand == '+':
return seq_record.seq[int(start_pos):int(end_pos)]
else :
print ' Invalid syntax!
sys.exit(1)
yield
- это просто вернет часть последовательности для первогоseq_record
. - person David Cain   schedule 10.06.2013f=fasta
здесь, так что это приведет к тому, что одно и то же значение будет передано дважды). - person David Cain   schedule 10.06.2013