首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Biopython使用蛋白质序列解析文件后获得匹配单词的列举序列列表

Python/Biopython使用蛋白质序列解析文件后获得匹配单词的列举序列列表
EN

Stack Overflow用户
提问于 2017-08-31 15:12:06
回答 1查看 134关注 0票数 0

在Python/Biopython中,我试图获得一个与字符串"Human“匹配的蛋白质序列的枚举列表。下面的代码的问题是,我得到要解析的序列的枚举,而不是那些通过if循环过滤器的序列。

具有正确语法的编辑代码:

代码语言:javascript
复制
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"

这是输入文件的一部分:

代码语言:javascript
复制
>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

我得到的输出文件如下所示:

代码语言:javascript
复制
2] gi|15485528|emb|CAC67483.1| penton [Human adenovirus 2]
MQRAAMYEEGPPPSYESVVSAAPVAAALGSPFDAPLDPPFVPPRYLRPTGGRNSIRYSELAPLFDTTRVY
LVDNKSTDVASLNYQNDHSNFLTTVIQNNDY

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 15:29:53

问题是,如果描述包含"Human“,则只需要增加索引,但要枚举所有内容。

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

代码语言:javascript
复制
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"

顺便问一下,你为什么要打开一个文件来写,却从不给它写信?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45984804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档