рассчитать длину последовательности после добавления длины предыдущих последовательностей

Я хочу определить длину отдельных последовательностей в файле multifasta. Я получил этот код биопитона из руководства по био как:

from Bio import SeqIO
import sys
cmdargs = str(sys.argv)
for seq_record in SeqIO.parse(str(sys.argv[1]), "fasta"):
 output_line = '%s\t%i' % \
(seq_record.id, len(seq_record))
 print(output_line)

Мой входной файл выглядит так:

>Protein1
MNT
>Protein2
TSMN
>Protein3
TTQRT

И код дает:

Protein1        3
Protein2        4
Protein3        5

Но я хочу рассчитать длину последовательности после добавления длины предыдущих последовательностей. Это было бы так:

Protein1        1-3
Protein2        4-7
Protein3        8-12

Я не знаю, в какой из приведенных выше строк кода мне нужно изменить, чтобы получить этот результат. Буду признателен за любую помощь в этом вопросе, спасибо!!!!


person user2300042    schedule 27.07.2016    source источник


Ответы (1)


Легко просто получить общую длину:

from Bio import SeqIO
import sys
cmdargs = str(sys.argv)
total_len = 0
for seq_record in SeqIO.parse(str(sys.argv[1]), "fasta"):
    total_len += len(seq_record)
    output_line = '%s\t%i' % (seq_record.id, total_len))
    print(output_line)

Чтобы получить диапазон:

from Bio import SeqIO
import sys
cmdargs = str(sys.argv)
total_len = 0
for seq_record in SeqIO.parse(str(sys.argv[1]), "fasta"):
    previous_total_len = total_len
    total_len += len(seq_record)
    output_line = '%s\t%i - %i' % (seq_record.id, previous_total_len + 1, total_len)
    print(output_line)
person Aguy    schedule 27.07.2016