root reroots a phylogenetic tree with respect to the specified
outgroup or at the node specified in
unroot unroots a phylogenetic tree, or returns it unchanged if
it is already unrooted.
is.rooted tests whether a tree is rooted.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
root(phy, ...) ## S3 method for class 'phylo' root(phy, outgroup, node = NULL, resolve.root = FALSE, interactive = FALSE, edgelabel = FALSE, ...) ## S3 method for class 'multiPhylo' root(phy, outgroup, ...) unroot(phy) ## S3 method for class 'phylo' unroot(phy) ## S3 method for class 'multiPhylo' unroot(phy) is.rooted(phy) ## S3 method for class 'phylo' is.rooted(phy) ## S3 method for class 'multiPhylo' is.rooted(phy)
an object of class
a vector of mode numeric or character specifying the new outgroup.
alternatively, a node number where to root the tree.
a logical specifying whether to resolve the new root as a bifurcating node.
a logical value specifying whether to treat node
labels as edge labels and thus eventually switching them so that
they are associated with the correct edges when using
arguments passed among methods (e.g., when rooting lists of trees).
outgroup can be either character or numeric. In
the first case, it gives the labels of the tips of the new outgroup;
in the second case the numbers of these labels in the vector
phy$tip.label are given.
outgroup is of length one (i.e., a single value), then the
tree is rerooted using the node below this tip as the new root.
outgroup is of length two or more, the most recent common
ancestor (MRCA) of the ingroup is used as the new root. Note
that the tree is unrooted before being rerooted, so that if
outgroup is already the outgroup, then the returned tree is not
the same than the original one (see examples). If
not monophyletic, the operation fails and an error message is issued.
resolve.root = TRUE,
root adds a zero-length branch
below the MRCA of the ingroup.
A tree is considered rooted if either only two branches connect to the
root, or if there is a
root.edge element. In all other cases,
an object of class
unroot; a logical vector for
The use of
resolve.root = TRUE together with
gives an error if the specified node is the current root of the
tree. This is because there is an ambiguity when resolving a node in
an unrooted tree with no explicit outgroup. If the node is not the
current root, the ambiguity is solved arbitrarily by considering the
clade on the right of
node (when the tree is plotted by
default) as the ingroup. See a detailed explanation there:
Czech, L., Huerta-Cepas, J. and Stamatakis, A. (2016) A critical review on the use of support values in tree viewers and bioinformatics toolkits. http://dx.doi.org/10.1101/035360
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
data(bird.orders) plot(root(bird.orders, 1)) plot(root(bird.orders, 1:5)) tr <- root(bird.orders, 1) is.rooted(bird.orders) # yes is.rooted(tr) # no ### This is because the tree has been unrooted first before rerooting. ### You can delete the outgroup... is.rooted(drop.tip(tr, "Struthioniformes")) ### ... or resolve the basal trichotomy in two ways: is.rooted(multi2di(tr)) is.rooted(root(bird.orders, 1, r = TRUE)) ### To keep the basal trichotomy but forcing the tree as rooted: tr$root.edge <- 0 is.rooted(tr) x <- setNames(rmtree(10, 10), LETTERS[1:10]) is.rooted(x)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.