除了这个手册以外,以下资源也需要注意:
PAML网站:http://abacus.gene.ucl.ac.uk/software/PAML.html。在这个网站上有PAML的下载以及编译程序;
PAML FAQ页面:http://abacus.gene.ucl.ac.uk/software/pamlFAQs.pdf;
PAML讨论群:http://www.rannala.org/phpBB2/,在这里你可以提出你的问题,或者提出你发现的漏洞。
PAML 的最新版本包含一下几个程序模块:baseml, basemlg, codeml, evolver, pamp, yn00, mcmctree, 以及 chi2。其中最常用的模块的介绍可以参考杨子恒教授2007年发表的文章。模块运行中用到的计算、统计方法在杨子恒教授的书中有详细的介绍。模块的主要作用包括:计算以及检测系统发育树(baseml 和 codeml); 计算复杂的碱基替代或者氨基酸替代模型中的参数,如不同位点间不同速率的模型或多个基因或者位点的综合分析模型(baseml和codeml); 用似然比例检测比较几个模型(baseml,codeml以及chi2); 用全局分子钟或者局部分子钟估算分歧时间(baseml和codeml); 用最大似然法重建祖先氨基酸、核苷酸序列以及密码子模型(baseml和codeml); 用蒙特卡洛模拟生成氨基酸、密码子或者核酸序列(evolver); 估算同义替代、非同义替代的速率,检测DNA的蛋白编码区的正选择(yn00和codeml); 综合贝叶斯法以及化石校正估算物种分歧时间(mcmctree)。
PAML的优势在于它整合了各种复杂的替代模型。在baseml和codeml中建树的算法相对简单,所以较少的物种(如<10个)可以用这两个软件分析,对于大量物种的建树分析,最好还是用其他的程序去分析树结构,例如phylip、paup或者myBayes。当然,你可以用其他的软件构树,然后作为用户树用baseml或codeml验证。
baseml 和 codeml:baseml程序用于最大似然法分析核苷酸序列; codeml程序则是由两个旧程序组合而成:codonml和aaml。其中前者是基于Goldman和Yang在1994年提出的编码蛋白质的核酸序列的密码子替代模型,而后者主要用于氨基酸序列的替代模型。现在,这两种序列可以在codeml.ctl中通过seqtype定义,其中1表示密码子序列,2表示氨基酸序列。在这个手册里面,我将使用codonml和aaml来分别表示codeml中的seqtype=1和seqtype=2。这三个程序(baseml,codonml和aaml用相同的最大似然算法对于模型进行拟合,而三者之间主要的不同点在于,三个程序中对于序列进化的马尔科夫模型中“位点”的定义:在baseml中一个位点表示一个核苷酸,在codonml中一个位点表示一个密码子,aaml中一个位点表示一个氨基酸。马尔科夫过程模型常常用于描述核苷酸、氨基酸序列之间或者密码子之间的替代。对于不同的位点,这种替代既可以是恒定的,也可以是可变的。
evolver:这个程序可以在特定的核苷酸、氨基酸、密码子替代模型下模拟序列的产生。它还可以用于其他的一些操作,如产生随机树、计算树间的距离。
basemlg:这个程序主要用于执行Yang 在1993年提出的gamma模型的运算。在计算6或7个物种以上的数据时,这段程序运算非常的慢,而且较难执行。而baseml程序中的不连续的gamma模型则可以弥补这一不足。
mcmctree:这个程序用于计算物种的分歧时间,使用的模型是Yang 和 Rannala在2006和2007年提出的。
pamp:这个程序用于执行Yang和Kumar在1996年提出的简约分析。
yn00:这段程序用于计算蛋白质编码的DNA的同义突变和非同义突变的速率,运算主要基于2000年Yang和Nielsen提出的方法。
chi2:用于似然比例运算。它可以计算chi平方的临界值,这个值可以用于比较统计值和真实值之间的差异,据此可以检测在显著性水平为5%或者1%时的差异是否显著。运行这个程序可以直接输入“chi2”并回车。另外,这个程序还可以计算p值。这时候需要输入“chi2 p”并回车。
你可能希望一个系统发育软件可以做很多事情,但是其中有许多是PAML不能完成的。下面是一个不完全的列举,希望你不要因此而浪费时间。
1)序列排列:你可以用一些程序自动的排列核苷酸或氨基酸序列(如Clustal或TreeAlign),也可以在其他一些软件(如BioEdit和GeneDoc)的帮助下手动排列序列。自动排列序列还远没有达到成熟的地步,所以手动调整是必须的。如果你要进行数千个基因组水平的排列,你必须进行排列质量的控制,例如计算序列间的距离,并一次作为序列排列是否可靠的标准。对于编码序列,可以首先对蛋白序列进行排列,然后根据蛋白序列排列核苷酸序列。需要注意的是,在baseml和codeml中序列排列时产生的gap会被识别为缺省数据(如果cleandata=1)。如果cleandata设置为1,那么所有的不明确的数据以及gap数据都会被删除。
2)基因预测:程序codonml只能用于编码序列的分析,所以codonml在运行事是假设序列是预先排列好的外显子,并且序列长度为3的倍数,序列中的第一个核苷酸会被识别为密码子位置1。内含子、居间序列以及其他非编码区域必须事先删除,编码序列也必须事先排列完毕。程序也不能处理那些直接从GeneBank里面下载的数据,就算CDS信息已经确定也不行。这段程序不能用于编码区的预测。
3)在大量数据中寻找构树信息:如前所述,你可以通过其他的软件得到一个树或者几个备选树,然后用他们作为用户树去拟合某个模型。
PAML使用老式且简单的命令行界面。你可以从PAML的网站上下载档案文件(一般来说,这个档案文件的名字时 “PAML*.*.tar.gz”),然后解压缩到本地磁盘上。这个文件适用于所有的操作系统平台,对于Windows用户来说,只需解压即可,对于UNIX或者MAC OS X用户,则需要在运行程序之前编译一下。
Windows的可执行文件放在如下所述的文件夹中:
1)到PAML的网站上(http://abacus.gene.ucl.ac.uk/software/paml.html)下载最近升级的档案文件并存放到本地硬盘上。然后将档案文件解压缩(如用WinZip)到一个特定的文件夹中,例如(D:\software\paml\),记住文件夹的名字。
2)进入命令行模式。可以通过以下方式:“开始-程序-附件”或者“开始-运行”然后在命令框中输入“cmd”然后点击确定。你可以通过右键点击标题栏改变窗口的字体、颜色、大小等。
3)将目录改到PAML的文件夹下。例如你可以输入:
d: cd \software\paml dir
4)注意,Windows命令以及文件名不区分大小写。“src”文件夹中存放的时一些源文件,“examples”文件夹中存放着各式各样的实例文件,“bin”文件夹中存放着Windows的可执行文件。你可以用Windows Explorer浏览这些文件。如果需要在当前目录下通过默认的控制文件“baseml.ctl”运行baseml程序的话, 你可以在命令行中输入这些:
bin\baseml D:\software\paml4\bin\baseml
这可以让baseml程序在当前文件夹中读取默认的控制文件“baseml.ctl”,并根据其中设置的参数进行分析。这时,你就可以输出“baseml.ctl”的拷贝,并用文本文件编辑器浏览相应的序列以及树文件了。同样,对于codeml程序的控制文件“codeml.ctl”也可以使用相同的操作。
接下来你就可以准备你自己的序列数据文件以及树文件了。控制文件以及其他输出文件都是一些简单的文本文件。一个普遍存在的问题是由于UNIX和Windows对于回车符和换行符的使用和识别。如果你使用MS Word准备输入文件的话,需要把这样存储文件“另存为-纯文本”,不要存储为Word文档。我收集了一些注意事项,这些注意事项在附加文件B的“Overcoming Windows Annoyances”详细列出。
如果你坚持使用双击,你可以打开Windows Explorer,然后拷贝所有的可执行文件,然后把它们粘贴到包含控制文件的文件夹中,双击可执行文件即可。
如上所述,你可以在命令行模式中输入程序名来运行一个程序,但是你应该知道,你的序列文件、树文件、控制文件相对于你当前的工作目录的位置。如果不熟练的话,你可以把所有的可执行文件拷贝到数据文件夹中。对于codeml程序,可能会需要一些数据文件,如:grantham.dat,dayhoff.dat, jones.dat, wag.dat, mtREV24.dat 或者 mtmam.dat,所以你最好还是一起拷贝这些文件。
程序们运行的结果将会以特定的文件名存放,如rub、lnf、rst或者rates。你不要用这些文件名命名自己的文件,因为这些文件会被覆盖的。
examples文件夹中包含许多数据的实例。这些数据在出处的论文中是用于检测新方法的,我把这些数据文件放到这里是为了你们可以重现论文中的结果。序列的排列、控制文件以及详细的readme文件也包含在内。这些都是为了帮助你们发现程序中的bug。如果你对于某个特定的分析及其结果感兴趣的话,你可以找到相应论文,用其中描述的方法分析实例数据以重现那些发表过的结果。这时尤其重要的,因为手册中所述的只是程序中用到的各类变量及其意义,但是并未清楚地描述如何针对特定的数据设置控制文件中的参数。
1)examples\HIVNSsites\文件夹:这个文件夹中包含了Yang在2000发表的论文中使用的HIV-1病毒的env V3区域的序列数据。这些数据是为了阐述文章中的NSsites模型,即不同氨基酸位点的不同ω速率的模型。这个模型在之后发表的文章中(Yang & Swanson)称为“random-sites”模型,因为有这样一个前提:我们不清楚哪些位点可能是高度保守的,哪些位点是经历正选择的。这个模型优势也称作“fishing-expedition”模型。文件夹中的数据是2000年论文中的第十组数据,分析结果则列在那篇论文的TABLE 12中。请阅读此文件夹中的readme文件。
2)examples\lysin\文件夹:这个文件夹中存放着25个鲍鱼物种的细胞溶解酶基因,这些基因在两个文章中分析报道(Yang, Swanson & Vacquier (2000a) and Yang and Swanson (2002)),这些数据用了两种模型进行了分析:“random-sites”模型(as in Yang, Swanson & Vacquier (2000a))和“fixed sites”模型(as in (Yang and Swanson 2002))。在2002年的论文中,我们根据结构信息把细胞溶解酶中的氨基酸分成了两种:包埋的和暴露的,根据这个分别计算不同位置氨基酸的ω比例。这种分析证实了一个假设:位于蛋白表面的氨基酸是受正选择的。可以参考文件夹中的readme文件。
3)examples\lysozyme\文件夹:这个文件夹包含灵长类的溶菌酶c基因,这个酶基因在1997年曾被Messier和Stewart分析过,但是在1998年Yang对这些数据进行了重新分析。这是为了阐述这样一个模型:系统发育树上不同的枝有不同的ω比例。这对于检测进化枝中的正选择是有用的。这些模型有时被人们称作分支模型或者分支特异性模型。在1998年Yang发表的论文中的大数据和小数据都包括在文件夹中。这些模型需要用户为发育树上的分支分类,在readme文件中包含树文件并非常详细解释了树的结构。请参考随后的“Tree file and representations of tree topology”。
溶菌酶数据还在Yang和Nielse的2002年的论文中分析“branch-site”模型,这个模型允许ω在进化枝和氨基酸位点之间存在差异。请参考readme文件中关于这个模型的使用。
4)examples\MouseLemurs\文件夹:这个文件夹中包括mtDNA的排列后数据,这些数据在Yang and Yoder在2003年发表的论文中用于估计mouse lemurs的分歧时间。这些数据用于阐述在全局和局部分子钟模型下,用最大似然法估计物种的分歧时间。在这个文章中描述的最复杂的模型是同时应用了多重的进化速率(multiple calibration nodes)计算多个基因之间的不同,此外还计算了不同进化枝之间的不同速率。readme文件解释了2004年Yang论文中的ad hoc比例平滑程序。
5)examples\mtCDNA\文件夹:这个文件夹中存放了Yang、Nielsen和Hasegawa在1998年发表的论文中使用的数据,这些数据包括猿类动物线粒体DNA编码的12个蛋白编码基因,对于这些序列的分析基于数种不同的氨基酸和密码子替代模型。根据这个论文的说法,这些数据是小数据(“small” data set),分析这些数据不仅仅采用密码子替代的机理模型(“mechanistic” model),还使用了经验模型(empirical model)。这个模型可以用于检测保守的和突变率较高的氨基酸位点的替代速率是否相等。详细叙述请参考文件夹中的readme文件。
6)examples\TipDate\文件夹:这个文件夹中包括了Rambaut在2000年发表的论文中的数据,这些数据用于描述他的TipDate模型。readme文件中阐述了如何用baseml程序拟合TipDate模型——一个全局的分子钟模型。局部的分子中模型也一样可以使用,参考examples\MouseLemurs\文件夹中的介绍。注意我在序列名字中使用@表示序列确定的时间。这里的文件可以被Rambaut的TipDate程序直接读取,但是如果要被baseml程序读取的话,则需要编辑一下(插入@符号)。
7)网站上下载到得文档包中还有一些其他的文件:
brown.nuc和brown.tree文件:Brown等人在1982年报道的线粒体DNA的一个895bp的片段,这个片段在1994年由Yang等人拿来检测位点特异的突变速率模型。
mtprim9.nuc和9s.trees:9个灵长类动物的线粒体中的一个888个碱基的DNA排列文件(Hayasaka et al. 1988),这些序列还用来检测不连续的gamma模型(Yang (1994a))和自动不连续gamma模型(Yang (1995))。
abglobin.nuc和abglobin.tree:α-和 β-珠蛋白基因,这些数据用来描述密码子模型(Goldman and Yang (1994))。abglobin.aa是序列排列后翻译成氨基酸的序列。
stewart.aa和stewart.tree:六个哺乳动物的溶菌酶蛋白序列(Stewart et al. 1987),用于预测祖先氨基酸序列(Yang et al. 1995a)。