大家好,又见面了,我是你们的朋友全栈君。
链接:https://www.jianshu.com/p/988d90484f77
不管是转录组,还是芯片数据,或者其他有关基因的组学分析,每当数据分析到后面,要想得到结果,都躲不过这个富集分析,因为它是帮助我们从庞杂的组学数据中发掘规律重要的一环,对基因功能进行富集分析,就有可能发现在生物学过程中起关键作用的生物通路,并且帮助理解生物学过程的分子机制。
现在的高通量测序带来的巨大数据量,让我们眼界大开,局限于单纯的某个基因的做法越来越行不通,但是想要从庞大的关系网络中挑选出有效信息,比如将某几个基因和某个期待的生物学现象结合起来,这个事直接做是很困难的。因此为了降低研究的复杂度,将不同生物学现象与基因的对应关系做成了多个数据库。于是,当我们手上有成百个差异基因时,就去不同数据库比对,这个过程就叫做富集分析。
简而言之,基因富集分析是在一组基因中找到具有一定基因功能特征和生物过程的基因集,在研究差异表达基因、筛选基因的后续分析中经常使用。
基因集,也叫gene set,也就是一系列具有相同功能的基因构成的集合,比如某一条代谢通路(pathway),其中有很多的基因,因此位于同一通路下的基因就构成了一个基因集合。
组成基因集的最基本元素就是一个一个的基因,在芯片分析中,结果往往是差异表达的探针,需要先将探针映射到基因上。注意:在映射的过程中,必须考虑到基因和探针之间的对应关系,会有多个探针对应一个基因情况,虽然比重不大,却还是要考虑。比如分析甲基化数据时,由于大部分的基因具有多个CpG位点,因此会对应多个探针ID,因此会有多个探针ID。有时A、B探针都有探针比对上,但不能就这样认为它们的差异量一样,因为A、B的差异CpG位点有时不同,B却只有3个,他们虽然都叫差异基因,但差异也分大小,不能一概而论。(这里没读懂)
1.富集分析目的
万事万物皆有其因,事实上,我们做这个富集分析的目的主要包括:
目前正在研究某个基因,想看它在不同样本中的表达差异,也就是我们有和课题相关的目标基因,你认为这个基因是处理和对照产生不同的原因之一,但是口说无凭,需要佐证。此时你需要富集分析。
跑程序得到的差异基因上千个,你知道他们是哪些类的,和物种什么生物过程相关,你会把基因一个一个放到注释数据库去调查吗?此时你需要富集分析。
研究某个基因的上下游调控关系时,你可能对KEGG的那个通路图不陌生,这就是富集分析。
它是快速调查目标基因集倾向性的方法之一。因此你可能听说过通路分析(pathway)、功能分析。就是说,手里有基因、蛋白的,都要经历这一步。
举个生活中的例子:城市中都有生活公园,清晨你会看到许多老人在锻炼身体,上午游人来玩耍,小商贩也不能放过这个机会,下午到了放学的点,孩子们蜂拥而至,而到了晚上,中年人群广场舞激情飘扬。现在想看看公园哪个时间段更吸引人。假如一天来公园的共1000人,现在把这些人都聚集在一起,从中抽取200人,结果看到70%以上都是老人,那么基本可以确定清晨公园人流量更大。然后针对主要公园人群——老年人,公园管理部门就可以安排更便民的措施。当然,这个例子只是为了理解下面的内容
我们上面不同年龄的人群,就对应不同的功能的基因集,当然人群中的每个人都可能不同时间光顾公园,当然基因集中的不同基因也可以但与好几个生物过程。我们这里做的富集分析,不是为了分析个体,而是看群体。先判断出哪些群体的差异是我们想要的,再看其中的个体~就是这么个过程!
2.富集分析算法
任何软件、分析背后都是一套算法,了解算法才能真正坐观云卷云舒。具体的方法介绍可以参考:Progress in Gene Functional Enrichment Analysis这篇文章。大体上富集分析有四类算法:ORA、FCS、PT、NT。
富集分析四类算法
1.【最常用】ORA(Over Representation Analysis):过表达分析
首先这个名字很奇怪,但是既然人家取了这个名字,就一定有原因。这个部分很重要,需要重点理解采用“理论联系实际”的方法
理论:什么是ORA方法?它是检验某类功能在一个数据子集中是否表现过度。又称为”2×2”算法,像上图一样,做一个列联表。上图中的ORA中,蓝圈内是感兴趣基因(8个),绿圈内是某个通路的基因(5个);灰点是既不感兴趣又不在通路内的(6个),蓝点是感兴趣但不在通路内的(5个),绿点是在通路内但不感兴趣的(2个),红点是既感兴趣又在通路内的(3个),于是就能做出来2×2列联表。再利用费舍尔精确检验或超几何分布得到p值。
简而言之,需要4类数据:总共的基因数(作为背景基因)、总共属于某分类的基因数、样本包含的基因数(也就是用的差异基因)、样本中属于某分类的基因数。
优点:出现的最早,做常用,有完善的统计学基础,结果比较可靠;
缺点:仅仅使用了基因的数目,但是基因的不同表达水平没有考虑,为了得到差异基因,需要人为设置阈值,没有一个设置规定,因此结果因人而异;
适用于差异最显著的基因,而差异不显著的基因就会被忽略,检测灵敏度会降低。
ORA利用统计学假设每个基因相互独立,但就生物体本身而言,忽略了内部的复杂的相互作用,并且每个基因在不同的生物学过程中发挥的作用大小不一样,同样看待结果可能会不准确。
实际:实际上就是把我们感兴趣的基因和背景基因做一个交集。
感兴趣的基因也就是差异基因了,包括上调、下调表达的(利用原始表达矩阵中p值和logFC进行筛选),一般人类芯片数据会有几百个
背景基因就是在KEGG等数据库中有注释的基因【人类基因组有2万个左右基因,现在总共有已知功能的是7000左右,随着研究的深入,背景基因数量会越来越多,结果也会越来越全面】
enrichKEGG结果
举个例子,KEGG通路hsa05206指的是MicroRNAs in Cancer,包括150个基因,背景基因使用了6517个;GSE17708芯片得到的差异基因数是547个,在KEGG能注释上的有80个,其中就有10个是MicroRNA通路的,概率高达12.5%(enrichKEGG都是用能在KEGG注释上的基因,比如这里是用80而不是547),那么这个通路是不是在下调基因中被显著改变?需要把全部的80个下调基因,在KEGG的530个通路中注释一遍,再一个一个进行超几何分布检验,得到p值。hsa05206通路在背景基因中查到的概率是150/6517,是显著低于12.5%的
超几何分布属于统计学上一种离散概率分布。它描述了由有限个物件中抽出n个物件,成功抽出指定种类的物件的个数(不归还)。n = 1,茶几和分布还原为伯努利分布;n 接近 ∞,超几何分布视为二项分布
2.FCS(Functional Class Scoring)功能集打分法
它比ORA的进步就是基本假设做了改变,考虑的更加全面。它认为尽管单个基因的改变会造成显著性影响,但是和它类似的微效基因叠加在一起也能行。也就是说,FCS不再像ORA一样,强调个人英雄主义,而是把目光转向人民,“星星之火,可以燎原”
Ten Years of Pathway Analysis:Current Approaches and Outstanding Chanllenges这篇文章有详细的描述。
操作方法:
要求的输入是一个排序的基因列表和一个基因集合,不需要设置阈值。
计算单个基因表达水平的统计值,采用如衡量差异基因的ANOVA、Q-statistic、t检验、Z-score、信噪比(不懂),进行打分或排序,或者直接使用排序好的基因表达谱。
同一通路上所有基因的表达水平统计值进行整合,汇集成单个通路水平的分数或统计值,采用基因水平统计的和、均值或中位数,Wilcoxon rank sum, Maxmean statistic, Kolmogorov-Smirnov statistic(不懂)。
对通路水平的显著性进行评估:利用重抽样(bootstrap)的统计学方法。
优点:考虑了基因表达值的个体差异化信息,更加全面
缺点:FCS仍然和ORA一样,只能独立分析每一条通路,但是同一个基因可能涉及多个通路,不能分析这种情况:它只是根据特定的通路为差异基因进行排序,比如按基因A、B的一条通路检测得到它们的表达量分别改变3倍、10倍,但是换其它通路,可能排名就发生改变,不会一直保持B>A
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129235.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...