Ncbi蛋白质数据库,如何从特定生物项目中获取蛋白质序列(python脚本)

时间:2013-11-14 13:14:35

标签: python ncbi protein-database

我正在尝试从特定生物项目的NCBI数据库中检索编码蛋白质序列。这可以使用Web浏览器以某种方式实现。例如,您可以找到您感兴趣的特定生物项目并“点击”相关蛋白质:   http://www.ncbi.nlm.nih.gov/genome/proteins/994?project_id=207383允许您查看BioProject“207383”和Genome“994”中的所有蛋白质。我想使用python自动获取蛋白质序列。

为了做到这一点,我使用了NCBI的“电子工具”。主要是“elink.fcgi?”它允许从数据库的特定UID链接数据库的所有UID(比如说“蛋白质”)(比如说BioProject UID)。所以这是我的entrez URL请求:
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=bioproject&linkname=bioproject_protein&id=207383
然后我获得了一个Protein UID列表,这是我需要的那个很好,我的下一个使用efetch.fcgi的请求? “E-效用”。这个请求将允许我得到我需要的一切。

好的,所以一切都很好,一切都很好但是我从“elink.fcgi”得到的蛋白质UID的数量是多少?请求与基于手动web broswer的搜索显示的蛋白质数量不同。更糟糕的是,在查询这些问题的起源后,您会看到更高的分类群中缺少序列或序列(这些序列也不以任何方式与BioProject相关联)。

这是一个例子:当python请求得到3957 Protein UID时,这篇文章的第一个链接显示了4014个序列。

我尝试了一些其他方法,例如从分类UID中获取所有蛋白质UID。这通常会给你更多的顺序,因为有不同的生物项目(也给你一些不同的名称和相同的Fasta双打)。

有没有办法做到这一点,一个迁移工作?

1 个答案:

答案 0 :(得分:2)

我也觉得与NCBI合作非常令人沮丧。令我惊讶的是,这样的数据源甚至没有为我们提供简洁的下载方式。相反,它提供了一些可怕的交叉链接,让用户自己解决整个问题。

我的解决方案来自这篇文章

How to Download Bacterial Genomes Using the Entrez API

确保将数据库更改为“nuccore”并将其更改为“fasta_cds_aa”。还要检查下载的fasta文件中的分类标识,以确保它完全是你所要求的压力(这最后一个让我很烦恼,很难学到的东西)。