首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找蛋白质基序

寻找蛋白质基序
EN

Code Review用户
提问于 2017-09-06 00:00:27
回答 2查看 1.5K关注 0票数 4

我已经解决了这个生物信息学问题多肉的部分,虽然我觉得有点笨拙。特别是,我把fasta信息处理成了Biopython's SeqIO.parse()将接受的形式,它会尖叫着进行优化。

所以我要问你一个问题。如何更好地将HTTP响应从Uniprot保存到SeqIO.parse()容易解析的内容中?

代码语言:javascript
复制
'''
Stephen Wist 
to solve this problem: http://rosalind.info/problems/mprt/
'''

import sys, re # IO and motif finding
import urllib3 # get protein fasta from uniprot
from Bio import SeqIO, Seq # fasta parsing and manipulation

if len(sys.argv)<2: 
    print("need at least one uniprotID")

f = open("ros.fa", "w")
http = urllib3.PoolManager() # urllib3 takes care of stuff here

# get fasta of all given uniprotIDs
for item in sys.argv[1:]:
    url = "http://www.uniprot.org/uniprot/" + item + ".fasta"
    req = http.request("GET", url)
    byte_string = req.data 
    string = byte_string.decode("utf-8")
    f.write(string) # BioPython SeqIO.parse() won't work on the 
                    # decoded byte_string

print(  "\nreq.data:\n", req.data,
        "\ndecoded req.data:\n", string)

f.close()
pattern = re.compile("[N][^P][S|T][^P]")
for seq in SeqIO.parse("ros.fa", "fasta"):
# keeping this here, it might be useful
# [(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]
    for match in re.finditer(pattern, str(seq.seq)):
        print(match.start(0) + 1)
EN

回答 2

Code Review用户

发布于 2017-09-06 02:14:06

在破解argv时,如果愿意,您有机会使用析解析解析

请将所有这些代码隐藏在def main():下,而不是创建许多顶级的全局代码,比如f

与其使用f = open() ... f.close(),不如用这样的方式来表达:

代码语言:javascript
复制
with open('ros.fa', 'w') as f:
    ...

你可能会有一些评论。标识符string是准确的,但有点模糊。最好是删除临时变量:

代码语言:javascript
复制
f.write(req.data.decode('utf-8'))

总的来说,这段代码看起来像是完成了任务。

票数 1
EN

Code Review用户

发布于 2017-09-06 16:11:48

在短时间内重复请求将在某些服务器上阻塞您的IP地址,即使您使用的是API。如果您最终想要扩展这条路由,您可能需要尝试下载全蛋白质组并将其解析到一个小块中,然后根据需要对其进行筛选和访问。这也将给你一个显着的性能提升。但是,随着时间的推移,您将需要更新数据库。

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

https://codereview.stackexchange.com/questions/174905

复制
相关文章

相似问题

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