Remove Tips in a Phylogenetic Tree
drop.tip
removes the terminal branches of a phylogenetic tree,
possibly removing the corresponding internal branches. keep.tip
does the opposite operation (i.e., returns the induced tree).
extract.clade
does the inverse operation: it keeps all the tips
from a given node, and deletes all the other tips.
drop.tip(phy, tip, trim.internal = TRUE, subtree = FALSE, root.edge = 0, rooted = is.rooted(phy), collapse.singles = TRUE, interactive = FALSE) keep.tip(phy, tip) extract.clade(phy, node, root.edge = 0, collapse.singles = TRUE, interactive = FALSE)
phy |
an object of class |
tip |
a vector of mode numeric or character specifying the tips to delete. |
trim.internal |
a logical specifying whether to delete the corresponding internal branches. |
subtree |
a logical specifying whether to output in the tree how many tips have been deleted and where. |
root.edge |
an integer giving the number of internal branches to
be used to build the new root edge. This has no effect if
|
rooted |
a logical indicating whether the tree must be treated as rooted or not. This allows to force the tree to be considered as unrooted (see examples). |
collapse.singles |
a logical specifying whether to delete the internal nodes of degree 2. |
node |
a node number or label. |
interactive |
if |
The argument tip
can be either character or numeric. In the
first case, it gives the labels of the tips to be deleted; in the
second case the numbers of these labels in the vector
phy$tip.label
are given.
This also applies to node
, but if this argument is character
and the tree has no node label, this results in an error. If more than
one value is given with node
(i.e., a vector of length two or
more), only the first one is used with a warning.
If trim.internal = FALSE
, the new tips are given "NA"
as
labels, unless there are node labels in the tree in which case they
are used.
If subtree = TRUE
, the returned tree has one or several
terminal branches indicating how many tips have been removed (with a
label "[x_tips]"
). This is done for as many monophyletic groups
that have been deleted.
Note that subtree = TRUE
implies trim.internal = TRUE
.
To undestand how the option root.edge
works, see the examples
below.
an object of class "phylo"
.
Emmanuel Paradis, Klaus Schliep, Joseph Brown
data(bird.families) tip <- c( "Eopsaltriidae", "Acanthisittidae", "Pittidae", "Eurylaimidae", "Philepittidae", "Tyrannidae", "Thamnophilidae", "Furnariidae", "Formicariidae", "Conopophagidae", "Rhinocryptidae", "Climacteridae", "Menuridae", "Ptilonorhynchidae", "Maluridae", "Meliphagidae", "Pardalotidae", "Petroicidae", "Irenidae", "Orthonychidae", "Pomatostomidae", "Laniidae", "Vireonidae", "Corvidae", "Callaeatidae", "Picathartidae", "Bombycillidae", "Cinclidae", "Muscicapidae", "Sturnidae", "Sittidae", "Certhiidae", "Paridae", "Aegithalidae", "Hirundinidae", "Regulidae", "Pycnonotidae", "Hypocoliidae", "Cisticolidae", "Zosteropidae", "Sylviidae", "Alaudidae", "Nectariniidae", "Melanocharitidae", "Paramythiidae","Passeridae", "Fringillidae") plot(drop.tip(bird.families, tip)) plot(drop.tip(bird.families, tip, trim.internal = FALSE)) data(bird.orders) plot(drop.tip(bird.orders, 6:23, subtree = TRUE)) plot(drop.tip(bird.orders, c(1:5, 20:23), subtree = TRUE)) plot(drop.tip(bird.orders, c(1:20, 23), subtree = TRUE)) plot(drop.tip(bird.orders, c(1:20, 23), subtree = TRUE, rooted = FALSE)) ### Examples of the use of `root.edge' tr <- read.tree(text = "(A:1,(B:1,(C:1,(D:1,E:1):1):1):1):1;") drop.tip(tr, c("A", "B"), root.edge = 0) # = (C:1,(D:1,E:1):1); drop.tip(tr, c("A", "B"), root.edge = 1) # = (C:1,(D:1,E:1):1):1; drop.tip(tr, c("A", "B"), root.edge = 2) # = (C:1,(D:1,E:1):1):2; drop.tip(tr, c("A", "B"), root.edge = 3) # = (C:1,(D:1,E:1):1):3;
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.