Python: как вывести заголовок FASTA или цифру индекса хромосомы в зависимости от местоположения?

У меня есть код, который помогает мне перемещать окно размера 5, когда оно движется слева направо. Файл находится в формате fasta с заголовком>, например, хромосома, за которым следует индекс хромосомы. Я хотел бы вывести порядковый номер заголовка согласно точному индексу. Может кто-нибудь мне помочь?

Код

from Bio import SeqIO

with open("test1_out.fasta","w") as f:
        for seq_record in SeqIO.parse("test1.fasta", "fasta"):
            for i in range(len(seq_record.seq) - 4) :
               f.write(">" + str(seq_record.id) + "\n")
               f.write(str(seq_record.seq[i:i+5]) + "\n")

test1.fasta

>chr1:1-8 
ATCGCGTC
>chr2:1-10
ATTTTCGCGA

Фактический выход

>chr1:1-8
ATCGC
>chr1:1-8
TCGCG
>chr1:1-8
CGCGT
>chr1:1-8
GCGTC
>chr2:1-10
ATTTT
>chr2:1-10
TTTTC
>chr2:1-10
TTTCG
>chr2:1-10
TTCGC
>chr2:1-10
TCGCG
>chr2:1-10
CGCGA

Желаемый результат

>chr1:1-5
ATCGC
>chr1:2-6
TCGCG
>chr1:3-7
CGCGT
>chr1:4-8
GCGTC
>chr2:1-5
ATTTT
>chr2:2-6
TTTTC
>chr2:3-7
TTTCG
>chr2:4-8
TTCGC
>chr2:5-9
TCGCG
>chr2:6-10
CGCGA

person Xiong89    schedule 15.04.2016    source источник


Ответы (1)


Вам просто нужно изменить заголовок, написав:

seq_name = seq_record.id.split(":")[0]  # Get the "chr1"
for i in range(len(seq_record.seq) - 4):        
    seq_coords = "{}-{}".format(i + 1, i + 5)  # Make the coordinates

    f.write(">" + seq_name + ":" + seq_coords + "\n")  # Print them both
person xbello    schedule 15.04.2016