《一个R包搞定基因(human)ID转换》—跟着Jimmy学生信
2020-04-13 本文已影响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_id与symbol之间的对应关系
-
举个栗子
我们现在要把表达矩阵中的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中的这一条目
- 通过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包也是可以完成的。