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

时间:2017-08-31 15:12:07

标签: python loops parsing biopython

在Python / Biopython中,我试图得到一个与字符串"人类腺病毒"匹配的蛋白质序列的列举列表。下面的代码的问题是我得到了要解析的序列的枚举,但没有通过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。

1 个答案:

答案 0 :(得分:2)

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

如果我们修改你的代码示例只是在找到匹配时增加索引,我们得到:

`'body':
  'shift-cmd-W': 'unset!'
  'ctrl-shift-W': 'unset!'
顺便问一下,你为什么打开一个文件写作,但从不写信?