我正在尝试从特定生物项目的 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 的双打)。
有没有办法做到这一点,一个可以工作的?