”基因集打分“GSEA算法详解

前两天介绍了一个开发中的单细胞数据分析相关R包,内置了,4(热图,气泡图,upset图,堆叠条形图)+4(密度散点图,半小提琴,山峦图,密度热图)美图,见 8种方法可视化你的单细胞基因集打分 ,蛮多小伙伴留言想问一下到底什么是基因集打分,正好学徒投稿了她自己的理解,借花献佛分享给大家。

下面周文丽的投稿

参考素材见:GSEA 算法

GSEA分析一文就够(单机版+R语言版)

GSEA的统计学原理试讲

一、开发背景

该算法最初开发是受microarray RNA数据驱动,旨在解释基因组数据,获得相较于单个基因更加深入的生物学见解。

基于差异基因分析存在的缺陷:

  1. 多重假设检验校正后,只有少量基因甚至没有基因的差异达到统计学显著性。【生物学差异被技术噪音,如microarray,所掩盖】

  2. 得到大量的统计上显著的差异表达基因,但由于缺乏或未按统一生物学主题对基因进行组织,对结果的解释相当困难,依赖于生物学家强大的生物学背景。

  1. 聚焦于单基因差异,会忽略一些真正有生物学意义的生物通路。如,(基因协同发挥作用)编码代谢途径的成员的所有基因增加20%可能会显著改变细胞的代谢过程,这可能比单个基因增加20倍更重要。

  2. 同一生物学系统,不同研究团队获得差异基因列表可能差别巨大,甚至很少重叠。

GSEA vs. DEGs

  1. DEGs多聚焦于单个基因;GSEA是在基因集水平上比较不同生物学系统(不同样本)间的转录组差异。

  2. 结果稳健性更好,在不同团队研究结果中的生物学意义的可重复性和解释性更好。

  1. 高度灵活性,主要体现在基因集的来源。可以使用公共数据库如MsigDb,还可以根据研究目的自己构建。

二、数学原理:

总的来说,GSEA富集分析有以下三个要点:

  1. input data1 :样本的全基因组RNA测序数据及样本的表型标签信息【样本数尽量多一些,否则假阳性高】

  2. input data 2:基于某个合适的指标(如差异倍数FC)对所有基因排序,获得排序基因列表L = {g1, g2, g3, g4, …… gN};【可根据研究需要,制定个性化排序方案,如基于与兴趣TF的相关性。

  1. input data 3:基因集S【具有充分个性化空间。可自己定义,也可以人工筛选和矫正。】

  2. input data 4:指定计算过程中权重值p。

ES的数学计算过程如下:

总的原则:看某个基因集S的基因在L上随机分布 or 分布在顶部 or 分布在尾部。【为GSEA算法的核心,数学原理见下】

  1. 计算富集分数(Enrichment Score, ES)

    1. 解读:绝对值越大,代表基因集S在排名列表L的顶部(正值)或底部(负值)被过度代表(overrepresented);

    2. 计算过程:给定初始统计量x, 沿着排序列表从top→bottom遍历每个基因,遇到属于基因集S的基因,则x = x+ai;若遇到不属于基因S的基因j,则x = x - aj…… 直到遍历所有基因。【注意:a的值取决于基因i或基因j与分组性状的关联程度,关联越大,则a越大;反之,则越小】。ES即为该过程中的x的最大取值,对应加权的Kolmogorov-Smirnov样的统计量(ref7)。

图例:①Phit= 基因集S中的加权和,Pmiss = 非基因集S中的加权和。②ES = Phit - Pmiss。②

对应ai部分。p代表加权,若p=0,则公式简化为标准的Kolmogorov-Smirnov统计量;若p=1,则Phit的分母为基因集S中所有基因与性状的关联强度之和,基因集S中每个基因与该性状的关联都对该和进行标准化处理。【r代表基因与兴趣性状之间的关联强度,可以由FC等来评估】

  1. ES的统计显著性评估

    1. 统计学检验方法:基于经验表型的置换检验方法(empirical phenotype-based permutation test);

    2. 构建零分布:对每个样本重新分配表型标签、重新排序所有基因、重新计算基因集S的ES值;以上过程重复1000次,该1000个ES值构成零分布(null distribution);

    3. 计算P值:绘制直方图,p值即为ESnull distribution中≥或≤ESobserved的比例。该p值为经验名义p值。

    4. 结果解读:小于α值(如0.05),则拒绝零假设,认为基因集S在排序列表L的top端或bottom端富集;若≥α值,则接受零假设,认为兴趣基因集S内基因在排序列表L中随机分布。

  1. p值的多重假设检验校正

    1. 适用场景:当对多个基因集S(S1,S2, S3, S4……)进行GSEA分析时;

    2. 计算过程:①基于基因集S大小,对ES进行标准化处理,获得NES值;②对每个NES计算FDR值。

    3. 结果解读:FDR值代表,给定NES值对应的基因集为假阳性(富集)的估计概率;值越大,则假阳性的概率越大。

