2016-04-15 13 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