美文网首页Science相关 杂生信
《一个R包搞定基因(human)ID转换》—跟着Jimmy学生信

《一个R包搞定基因(human)ID转换》—跟着Jimmy学生信

作者: 喂鸡组的阿翔 | 来源:发表于2020-04-13 18:19 被阅读0次

    内容不是教程,均为个人学习笔记,以备后日查询
    学习资源均来自生信技能树论坛生信技能树B站视频,微信公众号:生信技能树


    需要用到的R包为:org.Hs.eg.db

    • 首先看看包内所包含的内容
    library(org.Hs.eg.db)  #加载R包
    ls("package:org.Hs.eg.db")
    

    包内每一个object都包含不同基因ID的对应关系,例如对象org.Hs.egSYMBOL中是gene_idsymbol之间的对应关系

    • 举个栗子
      我们现在要把表达矩阵中的ensembl_id转换为gene_symbol:如下图


    1.提取包中的基因注释信息

    g2s<-toTable(org.Hs.egSYMBOL)
    g2e<-toTable(org.Hs.egENSEMBL)
    
    object:a

    2.通过ensembl_id关联a与g2e

    b<-merge(a,g2e,by='ensembl_id',all.x=T)
    #这里注意!all.x=T参数必须添加,意为即使在g2e中没有找到a中某一个元素的对应条目
    #也保留a中的这一条目
    
    1. 通过gene_id关联b与g2s
    d<-merge(b,g2s,by='gene_id',all.x=T)
    #至此我们完成了ID的转换
    
    object:d

    4.我需要按照矩阵中的原始顺序将GeneID返回,就得将我们转换完的ID按照原始数据排列一个ensembl_id有可能对应两个gene_id,出现两个genesymbol这导致在转换完成的d里面的行数是多于原始ensembl_id数据的,因此我们要删除重复的条目.

    d<-d[!duplicated(d$V1),]
    #通过match()函数将a中V1的顺序放到d的V1中去
    d<-d[match(a$V1,d$V1),]
    #将转换结果输出
    write.table(d,'geneID2symbol.csv')
    

    这个包中所包含的内容几乎可以完成人基因的所有ID转换。比如有做中药网络药理学的会遇到从DrugBank数据库中得到的基因为全称,例如:[Gamma-aminobutyric acid receptor subunit alpha-1]
    在做后续生信分析的时候需要批量将基因全称转换为gene_symbol,使用这个R包也是可以完成的。

    相关文章

      网友评论

        本文标题:《一个R包搞定基因(human)ID转换》—跟着Jimmy学生信

        本文链接:https://www.haomeiwen.com/subject/gvzvmhtx.html