两种方法将难懂的entrezID转换为geneSymbol
首先加载相关的R包
# 适用于猪的基因,其他物种对应调整
# 猪:org.Ss.eg.db 人:org.Hs.eg.db 小鼠:org.Mm.eg.db
library(org.Hs.eg.db )
library(openxlsx)
install.packages("openxlsx", dependencies = TRUE)
安装包
install.packages("tidyverse")
#使用前,记得载入包
library(tidyverse)
library(clusterProfiler)
第一种方法:直接使用DOSE::setReadable()函数
注意:使用前提是你的富集结果对象类型必须是:'enrichResult' , 'gseaResult' or 'compareClusterResult'其中的一个,也就是用clusterProfiler里的富集函数直接给出的结果
# 一句代码转化,kegg为富集结果
kegg_SYMBOL <- DOSE::setReadable(kegg,
OrgDb = "org.Hs.eg.db ",
keyType = "ENTREZID")
第二种方法:自定义函数进行转换
注意:使用前提是你的富集结果对象类型必须是:'enrichResult' , 'gseaResult' or 'compareClusterResult'其中的一个,也就是用clusterProfiler里的富集函数直接给出的结果
# 提取富集结果
kegg <- kegg@result
# 此时在转换就会报错
kegg_SYMBOL <- DOSE::setReadable(kegg,
OrgDb = "org.Hs.eg.db",
keyType = "ENTREZID")
#>> Error in DOSE::setReadable(kegg, OrgDb = "org.Hs.eg.db ", keyType = "ENTREZID") :
#>> input should be an 'enrichResult' , 'gseaResult' or 'compareClusterResult' object...
# 定义函数:输入一个ENTREZID字符返回对应gene symbol的字符
entrezID2geneSymbol <- function(entrezID){
# 测试向量
# test <- kegg$geneID[1]
# entrezID <- test
# 将字符串切分为向量
entrezID <- as.vector(str_split(entrezID,"/",simplify = T))
# ENTREZID转换为SYMBOL,返回向量
SYMBOL <- bitr(entrezID,"ENTREZID","SYMBOL",org.Hs.eg.db)[,"SYMBOL"]
# 再SYMBOL合并为字符串,并返回结果
SYMBOL_chr <- paste0(SYMBOL,"",collapse ="/")
return(SYMBOL_chr)
}
# 自定义函数进行转换
kegg$gene_name <- unlist(map(kegg$geneID,entrezID2geneSymbol))
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> 'select()' returned 1:1 mapping between keys and columns
#>> ....
#导出保存
write.csv(kegg, "kegg_result.csv")
image.png
网友评论