在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。
答案 0 :(得分:2)
问题是,如果描述中包含“人类腺病毒”,您只想增加索引,但是您要枚举所有内容。
如果我们修改你的代码示例只是在找到匹配时增加索引,我们得到:
`'body':
'shift-cmd-W': 'unset!'
'ctrl-shift-W': 'unset!'
顺便问一下,你为什么打开一个文件写作,但从不写信?