Pathway Analysis讨论及基因富集分析软件(Gene Set Enrichment Analysis,GSEA)使用实战
在所有物是人非的景色里,我最中意你。
背景:聊一聊 Pathway Analysis
本文衔接高通量测序处理学习记录,通过Htseq得到read counts matrix之后,下游使用Deseq2处理得到差异基因。
太多文章介介绍Deseq2的使用了,此处予以推荐hoptop的基因表达分析,上手简单,深入浅出
当然所有数据处理的Destination都应该是为实验服务,所以这里主要还是想学习一下后期的一个pathway analysis
PLOS CB 2012年的一篇文章总结了十年来数据分析方法的进化历程,存有三个方法学上的改进,依次为Over-representation analysis, Functional Class Scoring, Pathway Topology, 每种方法都有着其与时代相适应的能力与特质同时又迭代进步,最早使用的Over-representation analysis到目前也还是会有使用
-
First Generation: Over-Representation Analysis
曾经的一段时间内,micro array技术的风靡产生了对下游分析的极大需求,这里 over-representation analysis (ORA)应运而生,从一系列基因里根据阈值提取出部分基因进行显著性分析,也就是统计学常见的“2X2 交叉表格法”,对每个pathway进行统计分析,常见tests都建立在hypergeometric distribution、chi-square、binomial distribution等方法上。
limitations:- 只考虑了差异基因列表,并不考虑差异基因的表达情况
- 只检验了通过设定阈值筛选标准的基因,对差异微弱的基因并未考虑,但实际上会造成bias
- 每个基因会作为独立存在事件考虑,未加入相互影响干扰因素
- Pathway也是作为独立存在事件考虑
我们日常分析中最常见的GO/KEGG 分析就是基于这种原理,虽然老旧但实用
-
Second Generation: Functional Class Scoring (FCS) Approaches
Functional Class Scoring(FCA)的推测设想认为虽然强烈的单个基因的改变可以影响到pathways,但是微弱的相互协同的功能相关基因的变化也可以拥有这种影响,所以这种方法的输入数据是一个基因水平的统计数据(标准化后食用更佳),随后把gene-level的数据输入到pathway-level进行统计,现有方法包括Kolmogorov-Smirnov statistic, sum, mean, or median of gene-level statistic, the Wilcoxon rank sum, and the maxmean statistic等,最后再做一个显著性检验。相对于ORA,FCS完善了三个缺陷:- 不需要人为的阈值确定差异基因list
- FCS使用所有可用的表达水平进行分析
- FCS考虑了基因相互间的变化,解释了基因变化与pathway之间的依赖性
limitations
- 类似于ORA,pathway之间的分析依旧是彼此独立的(此种原因可以解释为单个基因同时存有多种功能,在多个pathway中发挥作用,overlap过多的pathway就会相互干扰)
- 使用rank的方式纵然有着很多优点,但是忽略了单个基因的变化幅度,也就是权重
-
Third Generation: Pathway Topology (PT)-Based Approaches
目前除了简单的包括基因list的数据库(比如GO和MSigDB之外),还有着很多已知的数据库包含着更多的信息,例如基因产物,相互作用,激活抑制功能,包括有KEGG, MetaCyc, Reactome, RegulonDB, STKE, BioCarta等。
因为ORA和FCS只考虑了基因而未利用额外的数据信息所以天然的存有着分析短板。Pathway Topology (PT)-Based Analysis就是尝试利用额外的信息进行统筹分析,但是它其实和FCS的分析过程是没有差别的,唯一的区别在于在进行gene-level statistics的时候TP使用pathway topology方法
Rahnenfuhrer et al.推出的ScorePAGE,通过计算相关和协方差的方式来得到类似于FCS的pathway-level的结果,但是又综合考虑了两组gene list之间需要connect的难度从而进行给分,而不是像FCS分配统一权重。
limitations- PT-based的方法千差万别,结论也千差万别,很难界定结果的准确性
- 精确的分析结果依赖于数据库的信息准确性,但是细胞特异性的基因表达数据目前还非常不完善,这也是卡住方法开发的门槛
- 相关分析无法考虑动态变化,毕竟生物系统是一个不断协调变化的过程
-
下面给出一个分析工具列表
根据上面的介绍,我选用GSEA来进行pathway analysis,因为三代分析还不成熟,一代分析又显得老套,中规中矩按照基本法做分析就好啦。
当然GO/KEGG pathway分析也是可以做一做的,我没有钦定谁来当特首分析工具
——Chevy
我们输入基础的数据不是差异基因而是表达数据,我们可以使用Deseq2里面的counts()函数对dds对象提取标准化之后的数据:
NormData <- counts(dds, normalized=TRUE)
经过简单的处理之后,就可以输入GSEA进行分析了。
GSEA入门
Gene Set Enrichment Analysis (基因集富集分析)用来评估一个预先定义的基因集的基因在与表型相关度排序的基因表中的分布趋势,从而判断其对表型的贡献。其输入数据包含两部分,一是已知功能的基因集 (可以是GO注释、MsigDB的注释或其它符合格式的基因集定义),一是表达矩阵,软件会对基因根据其于表型的关联度(可以理解为表达值的变化)从大到小排序,然后判断基因集内每条注释下的基因是否富集于表型相关度排序后基因表的上部或下部,从而判断此基因集内基因的协同变化对表型变化的影响。
WorkflowThe gene sets are defined based on prior biological knowledge, e.g., published information about biochemical pathways or coexpression in previous experiments. The goal of GSEA is to determine whether members of a gene set S tend to occur toward the top (or bottom) of the list L, in which case the gene set is correlated with the phenotypic class distinction.
GSEA原理
给定一个排序的基因表L和一个预先定义的基因集S (比如编码某个代谢通路的产物的基因, 基因组上物理位置相近的基因,或同一GO注释下的基因),GSEA的目的是判断S里面的成员s在L里面是随机分布还是主要聚集在L的顶部或底部。这些基因排序的依据是其在不同表型状态下的表达差异,若研究的基因集S的成员显著聚集在L的顶部或底部,则说明此基因集成员对表型的差异有贡献,也是我们关注的基因集。
GSEA计算中几个关键概念:
-
计算富集得分 (ES, enrichment score). ES反应基因集成员s在排序列表L的两端富集的程度。计算方式是,从基因集L的第一个基因开始,计算一个累计统计值。当遇到一个落在s里面的基因,则增加统计值。遇到一个不在s里面的基因,则降低统计值。每一步统计值增加或减少的幅度与基因的表达变化程度(更严格的是与基因和表型的关联度)是相关的。富集得分ES最后定义为最大的峰值。正值ES表示基因集在列表的顶部富集,负值ES表示基因集在列表的底部富集。
-
评估富集得分(ES)的显著性。通过基于表型而不改变基因之间关系的排列检验 (permutation test)计算观察到的富集得分(ES)出现的可能性。若样品量少,也可基于基因集做排列检验 (permutation test),计算p-value。
-
多重假设检验矫正。首先对每个基因子集s计算得到的ES根据基因集的大小进行标准化得到Normalized Enrichment Score (NES)。随后针对NES计算假阳性率。(计算NES也有另外一种方法,是计算出的ES除以排列检验得到的所有ES的平均值)
-
Leading-edge subset,对富集得分贡献最大的基因成员。
GSEA分析
-
首先是软件的下载 → 官网
download
在download界面需要使用教育邮箱登陆,根据自己内存选择下载
-
随后准备输入文件(详细情况可见链接,下面有常见的两种格式示范)
理论上需要输入的数据自己准备好的gene sets,我这里不使用自己的geneset list,直接使用GSEA为使用者整理好的gene sets database,人生苦短,我选简单
简单示例:
这里输入文件需要两个,第一个是基因表达矩阵.gct文件,第二个为样品分组信息文件.cls
Deseq2出来的数据在R里面处理一下就是GCT文件,加上两行,插入一列,第一行第一列直接赋值为为“#1.2”(默认),第二行第一列就是nrow(your_data)-3,第二行第二列为ncol(your_data)-2,其余为NA,保存为.gct文件,sep= "\t",即可
GCT文件: Gene Cluster Text file format (*.gct)
参考.gct文件
示例.gct文件
参考.cls文件 示例.cls文件这里只讨论简单的对照实验,不考虑时间点等多组对照实验(详情可参见官网示例文件,在此基础上简单变形,很简单)
依旧可以通过R创建一个data.frame,三行,每行信息如下所示,保存为.gct文件,sep= "\t"
或者使用文本处理软件编辑一下即可
- Load到GSEA软件:
- Set GSEA
- Run GSEA
Details点击对应ERROR 或者 SUCCESS 可以获取相应的信息
以上每一个可点击的项都是有用的信息,可以自行探索,主要解释一下下面的图:
常见结果图
- 图最上面部分展示的是ES的值计算过程,从左至右每到一个基因,计算出一个ES值,连成线。最高峰为富集得分(ES)。在最左侧或最右侧有一个特别明显的峰的基因集通常是感兴趣的基因集。
图中间部分每一条先代表基因集中的一个基因,及其在基因列表中的排序位置。- 最下面部分展示的是基因与表型关联的矩阵,红色为与第一个表型(MUT)正相关,在MUT中表达高,蓝色与第二个表型(WT)正相关,在WT中表达高。
- Leading-edge subset 对富集得分贡献最大的基因成员。若富集得分为正值,则是峰左侧的基因;若富集得分为负值,则是峰右侧的基因。
- FDR GSEA默认提供所有的分析结果,并且设定FDR<0.25为可信的富集,最可能获得有功能研究价值的结果。但如果样品数目少,而且选择了gene_set作为Permumation type则需要使用更为严格的标准,比如FDR<0.05。
——引自参考文献
- Run Leading edge analysis
对应结果可以保存
结果
- Enrichment Map Visualization
需要安装cytoscape 3.3,此处不做演示
好啦,学习到此结束,大家十一月快乐
参考文献
日常Bob镇楼
网友评论