三、生物学意义的挖掘

  1. 富集通路的分析(略)。

S1:基因集S1主要分布在排序列表的top端,ES分值较高,p值显著;

S2:基因集S2在排序列表中随机分布,ES值低,p值不显著;

S3:基因集S3非随机分布,但也并不在top or bottom呈现集中分布模式,ES值较高,但p值不显著。

因此,富集分析的结果结果,要综合考虑p值及ES值两个指标。

  1. leading-edge subset

    1. 背景:可以通过多种方法定义基因集;需要注意的是,并不是基因集内的每个基因成员都会参与到兴趣的生物学通路中。

    2. 定义:基因集S中位于x最大值(偏离0值最大的位置)之前的基因(包含最大值位置对应的基因)。

    3. 结果解读:①代表基因集S中对ES值贡献最大的一小簇基因(核心基因);②代表基因集中在兴趣生物学通路中发挥关键作用的核心成员。

    4. 应用示例:

    1. 如下图,作者通过对p53突变和p53野生型的转录组数据进行GSEA富集分析,发现to3富集的信号通路(按p排序)为Ras信号通路、Ngf信号通路、Igf1信号哦通路。进而分析对三个通路富集贡献最大的基因,发现有四个MAPK信号通路相关的基因对该三个通路的富集均产生较大贡献。从而可以预测,MAPK信号通路中存在亚通路在p53-肿瘤组织中发挥重要作用。

四、实现方式

R包:clusterProfiler,需要自己做完差异分析,得到deg这个数据库,它有一列是logFC,有一列是基因的名字(这里举例是symbols),然后就可以无缝运行下面的代码啦!

我的示例的deg来源于单细胞分析的FindMarkers函数,代码如下;

Idents(sce)='singleR'
deg=FindMarkers(object = sce, ident.1 = 'Fibroblasts',
                ident.2 = 'Fibroblasts activated',
                min.pct = 0.01,   logfc.threshold = 0.01,
                thresh.use = 0.99)
head(deg)
 

在msigdb数据库网页可以下载全部的基因集,我这里方便起见,仅仅是下载 h.all.v7.2.symbols.gmt文件:

### 对 MsigDB中的全部基因集 做GSEA分析。
# http://www.bio-info-trainee.com/2105.html
# http://www.bio-info-trainee.com/2102.html 
# https://www.gsea-msigdb.org/gsea/msigdb
# https://www.gsea-msigdb.org/gsea/msigdb/collections.jsp

  geneList= deg$avg_logFC 
  names(geneList)= toupper(rownames(deg))
  geneList=sort(geneList,decreasing = T)
  head(geneList)
  library(ggplot2)
  library(clusterProfiler)
  library(org.Hs.eg.db)
  #选择gmt文件(MigDB中的全部基因集)
  gmtfile ='MSigDB/symbols/h.all.v7.2.symbols.gmt'
  # 31120 个基因集
  #GSEA分析
  library(GSEABase) # BiocManager::install('GSEABase')
  geneset <- read.gmt( gmtfile )  
  length(unique(geneset$term))
  egmt <- GSEA(geneList, TERM2GENE=geneset, 
               minGSSize = 1,
               pvalueCutoff = 0.99,
               verbose=FALSE)
  head(egmt)
  egmt@result 
  gsea_results_df <- egmt@result 
  rownames(gsea_results_df)
  write.csv(gsea_results_df,file = 'gsea_results_df.csv')
  library(enrichplot)
  gseaplot2(egmt,geneSetID = 'HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION',pvalue_table=T)
  gseaplot2(egmt,geneSetID = 'HALLMARK_MTORC1_SIGNALING',pvalue_table=T) 
}

