-
TransferConsensus()is deprecated, moving toConsTree::Transfer(). -
Fixed:
PhylogeneticInformationDistance()now calculates correct score for identical 4-leaf trees. -
Improve
KMeansPP()performance: O(k²n) → O(kn).
-
TransferConsensus()constructs a consensus tree that minimizes the sum of transfer distances to a set of input trees, using a greedy add-and-prune heuristic. -
TransferDist()computes the transfer dissimilarity between phylogenetic trees, with scaled and unscaled variants. -
LAP (Jonker–Volgenant linear assignment) and Mutual Clustering Information C++ implementations exposed via
LinkingTo: TreeDist.
- Large-tree support: all distance functions now accept trees with up to 32 767 tips. Requires TreeTools ≥ 2.3.0.
RobinsonFoulds()now uses a fast C++ batch path when comparing lists of trees, providing a ~20× speedup on typical inputs.
MCITree()selects the tree from a posterior sample with the highest total split information content — a Maximum Clade Information analogue of the Maximum Clade Credibility tree.
Pairwise distance computation has been optimized. Typical speedups over v2.12.0 for tree sets where many splits are shared:
| Metric | 100 × 50 tips | 40 × 200 tips |
|---|---|---|
ClusteringInfoDistance |
~5× | ~12× |
MatchingSplitDistance |
~7× | ~11× |
InfoRobinsonFoulds |
~4× | ~5× |
- Pairwise distance functions now use OpenMP parallelism when supported and
enabled with
options(mc.cores = N), supersedingStartParallel().
-
KCVector()reimplemented in C++, giving ~220× speedup per tree. -
All-pairs and cross-pairs
KendallColijn()Euclidean distances now computed in C++ (pair_diff_euclidean(),vec_diff_euclidean()).
-
Support larger trees in some functions by updating some functions to use 32-bit integers, per TreeTools v2.1.0.
-
AHMI()now returns negative values (previously zeroed in error). -
Experimental support for a new method of SPR distance calculation: subject to change or removal.
- Improve robustness of
SpectralEigens()tests.
-
HierarchicalMutualInformation()calculates the information shared between pairs of hierarchical partition structures \doi{10.1103/PhysRevE.92.062825}. -
Fix bug in calculation of
MutualClusteringInfo(): the matching chosen was not always the global optimum, causing distances to be overestimated in some circumstances (#163). -
Fix crash in
robinson_foulds_all_pairs()andRobinsonFoulds(list). -
Support larger trees in NNI distance calculations.
- Compiler-safe vector initialization, resolving M1-SAN warnings.
Note - this release introduced a bug in the computation of the mutual clustering information / clustering information distance. The globally optimal matching between splits was not always found. This was fixed in v2.11.0.
-
Ntropy()computes entropy from integer counts. -
C++ optimizations and reformatting:
- Faster tree distance calculation.
- 2x speed-up of LAPJV for large matrices.
-
Require R4.0; discontinue tests against R4.0.
- Fix crash when calculating NNI distance for large trees.
- Avoid false positive in MKL testing environment.
-
VisualizeMatching()allows more control over output format, and returns the matching (#124). -
DistanceFromMedian(Average = median)allows calculation of MAD. -
SpectralEigens()returns correct eigenvalues (smallest was overlooked). -
SpectralEigens()handles values ofnEiglarger than the input. -
Anticipate new behaviour of
unlist(use.names = TRUE)in R 4.5.
-
Islands()allows the identification of islands of trees. -
Internal implementation of path and SPR distances, removing dependency on phangorn (and thus R 4.4).
-
Add progress bar within
.MaxValue()
-
Documentation improvements.
-
Fix
KCDiameter.multiPhylo()for multiple trees.
-
Fix calculation error in
StrainCol(). -
App: Display strain in 3D tree space viewer.
-
Support for distances between larger trees.
-
Support unrooted trees in
VisualizeMatching()(#103).
-
Fix bug when comparing a "multiPhylo" object containing a single tree.
-
Documentation clarification: finding non-matching leaves.
- Support non-square matrices in
LAPJV().
-
StopParallel()gainsquietlyargument to suppress unnecessary messages. -
Use "PlotTools" package for spectrum legends.
-
Minor documentation tweaks.
-
Support comparison of trees with different tips.
-
Fix caching errors in
MapDist()(#98). -
Update tests for compatibility with ape 5.7.
-
New functions to measure cluster sizes (see
?"cluster-statistics"). -
KMeansPP()conducts clustering using K-means++, replacing K-means in app. -
New vignette on tree landscape analysis.
-
New vignette on how to compare tree sets.
-
PathVector()now treats trees with a root node as rooted. -
Fix plot layout in treespace vignette.
-
Informative failure when not enough memory for
consensus_info(). -
Replace
throwwithstopin C++.
-
Correct calculation of trustworthiness and continuity metrics.
-
Depict strain in minimum spanning trees with
StrainCol()and helper functionMSTSegments(). -
Update tests for consistency with "TreeTools" v1.7.
-
Use lighter Rcpp headers.
-
Support
ConsensusInfo(p > 0.5). -
Address hypervolume comparison in vignettes.
-
Support uniform manifold approximation and projection in app.
-
Speed improvements, using optimizations suggested by Alexis Stamatakis' Bioinformatics group.
-
Support for parallel computation via
StartParallel(). -
Progress bars.
-
Solaris compatibility.
-
Modest vignette improvements.
-
spic/scic abbreviation recognition.
-
ConsensusInfo()quickly calculates the splitwise information content of the consensus of a set of trees, after Smith (forthcoming). -
SplitwiseInfo()andClusteringInfo()gain apparameter to reflect the reduced information content of splits with lower support values, and asumparameter to allow return of individual split information content. -
KCDiameter()approximates the diameter of the Kendall-Colijn metric. -
Plot3()(experimental) provides pseudo-3D plotting.
-
Project()/ProjectionQuality()re-named toMapTrees()/MappingQuality(). -
SpectralClustering()re-named toSpectralEigens().
-
Add self-organizing map example to treespace vignette.
-
Allow the specification of custom vectors in the Kendall--Colijn metric.
-
Faster all-to-all tree distance calculation.
-
Diagnose and fix memory leaks, including over-long reported matchings.
-
Explicitly import shiny/shinyjs functions.
-
Project()launches 'shiny' app for projection and analysis of tree space. -
ProjectionQuality()calculates trustworthiness and continuity of tree space mappings. -
Faster calculation of Robinson–Foulds distance (using algorithm of Day (1985)) and clustering information distance.
-
New class
ClusterTableto allow faster distance computation with Day (1985) algorithm. -
Improve error messages in
CalculateTreeDist(). -
Improvements to vignettes.
-
Use package 'vdiffr' conditionally.
- Import RdMacros package 'RdPack'.
-
TreeDistance()and related functions now return adistobject when computing all distances between all pairs of trees in a list. -
Improve floating-point arithmetic in
TreeDistance()functions. -
TreeDistance()now returns a distance (as documented), rather than a similarity. -
Fix rounding error in NNI 'Li' upper estimate, and improve NNI performance.
-
Reduce precision of LAPJV so rounding errors do not result in interminable run times.
- Fix range errors when calculating tree distances.
-
Improvements to
NNIDist()in light of Fack et al. (2002). -
Add
NNIDiameter(): approximate diameter of NNI distance. -
Remove vignette 'Interpreting tree distances': duplicates https://ms609.github.io/TreeDistData/articles/09-expected-similarity.html.
-
Remove redundant data object
oneOverlap. -
Fix an issue when installing on R 3.x (require C++11 to ensure declaration of
UINT_FAST16_MAX). -
Fix memory-handling bug in
lapjv().
- Initial release, building on some draft functions included in 'TreeSearch' 0.3.2.9005.