SplitFrequency | R Documentation |
SplitFrequency()
provides a simple way to count the number of times that
bipartition splits, as defined by a reference tree, occur in a forest of
trees. May be used to calculate edge ("node") support for majority consensus
or bootstrap trees.
SplitFrequency(reference, forest)
SplitNumber(tips, tree, tipIndex, powersOf2)
ForestSplits(forest, powersOf2)
TreeSplits(tree)
reference |
A tree of class |
forest |
a list of trees of class |
tips |
Integer vector specifying the tips of the tree within the chosen split. |
tree |
A tree of class |
tipIndex |
Character vector of tip names, in a fixed order. |
powersOf2 |
Integer vector of same length as |
If multiple calculations are required, some time can be saved by using the constituent functions (see examples)
SplitFrequency()
returns the number of trees in forest
that
contain each split in reference
.
If reference
is a tree of class phylo
, then the sequence will correspond
to the order of nodes (use ape::nodelabels()
to view).
Note that the three nodes at the root of the tree correspond to a single
split; see the example for how these might be plotted on a tree.
SplitNumber()
: Assign a unique integer to each split
ForestSplits()
: Frequency of splits in a given forest of trees
TreeSplits()
: Deprecated. Listed the splits in a given tree.
Use as.Splits instead.
Martin R. Smith (martin.smith@durham.ac.uk)
Other Splits operations:
LabelSplits()
,
NSplits()
,
NTip()
,
PolarizeSplits()
,
Splits
,
SplitsInBinaryTree()
,
TipLabels()
,
TipsInSplits()
,
match.Splits
,
xor()
# An example forest of 100 trees, some identical
forest <- as.phylo(c(1, rep(10, 79), rep(100, 15), rep(1000, 5)), nTip = 9)
# Generate an 80% consensus tree
cons <- ape::consensus(forest, p = 0.8)
plot(cons)
# Calculate split frequencies
splitFreqs <- SplitFrequency(cons, forest)
# Optionally, colour edges by corresponding frequency.
# Note that not all edges are associated with a unique split
# (and two root edges may be associated with one split - not handled here)
edgeSupport <- rep(1, nrow(cons$edge)) # Initialize trivial splits to 1
childNode <- cons$edge[, 2]
edgeSupport[match(names(splitFreqs), childNode)] <- splitFreqs / 100
plot(cons, edge.col = SupportColour(edgeSupport), edge.width = 3)
# Annotate nodes by frequency
LabelSplits(cons, splitFreqs, unit = "%",
col = SupportColor(splitFreqs / 100),
frame = "none", pos = 3L)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.