Changelog
Source:NEWS.md
TreeTools 1.12.0 (2024-07-25)
CRAN release: 2024-07-25
New methods and functions
-
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.
Enhancements
- Consistent sequence of list entries in phylo objects.
-
RandomTree()
returns trees for < 3 leaves. -
root_on_node()
handles trees with < 2 leaves. - Support larger trees in
TotalCopheneticIndex()
, fixing #158.
TreeTools 1.11.1 (2024-06-06)
CRAN release: 2024-06-07
- Set random seed and increase tolerance to avoid false negatives on tests.
TreeTools 1.11.0 (2024-05-23)
CRAN release: 2024-06-05
New methods and functions
-
YuleTree()
generates a random tree by the Yule process. -
DescendantTips()
complementsDescendantEdges()
, rewritten in C++, fixing a bug when edges were not in preorder. -
NodeNumbers()
returns the indices of nodes within a tree.
Enhancements
-
RandomTree(root = TRUE)
roots the tree on a random edge. -
RoguePlot()$legendLabels
returns suggested labels for legend. - Support node labels in
AddTip()
,CollapseNode()
,DropTip()
,MakeTreeBinary()
,Renumber()
,Reorder()
,SortTree()
,Subtree()
(#149). -
AddTip(edgeLength = NULL)
defaults tolengthBelow
. This will become the default in a future release. - An entry point to the C++ function
root_on_node()
is now exported (intended for expert use only). - Fix handling of weighted trees by
root_on_node()
. - Use
KeepTip()
internally soSplitFrequency()
supportsSplits
objects as documented.
TreeTools 1.10.0 (2023-08-18)
CRAN release: 2023-08-18
New methods and functions
-
TipTimedTree()
displays trees where leaves are associated with absolute ages. -
ReadMrBayesTrees()
samples trees from posterior of MrBayes output. -
is.TreeNumber()
method.
Improvements
- Support zero-edge trees in
as.Splits()
andNSplits()
. - Support empty constraints in
AddUnconstrained()
. - Add space between tokens in
WriteTntCharacters()
to support continuous characters (#139).
Deprecations and breaking changes
- Change order of parameters in
DescendantEdges()
- Deprecate
AllDescendantEdges()
; useDescendantEdges()
instead. - Deprecate
EnforceOutgroup()
; useRootTree()
instead. - Remove
NonDuplicateRoot()
andin.Splits()
.
TreeTools 1.9.2 (2023-04-25)
CRAN release: 2023-04-27
- Improve support for comments in
ReadNotes()
. - Support Nexus-escaped
''
s inReadCharacters()
. - Add
legend
parameter toRoguePlot()
. -
RoguePlot()
now returns invisibly. - Deprecate
SpectrumLegend()
– spun off to separate “PlotTools” package.
TreeTools 1.9.1 (2023-03-21)
CRAN release: 2023-03-20
AddUnconstrained()
andImposeConstraint()
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.
TreeTools 1.9.0 (2022-11-29)
CRAN release: 2022-11-28
New methods and functions
ZeroTaxonTree()
creates aphylo
object with no leaves.DropTip()
gains new methodsDropTip.list()
andDropTip.NULL()
.as.matrix.phylo()
converts a tree to a matrix representation, allowing a tree to be passed as a constraint toImposeConstraint()
.as.matrix.Splits()
andas.matrix.phyDat()
methods added as synonyms toas.logical.Splits()
andPhyDatToMatrix()
.
Improvements
Handle
TipLabels(0)
andBalancedTree(0)
.Support zero-leaf trees in
as.Splits()
andduplicated.Splits()
.Support non-identical tip labels in
as.Splits()
.Try Latin-1 encoding if
ReadCharacters()
family fail under UTF-8.
TreeTools 1.8.0 (2022-09-15)
CRAN release: 2022-09-15
New methods and functions
TntOrder()
renumbers a tree’s nodes to match TNT’s convention.Set names of splits object with
names(splits) <- ...
.as.Splits()
support character vectors in the form “…***“.
Improvements
ReadTntTree()
reads tree tags and follows TNT node numbering conventions.SpectrumLegend()
gainstitle
parameter and more styling options.Support > 32767 trees in
Consensus()
(#127).DropTip()
speed improved when branch lengths are present.
TreeTools 1.7.3 (2022-07-20)
CRAN release: 2022-07-20
ReadTntTree()
supports multi-line trees.as.MixedBase()
supports larger trees (44-32767 tips).Add deprecation warning to
in.Splits()
.
TreeTools 1.7.2 (2022-05-24)
CRAN release: 2022-05-24
RenumberTips()
drops “preorder” attribute, as reordering tip labels may break edge ordering guarantee.Native implementation of
ClusterTable
class.Replace
throw
withstop
in C++ scripts.
TreeTools 1.7.1 (2022-03-25)
CRAN release: 2022-03-25
-
AddTip()
: Fix bug when adding tip to root of weighted tree.
TreeTools 1.7.0 (2022-03-21)
CRAN release: 2022-03-21
New methods and functions
rev.Splits()
reverses order in which splits are listed.KeepTip.Splits()
is a faster alternative toSubSplit()
.%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()
andKeptPaths()
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.
Improvements
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()
andPostorder()
(#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 inArtificialExtinction()
.RenumberTips()
allowstipOrder
to contain elements not present intree
.Use lighter Rcpp headers.
Small improvements to computational efficiency.
Deprecations
- Remove deprecated function
PostorderEdges()
(#35).
TreeTools 1.6.0 (2022-01-12)
CRAN release: 2022-01-12
New functions
-
RoguePlot()
plots the positions of rogue taxa.
Improvements
DropTip()
gainscheck
parameter to allow slightly faster operation where input is guaranteed to be valid.RandomTree()
gainsnodes
parameter allow the inclusion of polytomies.Infer
tips
parameter if missing inStringToPhyDat()
.Remove dependency on “phangorn” (allowing use on R < 4.1)
Improve parsing of information from nexus files.
Export
DropTipPhylo()
as wrapper toDropTip.phylo()
.
TreeTools 1.5.1 (2021-10-06)
CRAN release: 2021-10-06
PhyDatToMatrix()
optionally encodes ambiguous / inapplicable tokens asNA
.Implement
sort.multiPhylo()
.Update test suite for compatibility with “testthat” > 3.0.4 (@hadley, #83).
TreeTools 1.5.0 (2021-09-13)
CRAN release: 2021-09-08
New functions
ConstrainedNJ()
returns an approximation to a neighbour-joining tree that respects constraints.PolarizeSplits()
marks a specified taxon as representing the ingroup of all splits.ImposeConstraint()
makes a tree consistent with topological constraints.as.phylo.Splits()
represents aSplits
object as a tree.Consensus()
is a faster C++ implementation ofape::consensus()
.ClusterTable()
C++ functionality imported from “TreeDist”.
Improved functions
Warn when empty cells passed to
MatrixToPhyDat()
.Warn when
LabelSplits(labels)
lack names.SplitFrequency()
drops tips fromforest
that aren’t inreference
.AddTipEverywhere()
supports trees with < 3 leaves.Make
RootTree()
andPhyDatToMatrix()
more robust.Support
encoding
option inReadCharacters()
function family.Support
CHARSTATELABELS
inReadCharacters()
.Support for more formatting quirks in
ReadNotes()
.Better support ambiguous tokens in
WriteTntCharacters()
.
Optimization
Fast matching functions from “fastmatch”.
Improve efficiency of
Preorder()
andPostorder()
, and lift limit on tree size.
TreeTools 1.4.5 (2021-06-23)
CRAN release: 2021-06-23
- Correct calculation of minimum value in
TCIContext()
. - Extract tip labels from objects in
StringToPhyDat()
. - Support
AddTip(tree, where = "tip name")
. -
SplitFrequency()
supports four-leaf trees. - Add
RootTree.matrix()
method for edge matrices. - Add
TipLabels.phyDat()
method. - Add
NULL
methods for tree reordering functions. - Additions and improvements to text parsing functions.
TreeTools 1.4.4 (2021-04-23)
CRAN release: 2021-04-20
- Add
NTip.phyDat()
method. - Update
MakeTreeBinary()
docs and tests to reflect updated behaviour ofape::multi2di()
in ‘ape’ v5.5.
TreeTools 1.4.3 (2021-04-12)
CRAN release: 2021-04-12
-
AddTip()
supports edge lengths. -
CladisticInfo()
supportsSplits
objects. -
as.multiPhylo()
converts trees, datasets and Splits objects intomultiPhylo
objects. -
LabelSplits(labels = NULL)
labels each split with its associated node. -
PhyDatToMatrix()
supports integer-only levels. -
SortTree()
supports lists of trees. - Improvements to
ReadTntCharacters()
character block extraction (#50).
TreeTools 1.4.2 (2021-01-26)
CRAN release: 2021-01-26
- Support star trees in
RootTree()
. - Improve memory handling in
root_on_node()
. - Documentation linkage.
TreeTools 1.4.1 (2020-12-09)
CRAN release: 2020-12-09
-
MSTEdges()
supports distance matrices with > 256 entries. - Package ‘vdiffr’ used conditionally.
TreeTools 1.4.0 (2020-10-20)
CRAN release: 2020-10-19
New functions
-
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()
gainsreplaceAll
option. -
WriteTntCharacters(types = ...)
writes different character types to TNT file. - Tree characterization S3 methods: add
.default
and.NULL
.
Enhancements
-
MSTEdges()
implemented in C++, improving runtime by orders of magnitude. - Improved parsing of TNT character files.
TreeTools 1.3.1
CRAN release: 2020-10-03
- Improved parsing of TNT files.
- Fix misspecified C++ linkage.
TreeTools 1.3.0 (2020-09-22)
CRAN release: 2020-09-22
New functions
-
SisterSize()
andRootNodeDist()
measure sister-clade size and root-node distance. -
MSTEdges()
: Edges of minimum spanning tree. -
SplitImbalance()
: how balanced is each split? - New C++ functions
root_on_node()
androot_binary()
to root trees quickly and robustly.
Enhancements
TNTReadTree()
handles additional punctuation characters.Import RdMacros package ‘Rdpack’.
C++ implementation of
TipsInSplits()
.Export C++ functions
preorder_edges_and_nodes()
andpostorder_edges()
.Remove obsolete copy of C++ code from ‘phangorn’.
TreeTools 1.2.0 (2020-08-30)
CRAN release: 2020-08-03
-
ArtificialExtinction()
: Remove characters that are absent in a fossil template. -
WriteTntCharacters()
: Write morphological dataset in TNT format. - Improve TNT dataset parsing.
- Documentation improvements.
TreeTools 1.1.0 (2020-07-07)
CRAN release: 2020-07-07
New functions
-
RandomTree()
: Draw tree from uniform distribution, instead of viaape::rtree()
. -
MakeTreeBinary()
: Uniform equivalent ofape::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.
Enhancements
- Use methods for
UnrootTree()
,RootTree()
,RootOnNode()
to support lists of trees.
TreeTools 1.0.0 (2020-06-08)
CRAN release: 2020-06-08
New functions
-
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.
Deprecations
-
PostorderEdges()
: usePostorder()
instead. -
NonDuplicateRoot()
: unused internal function. -
match.Splits()
: usematch()
instead. -
in.Splits()
: use%in%.Splits()
instead.
Enhancements
- Improve support for unrooted trees in
as.Splits()
. - Use methods so
Reorder
functions can handlemultiPhylo
objects and edges. - Handle funny node orders.
- Support continuous characters in
ReadCharacters()
. - Improve performance of
as.logical.Splits()
and related functions. - Fail nicely when trees are too large for memory.
- Fix memory leak in
as.Splits()
. - Various under-the-hood improvements to functions.
- Documentation improvements.
TreeTools 0.1.4 (2020-03-04)
CRAN release: 2020-03-04
- Catch hang-inducing bugs in
RootOnNode()
. - Update
doubleFactorials
cache to fixas.integer()
rounding error. - Support unrooted trees in
AddTipEverywhere()
. - Documentation improvements.
TreeTools 0.1.3 (2020-01-07)
CRAN release: 2019-12-19
-
RootOnNode()
: Quickly root a tree on a specified node. - Improve portability of C++ code.
TreeTools 0.1.2 (2020-12-18)
CRAN release: 2019-12-18
-
as.Newick
: Fast conversion to Newick format. -
as.TreeNumber
: Tree shape enumeration.
TreeTools 0.1.1
- Add functions to translate trees to mixed base integers.
-
RenumberTips
can extract tip order fromphylo
andSplits
objects. - Documentation changes to satisfy CRAN submission requirements.
TreeTools 0.1.0 (2019-10-30)
- Pre-release version spun out of ‘TreeSearch’ package. Some functionality is subject to change.