构建进化树
一、分子进化简介(什么是系统发生?)
二、系统进化树构建方法(系统发生树)
三、构建进化树的工具(如何构建进化树?)
一、分子进化简介 从物种的一些分子特性出发,从而了解物种之间的生物系统发生的关系。 蛋白和核酸序列 通过序列同源性的比较进而了解基因的进化以及生物系统发生的内在规律。 1、什么是系统进化树(发育树)? 对一组实际对象的世系关系的描述(如基因,物种等)。 | |
分子进化研究的基础(假设) 核苷酸和氨基酸序列中含有生物进化历史的全部信息。 分子进化研究的基础(理论) 在各种不同的发育谱系及足够大的进化时间尺度中,许多序列的进化速率几乎是恒定不变的。(分子钟理论, 1965 ) 分子进化研究的基础(实际) 虽然很多时候仍然存在争议,但是分子进化确实能阐述一些生物系统发生的内在规律。
| |
直系同源与旁系同源 直系同源(orthologs): 同源的基因是由于共同的祖先基因进化而产生的. 旁系同源(paralogs): 同源的基因是由于基因复制产生的. (以上定义源自Fitch, W.M. (1970) Distinguishing homologous from analogous proteins. Syst. Zool. 19, 99–113) 以上两个概念代表了两个不同的进化事件 用于分子进化分析中的序列必须是直系同源的,才能真实反映进化过程。 趋同进化的基因 (genes have converged function by separate evolutionary paths) 异源基因或水平转移基因 (xenologous or horizontally transferred genes) | |
二、构建进化树的步骤和算法(构建进化树的方法) 系统进化树构建的步骤 多序列比对(自动比对,手工比对) 建立取代模型(建树方法) 建立进化树 进化树评估 | |
The Source Below Come From: Bioinformatics Sequence and Genome Analysis David W.Mount Chapter 6 Phylogenetic Prediction | 构建进化树的算法 v最大简约法(maximum parsimony,MP) v距离法(distance) v最大似然法(maximum likelihood,ML) |
最大简约法(MP) 最大简约法(maximum parsimony,MP)最早源于形态性状研究,现在已经推广到分子序列的进化分析中。最大简约法的理论基础是奥卡姆(Ockham)哲学原则,这个原则认为:解释一个过程的最好理论是所需假设数目最少的那一个。对所有可能的拓扑结构进行计算,并计算出所需替代数最小的那个拓扑结构,作为最优树。 信息位点(Sites are informative) ?所谓信息位点,它必须在至少2个分类群中具有相同的序列性状。 ?信息位点是指那些至少存在2个不同碱基且每个不同碱基至少出现两次的位点。 | |
最大简约法(MP) 优点: 最大简约法不需要在处理核苷酸或者氨基酸替代的时候引入假设(替代模型)。 此外,最大简约法对于分析某些特殊的分子数据如插入、缺失等序列有用。 缺点: 在分析的序列位点上没有回复突变或平行突变,且被检验的序列位点数很大的时候,最大简约法能够推导获得一个很好的进化树。 然而在分析序列上存在较多的回复突变或平行突变,而被检验的序列位点数又比较少的时候,最大简约法可能会给出一个不合理的或者错误的进化树推导结果。 | |
距离法 距离法又称距离矩阵法,首先通过各个物种之间的比较,根据一定的假设(进化距离模型)推导得出分类群之间的进化距离,构建一个进化距离矩阵。进化树的构建则是基于这个矩阵中的进化距离关系 。 计算序列的距离,建立距离矩阵 通过距离矩阵建进化树 通过矩阵建树的方法 由进化距离构建进化树的方法有很多,常见有:
1.Fitch-Margoliash Method(FM法)
2. Neighbor-Joining Method (NJ法/邻接法)
3. Neighbors Relaton Method(邻居关系法)
4.Unweighted Pair Group Method (UPGMA法) | |
Fitch-Margoliash方法(FM法)小结 1)、找出关系最近的序列对,如A和B 2)、将剩余的序列作为一个简单复合序列,分别计算A、B到所有其他序列的距离的平均值 3)、用这些值来计算A和B间的距离 4)、将A、B作为一个单一的复合序列AB,计算与每一个其他序列的距离,生成新的距离矩阵 5)、确定下一对关系最近的序列,重复前面的步聚计算枝长 7)、从每个序列对开始,重复整个过程 8)、对每个树计算每对序列间的预测距离,发现与原始数据最符合的树 | |
最大似然法(ML) 最大似然法(maximum likelihood,ML)最早应用于系统发育分析是在对基因频率数据的分析上,后来基于分子序列的分析中也已经引入了最大似然法的分析方法。 最大似然法分析中,选取一个特定的替代模型来分析给定的一组序列数据,使得获得的每一个拓扑结构的似然率都为最大值,然后再挑出其中似然率最大的拓扑结构作为最优树。在最大似然法的分析中,所考虑的参数并不是拓扑结构而是每个拓扑结构的枝长,并对似然率球最大值来估计枝长. 最大似然法的建树过程是个很费时的过程,因为在分析过程中有很大的计算量,每个步骤都要考虑内部节点的所有可能性。 最大似然法是一个比较成熟的参数估计的统计学方法,具有很好的统计学理论基础,在当样本量很大的时候,似然法可以获得参数统计的最小方差。只要使用了一个合理的、正确的替代模型,最大似然法可以推导出一个很好的进化树结果。 | |
由于最大似然法的分析过程需要耗费较多的时间,针对这种情况,发展出了许多优化的可以加快最大似然法寻找最优树的搜索方法,如启发式搜索,分枝交换搜索等。最大似然法具有坚实的统计学理论基础,充分的使用了分析序列中的信息资源,只要采用了合理的替代模型,可以得出很好的进化树分析结果。 进化树的可靠性分析 自展法(Bootstrap Method) ?从排列的多序列中随机有放回的抽取某一列,构成相同长度的新的排列序列 ?重复上面的过程,得到多组新的序列 ?对这些新的序列进行建树,再观察这些树与原始树是否有差异,以此评价建树的可靠性 | |
三、构建进化树的工具 1、Phylip软件 Phylip是一个免费的系统发生(phylogenetics)分析软件包。以下链接可以下载: http://evolution.genetics,washington.edu/phylip.html 由华盛顿大学遗传学系开发,1980年首次公布,目前的版本是3.6(2000年6月)。 Phylip软件包介绍 Phylip包含了35个独立的程序,这些独立的程序都实现特定的功能,这些程序基本上包括了系统发生分析的所有方面。 Phylip有多种不同平台的版本(包括windows,Macintosh,DOS,Linux,Unix和OpenVMX)。
Phylip是目前最广泛使用的系统发生分析程序,主要包括一下几个程序组: v分子序列组 v距离矩阵组 v基因频率组 v离散字符组 v进化树绘制组 | Phylip软件包分组介绍 分子序列组: 1.蛋白质序列:protpars,proml,promlk, protdist 2.核酸序列:dnapenny,dnapars, dnamove,dnaml,dnamlk, dnainvar,dnadist,dnacomp 距离矩阵组: Fitch,kitsch,neighbor 基因频率组: Gendist,contml 离散字符组 Pars,mix,move,penny,dollop,dolmove,dolpenny,clique,factor 进化树绘制组:drawtree,drawgram
其他:restdist,restml,seqboot,contrast treedist,consense,retree
|
Phylip软件包的文档 Phylip软件包的文档是非常详细的,对于每个独立的程序,都有一个独立的文档,详细的介绍了该程序的使用及其说明。
此外,Phylip软件包还包括程序的源代码(c语言)。 Phylip软件包的应用 1)、根据你的分析数据,选择适当的程序 如,你分析的是DNA数据,就在核酸序列分析类中选择程序(dnapenny,dnapars, dnamove,dnaml,dnamlk, dnainvar,dnadist,dnacomp )如果分析的是离散数据,如突变位点数据,就在离散字符组里面选择程序。 2)、选择适当的分析方法 如你分析的是DNA数据,可以选择简约法(DNAPARS),似然法(DNAML, DNAMLK),距离法等(DNADIST)。。。 3)、进行分析 选择好程序后,执行,读入分析数据,选择适当的参数,进行分析,结果自动保存为outfile,outtree。
Out file是一个记录文件,记录了分析的过程和结果,可以直接用文本编辑器(如写字板)打开。 outtree是分析结果的树文件,可以用phylip提供的绘树程序打开查看,也可以用其他的程序来打开,如treeview | 实际应用(从蛋白序列推导进化树) v出发数据-已经排列好的蛋白序列。 v重构算法-距离法(protdist.exe) v 最大简约法(protpars.exe) v 最大似然法(proml.exe) v统计分析-拨靴法(bootstrap) |
实际操作 Phylip软件包中的每个分析程序都是一个独立的应用程序。我们选择好了分析算法后,按一定的顺序组合使用选择的程序,就可以获得按选择的算法分析的结果(进化树)。 例子:从我们刚刚通过clustal比对获得的蛋白序 列推测进化树。
选择方法:距离法(protdist.exe) v第二步:设定各个参数,执行程序,获得距 离矩阵数据输出文件outfile。 v第三步:选择通过距离矩阵推测进化树的算法(fitch.exe,kotsch.exe,neighbor.exe)。 v第四步:将刚获得的输出文件改名为infile,执行选择的推测算法(neighbor.exe)。设置好参数后执行程序,获得outfile和outtree两个结果输出。 | |
加入统计分析(bootstrap) v我们刚刚获得的进化树是纯粹的根据先前获得的排列数据所推导出来的。有很多可能使得这个树并不一定可靠。 v1.测序的出错。 v2.多序列比对算法本身的问题。 v3.其他的问题。 v我们可以引进一些统计分析来寻找更优的进化树 v最常见的就是bootstrap分析。 vPhylip软件包中有两个用于执行bootstrap分析的程序。(seqboot.exe,consence.exe)。 v分析过程: v1.Seqboot产生大量的数据组 v2.应用选择的算法对产生的数据组进行分析。 v3.由consence获得最优树。 | 2、PAUP*软件 |
PAUP*的数据格式(Nexus) 主要包括taxa,characters,assumptions,sets,trees,codons,distances,paup八个数据块。
对于一个常规的分析,taxa,characters块是必须的。而分析的命令可以通过菜单操作(mac),或者键盘命令(win,linux),也可以在nexus文件中加入paup命令块 PAUP*的Nexus的文件块 1)、TAXA块 主要是定义所分析的数据(如分子序列)个数,以及这些数据的名称(如物种名称)。 2)、CHARACTERS 块 主要是定义数据矩阵(如多序列比对结果)和其他一些相关的信息(如序列特征值,序列有效区域等) | |
3)、ASSUMPTIONS块 定义了对数据的一些设定,如那些特征值是不需考虑的,怎么处理gap这个特征值等,用户自定义的一些数据也放在这块,如自定义的打分矩阵。 4)、 SETS块 定义了一系列的数据组,如特征值组,物种组等,这些设置都是为了方便后续的分析。 5)、 TREES 块 定义了用户自己设定的树。用于后续的分析,如作为限制树等。 6)、 CODONS 块 定义了遗传密码子的一些信息。如编码的位置(哪些是编码的,密码子的位点等)。 7)、 DISTANCES 块 定义了一些距离矩阵。 | 8)、PAUP 块 是软件的核心块,所有的分析命令和一些参数设置(90多个命令)都放在这一块。 这一块并不是分析输入数据所必须的,这些命令可以写在这一块(文件中),这时载入文件时就开始根据该块的命令进行分析(有点类似dos的批处理过程)。当然也可以通过键盘命令逐一敲入 ,交互进行分析。 批处理的方式在分析过程比较长,耗时比较久的时候是比较有用的。当然在进行处理之前一定要先保证该批处理过程没有问题。 一个PAUP*的基本分析实例 1)通过clustalw/clustalx获取一个多序列比对结果(可能要经过人工调整,推荐用bioedit做辅助编辑器)。保存成nexus格式的文件,或者用其他格式转换软件转换成nexus格式。paup*中也有一个tonexus命令可以将其他格式(包括phylip,GCG等格式)的文件转换为nexus格式的文件。 |
3)、数据输入完成,开始分析… 两个很有用的命令 ?:显示所有的命令 命令 ?:显示命令的所有参数 分析…(开始一) 1)、开始之前 打开记录文件?(跟踪整个分析过程)
命令:log start file =your_log_file_name;
停止:log stop; | |
分析…(开始二) 2)、设置数据 哪些用于分析? 如:include coding/only; exclude coding/only; 哪些物种要分析(删除不要的)? 如: delete 1; 或者 delete taxa_name… undelete 1; | 分析…(建树一) 3)、确定建树方法
最大简约法?最大似然法? 距离法?
命令:Set criterion=parsimony|likelihood|distance; 分析… (建树二)
4)、确定其他参数
Set ?查看其他参数的设置,改为自己所需要的设置。 如:set maxtree=10000 increase=no autoclose=yes; |
分析… (建树三) 5)、确定搜索方法(对于距离法不适用) 穷尽法:alltrees 分支跳跃查找:bandb 启发式搜索:hsearch
其他:puzzle(只在likelihood时有效)… | 分析… (建树四) 6)、开始搜索树之前(设置各个建树方法的参数) 距离法:dset 如:dset distance=tamnei negbrlen=allow 最大简约法:pset 如 pset collapse=no gapmode=newstate 最大似然法:lset 如:lset nst=6 clock=yes |
分析… (建树五) 7)、再次确认参数 是否要设置外围群(outgroup)?
如 outgroup 1,2 ;或者 outgroup taxa_set;
其他参数? | 分析… (建树六) 7)、开始搜索树 距离法:NJ,UPGMA
最大简约法,最大似然法 Hsearch ?参数是否要更改? 如:hsearch andseq=random swap=spr |
分析…(树评估一) 8)、进化树的评估 选择评估方法? Bootstrap(自展法) 用的最多,是对进化树重新取样的评估方法,可以对距离法,简约法,似然法以及衍生出的任何其他方法构建的进化树进行评估。其分析结果是一组数字,这个数字描述了进化树进化分支的支持比例,也就是进化树分支的稳健性。 | |
分析… (树评估四) 对折分析(jackknife) 跟bootstrap类似,只是在对原始数据取样的时候不会取重复的数据位点。因为它重复取样的时候是在原始数据中除去一个或者多个比对位点。 对折分析得出的结果和bootstrap是一样的。 命令和参数都类似,用的比bootstrap少很多。 分析… (树评估六) KHtest和SHtest 用来测试一个特定的次优化的ml或者mp拓扑结构同最优化的拓扑结构相比是否显著不同(通常用来做Hypothesis test)。 PAUP*中这两个测试是作为pscores和lscores的一个参数,默认关闭,需要进行这两个测试的时候,要打开该参数。
Pscore中有KHtest,不支持SHtest Lscore中有KHtest和SHtest | |
分析… (树评估七) 如: Pscores all/khtest=normal; Lscores all/khtest= normal shtest=rell;
测试得出的结果是返回一个显著性差异系数(P值)。 分析… (树评估八) 其他测试 随机测试:permute 不一致的长度差异测试: hompart | |
分析结束之前 1)、保存分析结果 Savetrees 根据要求将内存中的树保存到文件 如:savetrees file=tree.tre brlens=yes savebootp=both from=1 to=2; 2)、停止记录文件 Log stop; 退出 3)、如果要进行下一项分析,想让原来改过的参数全部变回默认设置 命令:factory 所有参数恢复默认设置
4)、确定要退出后 命令 :quit | 一些有用的命令 1)、Treeinfo 查看内存中树的情况(多少个?有根还是无根?…)。 2)、clear 清除内存中所有的树。 3)、showtree 查看内存中的树(默认显示第一个树,可以加入参数) 如:showtree all;showtree 2,3; 4)、gettrees 从树文件中读取树到内存中 5)、dscores,pscores,lscores 计算树的距离,简约性,相似性分值。 6)、ingroup/outgroup 取消和设定外围群 |
7)、Contree 根据一定的规则求解一致树 8)、Deroottrees 将有根树转换为无根树 9)、Roottrees 根据当前设定的outgroup将无根树转换为有根树 | 10)、Filter 根据设定的规则筛选树。 11)、详细的命令请参考paup*软件的command reference。 |
免费分子进化遗传分析软件,可以免费下载安装。 |
4、Vector NTI:商业软件
Vector NTI Suit 同源比较—主窗口 |
随着人类基因组计划的开展,争夺有限基因资源的竞争日益激烈,利用网上软件分析未知序列,迅速得到尽可能多的信息显得尤为重要。仅仅在几年前,网上只零散地分布着一些功能简单的小程序用于新基因的鉴别,现在这些软件有了长足的发展。 目前,在国际上,一些优秀的软件根据功能归类被集中在一个网页上,极大地方便了使用。 http://bioinformatics.weizamann.ac.il/gdp/gdp.html 在国内,很多生物信息学软件来源信息(包括不少免费下载的软件)都可以生物软件网上获得。 http://www.bio-soft. |
评论