
此文章来自Kate dNA的勃客: http://stupidbeauty.com/KNA/2011/04/ phylip3-69文档翻译:dnapars-dna简约法程序,dnapars-dna-parsimony-program /
只翻译其中被本座感兴趣的部分。
© 1986-2008 华盛顿大学版本所有。作者Joseph Felsenstein 。允许在以下条件下复制这个文档 :不为它收费 ,并且保留这个版本声明。
这个程序针对DNA 序列计算出无根的系统发生史(与Wagner 树类似)(Eck和Dayhoff , 1966 ; Kluge和Farris , 1969)。Fitch (1971)的方法被用来对一个给定的树上需要的基 (base) 的改变个数进行计数 。这个方法的假设与MIX 的假设类似 :
1.每个位点都是独立进化的。
2.不同的血统都是独立进化的。
3.从系统发生史的一个分支所牵涉到的时间长度的尺度上看,一个给定的位点的基的变换的可能性是很小的 。
4.系统发生史里面不同分支之间的预期改变数量不会相差到这么大的程度:一个高频率的分支中的 2个改变的可能性比一个低频率的分支中的1个改变的可能性大。
5.位点之间的预期改变数量不会相差到这么大的程度:一个位点中的 2个改变的可能性比另一个位点中的1个改变的可能性大。
从一个占位(occupied)的位点到一个删除的改变被计数为一个改变。从一个删除到一个占位位点的还原过程是允许的 ,并且也被计数为一个改变。注意,这样的效果就是 ,假设有 N 个碱基长的删除情况会被当成N 个独立的事件。
Dnapars可以处理二叉树和多叉树。在搜索最简约树的过程中 ,它这样添加物种 :不仅在已有的分支的中间创建新的分叉 ,还尝试将那些分叉放到新的分支的末端 ,那些分支被添加到已有的分叉上 。所以 ,它同时在二叉树和多叉树中搜索。如果某棵树中的某个分支里不存在任何可能在 最简约树里的对应分支 里改变的字符的话 ,它就不会保留那棵树 。所以 ,在结果的任何的树中,只有这样的分支才会存在 :某个字符拥有一个可能在那个分支中导致改变的最简约的重构 。
它还会保留一些最优树(你可以在菜单中使用V 选项来改变它保留的树的个数)。在重新整理树时 ,它会为所有保留的树尝试进行重新整理 。这使得这个算法比以前版本的Dnapars 要慢一些 。
输入数据是标准的。输入文件中的第一行里面包含咯物种的个数和位点的个数。
接下来是物种数据。每个序列都在一个新行里开始,其中有一个 10个字符长的物种名字,它必须用空格 填充到那个长度,接下来是物种的数据 ,它是以单字母代码来书写的。序列必须是 “交错式”或者“串行式”格式的,那在分子序列程序组文档中描述过咯。使用I 选项来切换 。序列中可以有空白 ,但是在最后一行的末尾不能有额外的空白。注意,空白不是用来表示删除情况的合法符号。
选项是用一个交互式菜单来选择的。菜单是这样的 :
|
DNA parsimony algorithm, version 3.69 Setting for this run: U Search for best tree? Yes S Search option? More thorough search V Number of trees to save? 10000 J Randomize input order of sequences? No. Use input order O Outgroup root? No, use as outgroup species 1 T Use Threshold parsimony? No, use ordinary parsimony N Use Transversion parsimony? No, count all steps W Sites weighted? No M Analyze multiple data sets? No I Input sequences interleaved? Yes 0 Terminal type (IBM PC, ANSI, none)? ANSI 1 Print out the data at start of run No 2 Print indications of progress of run Yes 3 Print out tree Yes 4 Print out steps in each site No 5 Print sequences at all nodes of tree No 6 Write out trees onto tree file? Yes Y to accept these or type the letter for one to change |
如果用户接受咯显示的这些设置信息,就输入"Y"(当然,接下来按一个回车键),或者输入要改变的选项对应的字母或数字 。
S(搜索)选项控制的是:在程序所保留的那些树上 ,怎么做、以及做多少重新排列。如果选择咯 “更彻底的搜索”("More thorough search")选项(默认值),那么程序就会保留多个树 ,但是不会对那些没有改变的证据的内部分支进行折叠。它随后会在那些树的每一棵的所有部分进行重新排列。如果选择咯 “不那么彻底的搜索”("Less thorough search")选项,那么 ,在保留树之前,程序会将那些没有任何证据表明会在其上发生变化的分支折叠起来。这将导致更少的重新排列的尝试 。如果选择咯 “在一个最优树上重新排列”("Rearrange on one best tree")选项的话,那么只会将保留的树中的第一个拿来进行重新排列。这样更快,但是更加不那么彻底。如果你的树可能会有很多个多叉的话 , 就不要使用默认的 “更彻底的搜索” 选项,因为它会导致生成巨量的树 。
N选项使得你可以选择颠换(transversion)简约法,它只对颠换 (在嘌呤A 或者G 和嘧啶C 或者T 之间的变换) 进行计数 。这个设置默认是关闭的 。
权重(Weights) (W)选项从一个文件读取权重信息,那个文件的默认名字是"weights"。权重按照主文 档中描述的格式来表示,允许从0 到35 的整数权重 ,分别使用字符0 、 1 、 2 、 ... 、 9 和A 、 B 、 ... Z 来表示。
用户树(选项U)是从一个默认名字为 intree 的文件中读取的。那些树可以是多叉的 。在文件中必须在开头有一行指出其中的树的个数。
选项J、O、T、M 和0 是常用的。它们在这个软件包的主文档里描述过 。选项I 与其它分子序列程序中的一样 ,所 以在序列程序组的文档中描述。
M (多个数据集选项)会询问你是要使用多个权重集(来自权重文件)还是多个数据集。能够使用单个数据集和多个权重集的能力意味着能为这个输入数据使用更少的磁盘空间。引导和剪切工具Seqboot 可以创建一个有多个权重集的权重文件。
如果U(用户定义的树)选项在起作用的话,那么O(单独分组)选项就不会起作用。T (阈值)选项允许形成一个位于简约法和兼容性法之间的杂合方法。小于或等于1.0 的阈值没有意义,所以不应该使用:它们将会导致那棵树仅仅与输入物种的顺序有关 ,而与数据无关!
输出是标准的:如果启用咯选项1 ,那么数据将会被输出,并且"."表示 “与第一个物种相同”。接下来是一个等价的简约树的列表。每棵树都有分支长度。这些东西是用Hochbaum 和Pathria (1997)公布的一个算法来计算的,我是首先从 Wayne Maddison 那里听到这个算法的 ,他独立地发明咯这个算法。这个算法将 分支之间的状态改变的全部可能的最简约放置 之上的全部位点的重构状态的改变的个数进行平均 。注意,它对于互相重叠的多个改变来说是不正确的 。
如果选项2 被启用的话,那么会输出一个表格 ,它表示的是在每个字符中所需要的状态改变的个数 。如果选项5 被启用的话 ,那么在每个树之后都会输出一个表格,它显示的是 :对于每个分支,是否已知其中有改变 ,以及在分支的顶端推论出来的状态是什么 。这是对树中的祖先序列的一个重构。如果你选择选项5 ,那么会出现一个菜单项".",它会让你能够关掉点区分 (dot-differencing),以便让完整的祖先序列显示出来。如果推论出来的状态是"?"或者IUB 歧义字符中的一个 ,那么就会有多个状态的等价简约赋值;用户必须手动解决它们。在重构过的的状态中的"?"表示的是 ,除咯一个或者多个碱基之外,可能存在或者不存在一个删除 (deletion) 情况。如果选项6 被保持在它的默认状态的话 ,那么找到的树会被写入到一个树文件中 ,这样的话它们可用于其它程序中 。
如果使用咯U(用户树)选项,并且提供咯多于一个树,并且程序没有被告之要对不同位点的概率进行自动关联的话 ,那么 ,程序还是会为每棵树针对一棵有最高似然性的树进行一个统计测试。如果有 2棵用户树的话,那么这个版本就是由Alan Templeton (1983) 计划的那个测试 ,并且也出现在我 (1985a)的一个测试用例中。它与Kishino 和Hasegawa (1989)做的一个使用日志(log)似然性差别(differences)进行的测试非常相似。它使用从位点里面提取的 树之间的步数的差别的均值和方差。如果那 2棵树的均值与标准偏差 (deviations) 有超过1.96 的不同的话 ,那么那 2棵树就被称作是显著地不同的 。
如果有超过2棵树的话,那么所进行的测试就是Shimodaira 和Hasegawa (1999) 做的KHT 测试的扩展 。他们指出 ,对树的个数的更正是必要的 ,而且他们还引入咯一个重采样方法来进行更正 。在这里使用的版本中 , 位点之间的步数的和 的方差和协方差是针对全部的树两两计算的 。为咯 测试这一点:如果一棵树与最优树拥有相同的期望步数的话 ,每棵树与最优树之间的差别是否会大到比预期的还要大 。 这样做 :全部的树的步数都被采样 ,采样咯它们的协方差和等价均值(Shimodaira和Hasegawa的"最不利假设"),并且还会从 树的值的差别的次数的分数 和 实际观察到的最低的超出的步数 来计算出一个P 值 。注意 ,这个采样过程需要随机数,所以,如果还没有提供一个随机数种子的话,程序会要求用户输入一个 。对于 2棵树的KHT 测试,不需要随机数。
在KHT 或者SH 测试中,程序会输出一个表格 ,由以下内容组成:每棵树的步数 、每棵树到最低步数的树的差距 、利用独立的位点上的步数的差距分析出的方差 、 以及一个表示那棵树是否明显比最优树要差的结论 。
菜单中的选项6 控制的是是否要把估算出来的树写入到一个树文件中。这个输出文件的默认名字是"outtree" 。如果U 选项是有效的 ,那么所有的用户定义树都会写入到输出的树文件中 。如果程序找到咯多个最优树的话 ,那么它们都会被写入到输出的树文件中。每一个后面都会跟有一个数字的权值 ,写在方括号中(比如[0.25000])。 在以下情况,我们需要这个:我们使用这些树来构造一个引导或者剪切结果的一致性树 ,以避免过度地显示出那个找到咯很多树的重复情况 。
这个程序与MIX 很接近,并且运行起来很快 ,尤其是有很多位点而没有多少物种时。
|
5 13 Alpha AACGUGGCCAAAU Beta AAGGUCGCCAAAC Gamma CAUUUCGUCACAA Delta GGUAUUUCGGCCU Epsilon GGGAUCUCGGCCC |
|
DNA parsimony algorithm, version 3.69 5 species, 13 sites Name Sequences ---- --------- Alpha AACGUGGCCA AAU Beta ..G..C.... ..C Gamma C.UU.C.U.. C.A Delta GGUA.UU.GG CC. Epsilon GGGA.CU.GG CCC One most parsimonious tree found: +-----Epsilon +----------------------------3 +------------2 +-------Delta | | | +----------------Gamma | 1----Beta | +---------Alpha requires a total of 19.000 between and length ------- --- ------ 1 2 0.217949 2 3 0.487179 3 Epsilon 0.096154 3 Delta 0.134615 2 Gamma 0.275641 1 Beta 0.076923 1 Alpha 0.173077 steps in each site: 0 1 2 3 4 5 6 7 8 9 *----------------------------------------- 0| 2 1 3 2 0 2 1 1 1 10| 1 1 1 3 From To Any Steps? State at upper node ( . means same as in the node below it on tree) 1 AABGTCGCCA AAY 1 2 yes V.KD...... C.. 2 3 yes GG.A..T.GG .C. 3 Epsilon maybe ..G....... ..C 3 Delta yes ..T..T.... ..T 2 Gamma yes C.TT...T.. ..A 1 Beta maybe ..G....... ..C 1 Alpha yes ..C..G.... ..T |
HxLauncher: Launch Android applications by voice commands