simulate.dpp | R Documentation |
Simulate the rate of evolution along a phylogenetic tree using the dirichlet process described by Heath et al. (2012).
simulate.dpp(tree, params = list(alpha = 1, shape = 3.98, rate = 516.53))
tree |
A phylogenetic tree of class 'phylo'. The branch lengths should be in units of time (chronogram) |
params |
parameters for the rates function. This should be a list with two items: |
alpha |
The concentration of the dirichlet distribution. Lower values will cause more rate categories and rate heterogeneity. |
shape |
The shape of the gamma distribution. It follows the usual parametrisation of the gamma distribution |
rate |
The rate of the gamma distribution. Note that this is different from the substitution rate. Instead, this the the rate parameter typically used for the gamma distribution |
None
An object of class 'ratesim'. This is a list with two items:
phylogram |
The phylogenetic tree with branch lengths in units of substitutions (phylogram) |
tree.data.matrix |
This is a matrix with the number of substitutions, rates, and times along every branch in the tree. See get.tree.data.matrix for more details |
Notes
David Duchene. See the reference for the original description of the model.
Heath, T. A., Holder, M. T., & Huelsenbeck, J. P. (2012). A dirichlet process prior for estimating lineage-specific substitution rates. Molecular biology and evolution, 29(3), 939-955.
simulate.uncor.gamma simulate.uncor.exp
set.seed(1234525)
myTree <- rcoal(50)
rateTree <- simulate.dpp(tree = myTree, params = list(alpha = 1, shape = 3.98, rate = 516.53))
plot(rateTree, col.lineages = rainbow(50))
#See the histogram of the branch-wise rates
hist(rateTree$tree.data.matrix[, 5])
## The function is currently defined as
simulate.dpp <-
function(tree, params = list(alpha = 1, shape = 3.98, rate = 516.53)){
shape.gamma <- params$shape
rate.gamma <- params$rate
alpha <- params$alpha
data.matrix <- get.tree.data.matrix(tree)
nbranches <- nrow(tree$edge)
cats <- sample(1:nbranches, 1, prob = rdirichlet(1, rep(alpha, nbranches)))
branch.cats <- sample(1:cats, nbranches, replace = T, prob = rdirichlet(1, rep(alpha, cats)))
branch.rates <- rgamma(n = cats, shape = shape.gamma, rate = rate.gamma)
names(branch.rates) <- 1:cats
branch.rates <- branch.rates[branch.cats]
data.matrix[, 5] <- branch.rates
data.matrix[, 6] <- data.matrix[, 5] * data.matrix[, 7]
tree$edge.length <- data.matrix[, 6]
res <- list(tree, data.matrix)
names(res) <- c("phylogram", "tree.data.matrix")
class(res) <- "ratesim"
return(res)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.