在实际应用中,我们经常需要在gene name和gene ID之间进行转换。当需要处理的基因数量很少时,我们可以直接从NCBI(https://www.ncbi.nlm.nih.gov)上搜索,但当要处理的基因很多时,这显然不是一个明智的选择。最近我发现一个叫clusterProfiler的package可以很好的处理这个问题。
首先我们先安装这个包,安装这个包的时候需要用Biomanager。
BiocManager::install('clusterProfiler')
我们尝试从gene name转为gene ID
首先读入gene name文件
library(clusterProfiler)
Tibetan_selected = read.table('genename.txt',header = FALSE,sep="\n")
genename = vector(mode="character",length=0)
for(i in 1:dim(Tibetan_selected)[1]){
genename[i] = as.character(Tibetan_selected[i,1])
}
进行转换,如果是人的基因的话,数据库选择org.Hs.eg.db。对于其他物种,可以参考http://bioconductor.org/packages/release/BiocViews.html#___OrgDb。比如Mouse对应的就是"org.Mm.eg.db", 接下来我们安装mouse的package即可。
BiocManager::install('org.Mm.eg.db')
如果是从gene name转为gene ID的话,fromType和toType分别设定为SYMBOL和ENSEMBL。反之亦然。
#人的数据库 org.Hs.eg.db
name_ID = bitr(genename, fromType="SYMBOL", toType="ENSEMBL", OrgDb="org.Hs.eg.db")
ps:匹配的成功率并不是100%,对于没有匹配上的基因可能就需要手动搜索了。
保存数据
#save the data
write.csv(name_ID,'root/name_ID.csv')
ps: 对于从gene name向gene ID部分gene匹配失败的问题,可能是因为gene name并不是HGNC的Official Symbol。这时可以手动去NCBI上查找。比如“ATPIF1”在HGNC中的Official Symbol应该是ATP5IF1。