首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过编程将GI号直接映射到HGNC基因名?

如何通过编程将GI号直接映射到HGNC基因名?
EN

Stack Overflow用户
提问于 2013-08-12 17:05:46
回答 2查看 604关注 0票数 0

我有一个~2000 GI号码的集合,我需要映射到HGNC (又名HUGO)基因名。

将来,作为数据分析管道的一部分,我将不得不重复进行类似的映射,所以我希望以编程的方式进行这种映射(而不是通过在一些交互工具的界面上切割和粘贴2KGI数字)。

此外,我不得不只使用自由软件。我最熟悉Python和Perl,尽管我可以使用R和Java,最后也可以使用其他任何东西(Ruby、MATLAB、Tcl等)。

(这个员额的其余部分对这个问题并不重要。在其中,我提供了额外的背景信息,FWIW。到最后,它变得越来越技术性;这些内容只对熟悉NCBI的eutils接口的人有意义。)

一种可能是从网页中为每个GI编号(示例)刮取HGNC id,但是这些页面使用JavaScript加载它们的内容,这使它们超出了我的web抓取能力。

即使我能够进行这样的web抓取,结果也肯定会比从适当的web服务API中获得的结果更低。

不幸的是,我没有找到任何“官方”服务,以编程方式将GI号码直接映射到HGNC/HUGO基因名。我最大的希望是NCBI的eutils接口,但我无法找到执行我所追求的直接映射的方法。(如果我错了,请纠正我!)

我能想到的最好是2跳映射:使用eutils (或者更确切地说,使用bioservices.eutils Python模块提供的eutils接口)将GI号映射到Entrez基因ID,然后使用HGNC中的综合表下载将这些Entrez基因ID映射到HGNC/HUGO基因名。

像往常一样,这种多跳映射的“损耗率”是相当糟糕的:~25%的GI数字被映射到某些HGNC/HUGO基因名。(我还没有估计这些映射中有多少实际上是正确的。)

我尝试使用Python的bioservices.eutils库来完成这个映射的第一步,但是这样只能获得大约四分之一的2KGI数字的Entrez基因I。更具体地说,这就是我所使用的,本质上:

代码语言:javascript
复制
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)

s.ELink的调用导致表单的HTTP请求:

代码语言:javascript
复制
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?db=gene&dbfrom=protein&id=395398606&cmd=neighbor

如果有更好的eutils命令将GI号映射到Entrez基因ids,请告诉我。更好的是,如果有更好的eutils命令直接将GI号映射到HGNC/HUGO基因名,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2013-08-12 18:13:22

您可能可以从UCSC基因组浏览器中获得所需的MySql表--可以使用您提到的大多数语言来查询这个表,但我的首选是python。

票数 0
EN

Stack Overflow用户

发布于 2013-08-12 19:07:58

如果我能够通过网络抓取从NCBI获得所需的信息,那么您需要从这些页面中准确地获得什么信息。让我们从您给出的示例中说明您需要哪些细节。

如果在该页面中有您需要的内容,我可以用PHP编写一个代码来获取任何数量的GI ID所需的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18192696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档