simulate_phenotype_on_tree | R Documentation |
The function simulates phenotypic dataset under user defined models trait evolution. The phenotype evolves on top of a fixed phylogeny.
simulate_phenotype_on_tree(phyltree, fsimulphenotype, simul.params, X0, step)
phyltree |
The phylogeny in |
fsimulphenotype |
The name of a function to simulate the phenotype over a period of time.
The function has to have four parameters (in the following order not by name):
The phenotype is simulated prior to the simulation of the speciation/extinction events on a lineage. Hence, it is not possible (at the moment) to include some special event (e.g. a cladogenetic jump) at branching. Such dynamics are only possible at the start of the lineage, i.e. when the new lineage is separated from the main lineage. Hence, cladogenetic change can only be included as an event connected with a lineage (subpopulation) breaking off. |
simul.params |
The parameters of the stochastic model to simulate the phenotype. They should be passed as a named list. |
X0 |
The value of the ancestral state at the start of the tree. |
step |
The time step size for simulating the phenotype. If not provided,
then calculated as |
tree |
The simulated tree in |
phenotype |
A list of the trajectory of the simulated phenotype.
Each entry corresponds to a lineage that started at some point of the tree.
Each entry is a matrix with first row equalling time (relative to start of
the lineage, hence if absolute time since tree's origin is needed it
needs to be recalculated, see |
root.branch.phenotype |
The simulation on the root branch. A matrix with first row being time and next rows the simulated trait(s). |
Krzysztof Bartoszek
Bartoszek, K. and Lio', P (2019). Modelling trait dependent speciation with Approximate Bayesian Computation. Acta Physica Polonica B Proceedings Supplement 12(1):25-47.
simulate_phylproc
## simulate 3d OUBM model ## This example requires the R package ape ## (to generate the tree in phylo format). set.seed(12345) phyltree<-ape::rphylo(n=5,birth=1,death=0) simulate_mvsl_sde<-function(time,params,X0,step){ A <- c(paste("(-",params$a11,")*(x1-(",params$psi1,")) -(",params$a12,")*(x2-(",params$psi2,"))-(",params$b11,")*x3",sep=""), paste("(-",params$a21,")*(x1-(",params$psi1,")) -(",params$a22,")*(x2-(",params$psi2,"))-(",params$b21,")*x3",sep=""),0) S <- matrix( c( params$s11, params$s12, 0, 0, params$s22 , 0, 0, 0, params$s33), 3, 3,byrow=TRUE) yuima.3d <- yuima::setModel(drift = A, diffusion = S, state.variable=c("x1","x2","x3"),solve.variable=c("x1","x2","x3") ) simulate_sde_on_branch(time,yuima.3d,X0,step) } birth.params<-list(scale=1,maxval=10000) sde.params<-list(a11=2.569531,a12=0,a21=0,a22=28.2608,b11=-5.482939, b21=-34.806936,s11=0.5513215,s12=1.059831,s22=1.247302,s33=1.181376, psi1=-2.4590422,psi2=-0.6197838) X0<-c(5.723548,4.103157,3.834698) step<-0.5 ## for keeping example's running time short <5s as CRAN policy, ## in reality should be much smaller e.g. step<-0.001 simres<-simulate_phenotype_on_tree(phyltree, simulate_mvsl_sde, sde.params, X0, step)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.