GSEA介绍
GSEA(Gene Set Enrichment Analysis):基因集富集分析,由Broad Institute研究所提出的一种富集方法,同时还提供对应的分析软件GSEA和一个基因集数据库MSigdb。
GSEA分析与常规的GO和KEGG富集分析类似但有所不同。常规富集分析更加依赖差异基因(DEseq2等工具处理之后根据log2FC筛选上/下调基因),是对一部分基因的分析 (忽略差异不显著的基因),而GSEA是从全体基因的表达矩阵中找出具有协同的基因集,能够兼顾差异较小的基因。
使用R包进行GSEA分析
这里使用的是Y叔的clusterProfiler包对于GSEA分析有好几种,下面主要介绍GSEA()
函数的用法。对于gseGO()
和gseKEGG()
这些命令用法,我的理解是这些命令是搭配标准的注释库,而GSEA()可以指定用于富集的基因集或是通路。
准备
进行GSEA分析,需要准备:
- Gene List:来自DEseq2等工具进行差异表达分析后的数据,包含两列,第一列为Gene symbol,第二列为log2FoldChange,且已将该list按照log2FoldChange从大到小降序排列。
- R包:clusterProfiler,org.Hs.eg.db,enrichplot, ggplot2包
- 注释文件,如果是使用
GSEA()
函数,则需要下载GSEA官网提供的注释文件。自行选择对应数据集,这里对基因进行富集,选择C5。
根据Gene Symbol和Entre Gene ID注释的文件等供以选择,在此我们选择下载的是
分析
安装R包
###未安装,运行以下代码即可
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("clusterProfiler")
BiocManager::install("org.Hs.eg.db")
BiocManager::install("enrichplot")
install.packages("ggplot2")
#####导入R包
library(clusterProfiler)
library(org.Hs.eg.db)
library(enrichplot)
library(ggplot)
读入数据
#读入注释文件
c5bp_gmt <- read.gmt("D:\\000zyf\\work\\01cfRNA\\01hill\\analysis\\04GSEA/annotation\\c5.go.bp.v2023.1.Hs.entrez.gmt")
#import DEseq2 results
T1_T5_diffgene<-read.csv("D:\\000zyf\\work\\01cfRNA\\01hill\\analysis\\gsea\\T1_T5_all_diff_exp_gene.rnk",sep='\t',header = F)
#原来的文件没有表头,需要加上表头
names(T1_T5_diffgene)<-c("SYMBOL","log2FC")
在这里读入gene list,如上述那样,第一列是基因名称,第二列是log2foldchange值,且已降序排列。
由于我们下载的注释文件是依据ENTREZ ID进行注释的,所以这里需要我们将Gene symbol转换为ENTREZ ID。
####gene symbol转换为entrez id
symbol2entrezid<-bitr(T1_T5_diffgene$SYMBOL,fromType = "SYMBOL",toType = "ENTREZID",OrgDb = org.Hs.eg.db)
df1 <- merge(T1_T5_diffgene, symbol2entrezid, by = "SYMBOL")
df2 <- df1[order(df1$log2FC, decreasing = T), ]
genelist <- df2$log2FC
names(genelist) <- df2$ENTREZID
####使用GSEA函数进行分析
gsea_T1_T5bp <- GSEA(genelist, TERM2GENE = c5bp_gmt, pvalueCutoff = 0.05, pAdjustMethod = "BH")
绘图
dotplot(gsea_T1_T5bp)
gseaplot2(gsea_T1_T5bp, title = "T1_T5_test", 1, pvalue_table = T, base_size = 12)
gseaplot2(gsea_T1_T5bp, title = "T1_T5_bp_1", 1:3, pvalue_table = T, base_size = 12)## 1:3绘制gsea_T1_T5bp前三个结果