--- title: "Simulating trees from the fossilized birth-death process" author: "Walker Pett" date: "`r Sys.Date()`" output: html_document vignette: > %\VignetteIndexEntry{Simulating trees from the fossilized birth-death process} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) library(FossilSim) ``` ## `sim.fbd` functions `FossilSim` can be used to simulate trees directly from a fossilized-birth death process using the `sim.fbd` family of functions, whose interface is similar to the `sim.bd` functions in `TreeSim`. These functions return a list of `SAtree` objects, since the simulated trees may contain sampled ancestors represented as tips with zero-length branches. ## Simulating trees from a time-homogeneous fossilized-birth death process As in `TreeSim`, trees can be simulated while conditioning either on the number of sampled extant taxa (using the `sim.fbd.taxa` function), or on the total age of the process (using the `sim.fbd.age` function). These functions require the fossil sampling rate parameter `psi` as an argument, but otherwise take the same arguments as the `sim.bd.taxa` and `sim.bd.age` functions in `TreeSim`. ```{r} trees <- sim.fbd.taxa(n = 10, numbsim = 10, lambda = 3, mu = 2, psi = 2) plot(trees[[1]]) ``` A stratigraphic range representation of the tree and fossil samples can be plotted using the `rangeplot.asymmetric` function, which assumes that all speciation events are asymmetric. ```{r} rangeplot.asymmetric(trees[[1]]) ``` Note that when simulating a complete tree (`complete = TRUE`), tips in the resulting `SAtree` object represent extinction events, whereas they represent fossil sampling events in the tree without unsampled lineages (`complete = FALSE`). The `complete` field of resulting the `SAtree` object is set to the value of the `complete` function argument. ```{r} trees <- sim.fbd.taxa(n = 10, numbsim = 10, lambda = 3, mu = 2, psi = 2, complete = T) print(trees[[1]]$complete) rangeplot.asymmetric(trees[[1]]) ``` ## Simulating trees from an episodic fossilized-birth death process Trees can also be simulated from a time-varying, piecewise constant fossilized birth-death process using the `sim.fbd.rateshift.taxa` function. Apart from a vector of interval specific `psi` parameters, this function also takes most of the same arguments as the corresponding `sim.rateshift.taxa` function in `TreeSim`. At the moment, this function assumes the sampling fraction of extant taxa (`frac`) is equal to 1.0 in all time intervals. ```{r} trees = sim.fbd.rateshift.taxa(n = 10, numbsim = 1, lambda = c(2,1), mu = c(0,0.3), psi = c(1,0.1), times = c(0,0.3)) rangeplot.asymmetric(trees[[1]]) ```