ID转换大全

实际上掌握了编程的思维,任何一门语言都可以做id转换!
对于初学者来说,这个是非常实用的一个,很多人当初就是因为要做这个转换,才慢慢走入了编程的道路。
使用大部分软件的时候,第一步就是文件数据准备,基本上都是数据的拆分和整合,这个拿id转换做基础练习也挺好的!
本来应该作为第一讲,但是当初认为太基础了,而忽略掉了,放在这里也好,大部分同学已经跟我们学习两个月了,可以拿这个题目来检验自己的水平了!
ID转换简单来说,就是找到对应关系表,然后用hash或者字典对应一下即可。但也可以很复杂:

为什么要转换id?
有多少种ID?
什么id权威?
id是一一对应的吗?
ID是什么生信组织维护?
id有版本吗?
id一定正确吗?
什么情况下选择什么id?
不同数据库下载的id对应表一定一样吗?

你们看我的博客,就知道,我是如何重视ID转换的:

用R的shiny包写一个基因的ID转换小程序
gene的各种ID转换终结者-bioconductor系列包
gene的symbol与entrez ID并不是绝对的一一对应的

还有论坛里面的:生信人必须了解的各种ID表示方式

当然,我们时间有限,不可能面面俱到,很多东西都是需要自己去慢慢挖掘的!
需要集中学习的是 entrez gene ID, HUGO symbol, refseq ID, ensembl ID

作业,就是用perl,python,R 来把1~1000 这1000个 entrez gene ID转为另外3个吧,如果该entrez gene ID不存在,就不用转了。

请自己下载基因ID的对应关系文件,参考,http://www.bio-info-trainee.com/75.html

最后:
请务必把下面的代码运行一下,把输出的all_gene_bioconductor.html文件好好看看!

  1. rm(list=ls())

  2. library(org.Hs.eg.db)

  3. eg2symbol=toTable(org.Hs.egSYMBOL)

  4. eg2name=toTable(org.Hs.egGENENAME)

  5. eg2alias=toTable(org.Hs.egALIAS2EG)

  6. eg2alis_list=lapply(split(eg2alias,eg2alias$gene_id),function(x){paste0(x[,2],collapse = ";")})

  7. GeneList=mappedLkeys(org.Hs.egSYMBOL)

  8. if( GeneList[1] %in% eg2symbol$symbol ){

  9.  symbols=GeneList

  10.  geneIds=eg2symbol[match(symbols,eg2symbol$symbol),'gene_id']

  11. }else{

  12.  geneIds=GeneList

  13.  symbols=eg2symbol[match(geneIds,eg2symbol$gene_id),'symbol']

  14. }

  15. geneNames=eg2name[match(geneIds,eg2name$gene_id),'gene_name']

  16. geneAlias=sapply(geneIds,function(x){ifelse(is.null(eg2alis_list[[x]]),"no_alias",eg2alis_list[[x]])})

  17. createLink <- function(base,val) {

  18.   sprintf('<a href="%s" class="btn btn-link" target="_blank" >%s</a>',base,val) ##target="_blank"

  19. }

  20. gene_info=data.frame(   symbols=symbols,

  21.                        geneIds=createLink(paste0("http://www.ncbi.nlm.nih.gov/gene/",geneIds),geneIds),

  22.                        geneNames=geneNames,

  23.                        geneAlias=geneAlias,

  24.                        stringsAsFactors = F

  25. )

  26. #library("xtable")

  27. #print(xtable(gene_info), type="html",include.rownames=F, file='all_gene.anno',sanitize.text.function = force)

  28. file='all_gene_bioconductor.html'

  29. y <- DT::datatable(gene_info,escape = F,rownames=F)

  30. DT::saveWidget(y,file)

(0)

相关推荐

  • 转录组学习八(功能富集分析)

    任务 选择p<0.05而且abs(log2FC)大于1的基因为显著差异表达基因集,对这个基因集用R包做KEGG/GO超几何分布检验分析. 把表达矩阵和分组信息分别作出cls和gct文件,导入到G ...

  • 使用biopython查询NCBI数据库

    NCBI网站是最常用的生物信息数据库之一,集成了pubmed,genebank等子数据库.最简便的用法当然是直接在网站上检索,为了方便检索,NCBI提供了自己的检索系统,称之为Entrez. 对于想要 ...

  • clusterProfiler|GSEA富集分析及可视化

    GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,无需设定阈值来区分上调下调基因,使用所有的基因进行分析. GO 和 KEGG 可参考:R|clusterProfi ...

  • 基因ID转换工具比较

    写在前面 昨天我们介绍了三个ID转换的工具: DAVID.g:Convert 以及 biomart,但是这个工具内置的数据怎么样并不清楚,所以今天就来评价一下这几个工具吧. 数据准备 由于我们使用最多 ...

  • 酷我音乐网ID转换MP3网址(歌词)

    <KUWO音乐网ID转换MP3网址(歌词)>能将酷我音乐网的音乐ID转换为可供外链的MP3网址,如该歌曲配有动态歌词,就会转换为LRC歌词.如果转换成功立即播放.显示同步歌词,并可复制转换 ...

  • ID转换靠的是深厚的背景知识加上一点代码技巧

    有学员提问: 请教老师,在分析一个芯片数据时候,遇到这个GPL16686平台,直接看平台信息里面的表格如图,找不到基因名,所以不知道该怎么办,ID转换就卡死了,后续的差异分析,火山图,热图等等都无从下 ...

  • GPL17586、GPL19251和GPL16686平台芯片ID转换

    芯片分析中经常会遇到Affymetrix Human Transcriptome Array 2.0芯片,由于目前还没有现成的R包可以用,因此分析方法也不统一.见生信技能树Jimmy老师HTA2.0芯 ...

  • 生信编程8.ID转换

    有一些五六年前的学生们都成长为了各个生物信息学相关公司的小领导,而且他们都有了自己的公众号,知乎号,也算是一番人物.最近他们跟我反馈面试找不到或者说很难直接考核筛选到认真干活的生信工程师,挺有意思的. ...

  • 你的ID转换错啦

    最近学员群又有人问到了 Agilent-012391 Whole Human Genome Oligo Microarray G4112A 这样的芯片数据,我让学生打包数据成为rdata发给我,我检查 ...

  • 你只想做ID转换却不知道为什么要转换

    最近咱们<生信技能树>的VIP答疑群,有这样的提问:   我觉得很有代表性,很多人仅仅是学了个皮毛,知道是需要进行ID转换,也能够运行代码.但是却搞不懂,不理解自己为什么进行ID转换,以及 ...

  • TCGA转录组差异分析后多种基因功能富集分析:从GO/KEGG到GSEA和GSVA/ssGSEA(含基因ID转换)

    TCGA转录组数据在完成差异分析后,我们通常希望系统地获取这些成百上千的差异基因的功能信息,帮助我们分析下游实验的思路.面对大量的差异基因,逐个查询基因功能是不切实际的.所以我们需要借助基因功能富集分 ...

  • TCGA数据库 ID转换问题

    写在前面 我们在使用TCGA数据库的时候,从TCGA数据库下载到的数据,使用的原始数据ID是ENS ID.对于这样的ID号,我们一方面不认识他们是什么,另外如果要做下有分析的话,很多数据库也不接受这样 ...