Changelog
Source:NEWS.md
hilldiv3 (development version)
-
Breaking: the
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 fromhillpart(),hilldiss()andhillred()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. - Verbose output now reports the number of taxa and samples being analysed.
hilldiv3 3.0.0
Complete redesign of the package built on a tested, isolated compute engine.
Architecture
- Math separated into an internal, unit-tested engine (
hill_alpha(),hill_partition(),hill_beta_to_dissim()); the user-facinghill*functions are thin wrappers around it. - Single validation/alignment layer (
prep_data()) that checks names withsetequal()and reorders data to match the tree/distance matrix, fixing the silent-misalignment behaviour of hilldiv2. - New
as_hill_input()adapter accepting matrices, data frames, tibbles,phyloseqandTreeSummarizedExperimentobjects. - Fast
ape-based post-order tree traversal replacesgeiger::tips().
New features
-
hillprof()— diversity profiles across a sweep of q values. -
hilleven()— evenness from Hill numbers. - Real
match_data()helper (previously only referenced in the docs). -
Tidy output by default.
hilldiv(),hillpart(),hilldiss(),hillsim(),hilleven(),hillprof()andhillred()now return long-formatdata.frames withprint(),plot()and (whenggplot2is installed)autoplot()methods. Passout = "matrix"for the legacy shape. -
Explicit
typeargument —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 aprogressrbar when available. - Bundled, documented example data:
gut_counts,gut_tree,gut_traits. -
referenceargument onhilldiv()—reference = c("pool", "sample")selects the reference tree depth for phylogenetic Hill numbers."pool"(default) reads every sample at one common depthT = mean(T_j)so values are mutually comparable (hilldiv2’smultibehaviour);"sample"reads each sample at its own depthT_j. The two coincide on ultrametric trees. The option is deliberately absent fromhillpart(), whereTis fixed at the Chiu et al. (2014) mean per-sample depth — the unique value for whichgamma / alphais a valid decomposition withbetain[1, N].
Bug fixes
-
Phylogenetic
hilldiv()alpha corrected. The per-sample phylogenetic Hill number previously raised branch lengthL_ito the powerqalong 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), soq = 0recovers Faith’s PD / T and the per-sample value matcheshillpart()alpha at a single sample. This changes phylogenetichilldiv()andhillprof()outputs relative to earlier 3.0.0 development snapshots.
Infrastructure
- Added test-coverage (Codecov) and lint (lintr) GitHub Actions workflows.
- Added golden-value tests cross-checking the engine against
veganand hand-computed constants, plus edge cases (single taxon, empty sample, q = 1).
Compatibility
- The
hilldiv(),hillpart(),hilldiss(),hillsim(),hillpair(),hillred(),tss()andtraits2dist()names from hilldiv2 are preserved. The default return shape is now a tidydata.frame; useout = "matrix"for the hilldiv2-style matrix.