参考文献:

Gene set enrichment analysis: A knowledge-based approach for interpreting genome-wide expression profiles

Aravind Subramanian, Pablo Tamayo, Vamsi K. Mootha, Sayan Mukherjee, Benjamin L. Ebert, Michael A. Gillette, Amanda Paulovich, Scott L. Pomeroy, Todd R. Golub, Eric S. Lander, Jill P. Mesirov Proceedings of the National Academy of Sciences Oct 2005, 102 (43) 15545-15550; DOI: 10.1073/pnas.0506580102

(0)

相关推荐

  • 关于功能富集分析的基础知识

    富集分析基因富集分析(gene set enrichment analysis)是在一组基因或蛋白中找到一类过表达的基因或蛋白.研究方法可分为三种:Over-Repressentation Analy ...

  • 基因或蛋白富集分析,gsea与ssgsea

    大家应该对通路富集分析都很熟悉,如DAVID.超几何富集分析等.都是在大量文章中常见的通路富集方法,给大家介绍一个更加复杂的通路富集分析的前期数据处理包GSVA(gene set variation ...

  • 不做测序,如何选择一个circRNA进行后续研究

    随着高通量测序的越来越火,对于一个基础实验而言,往往第一步都是需要做点儿高通量测序,来发现一些新的东西,才能往下做.如果不这么做的话,好像就感觉差人一步似的.尤其是对于新兴的一些RNA.比如circR ...

  • ssGSEA算法原理解析

    ssGSEA顾名思义是一种特殊的GSEA,它主要针对单样本无法做GSEA而提出的一种实现方法,原理上与GSEA是类似的,不同的是GSEA需要准备表达谱文件即gct,根据表达谱文件计算每个基因的rank ...

  • CTC算法详解

    和其它文章初衷一样,网上解释很多,但是讲的不是很明白,在看完几篇参考博客后特此记录 简介 先拿语音识别任务来说,如果现在有一个包含剪辑语音和对应的文本,我们不知道如何将语音片段与文本进行对应,这样对于 ...

  • 十大排序算法详解,基本思想+动画演示+C语言实现,太肝了!

    下面的99%的代码都是手动敲出来的,参考了诸多资料,已经经过测试,可以放心食用. 1.冒泡排序 基本思想 冒泡排序基本思想是依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交 ...

  • 道路识别算法详解

    本文详细描述了当前代码中(git 版本: 16b521b12d2e3bdc00bd996acafe4526f1d1cb9a)道路识别的算法. 如果没有特殊说明,下文中所说的"算法" ...

  • 木工、架子工、材料用量算法详解,干货满满

    建筑工程人 11篇原创内容 公众号 一模板的计算 一.根据混凝土量快速估算模板用量 1.适用情况:一般用于工程开工前期,在已知混凝土用量的情况下估算模板用量,以初步估算工程周转材料成本投入数量,为筹措 ...

  • MySQL主从复制集群—gtid实现详解

    老哥唠叨 上一篇发了MySQL主从复制集群搭建流程,不过好像小伙伴们对这个文章并不感兴趣,但是老哥出于对技术的热爱,和对小伙伴们的负责,我还是要写主从复制另一种实现方式:GTID.这些技术真的蛮重要的 ...

  • 【OCR技术系列之七】端到端不定长文字识别CRNN算法详解

    在以前的OCR任务中,识别过程分为两步:单字切割和分类任务.我们一般都会讲一连串文字的文本文件先利用投影法切割出单个字体,在送入CNN里进行文字分类.但是此法已经有点过时了,现在更流行的是基于深度学习 ...

  • spectral-cluster聚类算法详解

    spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是,谱聚类是通过切图的方式来划分不同的cluste ...

  • Affinity Propagation聚类算法详解

    Affinity Propagation简称AP, 称之为近邻传播算法, 是一种基于图论的聚类算法.将所有样本点看做是一个网络中的节点,图示如下 在样本点构成的网络中,每个样本点都是潜在的聚类中心,同 ...

  • OPTICS聚类算法详解

    DBSCAN算法对于邻域半径eps和最小样本数minPoints这两个参数比较敏感,不同的参数取值会产生不同的聚类效果.为了降低参数设置对聚类结果造成的不稳定性,在DBSCAN算法的基础上,提出了OP ...