root
reroots a phylogenetic tree with respect to the specified
outgroup or at the node specified in node
.
unroot
unroots a phylogenetic tree, or returns it unchanged if
it is already unrooted.
is.rooted
tests whether a tree is rooted.
root(phy, ...)
# S3 method for phylo
root(phy, outgroup, node = NULL, resolve.root = FALSE,
interactive = FALSE, edgelabel = FALSE, ...)
# S3 method for multiPhylo
root(phy, outgroup, ...)unroot(phy, ...)
# S3 method for phylo
unroot(phy, collapse.singles = FALSE,
keep.root.edge = FALSE, ...)
# S3 method for multiPhylo
unroot(phy, collapse.singles = FALSE,
keep.root.edge = FALSE, ...)
is.rooted(phy)
# S3 method for phylo
is.rooted(phy)
# S3 method for multiPhylo
is.rooted(phy)
an object of class "phylo"
or "multiPhylo"
for
root
and unroot
; a logical vector for is.rooted
.
an object of class "phylo"
or "multiPhylo"
.
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.
if TRUE
the user is asked to select the node
by clicking on the tree which must be plotted.
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
drawSupportOnEdges
(see Czech et al. 2016).
a logical value specifying wether to call
collapse.singles
before proceeding to unrooting the
tree.
a logical value. If TRUE
, the
root.edge
element of the tree is added in the edge matrix as
a terminal edge. The default is to delete this element.
arguments passed among methods (e.g., when rooting lists of trees).
Emmanuel Paradis
The argument 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.
If 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.
If 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 outgroup
is
not monophyletic, the operation fails and an error message is issued.
If 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,
is.rooted
returns FALSE
.
Czech, L., Huerta-Cepas, J. and Stamatakis, A. (2017) A critical review on the use of support values in tree viewers and bioinformatics toolkits. Molecular Biology and Evolution, 34, 1535--1542. tools:::Rd_expr_doi("10.1093/molbev/msx055")
bind.tree
, drop.tip
,
nodelabels
, identify.phylo
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)
Run the code above in your browser using DataLab