我试图使用生物巨蟒下载由特定机构排序的生物体列表中的所有蛋白质。我有有机体的名称和与每个有机体相关的生物项目;具体来说,我希望分析在最近的基因组序列中发现的蛋白质。我想大量下载蛋白质文件,用efetch尽可能友好的方式下载。我最近试图下载所有的蛋白质FASTA序列的相关有机体如下:
net_handle = Entrez.efetch(db="protein",
id=mydictionary["BioPROJECT"][i],
rettype="fasta")
每个有机体大约有3000到4500种蛋白质,所以使用研究和尝试一次提取每一种蛋白质是不现实的。此外,我想要一个FASTA文件,为每一个有机体,包括其所有的蛋白质。
不幸的是,当我运行这一行代码时,我会收到以下错误:urllib2.HTTPError: HTTP Error 400: Bad Request
。
对于我感兴趣的所有生物体,我不能简单地在它们的核苷酸数据库中找到它们的基因组序列,并下载“蛋白质编码序列”。
如何才能以一种不会使NCBI服务器超载的方式获得我想要的这些蛋白质序列?我希望我能在NCBI的web浏览器上复制我能做的事情:选择蛋白质数据库,搜索Bioproject编号,然后将所有找到的蛋白质序列保存到一个fasta文件中(在“发送到”下拉菜单下)
发布于 2014-06-20 22:20:52
尝试从帕特里克的FTP下载这个序列,它是一个金矿,首先它组织得更好,其次,数据比NCBI干净得多。顺便说一下,PATRIC得到了NIH的支持。
PATRIC包含了一些15000+基因组,并将它们的DNA、蛋白质、蛋白质编码区、EC、通路、genbank分别保存在不同的文件中。太方便了。看看你自己:
ftp://ftp.patricbrc.org/patric2。
我建议你先从所有的有机体中下载所有想要的文件,然后在你的硬盘上有了它们之后,再拿起你需要的文件。下面的python脚本一次下载PATRIC提供的ec批注文件(如果您有代理,需要在注释部分对其进行配置):
from ftplib import FTP
import sys, os
#######if you have proxy
####fill in you proxy ip here
#site = FTP('1.1.1.1')
#site.set_debuglevel(1)
#msg = site.login('anonymous@ftp.patricbrc.org')
site = FTP("ftp.patricbrc.org")
site.login()
site.cwd('/patric2/current_release/ec/')
bacteria_list = []
site.retrlines('LIST', bacteria_list.append)
output = sys.argv[1]
if not output.endswith("/"):
output += "/"
print "bacteria_list: ", len(bacteria_list)
for c in bacteria_list:
path_name = c.strip(" ").split()[-1]
if "PATRIC.ec" in path_name:
filename = path_name.split("/")[-1]
site.retrbinary('RETR ' + path_name, open(output + filename , 'w').write)
发布于 2013-09-13 20:16:49
虽然我对python没有经验,更别提生物巨蟒了,但是google快速搜索发现了一些值得你看的东西。
https://stackoverflow.com/questions/18794318
复制相似问题