直击热点,巧用ssGSEA进行免疫浸润分析|细胞|肿瘤|丰度|微环境

关于免疫浸润分析,可谓是最近一段时间的热点,很多文章基于肿瘤免疫细胞微环境进行分析,不管是进行下游基因筛选也好,还是构建诊断模型也好,发表了很多相关的研究。在前面关于《》中,我们讲解了免疫浸润分析中一个比较权威的软件-CIBERSORT。可是在很多文献中,除了CIBERSORT,我们还经常看到其他类型的免疫浸润分析软件,例如TIMER,ssGSEA,ESTIMATE等等。例如下面这篇文章,2020年发表在Frontiers in Oncology杂志(2020年发布的影响因子4.8分),直接把ssGSEA作为主要分析方法写在文章题目当中。

文中的methods部分写到,使用ssGSEA对相应的数据集进行免疫细胞丰度的测定:

下面我们就来学习一下,如何使用ssGSEA对表达谱进行免疫浸润分析。

  • 原理介绍

单样本基因集富集分析(single sample gene set enrichment analysis, ssGSEA),是GSEA方法的扩展,ssGSEA允许定义一个富集分数,该分数表示给定数据集内每个样本中基因集的绝对富集程度。文章2009年发表于nature,题目为Systematic RNA interference reveals that oncogenic KRAS-driven cancers require TBK1。

其具体的实现原理我们这里不做过多详细解读,现在直奔主题,看看其具体的实现过程。

  • 实例演练

ssGSEA是通过R包GSVA去实现的,在分析之前,我们需要安装GSVA包,其存储在Bioconductor仓库,具体的安装过程如下:

1if (!requireNamespace("BiocManager", quietly = TRUE))
2 install.packages("BiocManager")
3BiocManager::install("GSVA")

然后看一下我们今天的测试数据,我们用的是GEO中的肝癌数据GSE19665(https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE19665)这个数据集,其中共20个样本,10个肝癌vs10个癌旁样本。了解了测试数据,下面我们要做的就是开始进行ssGSEA分析啦。

第一步,读入数据:

1## read in expression matrix
2exp = read.table("./expression.txt", row.names = 1, header = T)
3View(head(exp))

看一下我们的数据:

第二步,读入文献当中定义的28种免疫细胞的基因集合,在这里我们看到有Activated CD8 T cell, Central memory CD8 T cell等等。

但是,需要注意的是在GSVA包提供的分析ssGSEA分析函数中,需要读入的是一个list,也就是列表格式的基因集合,所以在这里为了大家读取数据方便,我们就直接把上述基因集合的列表进行整理,将其存储为list格式的R data,用load()函数直接读取即可。代码如下:

1## read in gene set
2load("gene_set.Rdata")

第三步,也就是最重要的一步,就是进行ssGSEA分析了,这里直接把代码贴出来,方便大家学习使用(文末有领取方式):

1# run gsva
2library(GSVA)
3library(limma)
4
5ssgsea.res <-
6 gsva(
7 as.matrix(exp),
8 gene.set.list,
9 method = "ssgsea",
10 kcdf = "Gaussian",
11 abs.ranking = T
12 )
13View(head(ssgsea.res))

结果运行出来是这个样子的:

我们来看一下计算结果,也就是每种免疫细胞的丰度:

每一行代表一种免疫细胞,每一列代表一个样本,就等同于一个表达值矩阵。好了,关于ssGSEA的分析就到这里。下面的内容,我们可以基于这个免疫细胞丰度的矩阵玩出很多花样,比如和基因进行关联分析,根据免疫细胞定量把样本进行分类,关联患者预后进行分析,结合LASSO回归构建风险评估模型等等内容,诸如此类在相关文献中有很多种玩法,后面我们会一一进行讲解。

在这里先给大家做一个层次聚类的热图,先行一睹为快,看看通过免疫细胞微环境,能否把肿瘤和正常组织区分开来。热图代码如下(文末有领取方式):

1#绘制热图
2library(pheatmap)
3
4# read in phenotype
5target = read.table("target.txt", header = T, sep = "\t")
6
7
8annotation_col = as.data.frame(target$group)
9colnames(annotation_col) = "Group"
10rownames(annotation_col) = colnames(ssgsea.res)
11color.key <- c("#3300CC", "#3399FF", "white", "#FF3333", "#CC0000")
12pheatmap(
13 ssgsea.res,
14 color = colorRampPalette(color.key)(50),
15 border_color = NA,
16 annotation_col = annotation_col,
17 labels_row = NULL,
18 clustering_method = "ward.D2",
19 show_rownames = T,
20 show_colnames = T,
21 fontsize_col = 5
22)

绘制出来的图形如下所示:

从上图中我们看出,在肿瘤(cancer)和癌旁(control)组织中,其免疫细胞的浸润是显著不同的,通过聚类分支可以看出两类样本显著富集于不同的分支上。

好了,小试牛刀,没想到ssGSEA的结果这么不错,还不赶紧试试!

如需获取分析代码和测试数据

科研猫公众号对话框回复:ssGSEA

如何快速制作箱线图?

关注科研猫视频号~

(0)

相关推荐