我们介绍过N多种富集结果展示的方式,公众号内检索关键词富集/GSEA。最近有几个小伙伴提供了一种网络的展示方式来咨询,不知道怎么实现,其实是一个R包—aPEAR,以前提起过,很小的一个包。之前文章还在预印本,现在已经发表,文章很简短:
github: https://github.com/kerseviciute/aPEAR
paper: https://academic./bioinformatics/article/39/11/btad672/7342237
总之,这个包的目的第一是为了提高通路富集可视化,第二是提高通路富集结果可解释性。【以下内容翻译自摘要】 通路富集分析结果的解释经常因大量且冗余的显着受影响通路列表而变得复杂。在这里,我们提出了一个 R 包 aPEAR(高级通路富集分析表示),它利用通路基因集之间的相似性,并将它们表示为互连簇的网络。每个簇都被分配了一个有意义的名称,突出了实验中的主要生物学主题。我们的方法可以自动、客观地概览数据,而无需手动和耗时的参数调整。
#安装加载相关包library(devtools)install_github('ievaKer/aPEAR')library(aPEAR)library(clusterProfiler)library(org.Hs.eg.db)library(DOSE)setwd('D:/KS项目/公众号文章/aPEAR包:富集网络可视化')
#核心plot函数参数详解#?enrichmentNetwork#Displays enrichment results as an easy to interpret cluster network.enrichmentNetwork( enrichment,#富集分析结果dataframe,来源于clusterProfiler/gprofiler2分析结果 simMethod = c("jaccard", "cosine", "cor"),#计算pathways之间相似性的方法 clustMethod = c("markov", "hier", "spectral"),#detect pathway聚类的方法 clustNameMethod = c("pagerank", "hits", "none"),#选择cluster name的方法 colorBy = NULL,#用于节点颜色的列,一般pvale或者NES(GSEA分析结果)等 nodeSize = NULL,#用于节点大小的列,一般默认ssetSize or Count innerCutoff = 0.1,#cluster内节点的相似性截断值 outerCutoff = 0.5,#簇间节点的相似性截断值 colorType = c("nes", "pval"),#着色方式,如果是nes,0是中间值,如果是p值则经过对数转化 pCutoff = -10,#当使用“colorType = 'pval'"选项时,调整 p 值颜色标注的阈值 drawEllipses = FALSE,#cluster是否添加椭圆轮廓 fontSize = 5,#cluster标记文字大小 repelLabels = FALSE,#是否对标签使用 repel 方法,避免重叠 minClusterSize = 2,#cluster最小节点数 plotOnly = TRUE,#默认True,只返回图,False返回图和聚类结果list verbose = FALSE)
#富集分析-这里以GSEA为例,#其他的分析例如GO、KEGG等都可以使用aPEAR可视化#更广泛一点,只要您提供的数据符合input要求,都可以plot,不局限于clusterProfiler/gprofiler2的分析结果diff <- read.csv("diff.csv", header = T, row.names = 1 )genesymbol <- rownames(diff)entrezID <- bitr(genesymbol, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = "org.Hs.eg.db")#genesymbol转化为IDgenelist <- diff$avg_log2FCnames(genelist) <- rownames(diff)genelist <- genelist[names(genelist) %in% entrezID[,1 ]]names(genelist) <- entrezID[match(names(genelist),entrezID[,1 ]),2 ]genelist <- sort(genelist,decreasing = T)install.packages('R.utils')R.utils::setOption( "clusterProfiler.download.method",'auto' )#GSEA分析:KEGG_gesa <- gseKEGG( geneList = genelist, organism = "hsa", minGSSize = 10 , maxGSSize = 500 , pvalueCutoff = 0.05 , pAdjustMethod = "BH", verbose = FALSE, eps = 0 )enrich <- gseGO(genelist, OrgDb = org.Hs.eg.db, ont = 'BP')#提取结果,这就是最终plot需要的文件,一个dataframeenrich_ges_result <- enrich@result
#plot#enrichmentNetwork返回的是ggplot2 object,所以ggplot2适用的一些修饰可以适用于此library(ggplot2)library(grDevices)enrichmentNetwork(enrich_ges_result, drawEllipses = TRUE, fontSize = 3 )
enrichmentNetwork(enrich_ges_result, colorBy = 'p.adjust', colorType = 'pval', drawEllipses = TRUE, fontSize = 3 )+ scale_color_gradientn(colours = colorRampPalette(c('red','yellow','green','blue'))(100 ), breaks = c(0 , log(0 .05 ), log(0 .01 ), log(0 .001 ),log(0 .0001 )), # 指定刻度位置 limits = c(log(0 .0001 ), log(1 )), labels = c("p>0.05", "p<=0.05", "p<0.01", "p<0.001", "p<0.0001"), name = "Log(p.adjust)")# 自定义标签