1

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

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

好的,一切都很好,一切都很好,但是,我从“elink.fcgi”中获得的蛋白质 UID 的数量?请求与基于手动网络浏览器的搜索显示的蛋白质数量不同。更糟糕的是,在询问这些问题的根源时,您会看到缺失的序列或更高分类群的序列(它们也没有以任何方式与生物项目相关联)。

这是一个例子:这篇文章的第一个链接显示了一些 4014 序列,当 python 请求给我 3957 蛋白质 UID 时。

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

有没有办法做到这一点,一个可以工作的?

4

1 回答 1

2

我还发现与 NCBI 合作非常令人沮丧。我很惊讶这样的数据源甚至没有为我们提供干净的下载方式。相反,它提供了一些可怕的交叉链接,让用户自己去弄清楚整个事情。

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

如何使用 Entrez API 下载细菌基因组

确保将 db 更改为“nuccore”并将 rettype 更改为“fasta_cds_aa”。还要检查下载的 fasta 文件的分类 id,以确保它正是您要求的菌株(最后一个让我大吃一惊,吸取教训)。

于 2014-03-22T00:36:16.880 回答