| sim_tree {aphylo} | R Documentation |
Random tree generation
Description
An alternative to ape::rtree. This function was written in C++ and is
significantly faster than rtree.
Usage
sim_tree(n, edge.length = stats::runif)
Arguments
n |
Integer scalar. Number of leaf nodes. |
edge.length |
A Function. Used to set the length of the edges. |
Details
The algorithm was implemented as follows
Initialize
N = {1, ..., n},Eto be empty,k = 2*n - 1While
length(N) != 1do:Randomly choose a pair
(i, j)fromNAdd the edges
E = E U {(k, i), (k, j)},Redefine
N = (N \ {i, j}) U {k}Set
k = k - 1next
Use
edge.length(2*n - 1)(simulating branch lengths).
Value
An object of class ape::phylo with the edgelist as a postorderd,
node.label and edge.length.
Examples
# A very simple example ----------------------------------------------------
set.seed(1223)
newtree <- sim_tree(50)
plot(newtree)
# A performance benchmark with ape::rtree ----------------------------------
## Not run:
library(ape)
microbenchmark::microbenchmark(
ape = rtree(1e3),
phy = sim_tree(1e3),
unit = "relative"
)
# This is what you would get.
# Unit: relative
# expr min lq mean median uq max neval
# ape 14.7598 14.30809 14.30013 16.7217 14.32843 4.754106 100
# phy 1.0000 1.00000 1.00000 1.0000 1.00000 1.000000 100
## End(Not run)
[Package aphylo version 0.3-3 Index]