啥是ssGSEA呢?我们看到以上得到的差异基因均是来自群体的,否则怎么能叫差异基因,所以GSEA主要是针对有多个样本组成的表达矩阵,那对于单个样本来说,也能计算呀!
ssGSEA原理:
首先有一个样本的表达数据,一列为基因,一列为表达值;
然后对样本的所有基因按表达水平进行排序,获得所有基因中的秩次rank,这些基因的集合为BG(背景基因集);
假设要对其进行KEGG的分析,首先我们需要在GSEA官网找到KEGG对应的gmt文件:gmt文件主要格式是:每行表示一个通路,第一列为通路ID,第二列为通路对应的描述,第三列开始到最后一列为该通路中的基因。那么对于任意的一个通路A,可以拿到这个通路内的基因列表GL,从GL中寻找BG里存在的基因计数为NC,并将这些基因的表达水平加和为SG。
-
然后开始计算ES:
对于任意一个BG中的基因 G:如果G是集合GL中的基因,则他的ES等于该基因的表达水平除以SG,即该基因的表达量/BG和GL共有基因的表达量加和;如果G不是集合GL中的基因,则该基因的ES等于1/(基因集合BG总个数减去NC),如果NC很小,ES就会很小。
依次计算每个BG中的基因的ES值,找到其中绝对值最大的ES作为通路A的A.ES。
之后需要一个统计学方法来评估该ES是否是显著的,即非随机的:按照上述计算ES的方法,先随机打乱表达谱中基因的表达顺序,然后再依次计算ES值,如此重复一千次,得到一千个ES值,我们根据这一千个ES值的分布,来计算A.ES在这个分布中所处的位置及出现在该位置时的概率即得到了p值。
依次我们分别计算每个通路的ES及p值,然后使用多重检验矫正得到每个通路的FDR。
以上即是整个ssGSEA算法的整体思路。
其实我写ssGSEA主要是为了凸显它的一个功能,就是免疫浸润细胞得分的计算。
文章来源:
Local mutational diversity drives intratumoral immune heterogeneity in non-small cell lung cancer
方法来源:
Pan-cancer Immunogenomic Analyses Reveal Genotype-Immunophenotype Relationships and Predictors of Response to Checkpoint Blockade
方法基于metagenes,即代表特定免疫细胞亚群的非重叠基因组,并且既不在CRC细胞系中也不在正常组织中表达。然后使用这些组的metagenes的表达来使用基因集富集分析(GSEA)分析统计富集。优点是该方法的稳健性,这是由于两个特征:
(1)使用一组基因而不是代表一个免疫亚群的单个基因,因为使用单个基因作为免疫亚群的标记可以是误导因为许多基因在不同的细胞类型中表达;
(2)评估一组基因相对于样品中所有其他基因表达的相对表达变化。https://www.jianshu.com/p/da1dbbf793ab
这个metagenes是可以在方法文献中下载的,我下载了之后展示前10个基因,这个集合中总共包含783个基因,共同描述了28种免疫浸润细胞的特征,对于每一种免疫细胞来说,都有一个基因亚集来描述其特征,每一个基因亚集中的基因都不重叠。这里说的基因亚集就可以理解为上面所说的GL,然后对于每个样本来说,他们均可生成一个根据表达情况排列成的BG,然后在根据上面的计算方法可以计算每个样本在每个亚集中的富集得分,在R中主要就是用的gsva函数,然后设置参数为method='ssgsea',就可以得到所有样本对于28种免疫浸润细胞的富集得分了。
gsva_matrix<- gsva(as.matrix(data), #表达矩阵
list, #特征基因列表
method='ssgsea', #方法设置 method=c("gsva", "ssgsea", "zscore", "plage")
kcdf='Gaussian', #Character string denoting the kernel to use during the non-parametric estimation of the cumulative distribution function of expression levels across samples when method="gsva". By default, kcdf="Gaussian" which is suitable when input expression values are continuous, such as microarray fluorescent units in logarithmic scale, RNA-seq log-CPMs, log-RPKMs or log-TPMs. When input expression values are integer counts, such as those derived from RNA-seq experiments, then this argument should be set to kcdf="Poisson".
abs.ranking=TRUE) #When abs.ranking=TRUE the original Kuiper statistic that sums the largest positive and negative random walk deviations, is used. In this latter case, gene sets with genes enriched on either extreme (high or low) will be regarded as 'highly' activated.
| Metagene | Cell type | Immunity |
| ADAM28 | Activated B cell | Adaptive |
| CD180 | Activated B cell | Adaptive |
| CD79B | Activated B cell | Adaptive |
| BLK | Activated B cell | Adaptive |
| CD19 | Activated B cell | Adaptive |
| MS4A1 | Activated B cell | Adaptive |
| TNFRSF17 | Activated B cell | Adaptive |
| IGHM | Activated B cell | Adaptive |
| GNG7 | Activated B cell | Adaptive |
| MICAL3 | Activated B cell | Adaptive |
三、ssGSEA聚类图
下方的文字表示样本,右边的文字表示免疫细胞Cancer即肿瘤组织,control即癌旁组织。
可以看出其免疫细胞的浸润是显著不同的,通过聚类分支可以看出两类样本显著富集于不同的分支上。色块越红,表示免疫细胞浸润程度越高,色块越蓝,表示免疫细胞浸润程度越低。
ssGSEA大致理解
如果不理解GSEA原理,那么大概率也看不懂ssGSEA。ssGSEA是single sample GSEA, 中文中常常将single sample 翻译成单样本。
文章中最常用到ssGSEA的是评估样本的免疫浸润:比如获取20个病人的基因表达谱,通过ssGSEA计算病人在某个免疫基因集(常称为signature)上的富集程度。常规的GSEA往往是:20个病人分为两组,通过ssGSEA评估在某个pathway的富集程度。那么ssGSEA和GSEA的区别在哪?是ssGSEA不需要分组,所以ssGSEA大多情况下实际上指的是单表型GSEA。
在 GSEA中,分组是为了获取基因差异倍数,获取基因差异倍数是为了给基因进行排序和权重,也提到了排名和赋予权重有多种方法。anyway, 只要获取基因的排序并给予权重,就可以进行run-sum获取enrichment score。
一个可能的排序和权重算法(ssGSEA中)
排序:拿到一个样本的基因表达谱,假设20000个基因,对所有基因根据表达量进行排序。
权重:假设signature中的基因为100个,赋予signature中的每个权重为1/100,总和为1。不在signature中的基因为19000个,赋予每个-1/19000的权重,总和为-1。
余下步骤和GSEA类似。
PS. 算法和权重赋予并不唯一,如果需要理解ssGSEA, 建议阅读nature原文:Systematic RNA interference reveals that oncogenic KRAS-driven cancers require TBK1(2009,David A. Barbie)
纯R代码实现ssGSEA算法评估肿瘤免疫浸润程度
Juan_NF,公众号:生信菜鸟团纯R代码实现ssGSEA算法评估肿瘤免疫浸润程度
转载来自:
ssGSEA大致理解
https://mp.weixin.qq.com/s/xPVNELqLcj_e8n1SH805RQ
单样本的GSEA(ssGSEA)
ssGSEA算法原理及应用TCGA数据