根据蛋白质的序列或结构差异关系可构建分子进化树(evolutionary tree)或种系发生树(phylogenetic tree)。进化树给出分支层次或拓扑图形,它是产生新的基因复制或享有共同祖先的生物体的歧异点的一种反映,树枝的长度反映当这些事件发生时就存在的蛋白质与现在的蛋白质之间的进化距离。根据进化树不仅可以研究从单细胞有机体到多细胞有机体的生物进化过程,而且可以粗略估计现存的各类种属生物的分歧时间。通过蛋白质的分子进化树分析,为从分子水平研究物种进化提供了新的手段,可以比较精确的确定某物种的进化地位。对于物种分类问题,蛋白质的分子进化树亦可作为一个重要的依据。
构建进化树的方法包括两种:一类是序列类似性比较,主要是基于氨基酸相对突变率矩阵(常用PAM250)计算不同序列差异性积分作为它们的差异性量度(序列进化树);另一类在难以通过序列比较构建序列进化树的情况下,通过蛋白质结构比较包括刚体结构叠合和多结构特征比较等方法建立结构进化树。现在主要介绍第一种。
构建序列进化树的主要步骤是比对,建立取代模型,建立进化树以及进化树评估。
1.建立数据模型(比对)
建立一个比对模型的基本步骤包括:选择合适的比对程序;然后从比对结果中提取系统发育的数据集,至于如何提取有效数据,取决于所选择的建树程序如何处理容易引起歧义的比对区域和插入/删除序列(即所谓的indel状态或者空位状态)。一个典型的比对过程包括:首先应用CLUSTALW程序(CLUSTALX是在WINDOW下运行类似程序 ),然后进行手工比对,最后提交给一个建树程序。这个过程有如下特征选项:(1)部分依赖于计算机(也就是说,需要手工调整);(2)需要一个先验的系统发育标准(即需要一个前导树);(3)使用先验评估方法和动态评估方法(推荐)对比对参数进行评估;(4)对基本结构(序列)进行比对(对于亲水氨基酸,推荐引入部分二级结构特征);(5)应用非统计数学优化。这些特征选项的取舍依赖于系统发育分析方法。
对于序列类型选择上,很近缘序列一般用nucleotide,因为蛋白根本没区别;远的一定要用amino acids。画nucleotide树,如果在cds上,一般先做amino acids alignment,再反过来对应到nucleotide,可以用Emboss的tranalign程序。
2.决定取代模型
取代模型既影响比对,也影响建树;因此需要采用递归方法。对于核酸数据而言,可以通过取代模型中的两个要素进行计算机评估,但是对于氨基酸和密码子数据而言,没有什么评估方案。其中一个要素是碱基之间相互取代的模型;另外一个要素是序列中不同位点的所有取代的相对速率。还没有一种简单的计算机程序可以对较复杂的变量(比如,位点特异性或者系统特异性取代模型)进行评估,同样,现有的建树软件也不可能理解这些复杂变量。
3.建树方法
主要的建树方法分别是距离、最大节约(maximum parsimony, MP)和最大似然(maximum likelihood,ML)以及贝叶斯(Bayesian)推断等方法。最大似然方法考察数据组中序列的多重比对结果,优化出拥有一定拓扑结构和树枝长度的进化树,这个进化树能够以最大的概率导致考察的多重比对结果。距离树考察数据组中所有序列的两两比对结果,通过序列两两之间的差异决定进化树的拓扑结构和树枝长度。最大节约方法考察数据组中序列的多重比对结果,优化出的进化树能够利用最少的离散步骤去解释多重比对中的碱基差异。贝叶斯法( Bayesian inference, BI)是基于进化模型的统计推论法,具有完整而坚实的数学和统计学基础,可以处理复杂而接近实际情况的进化模型,可以将现有的系统发育知识整合或体现在先验概率中,通过后验概率直观反映出各分支的可靠性而不需要通过自举法检验。BI法适用于大或复杂的数据集,其缺点是对进化模型比较敏感,BI法中指定的每个氨基酸的后验概率建立在许多假说条件下,在现实中可能不成立。
距离方阵方法简单的计算两个序列的差异数量。这个数量被看作进化距离,而其准确大小依赖于进化模型的选择。然后运行一个聚类算法,从最相似(也就是说,两者之间的距离最短)的序列开始,通过距离值方阵计算出实际的进化树,或者通过将总的树枝长度最小化而优化出进化树。用最大节约方法搜索进化树的原理是要求用最小的改变来解释所要研究的分类群之间的观察到的差异。最大似然方法评估所选定的进化模型能够产生实际观察到的数据的可能性。进化模型可能只是简单地假定所有核苷酸(或者氨基酸)之间相互转变的概率一样。程序会把所有可能的核苷酸轮流置于进化树的内部节点上,并且计算每一个这样的序列产生实际数据的可能性(如果两个姐妹分类群都有核苷酸“A”,那么,如果假定原先的核苷酸是“C”,得到现在的“A”的可能性比起假定原先就是“A”的可能性要小得多)。所有可能的再现(不仅仅是比较可能的再现)的几率被加总,产生一个特定位点的似然值,然后这个数据集的所有比对位点的似然值的加和就是整个进化树的似然值。
对于各种方法构建分子进化树的准确性,一篇综述(Hall BG. Mol Biol Evol 2005, 22(3):792-802)认为贝叶斯的方法最好,其次是ML,然后是MP。其实如果序列的相似性较高,各种方法都会得到不错的结果,模型间的差别也不大。一般来讲,如果模型合适,ML的效果最好。对近缘序列,有人喜欢parsimony,因为用的假设最少(的确很诱人)。其实其它方法都会很好,模型间的差别也不大。parsimony一般不用在远缘序列上,这时一般用nj或ml。对相似度很低的序列,nj往往出现long-branch attraction,有时严重干扰构树。ml据说影响最小(某篇review说的)。
至于软件,ml树推荐用phyml,速度最快,或用paml,名气最大;parsimony推荐用老牌paup,但mega或phylip也能做,我不常做parsimony;nj一般可以选择MEGA;贝叶斯的采用MrBayes。
每种软件都要好多模型,不知道选择什么模型可以使用Modeltest寻找最佳建树模型。
4.进化树搜索
单一的进化树的数量会随着分类群数量的增长而呈指数增长,从而变为一个天文数字。由于计算能力的限制,现在一般只允许对很小一部分的可能的进化树进行搜索。具体的数目主要依赖于分类群的数量、优化标准、参数设定、数据结构、计算机硬件以及计算机软件。有两种搜索方法保证可以找到最优化的进化树:穷举法和树枝跳跃法(BB)。对于一个很大的数据集,这两种方法都很不实用。对分类群数量的限制主要取决于数据结构和计算机速度,但是对于超过20个分类群的数据集,BB方法很少会得到应用。穷举法要根据优化标准,对每一个可能的进化树进行评估。BB方法提供一个逻辑方法,以确定那些进化树值得评估,而另一些进化树可被简单屏蔽。因此BB方法通常要比穷举法快得多。
绝大多数分析方法都使用“启发式”的搜索。启发式现搜索出相近的次优化的进化树家族(“岛屿”),然后从中得到优化解(“山顶”)。不同的算法用不同程度的精确性搜索这些岛屿和山顶。最彻底也是最慢的程序(TBR,tree bisection-reconnection,进化树对分重接)先把进化树在每一个内部树枝处劈开,然后以任意方式将劈开的碎片重新组合起来。最快的算法只是检查一下相邻终端的不太重要的重新组合,因此倾向于找到最近的岛屿的山顶。降低搜索代价的最好方法是对数据集进行剪除。影响优化搜索策略选择的因素(数据量,数据结构,时间量,硬件,分析目的)太复杂,无法推荐一个简单可行的处方。因此进行搜索的用户必须对数据非常熟悉且有明确的目标,了解各种各样的搜索程序及自己硬件设备和软件的能力。
除上述当前应用最广的方法外,还有大量的建立和搜索进化树的其它方法。这些方法包括Wagner距离方法和亲近方法(距离转化方法);Lake的不变式方法(一个基于特征符的方法,它选择的拓扑结构包含一个意义重大的正数以支持颠换);Hadamard结合方法(一个精细的代数方阵方法,对距离数据或者观察到的特征符进行修正);裂解方法(这个方法决定在数据中应该支持哪一个基于距离的可选的拓扑结构);四重奏迷惑(Quartet puzzling)方法可以为ML建树方法所应用,这个算法相对而言是个较快的进化树搜索算法。
5.确定树根
上述的建树方法所产生的都是无根树(进化树没有进化的极性)。为了评估进化假说,通常必须要确定进化树的树根。确定系统发育进化树的树根并不简单问题。一种确定树根的好方法就是分析时加入一个复制的基因。如果来自绝大多数物种或者所有物种的所有的平行基因在分析时都被包含进去,那么从逻辑上我们就可以把进化树的树根定位于平行基因进化树的交汇处,当然要假定在所有进化树中都没有长树枝问题。
6.评估进化树和数据
现在已经有一些程序可以用来评估数据中的系统发育信号和进化树的健壮性。对于前者,最流行的方法是用数据信号和随机数据作对比实验(偏斜和排列实验);对于后者,可以对观察到的数据重新取样,进行进化树的支持实验(非参数自引导和对折方法)。似然比例实验可以对取代模型和进化树都进行评估。
具体介绍一下Bootstraping法。由于进化树的构建是一个统计学问题。我们所构建出来的进化树只是对真实的进化关系的评估或者模拟。如果我们采用了一个适当的方法,那么所构建的进化树就会接近真实的“进化树”。模拟的进化树需要一种数学方法来对其进行评估。不同的算法有不同的适用目标。 一般Bootstrap的值>70,则认为构建的进化树较为可靠。如果Bootstrap的值太低,则有可能进化树的拓扑结构有错误,进化树是不可靠的。一般推荐用两种不同的方法构建进化树,如果所得到的进化树类似,则结果较为可靠。
一般碰到的几类问题是,(1)推断基因/蛋白的功能;(2)基因/蛋白家族分类;(3)计算基因分化的年代。
推断基因/蛋白的功能,一般先用Blast工具搜索同一物种中与不同物种的同源序列,这包括直向同源物(ortholog)和旁系同源物(paralog)。然后得到这些同源物的序列,做成FASTA格式的文件。一般通过NJ构建进化树,并且进行Bootstrap分析所得到的结果已足够。如果序列近缘,可以再使用MP构建进化树,进行比较。如果序列较远源,则可以做ML树比较。使用两种方法得到的树,如果差别不大,并且Bootstrap总体较高,则得到的进化树较为可靠。
基因/蛋白家族分类。这方面可以细分为两个问题。一是对一个大的家族进行分类,另一个就是将特定的一个或多个基因/蛋白定位到已知的大的家族上,看看属于哪个亚家族。例如,对驱动蛋白(kinesin)超家族进行分类,属于第一个问题。而假如得到一个新的驱动蛋白的序列,想分析该序列究竟属于驱动蛋白超家族的14个亚家族中的哪一个,则属于后一个问题。这里,一般不推荐使用MP的方法。大多数的基因/蛋白家族起源较早,序列分化程度较大,相互之间较为远源。这里一般使用NJ、ME或者ML的方法。
计算基因分化的年代。这个一般需要知道物种的核苷酸替代率。常见物种的核苷酸替代率需要查找相关的文献。这里不作过多的介绍。一般对于这样的问题,序列多数是近缘的,选择NJ或者MP即可。如果使用MEGA进行分析,选项中有一项是“Gaps/Missing Data”,一般选择“Pairwise Deletion”。其他多数的选项保持缺省的参数。
基因复制事件判断。对于每一分支,A物种都有两个成员与B物种聚在一起,说明A物种相对于B物种多发生了一次复制事件。
来源:丁香园
欢迎关注生信人