使用入藏号从ENA数据库的ftp服务器下载数据

时间:2016-02-24 16:00:52

标签: python r database ftp bioinformatics

我想下载ENA数据库(在ENA部分的基因组下)给出的一些生物的完整蛋白质序列,其中包含我所获得的信息,即大约2500个登录号。

我试图深入挖掘使用分类法部门在所有的ftp服务器中找到它们。但找不到任何相关的东西。逐个下载它们将不是一个理想的解决方案。

因此,如果您知道R或python中的任何包为我做这个,你们可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我认为我的这个旧剧本可能有用。

有一点需要注意的是,基因组是从NCBI而不是ENA下载的,但我认为很多这些数据库会将数据彼此同步。所以你仍然可以找到你想要的东西。

如果您特别只想从给定的入藏号(~2500)下载这些基因组,那么此可能不起作用(除非您可能在返回的search_results之前对其进行过滤下载; Entrez.efetch)。

#!/usr/bin/env python

from Bio import Entrez

search_term = raw_input("Organism name: ")

Entrez.email = "your_email@isp.com"   # required by NCBI
search_handle = Entrez.esearch(db="nucleotide", term=search_term, usehistory="y", property='complete genome')
search_results = Entrez.read(search_handle)
search_handle.close()

gi_list = search_results["IdList"]
count = int(search_results["Count"])
webenv = search_results["WebEnv"]
query_key = search_results["QueryKey"]

batch_size = 5    # download sequences in batches so NCBI doesn't time you out

with open("ALL_SEQ.fasta", "w") as out_handle:
    for start in range(0, count, batch_size):
        end = min(count, start+batch_size)
        print "Going to download record %i to %i" % (start+1, end)
        fetch_handle = Entrez.efetch(db="nucleotide", rettype="fasta", retmode="text",retstart=start, retmax=batch_size, webenv=webenv, query_key=query_key)
        data = fetch_handle.read()
        fetch_handle.close()
        out_handle.write(data)

print ("\nDownload completed")

答案 1 :(得分:0)

我找到了解决我的主观问题的方法:

curl -F accessions=@<input_file_path> http://www.ebi.ac.uk/ena/data/download?
display=<output_format> 
-o<output_file_name>