有人知道如何使用BIopython或BioJAVA从FTP ncbi自动搜索和解析gbk文件吗?我在BIojava中搜索了实用程序,但没有找到任何实用程序。我也尝试过bioppython,这是我的代码:
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或bioppython中执行搜索?否则我将不得不从头开始自动化这个过程。
谢谢。
方法是使用efetch接口指定id:
Entrez.efetch(db="nucleotide", id=<ACCESSION ID HERE>, rettype="gb", retmode="text")
使用您使用的搜索词返回太多匹配项,所有这些都是您正在下载的。查看48个不同的生物项目与您的搜索词在这里:
http://www.ncbi.nlm.nih.gov/bioproject/?term=Mycobacterium鸟结核+根据经验,获得您想要的最准确的方法是使用ACCESSION ID。
如果你想以自动的方式动态地在NCBI中搜索这些信息,你可以用与EFetch使用search接口相同的方式按名称进行搜索。这样,您可以获得访问id,然后使用此列表获取核苷酸信息(或任何您需要的信息)与EFetch。
http://www.ncbi.nlm.nih.gov/books/NBK25499/_chapter4_ESearch_
Entrez E-Utilities非常灵活,尽管您确实需要过滤结果以只获得您需要的数据。
然而,如果你要对这些数据做进一步的分析,而且你不需要非常了解最新版本的序列,也不需要动态获取不同类型的数据,也许你最好从ftp下载你需要的数据,并在本地处理/过滤它。这可能比对Entrez执行查询要快(在我看来,批量查询时速度有点慢)。