Python/Biopython。使用蛋白质序列解析文件后,获取与单词匹配的序列的枚举列表

Python/Biopython。使用蛋白质序列解析文件后,获取与单词匹配的序列的枚举列表,python,loops,parsing,biopython,Python,Loops,Parsing,Biopython,在Python/Biopython中,我试图获得与字符串“humanadenovirus”匹配的蛋白质序列的枚举列表。下面代码的问题是,我得到了要解析的序列的枚举,但没有得到通过if循环过滤器的序列的枚举 使用正确语法编辑的代码: from Bio import SeqIO import sys sys.stdout = open("out_file.txt","w") for index, seq_record in enumerate(SeqIO.parse("in_file.txt"

在Python/Biopython中,我试图获得与字符串“humanadenovirus”匹配的蛋白质序列的枚举列表。下面代码的问题是,我得到了要解析的序列的枚举,但没有得到通过if循环过滤器的序列的枚举

使用正确语法编辑的代码:

from Bio import SeqIO
import sys  
sys.stdout = open("out_file.txt","w")

for index, seq_record in enumerate(SeqIO.parse("in_file.txt", "fasta")):
    if "Human adenovirus" in seq_record.description:

        print "%i]" % index, str(seq_record.description) 
        print str(seq_record.seq) + "\n"
这是输入文件的一部分:

>gi|927348286|gb|ALE15299.1| penton [Bottlenose dolphin adenovirus 1]
MQRPQQTPPPPYESVVEPLYVPSRYLAPSEGRNSIRYSQLPPLYD

>gi|15485528|emb|CAC67483.1| penton [Human adenovirus 2]
MQRAAMYEEGPPPSYESVVSAAPVAAALGSPFDAPLDPPFVPPRYLRPTGGRNSIRYSELAPLFDTTRVY
LVDNKSTDVASLNYQNDHSNFLTTVIQNNDY

>gi|1194445857|dbj|BAX56610.1| fiber, partial [Human mastadenovirus C]
FNPVYPYDTETGPPTVPFLTPPFVSPNG
我得到的输出文件如下所示:

2] gi|15485528|emb|CAC67483.1| penton [Human adenovirus 2]
MQRAAMYEEGPPPSYESVVSAAPVAAALGSPFDAPLDPPFVPPRYLRPTGGRNSIRYSELAPLFDTTRVY
LVDNKSTDVASLNYQNDHSNFLTTVIQNNDY

我希望通过过滤器的第一个序列获得枚举,从1]开始,而不是像前面显示的那样从2]开始。我知道我需要在if循环之后添加一个计数器,但是我已经尝试了许多替代方法,但没有得到所需的输出。这应该不难,我知道如何在Perl中完成,但不知道如何使用Python/Biopython。

问题是,如果描述包含“人类腺病毒”,您只想增加索引,但您正在枚举所有内容

如果我们修改您的代码示例,使其仅在找到匹配项时增加索引,则会得到以下结果:

from Bio import SeqIO
index = 0
with open("out_file.txt","w") as f:
    for seq_record in SeqIO.parse("in_file.txt", "fasta"):
        if "Human adenovirus" in seq_record.description:
            index += 1
            print "%i]" % index, str(seq_record.description) 
            print str(seq_record.seq) + "\n"

顺便说一句,为什么你要打开一个文件进行写入,却从不向其写入?

问题是,如果描述中包含“人类腺病毒”,你只想增加索引,但你正在枚举所有内容

如果我们修改您的代码示例,使其仅在找到匹配项时增加索引,则会得到以下结果:

from Bio import SeqIO
index = 0
with open("out_file.txt","w") as f:
    for seq_record in SeqIO.parse("in_file.txt", "fasta"):
        if "Human adenovirus" in seq_record.description:
            index += 1
            print "%i]" % index, str(seq_record.description) 
            print str(seq_record.seq) + "\n"
顺便说一句,为什么你要打开一个文件来写,却从来没有写过