phytools: Phylogenetic Tools for Comparative Biology (and Other Things)

Package contains various functions for phylogenetic analysis. This functionality is concentrated in the phylogenetic analysis of comparative data from species. For example, the package includes functions for Bayesian and ML ancestral state estimation; visual simulation of trait evolution; fitting models of trait evolution with multiple Brownian rates and correlations; visualizing discrete and continuous character evolution using colors or projections into trait space; identifying the location of a change in the rate of character evolution on the tree; fast Brownian motion simulation and simulation under several other models of continuous trait evolution; fitting a model of correlated binary trait evolution; locating the position of a fossil or an recently extinct lineage on a tree using continuous character data with ML; plotting lineage accumulation through time, including across multiple trees (such as a Bayesian posterior sample); conducting an analysis called stochastic character mapping, in which character histories for a discrete trait are sampled from their posterior probability distribution under a model; conducting a multiple (i.e., partial) Mantel test; fitting a phylogenetic regression model with error in predictor and response variables; conducting a phylogenetic principal components analysis, a phylogenetic regression, a reduced major axis regression, a phylogenetic canonical correlation analysis, and a phylogenetic ANOVA; projecting a tree onto a geographic map; simulating discrete character histories on the tree; fitting a model in which a discrete character evolves under the threshold model; visualization of cospeciation; a simple statistical test for cospeciation between two trees. In addition to this phylogenetic comparative method functionality, the package also contains functions for a wide range of other purposes in phylogenetic biology. For instance, functionality in this package includes (but is not restricted to): adding taxa to a tree (including randomly, everywhere, or automatically to genera); generating all bi- and multi-furcating trees for a set of taxa; reducing a phylogeny to its backbone tree; dropping tips or adding tips to special types of phylogenetic trees; exporting a tree as an XML file; converting a tree with a mapped character to a tree with singleton nodes and one character state per edge; estimating a phylogeny using the least squares method; simulating birth-death trees under a range of conditions; rerooting trees; computing a consensus tree under multiple methods, including via minimization of the distance to other trees in the set; a wide range of visualizations of trees; and a variety of other manipulations and analyses that phylogenetic biologists may find useful for their research.

AuthorLiam J. Revell
Date of publication2016-12-05 22:44:57
MaintainerLiam J. Revell <>
LicenseGPL (>= 2)

View on CRAN

Man pages

add.arrow: Add an arrow pointing to a tip or node on the tree Add color bar to a plot

add.everywhere: Add tip to all edges in a tree

add.random: Add tips at random to the tree

add.simmap.legend: Add legend to stochastically mapped tree Add species to genus on a phylogeny or bind simulated species...

aic.w: Computes AIC weights

allFurcTrees: Generate all bi- and multifurcating unrooted trees

anc.Bayes: Bayesian ancestral character estimation

anc.ML: Ancestral character estimation using likelihood

ancThresh: Ancestral character estimation under the threshold model...

anc.trend: Ancestral character estimation with a trend

anoletree: Phylogeny of Greater Antillean anole ecomorph species with...

applyBranchLengths: Applies the branch lengths of a reference tree to a target

as.multiPhylo: Conversion to object of class '"multiPhylo"'

averageTree: Compute an average tree from a set of trees and related...

ave.rates: Average the posterior rates

bd: Convert object of class "birthdeath" to raw birth & death...

bind.tip: Attaches a new tip to a tree

bind.tree.simmap: Attaches a new tip to a tree

bmPlot: Simulates and visualizes discrete-time Brownian evolution on...

branching.diffusion: Animation of branching random diffusion

brownie.lite: Likelihood test for rate variation in a continuous trait

brownieREML: REML version of brownie.lite

cladelabels: Add labels to subtrees of a plotted phylogeny Collapse a subtree to a star phylogeny

collapseTree: Interactive tree visualizer

consensus.edges: Compute consensus edges for a tree under some criterion

contMap: Map continuous trait evolution on the tree

cophylo: Creates a co-phylogenetic plot

cospeciation: Conducts a statistical test of cospeciation between two trees

countSimmap: Counts the number of character changes on a SIMMAP style tree...

