2016-07-27 62 views
0

我想确定multifasta文件中单个序列的长度。我得到这个biopython代码从生物手动为:在添加前面序列的长度后计算序列的长度

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 

我不知道这在我需要改变,以获取输出上面一行代码的。我很感谢在这个问题上的任何帮助,谢谢!

回答

0

这是很容易刚刚拿到总长度:

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) 
+0

优秀..谢谢ü非常..只要提到在“previos”一个错字和一个额外的')'..谢谢 – user2300042