2016-07-27 31 views
0

Ich möchte Länge einzelner Sequenzen in einer Multifasta-Datei bestimmen. Ich habe diesen biopython Code aus dem Bio-Handbuch als:berechnen Sie die Länge einer Sequenz nach dem Hinzufügen der Länge der vorherigen Sequenzen

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) 

Meine Eingabedatei ist wie:

>Protein1 
MNT 
>Protein2 
TSMN 
>Protein3 
TTQRT 

Und der Code ergibt:

Protein1  3 
Protein2  4 
Protein3  5 

Aber ich will die Länge berechnen einer Sequenz nach dem Hinzufügen der Länge der vorherigen Sequenzen. Es wäre wie:

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

Ich weiß nicht, in welcher der oben genannten Zeile im Code, die ich ändern müssen, um diese Ausgabe zu erhalten. Ich würde mich über jede Hilfe bei diesem Thema freuen, danke !!!!

Antwort

0

Es ist nur einfach, die Gesamtlänge zu erhalten:

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) 

Um einen Bereich zu erhalten:

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

Excellent .. Vielen Dank u sehr viel .. nur einen Tippfehler zu erwähnen, in 'previos' und ein extra ')' .. Danke – user2300042