densityMap: Plot posterior density of stochastic mapping on a tree

densityTree: Plots a posterior sample of trees

describe.simmap: Summarizes a stochastic mapped tree or set of trees

di2multi.simmap: Collapse branches of zero length to polytomy in stochastic...

dotTree: Creates a phylogenetic dot plot

drop.clade: Drop a clade from a tree

drop.leaves: Drop all the leaves (tips) from a tree

drop.tip.contMap: Drop tip or tips from an object of class "contMap" or...

drop.tip.simmap: Drop tips or extract clade from tree with mapped discrete...

edgeProbs: Compute the relative frequencies of state changes along edges

estDiversity: Estimate diversity at each node of the tree

evol.rate.mcmc: Bayesian MCMC method for identifying exceptional phenotypic...

evol.vcv: Likelihood test for variation in the evolutionary VCV matrix

evolvcv.lite: Likelihood test for a shift in the evolutionary correlation...

exhaustiveMP: Exhaustive and branch & bound MP optimization

expm: Matrix exponential Export trees & data in XML format

fancyTree: Plots special types of phylogenetic trees

fastAnc: Fast estimation of ML ancestral states

fastBM: Fast Brownian simulation

fastMRCA: Get the MRCA (or height above the root of the MRCA) of a pair...

findMRCA: Get the MRCA of a set of taxa

fitBayes: Evolutionary model fitting with intraspecific variability...

fitDiversityModel: Fit diversity-dependent phenotypic evolution model

fitMk: Fits Mk model

fitPagel: Function to test for correlated evolution of binary traits

gammatest: Gamma test of Pybus & Harvey (2000)

genSeq: Simulate a DNA alignment on the tree under a model

getCladesofSize: Get all subtrees larger than or equal to a specified size

getDescendants: Get descendant node numbers

getExtant: Returns a list of the extant or extinct lineages in a tree...

getSisters: Get the sister node number, label, or set of nodes for a node...

getStates: Get the states at nodes or tips from a mapped tree

ladderize.simmap: Ladderize a tree with a mapped discrete character

lambda.transform: Lambda transformation of matrix

likMlambda: Likelihood for joint lambda

locate.fossil: Locate a fossil lineage in a tree using continuous characters

locate.yeti: Locate a cryptic, recently extinct, or missing taxon on a...

ls.tree: Least squares branch lengths for a given tree

