Learn R Programming

ape (version 4.0)

speciesTree: Species Tree Estimation

Description

This function calculates the species tree from a set of gene trees.

Usage

speciesTree(x, FUN = min)

Arguments

x
a list of trees, e.g., an object of class "multiPhylo".
FUN
a function used to compute the divergence times of each pair of tips.

Value

an object of class "phylo".

Details

For all trees in x, the divergence time of each pair of tips is calculated: these are then `summarized' with FUN to build a new distance matrix used to calculate the species tree with a single-linkage hierarchical clustering. The default for FUN computes the maximum tree (maxtree) of Liu et al. (2010). Using FUN = mean gives the shallowest divergence tree of Maddison and Knowles (2006).

References

Liu, L., Yu, L. and Pearl, D. K. (2010) Maximum tree: a consistent estimator of the species tree. Journal of Mathematical Biology, 60, 95--106.

Maddison, W. P. and Knowles, L. L. (2006) Inferring phylogeny despite incomplete lineage sorting. Systematic Biology, 55, 21--30.

Examples

Run this code
### example in Liu et al. (2010):
tr1 <- read.tree(text = "(((B:0.05,C:0.05):0.01,D:0.06):0.04,A:0.1);")
tr2 <- read.tree(text = "(((A:0.07,C:0.07):0.02,D:0.09):0.03,B:0.12);")
TR <- c(tr1, tr2)
TSmax <- speciesTree(TR) # MAXTREE
TSsha <- speciesTree(TR, mean) # shallowest divergence

layout(matrix(1:4, 1))
## playing with 'x.lim' is not so complicated
## but this will be improved someday
plot(tr1, "c", d = "u", y.lim = c(-0.07, 0.1), font = 1)
axisPhylo(4); title("Gene tree 1")
plot(tr2, "c", d = "u", y.lim = c(-0.05, 0.12), font = 1)
axisPhylo(4); title("Gene tree 2")
plot(TSmax, "c", d = "u", y.lim = c(-0.1, 0.07), font = 1)
axisPhylo(4); title("Species tree inferred\nby MAXTREE")
plot(TSsha, "c", d = "u", y.lim = c(0, 0.17), font = 1)
axisPhylo(4); title("Species tree inferred\nby Shallowest Divergence")

Run the code above in your browser using DataLab