New methods and functions


Deprecations and breaking changes

New methods and functions


  • 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.

New methods and functions

  • 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 “…***“.


  • 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.

New methods and functions

  • 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.


  • Remove deprecated function PostorderEdges() (#35).

New functions


  • 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().

New functions

Improved functions


  • Fast matching functions from “fastmatch”.

  • Improve efficiency of Preorder() and Postorder(), and lift limit on tree size.

  • 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.
  • Support star trees in RootTree().
  • Improve memory handling in root_on_node().
  • Documentation linkage.
  • MSTEdges() supports distance matrices with > 256 entries.
  • Package ‘vdiffr’ used conditionally.

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() gains replaceAll option.
  • WriteTntCharacters(types = ...) writes different character types to TNT file.
  • Tree characterization S3 methods: add .default and .NULL.


  • MSTEdges() implemented in C++, improving runtime by orders of magnitude.
  • Improved parsing of TNT character files.
  • Improved parsing of TNT files.
  • Fix misspecified C++ linkage.

New functions

  • SisterSize() and RootNodeDist() 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() 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’.

New functions


New functions



  • Improve support for unrooted trees in as.Splits().
  • Use methods so Reorder functions can handle multiPhylo 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.
  • RootOnNode(): Quickly root a tree on a specified node.
  • Improve portability of C++ code.
  • as.Newick: Fast conversion to Newick format.
  • as.TreeNumber: Tree shape enumeration.
  • Add functions to translate trees to mixed base integers.
  • RenumberTips can extract tip order from phylo and Splits objects.
  • Documentation changes to satisfy CRAN submission requirements.
  • Pre-release version spun out of ‘TreeSearch’ package. Some functionality is subject to change.