JSS revision release. Comprehensive S3 class system overhaul, expanded methods coverage, and reproducible replication package.
bdeb_diagnose() now returns a bdeb_diagnostics S3 object.
All output goes through print(), summary(), and plot()
(type = "rhat" or "ess"). Direct list access still works
(n_divergent, summary, ...).bdeb_summary() is deprecated; use summary(fit) on a
bdeb_fit object instead. The wrapper still works but emits
a deprecation warning and will be removed in a future release.bdeb_data: print(), summary(), plot().bdeb_model: print(), summary(), plot().bdeb_prior: print(), summary(), plot().bdeb_prediction: print(), summary() (the latter returns a
tidy time / lower / median / upper data frame).bdeb_diagnostics: print(), summary(), plot().bdeb_fit (additional lm-style methods): summary() (now the
primary posterior-summary API, accepts pars and prob),
confint() (posterior credible intervals), fitted() (posterior
median/mean of \eqn{\hat{L}_i}), residuals() (observed minus
fitted), nobs() (observation count), vcov() (posterior
covariance of model parameters), and logLik() (log-pointwise
predictive density, lppd). fitted(), residuals(), and
logLik() are available for "individual" and "growth_repro"
models only.bdeb_derived() is now an S3 generic with a bdeb_fit method
(bdeb_derived.bdeb_fit). Existing calls are unchanged; the
dispatch enables future support for derived quantities on
prior-only or simulated objects.bdeb_diagnose() no longer fails on real-data fits whose
generated quantities (log_lik, L_rep) contain NaN draws
from sporadic ODE-solver failures. The summarise_draws()
quantile lambdas now pass na.rm = TRUE.plot() on a bdeb_fit (type = "trace", "posterior",
"pairs") now subsets draws to the requested parameters
before delegating to bayesplot. Without this, NaN draws in
unrelated generated quantities caused
bayesplot::prepare_mcmc_array() to abort with
"NAs not allowed in 'x'".ode_bdf_tol max_num_steps from 1e4 to 1e5 in all
four Stan models to reduce CVode mxstep messages during warmup.requireNamespace("cmdstanr").plot(fit, type = "pairs") returning NULL.README, data/, outputs/, and lite/full execution modes.curves.txt locally to remove external dependency.CRAN-review compliance release. Addresses reviewer feedback on the use
of T as an identifier, which can shadow R's built-in T symbol
(= TRUE).
arrhenius(): first argument renamed from T to temp. Positional
calls are unaffected (arrhenius(298.15)). Code that passed the
argument by name (arrhenius(T = 298.15)) must be updated to
arrhenius(temp = 298.15).bdeb_model(temperature = ...): the list field T was renamed to
T_obs to match the Stan data naming and to remove the T shadow.
Replace list(T = 298.15, T_ref = ..., T_A = ...) with
list(T_obs = 298.15, T_ref = ..., T_A = ...).bdeb_diagnose() and bdeb_ec50() now expose a verbose = TRUE
argument. All user-facing output (diagnostic alerts and summary
tables) is routed through cli / [message()] rather than direct
print() calls, so it can be silenced with [suppressMessages()] or
by passing verbose = FALSE. Return values are unchanged.R/utils.R, R/data_prep.R, R/model_spec.R and
man/arrhenius.Rd, man/bdeb_model.Rd,
man/temperature_to_stan_data.Rd,
man/build_stan_data_individual.Rd to reflect the renaming.arrhenius(temp = ...).temperature$T_obs field.\dontrun{} replaced with runnable examples for prior_species(),
bdeb_tox() and bdeb_prior_predictive() (all execute in < 0.2 s
against bundled datasets). bdeb_fit() retains \dontrun{}
because it requires the external CmdStan toolchain and a single
Stan compilation + MCMC run takes > 30 seconds; the Rd comment
explains the reason.CITATION.cff from the version-specific
DOI (10.5281/zenodo.19500753, v0.1.3) to the concept DOI
(10.5281/zenodo.19443804), which always resolves to the latest
archived version. The v0.1.4 version DOI is
10.5281/zenodo.19642839 for anyone needing to cite this specific
release.New features and data release.
prior_species(): species-specific priors from the AmP collection for
E. fetida, E. andrei, F. candida, D. magna, and L. rubellus.plot(fit, type = "prior_posterior"): prior vs. posterior density
comparison plot.eisenia_neuhauser: real E. fetida growth data from Neuhauser,
Hartenstein & Kaplan (1980), 37 group-mean measurements over 250 days.eisenia_cd: real Eisenia andrei cadmium toxicity data from
Van Gestel et al. (1991), 5 concentration groups over 85 days.ODE solver upgrade and bug fix release.
deSolve::lsoda() (adaptive
BDF/Adams) instead of fixed-step Euler. This matches the BDF
solver used in Stan, ensuring numerical consistency between
R-side simulation and Stan-side inference. The dt parameter
now controls output resolution, not integration accuracy.deSolve (>= 1.40) added to Imports.bdeb_ec50()$NEC returning a data frame instead of numeric
draws — median(ec50$NEC) now works correctly.build_stan_data_hierarchical() crashing when growth data
starts at time = 0 (same fix as individual model in 0.1.1).build_stan_data_debtox() crashing when growth or
reproduction data starts at time = 0.build_stan_data_growth_repro() t=0 handling producing NA
index matches — replaced convoluted fix with consistent epsilon
shift across growth and reproduction times.sim_deb_euler() / sim_debtox_euler()
to sim_deb_lsoda() / sim_debtox_lsoda() to reflect solver.Bug fix and hardening release.
ode_bdf_tol crash when growth data starts at time = 0:
replaced with 1e-3 epsilon since Stan requires t_obs > t0.%||% operator not imported: replaced with explicit
if (is.null(...)) in bdeb_predict().rnorm() fallback for unknown prior families in
bdeb_prior_predictive(): now throws informative error.bdeb_predict(newdata = NULL) using t_obs instead of
t_L for "growth_repro" models.bdeb_predict() silently returning raw draws when L_hat
is missing: now throws informative error.R instead of interval
delta_R = k_R * (R(t_end) - R(t_start)): now consistent with
growth_repro model.phi_R prior hardcoded in DEBtox Stan model: now uses
prior_phi_R_mu/sd from R prior system.deb_fluxes() computing p_G with redundant / E_G * E_G.growth_rate formula: was v/3 * p_M/(kappa*E_G), now
correct Kooijman Eq. 3.23: k_M * g / (3*(f+g))."individual" and "growth_repro" models now hard-error (not warn)
when data contains multiple individuals.survival argument from bdeb_data() (was accepted but
not implemented — "feature mirage").bdeb_data() validates f_food in [0, 1].bdeb_fit() validates all sampling parameters (chains, iterations,
adapt_delta, max_treedepth, threads).arrhenius() validates T > 0, T_ref > 0, T_A >= 0.bdeb_model() validates prior objects, observation objects, and
temperature fields (must be positive finite scalars).bdeb_fit() wraps Stan compilation and sampling in tryCatch
with contextualised error messages.repro_to_intervals() warns when dropping individuals with < 2
observations.validate_growth() warns when max length > 10 cm (possibly
physical rather than structural length).match() instead
of nearest-neighbour which.min().bdeb_loo(): LOO cross-validation via loo::loo() with
endpoint argument for "growth_repro" models.bdeb_prior_predictive(): R-side prior predictive simulation
with print() and plot() methods.bdeb_session_info(): reproducibility report (R, Stan, package
versions, fit configuration, Stan model hash).coef.bdeb_fit(): S3 method returning posterior medians or means.deb_simulate(), debtox_simulate(): standalone DEB/DEBtox
simulators, independent of Stan.L_m added to bdeb_derived(): maximum structural length at f=1.plot.bdeb_prediction(): S3 plot method for prediction objects.reduce_sum for hierarchical and
DEBtox models.threads_per_chain argument in bdeb_fit().seed argument in bdeb_predict(), plot_dose_response(), and
plot(fit, type = "trajectory").dt and t_end arguments in plot_dose_response().bdeb_fit object.inst/CITATION with package and Kooijman (2010) entries.CITATION.cff with Zenodo DOI.Initial release.
bdeb_model().prior_lognormal(), prior_beta(), prior_halfnormal(), and others.prior_default(),
calibrated against the AmP collection (Marques et al., 2018).obs_normal(), obs_lognormal(),
obs_student_t(), obs_poisson(), obs_negbinom().cmdstanr with bdeb_fit().bdeb_diagnose() reports R-hat, ESS,
divergences, and E-BFMI (Vehtari et al., 2021).bdeb_ppc().bdeb_derived() for ultimate length,
von Bertalanffy growth rate, and somatic maintenance rate constant.bdeb_tox(), bdeb_ec50(), plot_dose_response().arrhenius() temperature correction, deb_fluxes()
energy flux calculator, repro_to_intervals() data converter.eisenia_growth: simulated Eisenia fetida growth (21 individuals,
12 weeks).folsomia_repro: simulated Folsomia candida reproduction test
(5 Cd concentrations, 6 replicates).debtox_growth: simulated growth under toxicant exposure
(4 concentrations, 10 individuals each, 6 weeks).getting_started: overview of the package workflow.case_study_eisenia_folsomia: full workflow with Eisenia growth
(individual + hierarchical) and Folsomia DEBtox analysis.