3. 数据格式
序列数据格式:
PHYLIP格式
有限的支持NEXUS格式
PHYLIP格式详解:
第一行包含物种数和序列长度,对于密码子序列,序列长度是核苷酸数量而不是密码子数量。序列文件可设置参数:I,S,P,C,G。序列可以是交替的(I)或者连续的(S),默认S。G指多基因数据合并分析。
物种/序列ID:不能含有以下字符:, : # ( ) $ =。ID的字符数在baseml.c和codeml.c里指定。PHYLIP格式取10个字符作为物种名,为了避免可能出现的问题,可以在物种名后加上两个连续空格,物种名内部则不得出现连续两个空格。
在序列中,T,C,A,G,U,t,c,a,g,u被识别为核苷酸,A,R,N,D,C,Q,E,G,H,I,L,K,M,F,P,S,T,W,Y,V和它们的小写字母则被识别为氨基酸。“.”代表与第一条序列相同的字符,“-”代表比对中的gap,“?”代表未知的核苷酸或氨基酸。序列中的非字母符号会被忽略。
baseml和codeml处理模糊字符和比对gap的方式取决于cleandata参数,在最大似然分析中,如果cleandata=1,那么至少有一条序列为模糊字符的位点将被删掉;如果cleandata=0,模糊字符和gap都会被当作模糊字符。在成对距离计算时,cleandata=1代表“complete deletion”,也就是说所有包含模糊字符和gap的位点都会被删除;cleandata=0代表“pairwise deletion”,只有那些丢失字符的位点被删除。注:对于密码子序列,核苷酸的删除意味着删除整个密码子。
参数G:这个参数控制了异质性数据集的合并分析。序列必须被串联起来,参数用来指定每个位点来自哪个基因或密码子。G参数有3种形式。第一种形式例子如下:
此数据是线粒体基因组上的一段,包含两个蛋白编码基因位点和3个tRNA位点。因此序列上的位点自然地分为4类:三个密码子位点和tRNA编码区。第一行包含了参数G,第二行以G开头,其后是位点类别数目,其后一行是位点标记。位点标记指定了每个位点来自哪一位点类别。标记的总数目必须与每条序列中的位点数目一致。
第二种形式针对多基因的串联序列十分有用,见如下示例:
此序列由4个基因的1000个核苷酸组成,分别来自1,2,3,4基因的100,200,300,400个核苷酸。基因的长度必须在以G开头的行中,如例子中的第2行。基因长度的总和要等于核苷酸、氨基酸、密码子序列的总长度。
第三种形式仅应用于蛋白编码DNA序列,例子如下:
在第一行使用GC代替G,程序会在核苷酸分析中将密码子的三个位置做不同处理。该形式假定序列长度刚好是3的整数倍。
密码子序列的G(seqtype=1):此形式与baseml相似,需要注意的是序列长度是核苷酸总长度而基因长度是密码子数量。
此数据有5条序列,每条有300个核苷酸,可分为两个基因,第一个有40个密码子,第二个有60个密码子。
位点模式计数:
序列比对还可以以位点模式和具有这些位点模式的位点数的形式输入,此模式以第一行的P指定。
此数据有3条序列,8个位点模式,"P"表示此数据是位点模式而不是位点。比对下方的8个数字代表上面8个模式的位点的数量。例如,有100个位点,所有3个物种都是G,有200个位点所有三个物种都是T。因此,共有100 + 200 + 40 +…+ 14 = 440 sites。
P模式也可以与G模式共同使用,也可应用于蛋白序列。
对于密码子序列,格式如下所示:
共有3个物种,9个位点模式,6个位点有第一个位点模式(GTG)。
P还可以与I或S共同使用,PI说明位点模式是交替式而PS说明是连续式,默认为连续式。
树文件结构:
当runmode=0或1时需要一个树结构文件,文件名在control file中给出。树的拓扑结构通常使用圆括号表示法。
圆括号表示法:物种可以用他们的名称代表,也可以用它们在序列文件中的顺序索引代表。物种的名称必须与序列文件中完全一致。分支可以带有支长,如果有支长,baseml和codeml会将支长作为最大似然迭代的初始值。
需要无根树还是有根树取决于使用什么模型,比如分子钟是否是假定的。在没有分子钟时(clock=0),使用无根树,例如((1,2),3,4)或者(1,2,(3,4))。在有分子钟或局部分子钟时,需要使用有根树,例如(((1,2),3),4)。在PAML中,一棵有根树在根节点是二分叉,而无根树则是三分叉或多分叉。
分支或节点标签:在baseml和codeml的一些模型中允许在一个树中存在多个分支分组。例如,在局部分子钟模式下(clock=2或3),可以分别存在低、中、高三个速率分组。在分支特异密码子模型下(model=2或3),也允许不同ω的分支存在。所有这些模型都需要分支或节点是有标签的。分支标签与分支长度的指定形式相同,但使用“#”而不是“:”。分支标签是从0开始连续的整数,如下图:
#1代表人和长臂猿的分支具有ω1值,而其他支(默认label#0)则具有背景值ω0。
在一个很大的树中,你可能会需要标记一个clade中的所有分支,此时可以使用$。$2等价于将此clade中的所有节点/分支标记上#2。下面两棵树是等价的:
#的优先级高于$,更接近末端的标签优先级高于接近根部的祖先节点。因此以下两棵树是等价的:第一棵树中,$1首先应用于除了人分支的整个胎盘哺乳动物clade,然后$2应用于rabbit-rat clade。
分歧时间标签@ 化石校正信息以@符号指定,这在baseml和codeml中的分子钟和局部分子钟模型中使用。但这种表示方法在mcmctree中是不适用的。
树拓扑结构的分支表示形式:第二种树拓扑结构的表示方法是分支枚举,每个分支由其开始节点和结束节点表示。((1,2),3,4)可以通过穷举它的5个分支表示:
树中的节点通过连续自然数索引,1,2,…,s代表序列文件中的s条序列。大于s的数字代表内部节点,序列是未知的。所以在上面的树中,节点5是节点6、3和4的祖先节点,而节点6是1和2的祖先节点。