使用Biojava或Biopython检索某些生物的全基因组genbank文件

时间:2014-03-14 11:38:44

标签: bioinformatics biopython ncbi biojava

有没有人知道如何使用BIopython或BioJAVA从FTP ncbi自动搜索和解析gbk文件。我在BIojava中搜索了实用程序,但没有找到任何实用程序。我也试过BioPython,这是我的代码:

from Bio import Entrez
Entrez.email = "test@yahoo.com"
Entrez.tool = "MyLocalScript"
handle = Entrez.esearch(db="nucleotide", term="Mycobacterium avium[Orgn]")
record = Entrez.read(handle)
print record
print record["Count"]
id_L = record["IdList"]
print id_L
print len(id_L)

然而,只有3种鸟分枝杆菌(全基因组序列和完全注释),我得到的结果是59897.

任何人都可以告诉我如何在BioJava或BioPython中执行搜索。否则,我将不得不从头开始自动执行此过程。

谢谢。

2 个答案:

答案 0 :(得分:1)

我们这样做的方法是专门使用efetch接口指定id:

Entrez.efetch(db="nucleotide", id=<ACCESSION ID HERE>, rettype="gb", retmode="text")

使用搜索词(例如您使用的词)会返回太多匹配项,所有这些都是您正在下载的。在此处查看48个与您的搜索字词不同的生物项目:

http://www.ncbi.nlm.nih.gov/bioproject/?term=Mycobacterium+avium

根据经验,获得所需内容的最准确方法是使用ACCESSION ID。

答案 1 :(得分:0)

如果您想以自动方式动态搜索NCBI以获取此信息,您可以按照与使用ESearch界面的EFetch相同的方式进行名称搜索。通过这种方式,您可以获取访问ID,然后使用此列表通过EFetch获取核苷酸信息(或您需要的任何信息)。

http://www.ncbi.nlm.nih.gov/books/NBK25499/#_chapter4_ESearch_

Entrez E-Utilities非常灵活,但您需要过滤结果才能获得所需的数据。

但是,如果您要对这些数据进行进一步分析,并且您不需要了解最新版本的序列,也不需要动态获取不同类型的数据,也许它您只需从ftp下载所需数据并在本地处理/过滤它就更好了。这可能比对Entrez执行查询更快(在我看来批量查询时有点慢)。