注释和富集转录组

R包 clusterProfiler 比较不同dataset富集

2023-03-30  本文已影响0人  iBioinformatics

生物信息分析中,接触最多的莫过于基因富集分析,故在此基础上目前已经开发了很多种富集分析工具,如网页版的DAVID、KOBAS、GOEAST,WebGestalt,基迪奥平台等,本地版工具如TBtools,此外常用的R包有pathfindRtopGOclusterProfiler等。在最后的报告中,我们通常会以各种图表的形式来展示富集的结果,常用的富集分析结果可视化的软件有REVIGOGOViewWEGO,cytoscape插件BinGO,基迪奥富集分析动态展示等。

这些工具各有千秋,可是依然具有一定的局限性,就是完成分析后需要转换数据才能进行可视化。Y叔开发的clusterProfiler既可以轻松完成各种富集分析又可以傻瓜式出图,所以一直受到生信工作者的青睐。本文主要就是介绍这个R包,通过compareCluster函数完成不同数据集的pathway富集结果的比较。

支持的功能

下面总结下clusterprofiler包的主要功能,参考资料在https://bioconductor.org/packages/release/bioc/vignettes/clusterProfiler/inst/doc/clusterProfiler.html

  1. gene ID转换
    支持orgdb的所有物种,以及orgdb所包含的所有gene ID种类

  2. groupGO 函数来将列表中的基因根据相对于的gene ontology进行分类

  3. enrichGO 函数来做gene ontology富集分析

  4. gseGO 函数来做gene set enrichment analysis

为何要用gene set enrichment analysis呢?因为一般做differential expressed genes analysis找出的gene都是有着统计显著差别的单个基因,但是有些基因是属于同一类的(gene set),它们单个的变化并没有那么大,但是这同一类基因都发生了一些变化。这样,当做DEG分析的时候,找不出这些基因,但是gsea分析可以把这种差异找出来。

这里需要注意一个问题。用这个函数的时候,如果要得到典型的gsea的running enrichment score的图,则必须指定geneSetID。这就需要先找出现在已经富集了几个geneSet,然后一个接一个的画出。

  1. enrichKEGG 函数来做基因的pathway富集分析

  2. 完善强大的可视化函数选择,包括了barplot, dotplot, emapplot, cnetplot, gseaplot, browseKEGG

  3. compareCluster 用于比较不同gene list的gene ontology富集情况

一、常规富集分析

library(org.Hs.eg.db)
library(clusterProfiler)
library(ggplot2)

setwd("C:/Users/lenovo/Desktop")   
a=read.table("testgeneid.txt",header = FALSE) # 读取输入文件,主要是基因名 gene symbol
gene=as.character(a[,1])  # 转换为字符

ego <- enrichGO(gene=gene,OrgDb='org.Hs.eg.db',keyType='SYMBOL',ont= "CC",pAdjustMethod="BH",pvalueCutoff  = 0.01,qvalueCutoff  = 0.05) #必须指定keytype,GO富集

ego <- enrichGO(gene=gene,OrgDb='org.Hs.eg.db',keyType='SYMBOL',ont= "ALL",pAdjustMethod="BH",pvalueCutoff  = 0.01,qvalueCutoff  = 0.05)  

x <- enrichDO(gene          = gene,
              ont           = "DO",
              pvalueCutoff  = 0.01,
              pAdjustMethod = "BH",
              universe      = names(geneList),
              minGSSize     = 5,
              maxGSSize     = 500,
              qvalueCutoff  = 0.05,
              readable      = FALSE)  # DO富集

write.csv(summary(ekk),"KEGG-enrich.csv",row.names =F)
write.csv(summary(ego),"GO-enrich.csv",row.names =F)
barplot(ego, showCategory=15,title="EnrichmentGO") #条形图
dotplot(ego,title="EnrichmentGO_dot") #气泡图
enrichMap(ego, vertex.label.cex=1.2, layout=igraph::layout.kamada.kawai) #网络图
plotGOgraph(ego) #go图


gene= bitr(gene, fromType="SYMBOL", toType="ENTREZID", OrgDb="org.Hs.eg.db")

kk <- enrichKEGG(gene$ENTREZID, organism="hsa",keyType = "kegg",pvalueCutoff=0.05, pAdjustMethod="BH",qvalueCutoff=0.1)

二、组间比较富集分析

接下来就是使用compareCluster比较两组基因富集结果,输入文件需要转换为gene id形式。

cp = list(a.gene=gene1$ENTREZID, b.gene=gene2$ENTREZID)  # 合并两个数据集,并转换为列表

xx <- compareCluster(cp, fun="enrichKEGG", organism="hsa", 
                 pvalueCutoff=0.01,pAdjustMethod = "BH",qvalueCutoff = 0.05) 

dotplot(xx,showCategory=10,includeAll=TRUE)

还可以改变形状

p1 + aes(shape = GeneRatio > 0.3)

还可以改变颜色

xx <- compareCluster(cp,
                     fun="enrichGO", 
                     OrgDb="org.Hs.eg.db", 
                     ont= "BP",
                     pvalueCutoff=0.01,
                     pAdjustMethod = "BH",
                     qvalueCutoff = 0.05)

p2 <- p1 + scale_color_continuous(low="purple",high = "green")

常见报错

今天有朋友反应使用Y叔的clusterProfiler的enrichKEGG遇到了如下报错

之前KEGG出现了问题,Y叔连夜修代码,让clusterProfiler能够正常。

但是这次问题,真的不算是Y叔的锅了,这次是KEGG网站的证书过期了,导致R语言无法正常下载了。

那么咋办呢?

第一个方法,等!估计过几天就有人反馈了,然后就恢复正常了。

第二个方法,强制上!通过阅读clusterProfiler的文章,可以知道Y叔是通过参数clusterProfiler.download.method 来获取下载方式,默认是libcurl。 只要我们换成curl,并加上一个额外参数,就能强行下载了。

但是这一方法,我只在mac上测试过,Linux和windows不确定能不能行。

下面方法亲测可用

#将数据库的下载修改为auto的方式即可。[参考](https://mp.weixin.qq.com/s/nx50xXcPTMyLgoZ604xOHQ)

R.utils::setOption("clusterProfiler.download.method","auto")

参考:
听说你也在画dotplot,但是我不服!

参考:
https://www.jianshu.com/p/d9bb849bac80
https://www.jianshu.com/p/601631759291

上一篇 下一篇

猜你喜欢

热点阅读