GSVA:pathway级别的差异分析

38 篇文章 7 订阅

GSVA其实就是pathway级别的差异分析

标准差异分析通常是不够的,定位到成百上千个有统计学显著变化的差异表达基因后,同样是有成百上千个生物学功能注释(GO功能和KEGG通路),普通的超几何分布检验已经不能满足大家多元化的分析了,所以就有了大家耳熟能详的GSEA分析,以及绝大部分人比较陌生的GSVA分析。

GSVA分析的文章发表于2013年,GSVA: gene set variation analysis for microarray and RNA-Seq data 同样是broad 研究生出品,其在2005年PNAS发表的gsea已经高达1.4万的引用了,不过这个GSVA才不到300。

一般人做数据挖掘,到差异基因的生物学功能注释(GO功能和KEGG通路)就结束了,进而也就是去使用一些网页工具,比如string,出一些花花绿绿的图表,比如PPI网络图。实际上,使用了GSVA,可以把成百上千个生物学功能注释(GO功能和KEGG通路)转换为新的表达矩阵,就是具体的每个通路在各个样本的基因集变异分析(Gene Set Variation Analysis,GSVA)值,我们把它当作一般的矩阵文件,进行差异表达分析,热图绘制,火山图绘制。

下面我们以文献 **Metabolic remodeling contributes towards an immune‐suppressive phenotype in glioblastoma **为例,欣赏它的两个图表,文章发表在Cancer Immunology, Immunotherapy (2019)
链接地址:https://doi.org/10.1007/s00262-019-02347-3

虽然作者这里使用的代谢组学数据,本质上仍然是记录表达量。:
Global metabolomic profiling was performed on patient-derived glioblastoma (GBM; n=80) and LGA (n=28) tumor samples using LG/GC–MS.

  1. 基于PATHWAY的热图
    在这里插入图片描述

  2. 基于PATHWAY的火山图

PATHWAY的具体含义
pathway在我这里是基因集的别名,其中msigdb有着丰富的基因集,MSigDB(Molecular Signatures Database)数据库中定义了已知的基因集合:http://software.broadinstitute.org/gsea/msigdb 包括H和C1-C7八个系列(Collection),每个系列分别是:

H: hallmark gene sets (癌症)特征基因集合,共50组,最常用;
C1: positional gene sets 位置基因集合,根据染色体位置,共326个,用的很少;
C2: curated gene sets:(专家)校验基因集合,基于通路、文献等:
C3: motif gene sets:模式基因集合,主要包括microRNA和转录因子靶基因两部分
C4: computational gene sets:计算基因集合,通过挖掘癌症相关芯片数据定义的基因集合;
C5: GO gene sets:Gene Ontology 基因本体论,包括BP(生物学过程biological process,细胞原件cellular component和分子功能molecular function三部分);
C6: oncogenic signatures:癌症特征基因集合,大部分来源于NCBI GEO 发表芯片数据;
C7: immunologic signatures: 免疫相关基因集合。

3. 个性化分析代码

##### GSVA个性化分析 #####
library(tidyverse)
library(ggplot2)
library(clusterProfiler)
library(GSEABase)
library(GSVA)
# setwd('/public/igenebook/GRCh38_p13_AJRS2200903005_20210414/personal_analysis/heatmap')

##创建gmt文件转list对象函数
gmt2list <- function(gmtfile){
  sets <- as.list(read_lines(gmtfile))
  for(i in 1:length(sets)){
    tmp = str_split(sets[[i]], '\t')
    n = length(tmp[[1]])
    names(sets)[i] = tmp[[1]][1]
    sets[[i]] = tmp[[1]][3:n]
    rm(tmp, n)
  }
  return(sets)
}
#读取基因集数据库(gmts数据集:从GSEA官网MsigDB下载)
#读入gmt文件,这个可以从MSigDB上下载,这边选的上gene symbol根据自己的data来选择
gmt_file="/public/database/MSigDB/msigdb_v7.4_GMTs/c2.cp.kegg.v7.4.symbols.gmt"
geneset = gmt2list(gmt_file)
geneset <- getGmt(gmt_file)
geneset2 <- read.gmt(gmt_file)

#读入exp文件
exp <- read.table('/public/igenebook/GRCh38_p13_AJRS2200903005_20210414/AJRS2200903005/Result/03.Exp/All_sample_counts.xls',row.names = 1,header = T,sep = '\t')

# gsva分析
es <- gsva(as.matrix(exp), geneset,verbose=TRUE)
# es <- gsva(as.matrix(exp), TERM2GENE=geneset2,verbose=TRUE)
head(es)
dim(es)

library(limma)
adjPvalueCutoff <- 0.1
logFCcutoff <- 1
group_list = c(rep("U251NC",3),rep("U251SH1",3))
design <- model.matrix(~ factor(group_list)) # ctr在前,treatment在后
colnames(design)=levels(factor(group_list))
row.names(design)<-colnames(es)

contrast.matrix<-makeContrasts(paste0(unique(group_list),collapse = "-"),
                               levels = design)
contrast.matrix<-makeContrasts("Trt-ck",
                               levels = design)
# contrast.matrix ##这个矩阵声明,我们要把progres.组跟stable进行差异分析比较

##step1
fit <- lmFit(es, design)
##step2
fit2 <- contrasts.fit(fit, contrast.matrix)

fit <- eBayes(fit2)
allGeneSets <- topTable(fit, coef="ctr_vs_treatment", number=Inf)
DEgeneSets <- topTable(fit, coef="ctr_vs_treatment", number=Inf,
                       p.value=adjPvalueCutoff, adjust="BH")
nrDEG = na.omit(DEgeneSets)
es_heatmap <- es[row.names(es) %in% row.names(nrDEG),]

library(pheatmap)
library(patchwork)
#绘制热图
annotation_col = data.frame(
  Type = factor(rep(c("U251NC", "U251SH1"), each=3))
  #Time = 1:3
)
rownames(annotation_col) = c(paste("U251NC",1:3, sep = "_"), paste("U251SH1", 1:3, sep = "_"))

p <- pheatmap(es_heatmap, show_rownames=1, show_colnames = F,annotation_col = annotation_col,
         fontsize=9, width=15, height=12)
png('GSVA.png')
p
dev.new()
#也可绘制火山图
  • 11
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值