超详细的R中进行GSEA分析的流程!一看就会!




所需R包均可以用BiocManager包安装,如果没有BiocManager包,可以用以下命令安装。
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager") #安装BiocManager包
BiocManager::install("clusterProfiler") #安装分析所需R包
library(ReactomePA) #加载所需R包
library(tidyverse)
library(data.table)
library(org.Hs.eg.db)
library(clusterProfiler)
library(biomaRt)
library(enrichplot)
setwd("G:/job/job1/GSEA/") #进入存放数据的工作目录
genelist_input <- fread(file="GSEA.txt", header = T, sep='t', data.table = F) #导入数据
genename <- as.character(genelist_input[,1]) #提取第一列基因名
gene_map <- select(org.Hs.eg.db, keys=genename, keytype="SYMBOL", columns=c("ENTREZID")) #将SYMBOL格式的ID换成ENTREZ格式的ID。


non_duplicates_idx <- which(duplicated(gene_map$SYMBOL) == FALSE)
gene_map <- gene_map[non_duplicates_idx, ] #去除重复值
colnames(gene_map)[1]<-"Gene" #输出mapping结果

#将ENTREZID与logFC对应起来,并根据logFC的值降序排列,最终生成结果如图所示。
temp<-inner_join(gene_map,genelist_input,by = "Gene")
temp<-temp[,-1]
temp<-na.omit(temp)
temp$logFC<-sort(temp$logFC,decreasing = T)

#最后我们将文件内容整理成GSEA分析所需的格式(如图所示),我们就可以开始GSEA分析了!
geneList = temp[,2]
names(geneList) = as.character(temp[,1])
geneList

Go_gseresult <- gseGO(geneList, 'org.Hs.eg.db', keyType = "ENTREZID", ont="BP", pvalueCutoff=0.05) #使用GSEA进行GO富集分析('org.Hs.eg.db':对应物种的数据库;ont:选择输出条目,可选“BP,MF,CC或者ALL”,pvalueCutoff:设置P的阈值)
KEGG_gseresult <- gseKEGG(geneList, pvalueCutoff=0.05) #使用GSEA进行KEGG富集分析
#保存富集分析结果
go_results<-as.data.frame(Go_gseresult)
kegg_results<-as.data.frame(KEGG_gseresult)
write.csv (go_results, file ="Go_gseresult.csv")
write.csv (kegg_results, file ="KEGG_gseresult.csv")
gseaplot2(Go_gseresult, 1:3, title = "Specific GO Biological Process in T2D group", pvalue_table = FALSE) #1:3:这表示在图上显示前3条富集结果,也可以根据自己分析需要指定输出某一条结果;Go_gseresult:GO富集分析结果;title:加上标题;pvalue_table:是否在图上显示P值列表。



往期推荐