TopologyOnly()
removes metadata from phylo
objects.J1Index()
computes the robust, universal tree balance
measure of Lemant et al. 2022 doi:10.1093/sysbio/syac027, incorporating code by Rob
Noble.RandomTree()
returns trees for < 3 leaves.root_on_node()
handles trees with < 2 leaves.TotalCopheneticIndex()
, fixing
#158.YuleTree()
generates a random tree by the Yule
process.DescendantTips()
complements
DescendantEdges()
, rewritten in C++, fixing a bug when
edges were not in preorder.NodeNumbers()
returns the indices of nodes within a
tree.RandomTree(root = TRUE)
roots the tree on a random
edge.RoguePlot()$legendLabels
returns suggested labels for
legend.AddTip()
,
CollapseNode()
, DropTip()
,
MakeTreeBinary()
, Renumber()
,
Reorder()
, SortTree()
, Subtree()
(#149).AddTip(edgeLength = NULL)
defaults to
lengthBelow
. This will become the default in a future
release.root_on_node()
is
now exported (intended for expert use only).root_on_node()
.KeepTip()
internally so
SplitFrequency()
supports Splits
objects as
documented.TipTimedTree()
displays trees where leaves are
associated with absolute ages.ReadMrBayesTrees()
samples trees from posterior of
MrBayes output.is.TreeNumber()
method.as.Splits()
and
NSplits()
.AddUnconstrained()
.WriteTntCharacters()
to
support continuous characters (#139).DescendantEdges()
AllDescendantEdges()
; use
DescendantEdges()
instead.EnforceOutgroup()
; use
RootTree()
instead.NonDuplicateRoot()
and
in.Splits()
.ReadNotes()
.''
s in
ReadCharacters()
.legend
parameter to RoguePlot()
.RoguePlot()
now returns invisibly.SpectrumLegend()
– spun off to separate “PlotTools” package.AddUnconstrained()
and
ImposeConstraint()
handle wider range of inputs.
PhyDatToMatrix()
can (and by default does) override
levels to write ambiguous tokens in custom formats such as
{01}
.
Call C functions using symbols, not strings.
ZeroTaxonTree()
creates a phylo
object
with no leaves.
DropTip()
gains new methods
DropTip.list()
and DropTip.NULL()
.
as.matrix.phylo()
converts a tree to a matrix
representation, allowing a tree to be passed as a constraint to
ImposeConstraint()
.
as.matrix.Splits()
and
as.matrix.phyDat()
methods added as synonyms to
as.logical.Splits()
and
PhyDatToMatrix()
.
Handle TipLabels(0)
and
BalancedTree(0)
.
Support zero-leaf trees in as.Splits()
and
duplicated.Splits()
.
Support non-identical tip labels in
as.Splits()
.
Try Latin-1 encoding if ReadCharacters()
family fail
under UTF-8.
TntOrder()
renumbers a tree’s nodes to match TNT’s
convention.
head()
and tail()
methods for Splits
objects.
Set names of splits object with
names(splits) <- ...
.
as.Splits()
support character vectors in the form
“…***“.
ReadTntTree()
reads tree tags and follows TNT node
numbering conventions.
SpectrumLegend()
gains title
parameter
and more styling options.
Support > 32767 trees in Consensus()
(#127).
DropTip()
speed improved when branch lengths are
present.
ReadTntTree()
supports multi-line trees.
as.MixedBase()
supports larger trees (44-32767
tips).
Add deprecation warning to in.Splits()
.
RenumberTips()
drops “preorder” attribute, as
reordering tip labels may break edge ordering guarantee.
Native implementation of ClusterTable
class.
Replace throw
with stop
in C++
scripts.
AddTip()
: Fix bug when adding tip to root of weighted
tree.rev.Splits()
reverses order in which splits are
listed.
KeepTip.Splits()
is a faster alternative to
SubSplit()
.
%in%.Splits()
retains names when comparing small
splits (#40).
sort.multiPhylo()
sorts lists of trees according to
their mixed base representation (#84).
Bitwise manipulation of splits with |
,
&
, xor
.
as.MixedBase()
uniquely represents binary trees as a
mixed-base vector.
PathLengths()
describes all paths within a
tree.
KeptVerts()
and KeptPaths()
identify
elements in reduced trees.
PostorderOrder()
describes a sequence of edges
corresponding to a postorder traversal of a tree.
SpectrumLegend()
adds gradients to plot
legends.
Improve handling of zero-split trees.
DropTip()
no longer adds a root to unrooted trees,
and retains edge lengths.
Improve speed of DropTip()
, by an order of magnitude
in some cases.
Support edge lengths in Preorder()
,
RootTree()
, UnrootTree()
and
Postorder()
(#49, #89).
Fix bug when tree is rooted on a discontinuous outgroup.
SortTree()
handles weighted and non-binary trees (#25, #25), and gains
option to sort by tip labels.
TipsInSplits(smallest = TRUE)
counts tips in smaller
bipartition.
Fix a bug with phyDat
objects in
ArtificialExtinction()
.
RenumberTips()
allows tipOrder
to
contain elements not present in tree
.
Use lighter Rcpp headers.
Small improvements to computational efficiency.
PostorderEdges()
(#35).RoguePlot()
plots the positions of rogue taxa.DropTip()
gains check
parameter to
allow slightly faster operation where input is guaranteed to be
valid.
RandomTree()
gains nodes
parameter
allow the inclusion of polytomies.
Infer tips
parameter if missing in
StringToPhyDat()
.
Remove dependency on “phangorn” (allowing use on R < 4.1)
Improve parsing of information from nexus files.
Export DropTipPhylo()
as wrapper to
DropTip.phylo()
.
PhyDatToMatrix()
optionally encodes ambiguous /
inapplicable tokens as NA
.
Implement sort.multiPhylo()
.
Update test suite for compatibility with “testthat” > 3.0.4 (@hadley, #83).
ConstrainedNJ()
returns an approximation to a
neighbour-joining tree that respects constraints.
PolarizeSplits()
marks a specified taxon as
representing the ingroup of all splits.
Add KeepTip()
and improve performance of
DropTip()
.
ImposeConstraint()
makes a tree consistent with
topological constraints.
as.phylo.Splits()
represents a Splits
object as a tree.
Consensus()
is a faster C++ implementation of
ape::consensus()
.
ClusterTable()
C++ functionality imported from
“TreeDist”.
Warn when empty cells passed to
MatrixToPhyDat()
.
Warn when LabelSplits(labels)
lack names.
SplitFrequency()
drops tips from forest
that aren’t in reference
.
AddTipEverywhere()
supports trees with < 3
leaves.
Make RootTree()
and PhyDatToMatrix()
more robust.
Support encoding
option in
ReadCharacters()
function family.
Support CHARSTATELABELS
in
ReadCharacters()
.
Support for more formatting quirks in
ReadNotes()
.
Better support ambiguous tokens in
WriteTntCharacters()
.
Fast matching functions from “fastmatch”.
Improve efficiency of Preorder()
and
Postorder()
, and lift limit on tree size.
TCIContext()
.StringToPhyDat()
.AddTip(tree, where = "tip name")
.SplitFrequency()
supports four-leaf trees.RootTree.matrix()
method for edge matrices.TipLabels.phyDat()
method.NULL
methods for tree reordering functions.NTip.phyDat()
method.MakeTreeBinary()
docs and tests to reflect
updated behaviour of ape::multi2di()
in ‘ape’ v5.5.AddTip()
supports edge lengths.CladisticInfo()
supports Splits
objects.as.multiPhylo()
converts trees, datasets and Splits
objects into multiPhylo
objects.LabelSplits(labels = NULL)
labels each split with its
associated node.PhyDatToMatrix()
supports integer-only levels.SortTree()
supports lists of trees.ReadTntCharacters()
character block
extraction (#50).RootTree()
.root_on_node()
.MSTEdges()
supports distance matrices with > 256
entries.MSTLength()
reports length of minimum spanning
tree.AllTipLabels()
returns all labels from all trees in a
list.PairwiseDistances()
(from ‘TreeDistData’) computes
distances between all pairs of trees in a list.ArtificialExtinction()
gains replaceAll
option.WriteTntCharacters(types = ...)
writes different
character types to TNT file..default
and
.NULL
.MSTEdges()
implemented in C++, improving runtime by
orders of magnitude.SisterSize()
and RootNodeDist()
measure
sister-clade size and root-node distance.MSTEdges()
: Edges of minimum spanning tree.SplitImbalance()
: how balanced is each split?root_on_node()
and
root_binary()
to root trees quickly and robustly.TNTReadTree()
handles additional punctuation
characters.
Import RdMacros package ‘Rdpack’.
C++ implementation of TipsInSplits()
.
Export C++ functions preorder_edges_and_nodes()
and
postorder_edges()
.
Remove obsolete copy of C++ code from ‘phangorn’.
ArtificialExtinction()
: Remove characters that are
absent in a fossil template.WriteTntCharacters()
: Write morphological dataset in
TNT format.RandomTree()
: Draw tree from uniform distribution,
instead of via ape::rtree()
.MakeTreeBinary()
: Uniform equivalent of
ape::multi2di()
.match.list()
method for lists of splits.SplitsInBinaryTree()
: How many splits occur in an
n-leaf binary tree?vapply64()
, sapply64()
,
replicate64()
: helper functions when a function returns a
64-bit integer.UnrootTree()
, RootTree()
,
RootOnNode()
to support lists of trees.CladisticInfo()
: Calculate the information content of a
tree.RootNode()
: Which node is a tree’s root?UnrootTree()
: Safely remove a root node.NodeDepth()
: Discriminate shallow from deep nodes.NodeOrder()
, NDescendants()
: Count edges
incident to each node.CladeSizes()
: Count leaves / nodes descended from each
node.ListAncestors()
: List ancestors of a node.LabelSplits()
: Label splits on plotted tree.DropTip()
: Remove tip, handling weird node orders.LeafLabelInterchange()
: Exchange position of n
tips.StarTree()
: Generate unresolved tree.TotalCopheneticIndex()
integrated from ‘tci’
package.PostorderEdges()
: use Postorder()
instead.NonDuplicateRoot()
: unused internal function.match.Splits()
: use match()
instead.in.Splits()
: use %in%.Splits()
instead.as.Splits()
.Reorder
functions can handle
multiPhylo
objects and edges.ReadCharacters()
.as.logical.Splits()
and related
functions.as.Splits()
.RootOnNode()
.doubleFactorials
cache to fix
as.integer()
rounding error.AddTipEverywhere()
.RootOnNode()
: Quickly root a tree on a specified
node.as.Newick
: Fast conversion to Newick format.as.TreeNumber
: Tree shape enumeration.RenumberTips
can extract tip order from
phylo
and Splits
objects.