系统发育祖先重建:指定单向字符状态变化的模型[猿] [phytools]

时间:2015-03-05 17:09:36

标签: r phylogeny ape-phylo

假设我有一张系统发育树和一些我的树的字符数据。我知道一个字符是单向的:从0到1的转换率是正的,但是从1到0的转换率是零(例如,0是二倍体,1是多倍体)。假设我想要对我的树进行祖先重建。我知道我可以从包Ape中使用Ace,或者从包phytools中使用make.simmap来进行祖先重建,但我不知道如何指定单向字符更改的模型。

示例:

require(ape)
require(phytools)

# Generate example tree
set.seed(100)
tree<-rtree(10, rooted=T, tip.label=letters[1:10])
# Example characters
characters<-sample(0:1, 10, replace=T)
names(characters)<-letters[1:10]

# Equal-rates model
mod=matrix(c(0,1,1,0),2)
simmap<-make.simmap(tree, characters, model=mod)
plotSimmap(simmap) # Works fine


# My attempt at a unidirectional model: rate of change from 1 to 0 set to zero
mod = matrix(c(0,0,1,0),2)
simmap<-make.simmap(tree, characters, model=mod) # Gives me error; Error in eigen(mat) : infinite or missing values in 'x'

任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:2)

上面的代码使用R版本3.1.2(2014-10-31) - &#34;南瓜头盔&#34;在Windows下使用新安装的猿和植物工具版本。 make.simmap帮助文档讨论了以前版本中的一些错误。

mod = matrix(c(0,0,1,0),2)
simmap<-make.simmap(tree, characters, model=mod)
make.simmap is sampling character histories conditioned on the transition matrix
#Q =
#           0         1
#0 -0.8271365 0.8271365
#1  0.0000000 0.0000000
#(estimated using likelihood);
#and (mean) root node prior probabilities
#pi =
#  0   1 
#0.5 0.5 
#Done.