搜索
查看: 12124|回复: 10

基因的entrez ID 跟symbol等其它ID的转换程序

[复制链接]

633

主题

1177

帖子

3979

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3979
发表于 2016-10-19 09:15:04 | 显示全部楼层 |阅读模式
基因的entrez ID知道的人也许不多,即使知道,也不会有人无聊到能记住它。但是symbol肯定是人尽皆知的,比如我们想要描述一个基因,叫做TP53,它符合人类基因命名委员会的规定,能在国际范围内交流,也非常火,大部分人知道它所代表的一系列癌症相关基因。
一般人知道TP53的全称是" tumor protein p53",但不一定知道它在染色体的位置是17p13.1,也不太可能知道TP53基因在NCBI的entrez系统代号是 7157
更别提叫做A1BG的基因了,很多人可能就蒙圈了。我们该如何得知它的全称是"alpha-1-B glycoprotein "呢,如何得知它在 19q13.4 。或者你有一系列基因,你想对他们进行统一的这样的转换与注释,就需要用脚本啦。
比如我们有一系列基因叫做:'TP53','BRCA1','KRAS','PTEN'  ,如果对它们进行批量转换与注释呢?
用什么语言无所谓,我这里贴出自己的R代码:

[Python] 纯文本查看 复制代码
# source("https://bioconductor.org/biocLite.R") 
# biocLite('org.Hs.eg.db')
geneIDannotation <- function(geneLists=c(1,2,9),name=T,map=T,ensemble=F,accnum=F){
  ## input ID type : So far I just accept entrezID or symbol
  ## default, we will annotate the entrezID and symbol, chromosone location and gene name 
 
  suppressMessages(library("org.Hs.eg.db"))
  all_EG=mappedkeys(org.Hs.egSYMBOL) 
  EG2Symbol=toTable(org.Hs.egSYMBOL)
  if( all(! geneLists %in% all_EG) ){
    inputType='symbol'
    geneLists=data.frame(symbol=geneLists)
    results=merge(geneLists,EG2Symbol,by='symbol',all.x=T)
  }else{
    inputType='entrezID'
    geneLists=data.frame(gene_id=geneLists)
    results=merge(geneLists,EG2Symbol,by='gene_id',all.x=T)
  }
   
  if ( name ){
    EG2name=toTable(org.Hs.egGENENAME)
    results=merge(results,EG2name,by='gene_id',all.x=T)
  }
  if(map){
    EG2MAP=toTable(org.Hs.egMAP)
    results=merge(results,EG2MAP,by='gene_id',all.x=T)
  }
  if(ensemble){
    EG2ENSEMBL=toTable(org.Hs.egENSEMBL)
    results=merge(results,EG2ENSEMBL,by='gene_id',all.x=T)
  }
  if(accnum){
    EG2accnum=toTable(org.Hs.egREFSEQ) 
    results=merge(results,EG2MAP,by='gene_id',all.x=T)
  }
  return(results)
}
geneIDannotation()
geneIDannotation(c('TP53','BRCA1','KRAS','PTEN'))





是不是看起来很简单呀,理论上可以无限制添加这个函数,从而把所有的ID互相转换。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:miRBase小史
下一篇:在线序列格式转换器:Sequence conversion
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复

使用道具 举报

633

主题

1177

帖子

3979

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3979
 楼主| 发表于 2016-10-19 10:55:52 | 显示全部楼层
kkshaxqd 发表于 2016-10-19 10:30
使用mygene包也可以。功能类似。

对,mygene这个包也很棒,你写一个教程吧,比如:
library(mygene)
res<-query('NM_030621', fields='go', species='human')$hits
lapply(res, as.list)
可以根据refseq的ID来查询它对应的GO
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 1 反对 0

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2016-10-19 10:28:08 | 显示全部楼层
看着像是乳腺癌相关的基因  
回复 支持 反对

使用道具 举报

1

主题

7

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2016-10-19 10:30:38 | 显示全部楼层
使用mygene包也可以。功能类似。
回复 支持 反对

使用道具 举报

633

主题

1177

帖子

3979

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3979
 楼主| 发表于 2016-10-19 16:46:15 | 显示全部楼层
kaelyang 发表于 2016-10-19 10:28
看着像是乳腺癌相关的基因

这只是个例子,代码你直接贴到R里面就可以运行啦!
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

0

主题

22

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2016-11-2 10:59:57 | 显示全部楼层
这个有办法把Ensembl ID转换成gene name或者symbol吗?虽然可以将ensemble=T打开,然后能获得gene symbol和Ensembl ID的对应关系
回复 支持 反对

使用道具 举报

0

主题

22

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2016-11-2 11:16:57 | 显示全部楼层
本帖最后由 naturehunger 于 2016-11-2 11:21 编辑
naturehunger 发表于 2016-11-2 10:59
这个有办法把Ensembl ID转换成gene name或者symbol吗?虽然可以将ensemble=T打开,然后能获得gene symbol和 ...

http://www.bio-info-trainee.com/710.html答案在这个链接上,案例可行,从自己的数据中选取几个数据测试,也可行。
回复 支持 反对

使用道具 举报

10

主题

35

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
发表于 2018-1-19 14:26:44 | 显示全部楼层
用这个代码转换的时候有一两个基因出现了NA的情况是为什么呢
回复 支持 反对

使用道具 举报

2

主题

6

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2018-4-19 14:46:16 | 显示全部楼层
elaine2017 发表于 2018-1-19 14:26
用这个代码转换的时候有一两个基因出现了NA的情况是为什么呢

null的意思,暂时无ID
回复 支持 反对

使用道具 举报

0

主题

2

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2018-5-28 19:03:46 | 显示全部楼层
取出genelist中的ENTREZID用DAVID转换为genesymbol,再导入R,是不是更方便一点?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2018-8-16 01:01 , Processed in 0.115465 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.