hillcontrib() to rank taxa or named sets by their additive
contributions to pairwise or collective Hill dissimilarity. It supports
neutral, phylogenetic and functional diversity and all four dissimilarity
metrics. Collective comparisons can be run for named groups of samples.hillshare() to allocate neutral, phylogenetic and functional Hill
power-sum weight to individual taxa or named sets. Its first allocation
method is "qpower"; empty samples have undefined (NA) shares.CONTRIBUTING.md), a code of conduct, issue
templates, citation metadata (CITATION.cff) and the full GPL-3 licence
text, and a Journal of Open Source Software paper (paper/).out = "matrix" form of the per-sample functions
(hilldiv(), hillprof(), hilleven()) now returns samples in rows and
diversity orders (q0, q1, ...) in columns, instead of the previous
orders-in-rows/samples-in-columns layout. This matches the usual
observations-in-rows convention and joins cleanly with per-sample metadata.
Code that indexed these matrices by ["q0", ] should switch to [, "q0"]
(or transpose). The component/metric matrices from hillpart(),
hilldiss() and hillred() are unchanged.hilldiv() and friends now accept count tables whose first column holds
taxa names: a leading non-numeric column is automatically promoted to row
names (instead of failing with "Count data must be numeric"). Any other
non-numeric column raises a clear error asking the user to fix the input.First published on CRAN on 6 October 2026.
Complete redesign of the package built on a tested, isolated compute engine.
hill_alpha(),
hill_partition(), hill_beta_to_dissim()); the user-facing hill*
functions are thin wrappers around it.prep_data()) that checks names with
setequal() and reorders data to match the tree/distance matrix,
fixing the silent-misalignment behaviour of hilldiv2.as_hill_input() adapter accepting matrices, data frames, tibbles,
phyloseq and TreeSummarizedExperiment objects.ape-based post-order tree traversal replaces geiger::tips().hillprof() — diversity profiles across a sweep of q values.hilleven() — evenness from Hill numbers.match_data() helper (previously only referenced in the docs).hilldiv(), hillpart(), hilldiss(),
hillsim(), hilleven(), hillprof() and hillred() now return
long-format data.frames with print(), plot() and (when ggplot2 is
installed) autoplot() methods. Pass out = "matrix" for the legacy shape.type argument — type = c("auto", "neutral", "phylogenetic", "functional") on every entry point; "auto" keeps input-based detection,
an explicit value asserts and validates the diversity type.hillpair() computes the type-specific structure once over all samples and
reuses it per pair (no more full re-partition per pair), and reports a
progressr bar when available.gut_counts, gut_tree, gut_traits.reference argument on hilldiv() — reference = c("pool", "sample")
selects the reference tree depth for phylogenetic Hill numbers. "pool"
(default) reads every sample at one common depth T = mean(T_j) so values
are mutually comparable (hilldiv2's multi behaviour); "sample" reads each
sample at its own depth T_j. The two coincide on ultrametric trees. The
option is deliberately absent from hillpart(), where T is fixed at the
Chiu et al. (2014) mean per-sample depth — the unique value for which
gamma / alpha is a valid decomposition with beta in [1, N].hilldiv() alpha corrected. The per-sample phylogenetic
Hill number previously raised branch length L_i to the power q along with
abundance ((L_i a_i / T)^q), which matched no standard quantity and
disagreed with the partition engine. Branch length is now a linear weight
((L_i / T) a_i^q, Chao et al. 2010), so q = 0 recovers Faith's PD / T and
the per-sample value matches hillpart() alpha at a single sample. This
changes phylogenetic hilldiv() and hillprof() outputs relative to
earlier 3.0.0 development snapshots.vegan and
hand-computed constants, plus edge cases (single taxon, empty sample, q = 1).hilldiv(), hillpart(), hilldiss(), hillsim(), hillpair(),
hillred(), tss() and traits2dist() names from hilldiv2 are preserved.
The default return shape is now a tidy data.frame; use out = "matrix"
for the hilldiv2-style matrix.