The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

ConsTree

Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. R-CMD-check codecov

‘ConsTree’ is an R package providing a comprehensive, efficient suite of methods for summarizing a collection of phylogenetic trees — for example a bootstrap or Bayesian posterior sample — as a single consensus tree.

Consensus methods

Split-selection methods

These methods take a list of trees (or a multiPhylo) that share the same leaves, and return a single phylo object. Methods differ in which groupings (splits or clusters) the consensus tree retains:

Function Objective
Strict() Retains groupings that occur in every tree
Majority() / MajorityRule() Retains groupings that occur in most trees (tunable via p)
Loose() Retains groupings that no tree contradicts (semi-strict / combinable-component)
MajorityPlus() Retains groupings that more trees display than contradict
Frequency() Retains groupings that are more frequent than every conflicting grouping (frequency-difference)
Greedy() Adds groupings greedily, most frequent first, when compatible with those already kept (extended majority-rule)
Adams() Constructed from the finest root-level partition shared by every tree (may introduce novel groupings; rooted)
Local() Built from rooted triplets shared by every tree (minimum rooted/induced local consensus; ≤ 20 leaves)
RStar() Includes each rooted triplet grouping that wins a plurality against each alternative separately

Distance and branch-length summaries

These methods summarize trees through a distance or tree-space criterion:

Function Objective
Average() The tree best fitting the mean path-length (patristic) distances of the inputs
Quartet() An approximate median minimizing the total quartet distance to the inputs; often more resolved than majority-rule
Transfer() A greedy consensus minimizing total transfer distance to the inputs; often more resolved than majority-rule
BHVMean() the Fréchet mean tree in Billera–Holmes–Vogtmann treespace, with branch lengths; BHVDistance(), BHVPairwiseDistances() and BHVVariance() provide the supporting geodesic distances and dispersion

Usage

library("ConsTree")

trees <- ape::as.phylo(1:100, 8)   # 100 eight-leaf trees

Strict(trees)        # most conservative
Majority(trees)      # the familiar 50% majority-rule tree
Loose(trees)         # everything not actively contradicted
Frequency(trees)     # frequency-difference: often more resolved than majority
Greedy(trees)        # most resolved of the split-based summaries
Transfer(trees)      # minimizes transfer distance; often more resolved than majority-rule

Installation

Install from CRAN (anticipated Oct 2026) with:

install.packages("ConsTree")

Install the development version from GitHub:

if (!require("pak")) install.packages("pak")
pak::pkg_install("ms609/ConsTree")

Relationship to other packages

‘ConsTree’ builds on TreeTools (the fast engine for strict and majority-rule consensus calculation) and ‘TreeDist’ (tree distances and information-theoretic consensus).

‘TreeDist’’s median.multiPhylo offers a complementary summary: the tree within a sample that has the lowest median clustering information distance to the others.

The quartet machinery underlying Quartet() builds on the ‘Quartet’ package, which counts the resolved- and shared-quartet statistics between trees; and the BHV summaries relate to ‘distory’, which computes geodesic distances in the same treespace.

‘Rogue’ identifies unstable wildcard leaves whose removal can improve the resolution and support of a consensus tree; dropping rogue taxa before summarizing with ‘ConsTree’ often leads a reduced consensus tree with increased resolution.

Citation and attribution

The manual page for each function details the literature that underpins each method; please cite this literature alongside this package (type citation("ConsTree")).

Please note that this project is released with a Contributor Code of Conduct. By contributing, you agree to abide by its terms.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.