ixxmu / mp_duty

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

听说你想把多个样本的 GSEA 画在一起? #3834

Closed ixxmu closed 1 year ago

ixxmu commented 1 year ago

https://mp.weixin.qq.com/s/gnfCnZ9wMLwjt96bGY1otA

ixxmu commented 1 year ago

听说你想把多个样本的 GSEA 画在一起? by 老俊俊的生信笔记

1引言

有粉丝提问, 如何把多个组/实验的同一条 GSEA 结果画在一个图里,这样可以查看不同实验条件该通路的变化情况。本质上就是提取多个通路的富集结果,合并一下数据,然后绘图就好了,写了个简单的函数 GSEAmultiGP 来做这样的事情。

示例文献图,来自粉丝:

文献题目:

p53 Mediates Vast Gene Expression Changes That Contribute to Poor Chemotherapeutic Response in a Mouse Model of Breast Cancer

2安装

重新安装获取新功能:

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

3使用示例

数据准备

先造三个不同的 genelist,代表三个条件下基因的变化:

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

data(geneList, package="DOSE")

geneList1 <- sort(sample(seq(-2,2,by = 0.01),12495,replace = T),decreasing = T)
names(geneList1) <- sample(names(geneList),12495,replace = F)

geneList2 <- sort(sample(seq(-2,2,by = 0.01),12495,replace = T),decreasing = T)
names(geneList2) <- sample(names(geneList),12495,replace = F)


all_glist <- list(geneList,geneList1,geneList2)

然后做 GSEA 富集分析,返回 list,这里设置 pvalueCutoff=1,保证在每个富集结果里都有共同的通路:

# loop to enrich
lapply(1:3function(x){
  ego3 <- gseGO(geneList     = all_glist[[x]],
                OrgDb        = org.Hs.eg.db,
                ont          = "BP",
                minGSSize    = 100,
                maxGSSize    = 500,
                pvalueCutoff = 1,
                verbose      = FALSE)
}) -> m_gsea_list

查看其中一个结果:

# check
df <- data.frame(m_gsea_list[[1]])

绘图

默认绘图:

# plot
GSEAmultiGP(gsea_list = m_gsea_list,
            geneSetID = "GO:0002757",
            exp_name = c("group1","group2","group3"))

修改颜色:

GSEAmultiGP(gsea_list = m_gsea_list,
            geneSetID = "GO:0002757",
            exp_name = c("group1","group2","group3"),
            curve.col = ggsci::pal_lancet()(3))

添加 P 值:

GSEAmultiGP(gsea_list = m_gsea_list,
            geneSetID = "GO:0002757",
            exp_name = c("group1","group2","group3"),
            curve.col = ggsci::pal_d3()(3),
            addPval = T,
            pvalX = 0.99,pvalY = 0.99,
            legend.position = "right")

修改底部标签:

GSEAmultiGP(gsea_list = m_gsea_list,
            geneSetID = "GO:0002757",
            exp_name = c("group1","group2","group3"),
            curve.col = ggsci::pal_d3()(3),
            addPval = T,
            pvalX = 0.99,pvalY = 0.99,
            legend.position = "right",
            rect.bm.label = c("DOX","DMSO"))

这样就可以查看不同实验条件下通路的变化了。

4结尾

路漫漫其修远兮,吾将上下而求索。


欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。

老俊俊微信:

知识星球:



往期回顾目录


grid 里绘制连续型图例
听说你要绘制 scanpy 版的散点图?
听说你要手搓一个 grid.xaxis2/grid.yaxis2?
用 grid 手搓一个单细胞散点图+细胞数量条形图
lattice 分面设置
获取字符串的长度和宽度
piggyback 轻松像向 github 上传大文件
ClusterGVis 添加 GSEA 富集图
使用 lattice 绘制散点图
ggh4x 部分实用功能分享