CONTRIBUTING.md,
CODE_OF_CONDUCT.md and CITATION.cff now use absolute URLs, fixing the
invalid file URI note raised by the CRAN incoming checks.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.