Tree traversal and utility functions
Functions for describing relationships among phylogenetic nodes (i.e. internal nodes or tips).
ancestor(phy, node) children(phy, node) descendants(phy, node, type = c("tips", "children", "all", "ALL")) siblings(phy, node, include.self = FALSE) ancestors(phy, node, type = c("all", "parent", "ALL"))
phy |
a phylo4 object (or one inheriting from phylo4, e.g. a phylo4d object) |
node |
either an integer corresponding to a node ID number, or a
character corresponding to a node label; for |
type |
( |
include.self |
whether to include self in list of siblings |
ancestors
and descendants
can take node
vectors of
arbitrary length, returning a list of output vectors if the number of valid
input nodes is greater than one. List element names are taken directly from
the input node vector.
If any supplied nodes are not found in the tree, the behavior currently varies across functions.
Invalid nodes are automatically omitted by ancestors
and descendants
, with a warning.
ancestor
will return NA
for any invalid nodes, with a warning.
Both children
and siblings
will return an empty
vector, again with a warning.
ancestors
return a named vector (or a list of such vectors in the case of multiple input nodes) of the ancestors and descendants of a node
descendants
return a named vector (or a list of such vectors in the case of multiple input nodes) of the ancestors and descendants of a node
ancestor
ancestor
is analogous to
ancestors(...{}, type="parent")
(i.e. direct ancestor
only), but returns a single concatenated vector in the case of
multiple input nodes
children
is analogous to descendants(...{},
type="children")
(i.e. direct descendants only), but is not
currently intended to be used with multiple input nodes
siblings
returns sibling nodes (children of the same parent)
mrca
, in the ape package, gives a list of all
subtrees
data(geospiza) nodeLabels(geospiza) <- LETTERS[1:nNodes(geospiza)] plot(as(geospiza, "phylo4"), show.node.label=TRUE) ancestor(geospiza, "E") children(geospiza, "C") descendants(geospiza, "D", type="tips") descendants(geospiza, "D", type="all") ancestors(geospiza, "D") MRCA(geospiza, "conirostris", "difficilis", "fuliginosa") MRCA(geospiza, "olivacea", "conirostris") ## shortest path between 2 nodes shortestPath(geospiza, "fortis", "fuliginosa") shortestPath(geospiza, "F", "L") ## branch length from a tip to the root sumEdgeLength(geospiza, ancestors(geospiza, "fortis", type="ALL"))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.