ltt: Creates lineage-through-time plot (including extinct...

ltt95: Creates a (1-alpha)-percent CI for a set of LTTs Create "era" map on a phylogenetic tree

make.simmap: Simulate stochastic character maps on a phylogenetic tree or...

map.overlap: Proportional overlap between two mapped character histories...

mapped.states: Returns a vector, matrix, or list of the mapped states on a... Converts a mapped tree to a tree with singleton nodes

markChanges: Add marked changes to a plotted tree with mapped discrete...

matchNodes: Matches nodes between two trees

mergeMappedStates: Merge two or more mapped states into one state

midpoint.root: Midpoint root a phylogeny

minRotate: Rotates all nodes of the tree to minimize the difference in...

minSplit: Finding the minimum (median) split in the posterior sample

modified.Grafen: Computes modified Grafen edge lengths

mrp.supertree: Matrix representation parsimony supertree estimation

multiC: Returns a list with phylogenetic VCV matrix for each mapped...

multi.mantel: Multiple matrix regression (partial Mantel test)

multiRF: Computes Robinson-Foulds distance between a set of trees

nodeHeights: Compute the heights above the root of each node

nodelabels.cophylo: Add labels to a plotted "cophylo" object Phylogeny inference using the least squares method

orderMappedEdge: Order the columns of mapped.edge to match across trees

paintSubTree: Paint sub-trees with a discrete character

paste.tree: Paste two trees together

pbtree: Simulate pure-birth or birth-death stochastic tree or trees

pgls.Ives: Phylogenetic regression with intraspecific sampling error

phenogram: Plot phenogram (traitgram)

phylANOVA: Phylogenetic ANOVA and post-hoc tests

phyl.cca: Phylogenetic canonical correlation analysis

phyloDesign: Compute design matrix for least squares analyses

phylo.heatmap: Creates a phylogenetic heat map

phylomorphospace: Creates phylomorphospace plot

phylomorphospace3d: Creates tree-dimensional phylomorphospace plot

phylosig: Compute phylogenetic signal with two methods

phylo.toBackbone: Converts tree to backbone or vice versa Plot tree with tips linked to geographic coordinates

phyl.pairedttest: Phylogenetic paired t-test

phyl.pca: Phylogenetic principal components analysis

phyl.resid: Phylogenetic size-correction via GLS regression

phyl.RMA: Phylogenetic reduced major axis (RMA) regression

phyl.vcv: Compute evolutionary VCV matrix for a tree & dataset

phytools-package: phytools: Phylogenetic Tools for comparative biology (and...

plot.backbonePhylo: Plots backbone tree with triangles as clades

plotBranchbyTrait: Plot branch colors by a quantitative trait or value

plotSimmap: Plot stochastic character mapped tree

plotThresh: Tree plotting with posterior probabilities of ancestral...

plotTree: Plots rooted phylogenetic tree

plotTree.wBars: Plot a tree with bars at the tips

posterior.evolrate: Analysis of the posterior sample from evol.rate.mcmc

print.backbonePhylo: Print method for backbone phylogeny

ratebystate: Method for investigating the rate of one trait as a function...

rateshift: Find the temporal position of one or more rate shifts

read.newick: Robust Newick style tree reader

read.simmap: Read SIMMAP style trees from file

reorder.backbonePhylo: Reorders a backbone phylogeny

reorderSimmap: Reorder edges of a simmap tree

rep.phylo: Replicate a tree or set of trees

reroot: Re-root a tree along an edge

rerootingMethod: Get marginal ancestral state reconstructions by re-rooting

rescaleSimmap: Rescale SIMMAP style tree

resolveNode: Compute all possible resolutions of a node or all nodes in a...

rotateNodes: Rotates a node or set of nodes in a phylogenetic tree

roundBranches: Rounds the branch lengths of a tree

roundPhylogram: Plot a round phylogram

rstate: Pick a random state according to a vector of probabilities

sampleFrom: Sample from a set of distributions

setMap: Set color map for objects of class '"contMap"' or...

sim.corrs: Multivariate Brownian simulation with multiple correlations...

sim.history: Simulate stochastic character history under some model

sim.ratebystate: Conduct simulation of state dependent rate variation

sim.rates: Brownian simulation with multiple evolutionary rates

skewers: Matrix comparison using the method of random skewers

splitEdgeColor: Split edge colors when descendant edges have different mapped...

splitplotTree: Plots a phylogeny in two columns

splitTree: Split tree at a point

starTree: Create star phylogeny

strahlerNumber: Computes Strahler number for trees and nodes

threshBayes: Threshold model using Bayesian MCMC

threshDIC: Deviance Information Criterion from the threshold model

threshState: Computes value for a threshold character from a liability and...

to.matrix: Convert a character vector to a binary matrix

treeSlice: Slices the tree at a particular point and returns all...

untangle: Attempts to untangle crossing branches for plotting

vcvPhylo: Calculates cophenetic (i.e., phylogenetic VCV) matrix

writeAncestors: Write a tree to file with ancestral states and (optionally)...

writeNexus: Write a tree to file in Nexus format

write.simmap: Write a stochastic character mapped tree to file

Files in this package

phytools/R/backbonePhylo.R phytools/R/fitMk.R phytools/R/read.newick.R phytools/R/ls.consensus.R phytools/R/paintSubTree.R phytools/R/contMap.R phytools/R/cophylo.R phytools/R/plotBranchbyTrait.R phytools/R/sim.rates.R phytools/R/splitplotTree.R phytools/R/anc.ML.R phytools/R/ phytools/R/phyl.resid.R phytools/R/make.simmap.R phytools/R/locate.fossil.R phytools/R/ratebystate.R phytools/R/bmPlot.R phytools/R/multi.mantel.R phytools/R/phylo.heatmap.R phytools/R/phylomorphospace.R phytools/R/phyl.pairedttest.R phytools/R/densityMap.R phytools/R/rerootingMethod.R phytools/R/estDiversity.R phytools/R/fastAnc.R phytools/R/phylANOVA.R phytools/R/pgls.Ives.R phytools/R/ phytools/R/utilities.R phytools/R/consensus.edges.R phytools/R/rateshift.R phytools/R/ phytools/R/add.everywhere.R phytools/R/phyl.pca.R phytools/R/ltt.R phytools/R/add.random.R phytools/R/mcmcLambda.R phytools/R/densityTree.R phytools/R/writeAncestors.R phytools/R/collapseTree.R phytools/R/fancyTree.R phytools/R/pbtree.R phytools/R/cospeciation.R phytools/R/allFurcTrees.R phytools/R/resolveNodes.R phytools/R/phyl.cca.R phytools/R/starTree.R phytools/R/plotSimmap.R phytools/R/ancThresh.R phytools/R/plotTree.wBars.R phytools/R/evol.rate.mcmc.R phytools/R/mrp.supertree.R phytools/R/ phytools/R/write.simmap.R phytools/R/mcmcBM.full.R phytools/R/fastBM.R phytools/R/exhaustiveMP.R phytools/R/ltt95.R phytools/R/sim.history.R phytools/R/evol.vcv.R phytools/R/phylosig.R phytools/R/ phytools/R/threshBayes.R phytools/R/fitDiversityModel.R phytools/R/fitPagel.R phytools/R/treeSlice.R phytools/R/phylomorphospace3d.R phytools/R/evolvcv.lite.R phytools/R/fitBayes.R phytools/R/anc.Bayes.R phytools/R/multiRF.R phytools/R/branching.diffusion.R phytools/R/read.simmap.R phytools/R/map.overlap.R phytools/R/skewers.R phytools/R/phyl.RMA.R phytools/R/drop.tip.simmap.R phytools/R/phenogram.R phytools/R/dotTree.R phytools/R/writeNexus.R phytools/R/brownieREML.R phytools/R/strahlerNumber.R phytools/R/sim.corrs.R phytools/R/roundPhylogram.R phytools/R/mcmcBM.R phytools/R/ phytools/R/anc.trend.R phytools/R/brownie.lite.R phytools/R/locate.yeti.R
phytools/man/markChanges.Rd phytools/man/nodeHeights.Rd phytools/man/posterior.evolrate.Rd phytools/man/cophylo.Rd phytools/man/brownie.lite.Rd phytools/man/add.simmap.legend.Rd phytools/man/ave.rates.Rd phytools/man/anc.Bayes.Rd phytools/man/phylANOVA.Rd phytools/man/paste.tree.Rd phytools/man/branching.diffusion.Rd phytools/man/fitDiversityModel.Rd phytools/man/getCladesofSize.Rd phytools/man/evol.rate.mcmc.Rd phytools/man/cospeciation.Rd phytools/man/locate.fossil.Rd phytools/man/averageTree.Rd phytools/man/countSimmap.Rd phytools/man/ls.tree.Rd phytools/man/writeAncestors.Rd phytools/man/findMRCA.Rd phytools/man/anc.trend.Rd phytools/man/threshState.Rd phytools/man/phyl.vcv.Rd phytools/man/rateshift.Rd phytools/man/bd.Rd phytools/man/orderMappedEdge.Rd phytools/man/splitTree.Rd phytools/man/writeNexus.Rd phytools/man/bmPlot.Rd phytools/man/splitplotTree.Rd phytools/man/applyBranchLengths.Rd phytools/man/getSisters.Rd phytools/man/ phytools/man/ladderize.simmap.Rd phytools/man/getExtant.Rd phytools/man/add.arrow.Rd phytools/man/minRotate.Rd phytools/man/plotTree.Rd phytools/man/phyloDesign.Rd phytools/man/sim.rates.Rd phytools/man/rotateNodes.Rd phytools/man/ltt95.Rd phytools/man/contMap.Rd phytools/man/di2multi.simmap.Rd phytools/man/phyl.cca.Rd phytools/man/sim.corrs.Rd phytools/man/mrp.supertree.Rd phytools/man/ltt.Rd phytools/man/ phytools/man/fancyTree.Rd phytools/man/reroot.Rd phytools/man/multi.mantel.Rd phytools/man/map.overlap.Rd phytools/man/roundPhylogram.Rd phytools/man/edgeProbs.Rd phytools/man/skewers.Rd phytools/man/ phytools/man/add.everywhere.Rd phytools/man/ phytools/man/mergeMappedStates.Rd phytools/man/sampleFrom.Rd phytools/man/starTree.Rd phytools/man/treeSlice.Rd phytools/man/fitBayes.Rd phytools/man/nodelabels.cophylo.Rd phytools/man/locate.yeti.Rd phytools/man/fastAnc.Rd phytools/man/drop.leaves.Rd phytools/man/plotSimmap.Rd phytools/man/strahlerNumber.Rd phytools/man/read.simmap.Rd phytools/man/evol.vcv.Rd phytools/man/print.backbonePhylo.Rd phytools/man/bind.tip.Rd phytools/man/ancThresh.Rd phytools/man/matchNodes.Rd phytools/man/phylomorphospace.Rd phytools/man/consensus.edges.Rd phytools/man/multiC.Rd phytools/man/plot.backbonePhylo.Rd phytools/man/phenogram.Rd phytools/man/minSplit.Rd phytools/man/densityMap.Rd phytools/man/ phytools/man/to.matrix.Rd phytools/man/setMap.Rd phytools/man/likMlambda.Rd phytools/man/phyl.pca.Rd phytools/man/untangle.Rd phytools/man/sim.history.Rd phytools/man/threshBayes.Rd phytools/man/plotThresh.Rd phytools/man/anoletree.Rd phytools/man/splitEdgeColor.Rd phytools/man/vcvPhylo.Rd phytools/man/phylosig.Rd phytools/man/read.newick.Rd phytools/man/plotBranchbyTrait.Rd phytools/man/ phytools/man/rerootingMethod.Rd phytools/man/ phytools/man/reorder.backbonePhylo.Rd phytools/man/paintSubTree.Rd phytools/man/phylo.heatmap.Rd phytools/man/allFurcTrees.Rd phytools/man/exhaustiveMP.Rd phytools/man/write.simmap.Rd phytools/man/phyl.pairedttest.Rd phytools/man/threshDIC.Rd phytools/man/make.simmap.Rd phytools/man/multiRF.Rd phytools/man/fastBM.Rd phytools/man/reorderSimmap.Rd phytools/man/phylo.toBackbone.Rd phytools/man/aic.w.Rd phytools/man/phytools-package.Rd phytools/man/cladelabels.Rd phytools/man/lambda.transform.Rd phytools/man/modified.Grafen.Rd phytools/man/mapped.states.Rd phytools/man/as.multiPhylo.Rd phytools/man/densityTree.Rd phytools/man/fastMRCA.Rd phytools/man/pgls.Ives.Rd phytools/man/fitPagel.Rd phytools/man/resolveNode.Rd phytools/man/bind.tree.simmap.Rd phytools/man/describe.simmap.Rd phytools/man/drop.tip.contMap.Rd phytools/man/midpoint.root.Rd phytools/man/phylomorphospace3d.Rd phytools/man/getStates.Rd phytools/man/phyl.RMA.Rd phytools/man/roundBranches.Rd phytools/man/gammatest.Rd phytools/man/genSeq.Rd phytools/man/expm.Rd phytools/man/phyl.resid.Rd phytools/man/anc.ML.Rd phytools/man/fitMk.Rd phytools/man/rep.phylo.Rd phytools/man/dotTree.Rd phytools/man/estDiversity.Rd phytools/man/rescaleSimmap.Rd phytools/man/evolvcv.lite.Rd phytools/man/rstate.Rd phytools/man/pbtree.Rd phytools/man/add.random.Rd phytools/man/plotTree.wBars.Rd phytools/man/ratebystate.Rd phytools/man/brownieREML.Rd phytools/man/sim.ratebystate.Rd phytools/man/getDescendants.Rd phytools/man/collapseTree.Rd phytools/man/drop.clade.Rd phytools/man/ phytools/man/drop.tip.simmap.Rd

Questions? Problems? Suggestions? or email at

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.