ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
110 stars 30 forks source link

GseaVis 优雅的可视化 GSEA 富集结果 #2448

Closed ixxmu closed 2 years ago

ixxmu commented 2 years ago

https://mp.weixin.qq.com/s/1v3w4ReX-fevQmw_sZVjIQ

github-actions[bot] commented 2 years ago

GseaVis 优雅的可视化 GSEA 富集结果 by 老俊俊的生信笔记


见怪不怪

1引言

对于 GSEA 富集结果的可视化有一些 R 包和函数,比如 Y 叔enrichplot 中的gseaplotgseaplot2 函数可以漂亮的绘制图形,还有之前介绍的 gggsea等, 桌面版 GSEA 软件虽然分析结果很全面,但是出图对大家不是很友好。在这里我参考了 enrichplot 包里的部分代码并结合自己的代码写了这个 GseaVis 小 R 包,提供了一个更具有可操作性的可视化方法,来绘制 GSEA 富集图形。

在这里首先感谢 余光创 老开发 R 包 clusterProfilerenrichplot 所付出的努力和贡献。

相关链接:

2介绍

GseaVis 可以做什么:

  • 经典的 GSEA 图形可视化。
  • 标注你感兴趣的基因。
  • 新的图形展示。
  • 更多的可调节参数。
  • 添加 NES 和 P 值。
  • 更加人性化的通路名称展示。

如果喜欢,记得在 github 上送上你的小星星哦。

3安装

github 地址:

https://github.com/junjunlab/GseaVis


# install.packages("devtools")
devtools::install_github("junjunlab/GseaVis")

参考手册:

https://github.com/junjunlab/GseaVis/wiki

4输入

输入文件是 clusterProfilerGSEA/gseGO/gseKEGG 函数的富集结果。

5Load test data

加载内置数据:

library(GseaVis)

# load data
test_data <- system.file("extdata""gseaRes.RDS", package = "GseaVis")
gseaRes <- readRDS(test_data)
gseaRes
# Gene Set Enrichment Analysis
#
#...@organism   UNKNOWN
#...@setType   UNKNOWN
#...@geneList   Named num [1:27970] 6.02 5.96 5.84 5.8 5.72 ...
 - attr(*, "names")= chr [1:27970"Ecscr" "Gm32341" "B130034C11Rik" "Hkdc1" ...
#...nPerm
#...pvalues adjusted by 'BH' with cutoff <1
#...4917 enriched terms found
...

6classic plot

指定通路名称绘图:

# all plot
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS')

只保留曲线:

# retain curve
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 1)

保留曲线和热图:

# retain curve and heatmap
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 2)

通路名称太长截断换行:

# wrap the term title
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 2,
       termWidth = 30)

标记通路里的一些基因:

# add gene in specific pathway
mygene <- c("Entpd8","Htr2a","Nt5e","Actn3","Entpd1",
            "Pfkp""Tpi1","Igf1","Ddit4","Ak9")

# plot
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 2,
       addGene = mygene)

改变基因标签颜色和箭头类型:

# change gene color and arrow type
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 2,
       addGene = mygene,
       arrowType = 'open',
       geneCol = 'black')

保留所有图形:

# all plot
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       subPlot = 3,
       addGene = mygene,
       rmSegment = TRUE)

7New style GSEA

另外一种展现方式,将通路基因绘制到曲线里:

# new style GSEA
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T)

移除点图层:

# new style GSEA remove point
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       addPoint = F)

改变热图颜色:

# change heatmap color
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       addPoint = F,
       newHtCol = c("blue","white""red"))

添加基因名:

# new style GSEA with gene name
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       addGene = mygene)

移除红色标记线:

# remove red segment
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       rmSegment = T,
       addGene = mygene)

移除热图:

# remove heatmap
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       rmSegment = T,
       rmHt = T,
       addGene = mygene)

8Add NES and Pvalue

添加 NES scoresPvalue:

# add pvalue and NES
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       addGene = mygene,
       addPval = T)

调整标签位置和颜色:

# control label ajustment
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       newGsea = T,
       addGene = mygene,
       addPval = T,
       pvalX = 0.75,pvalY = 0.8,
       pCol = 'black',
       pHjust = 0)

经典图形添加 P 值标签:

# clsaasic with pvalue
gseaNb(object = gseaRes,
       geneSetID = 'GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
       addGene = mygene,
       addPval = T,
       pvalX = 0.75,pvalY = 0.8,
       pCol = 'black',
       pHjust = 0)

9Multiple GSEA plot

你可以使用循环批量绘图:

# bacth plot
terms <- c('GOBP_NUCLEOSIDE_DIPHOSPHATE_METABOLIC_PROCESS',
           'GOBP_REGULATION_OF_OSSIFICATION',
           'GOBP_TISSUE_MIGRATION',
           'GOBP_CELL_MATRIX_ADHESION')

# plot
lapply(terms, function(x){
  gseaNb(object = gseaRes,
         geneSetID = x,
         addPval = T,
         pvalX = 0.75,pvalY = 0.75,
         pCol = 'black',
         pHjust = 0)
}) -> gseaList

# combine
cowplot::plot_grid(plotlist = gseaList,ncol = 2,align = 'hv')

只保留曲线和热图:

# retain curve and heatmap
# plot
lapply(terms, function(x){
  gseaNb(object = gseaRes,
         geneSetID = x,
         addPval = T,
         pvalX = 0.75,pvalY = 0.75,
         pCol = 'black',
         pHjust = 0,
         subPlot = 2)
}) -> gseaList1

# combine
cowplot::plot_grid(plotlist = gseaList1,ncol = 2,align = 'hv')

New style plot:

# new style plot
# plot
lapply(terms, function(x){
  gseaNb(object = gseaRes,
         geneSetID = x,
         newGsea = T,
         addPval = T,
         pvalX = 0.75,pvalY = 0.75,
         pCol = 'black',
         pHjust = 0,
         subPlot = 2)
}) -> gseaList1

# combine
cowplot::plot_grid(plotlist = gseaList1,ncol = 2,align = 'hv')

10More parameters

更多参数见函数:

?gseaNb

11结尾

最后大家有任何建议或者想法请在 github 上面留言或者评论。





   (微信交流群需收取20元入群费用(防止骗子和便于管理))











  





GSEA 图是如何画出来的? (源码解析)

clusterProfiler 的可视化大全

clusterProfiler 做 GSEA 富集分析

深度神经网络学习对单细胞数据进行清洗去噪

ggpie 解决你的所有饼图绘制

Bigwig 可视化用 tackPlotR 试试看?

gggsea 个性化绘制 GSEA 图

scRNAtoolVis 绘制单细胞 Marker 基因均值表达热图

给你 UMAP 坐标重复文章一模一样的图?

genesorteR 快速准确鉴定亚群 Marker 基因

...