R语言作图基因表达模式识别专题

R语言进行GSEA分析

2022-05-08  本文已影响0人  CrimsonUMO

先加载R包

> library(GSEABase)
> library(limma) 
> library(clusterProfiler)
> library(enrichplot)

第一步:差异分析

首先是用limma包做差异分析的过程

#差异分析:
dat <- exprSet
group_list <- c(rep("Control",3),
                rep("Combine",3))
group_list <- factor(group_list,ordered = F)
design <- model.matrix(~factor( group_list ))
fit=lmFit(dat,design)
fit=eBayes(fit)
options(digits = 4)
topTable(fit,coef=2,adjust='BH')
deg=topTable(fit,coef=2,adjust='BH',number = Inf)
head(deg)

这里由于做的时候是FPKM数据,所以参考了生信技能树的教程:

https://mp.weixin.qq.com/s/BEvFqu-BNA9lWFNaE9Jkdw

第二步:获取基因集

MSigDB可以方便地获取GMT文件,读进来

> geneset <- read.gmt("./h.all.v7.5.1.symbols.gmt")

第三步:进行GSEA

> geneList <- deg$logFC
> names(geneList) <- toupper(rownames(deg))
> geneList <- sort(geneList,decreasing = T)

GSEA输入的geneList是排序后的gene名,因此这里需要对geneList进行一个排序。实际上得到差异分析的结果后,只需要logFC和gene名就可以构建geneList进行GSEA富集分析了。

> gsea_results <- GSEA(
+   geneList = geneList,
+   TERM2GENE = geneset,
+   verbose = F,
+   eps=1e-10
+ )
Warning messages:
1: In serialize(data, node$con) :
  'package:stats' may not be available when loading
2: In serialize(data, node$con) :
  'package:stats' may not be available when loading
3: In fgseaMultilevel(...) :
  For some pathways, in reality P-values are less than 1e-10. You can set the `eps` argument to zero for better estimation.

P值太小时可能会报warning,不过不影响。可以把eps这个参数设置成0。得到的结果是一个gseaResult对象

> class(gsea_results)
[1] "gseaResult"
attr(,"package")
[1] "DOSE"

可视化

接下来可以对这个gseaResult对象进行可视化。

> for (i in 1:length(list)) {
+   p <- gseaplot2(x=gsea_results,geneSetID=paste("HALLMARK_",list[i],sep="")) 
+   d <- paste("./",list[i],".pdf",sep="")
+   pdf(file=d,
+       family = "Times",width=10,height = 6)
+   print(p)
+   dev.off()
+ }

这里循环读取感兴趣的每一个基因集进行作图,并输出为PDF。


GSEA

当然也可以多个图放在一起

> p <- gseaplot2(gsea_results,
+           gsea_results@result[["ID"]][1:3],
+           pvalue_table = TRUE)

比如这个样子


gseaplot2
上一篇 下一篇

猜你喜欢

热点阅读