这篇Cell里面的GSEA展示很不错!

这篇文章中有一张图很有趣,如下:

作者使用Hallmarks通路进行GSEA富集分析,共发现26条通路显著与两种表型相关,与stemness表型相关的有16条通路,与cancer表型相关的有10条通路。

本次演练中,我们选择MSIDB数据库中的50条Hallmarks通路进行示例,通路信息下载链接:http://www.gsea-msigdb.org/gsea/downloads.jsp

下面我们用我们自己的数据来做一下这张图:

rm(list = ls())
library(edgeR)
library(DESeq2)
library(fgsea)
library(clusterProfiler)
library(enrichplot)
library(ggplot2)
load('data.rda') ## 加载我们的数据 包括临床数据clin和表达数据expr
head(expr)

表达矩阵为 raw read count data

head(clin)

第一列为expr每一列对应的ID,第二列为分组信息。

table(clin$Group)

0和1分别有223个和135个

##构建分组信息
group <- factor(rep(c('1','0'),times=c(135,223)))
colData <- data.frame(row.names=rownames(clin),group)
##保留在50%以上的样本中count>=1的基因
keep <- rowSums(expr>=1) >= ncol(expr)*0.5
table(keep)
cc <- expr[keep,]
##差异分析
dds <- DESeqDataSetFromMatrix(round(cc), colData, design= ~group)
dds <- DESeq(dds)
res<- results(dds,contrast=c("group","1","0"),independentFiltering=FALSE)
##差异分析结果
alldiff <- as.data.frame(res)%>%na.omit()
alldiff$type <- ifelse(alldiff$padj>0.05,'No-Sig',
                       ifelse(alldiff$log2FoldChange>1,'Up',
                             ifelse(alldiff$log2FoldChange< -1,'Down','No-Sig')))


table(alldiff$type)

## 顺手画个火山图
ggplot(alldiff,aes(log2FoldChange,-log10(padj),fill=type))+
  geom_point(shape=21,aes(size=-log10(padj),color=color))+
  scale_fill_manual(values=c('seagreen','gray','orange'))+
  scale_color_manual(values=c('gray60','black'))+
  geom_vline(xintercept=c(-1,1),lty=2,col="gray30",lwd=0.6) +
  geom_hline(yintercept = -log10(0.05),lty=2,col="gray30",lwd=0.6)+
  theme_bw(base_rect_size = 1)+
  theme(axis.title = element_text(size = 15),
        axis.text = element_text(size = 12),
        legend.title = element_blank(),
        legend.text = element_text(size = 12),
        panel.grid = element_blank(),
        plot.title = element_text(family = 'regular',hjust = 0.5),
        legend.position = c(0.5, 1),
        legend.justification = c(0.5, 1),
        legend.key.height = unit(0.5,'cm'),
        legend.background = element_rect(fill = NULL, colour = "black",size = 0.5))+
  xlim(-4,4)+
  guides(size=F,color=F)+
  ylab('-log10 (FDR)')+xlab('log2 (Fold Change)')

接下来开始重头戏,开始画GSEA table

## 根据logfc降序排列基因
alldiff <- alldiff[order(alldiff$log2FoldChange,decreasing = T),]
## fgsea中输入的关键基因信息
id <- alldiff$log2FoldChange
names(id) <- rownames(alldiff)
## fgsea中输入的关键通路信息
gmtfile <- "./h.all.v7.4.symbols.gmt"
hallmark <- read.gmt(gmtfile)
hallmark$term <- gsub('HALLMARK_','',hallmark$term)
hallmark.list <- hallmark %>% split(.$term) %>% lapply( "[[", 2)
## Perform the fgsea analysis
fgseaRes <- fgsea(pathways = hallmark.list, 
                  stats = id,
                  minSize=1,
                  maxSize=10000,
                  nperm=10000)
sig <- fgseaRes[fgseaRes$padj<0.05,]
sig <- sig[order(sig$NES,decreasing = T),]
## 最后一步 开始绘图
plotGseaTable(hallmark.list[sig$pathway],id, fgseaRes,gseaParam = 0.5)

这样子基本上画完了,但是貌似不是很好看,可以保存为PPT格式再处理一下

library(export)
graph2ppt(file = 'GSEA-table.pptx',height = 7,width = 8.5)

其中每个元素都可以调整哦

调整完之后如下所示:

加编者微信入群 "生信交流群-医学僧"

加微信时请备注 "学校-专业-姓名"

往期精品(点击图片直达文字对应教程)

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

GSEA(Gene Set Enrichment Analysis)是一种用于功能富集分析的生物信息学方法,旨在识别在基因表达数据中富集的基因集。而GSEA prerank则是GSEA方法中的一种扩展应用。 在GSEA prerank中,首先需要根据样本表达数据的差异性对每个基因进行排序,通常使用一些统计指标(例如t统计量或log2折叠变化)进行排序。然后,将已知的基因集(例如已知的生物通路或基因功能分类)从已排序的基因列表中提取出来,得到一个基因集列表。 接下来,GSEA prerank会对这个基因集列表进行分析。它通过计算每个基因集内部基因的累积秩和(accumulate ranks),来衡量基因集的富集程度。秩和的计算考虑了基因在排序列表中的位置,与其差异性相关。 最后,GSEA prerank根据计算得到的富集分数进行基因集的排序与可视化。富集分数越高,表示该基因集在样本中的表达数据中的富集程度越高。 GSEA prerank方法的优点在于,它可以使用各种不同的差异性排序方法,并且不对表达数据进行基因差异性显著性检验。由于不需要预先进行基因统计检验,GSEA prerank方法可以更好地应用于小样本数据或低差异表达的情况。 总结来说,GSEA prerank是一种使用差异性排序方法对基因集进行富集分析的生物信息学方法,可以帮助研究人员发现基因集在表达数据中的富集程度。它在功能研究、生物通路分析等领域具有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值