【问题标题】:Retrieving whole genome genbank files for some organism using Biojava or Biopython使用 Biojava 或 Biopython 检索某些生物的全基因组 genbank 文件
【发布时间】:2014-04-19 16:22:33
【问题描述】:

有没有人知道如何使用 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)

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

谁能告诉我如何在 BioJava 或 BioPython 中执行搜索。否则我将不得不从头开始自动化这个过程。

谢谢。

【问题讨论】:

标签: bioinformatics biopython ncbi biojava


【解决方案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。

【讨论】:

  • 问题是我只有细菌的属和种。我没有加入 ID,因此按名称搜索。
  • 那么你必须处理人们多年来所做并提交给 NCBI 的无数实验。 Genbank 事物的形态不断变化,对很多人来说正确的是相对的。没有将一个数据集置于另一个数据集之上的系统化管理过程。这会在搜索正确数据集的过程中挑战像您这样的机器人。
  • 谢谢。我想我必须使用 NCBI 提供的 ftp 服务来自动化这个过程。
【解决方案2】:

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

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

Entrez E-Utilities 非常灵活,尽管您确实需要过滤结果以仅获取您需要的数据。

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

【讨论】:

  • 谢谢。我所做的是,我使用我编写的程序自动搜索 ftp 服务。我输入我的属和种,程序在 Bacteria 文件夹的 ftp 目录中查找它并为我下载 gbk 文件。 Entrez 返回太多查询,因此不适合我的目的。再次感谢
  • 不客气。无论如何,你自己有一个更好的解决方案:)
猜你喜欢
  • 2016-12-01
  • 2016-03-05
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2014-10-22
相关资源
最近更新 更多