2016-04-15 7 views
1

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

ответ

2

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

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