我有大约2000个GI编号的集合,我需要将其映射到HGNC(aka HUGO)基因名称。
作为数据分析管道的一部分,我将来必须反复进行类似的映射,所以我想以编程方式进行映射(而不是通过在某些交互式上剪切和粘贴2K GI编号)工具的界面)。此外,我只能使用免费软件。我对Python和Perl感到最舒服,虽然我可以使用R和Java,以及其他任何东西(Ruby,MATLAB,Tcl等)。
(这篇文章的其余部分对于这个问题并不重要。我在其中提供了额外的背景信息,FWIW。它越来越技术化到最后;这些内容仅对那些熟悉NCBI {{1}的人有意义。 } interface。)
一种可能性是从网页上为每个GI编号(example)抓取HGNC ID,但这些页面使用JavaScript加载其内容,这使得它们超出了我的网络抓取能力。
即使我可以进行此类网页抓取,结果也必然低于从适当的网络服务API获得的结果。
不幸的是,我还没有找到任何“官方”服务,以编程方式将GI编号直接映射到HGNC / HUGO基因名称。我对此有最好的希望是NCBI的eutils
界面,但是我无法找到一种方法来执行我之后的直接映射。 (如果我错了,请纠正我!)
我能想到的最好的是2跳映射:使用eutils
(或更确切地说,是eutils
Python模块提供的eutils
的接口)来映射GI数字到Entrez Gene ID,然后使用来自HGNC的综合表downloaded将这些Entrez基因ID映射到HGNC / HUGO基因名称。
像往常一样,这种多跳映射的“损耗率”非常糟糕:所有GI数的~25%被映射到某些 HGNC / HUGO基因名称。 (我还没有估计这些映射中有多少实际上是正确的。)
我尝试使用Python的bioservices.eutils
库进行此映射的第一跳,但是能够以这种方式仅获得大约四分之一2K GI数的Entrez基因ID。更具体地说,这就是我使用的,实质上是:
bioservices.eutils
对from bioservices import EUtils
s = EUtils()
xml = s.ELink(db='gene', dbfrom='protein', Ids='395398606')
# ...now parse the returned xml to get the returned Entrez gene id(s)
的调用会产生以下形式的HTTP请求:
s.ELink
如果有一个更好的http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?db=gene&dbfrom=protein&id=395398606&cmd=neighbor
命令将GI编号映射到Entrez基因ID而不是这个,请告诉我。更好的是,如果有更好的eutils
命令将GI编号直接映射到HGNC / HUGO基因名称,请告诉我。
答案 0 :(得分:0)
您可以从UCSC Genome Browser作为MySql表获得所需内容 - 可以使用您提到的大多数语言来查询,但我的偏好是python。
答案 1 :(得分:0)
如果我能够通过网络抓取从NCBI获得所需的信息,那么您需要从这些页面获得哪些信息。让我们说明你需要从example获得哪些细节。
如果您在页面中提供所需内容,我可以用PHP编写代码,以获取您需要的任意数量的GI ID信息。