metabodeconplus 0.22.3
snap_to_ref()no longer returns a zero-column feature matrix when it is handed spectra that did not pass throughclupa(). It already derived a missingpcialfor the reference spectrum but not for the others, so every non-reference peak snapped toNAandsi_mat()dropped it – silently, with no error. The same fallback now applies to every spectrum. Results on the normal path are unchanged, sinceclupa()always setspcial.combine_peaks()documents why it is not usable as asnap_funforfit_mdm(): it declaresrefand never reads it, so prediction would recompute a merge from the test spectra instead of reusing the trained one.
metabodeconplus 0.22.2
- Runtime improvement:
fit_mdm()andbenchmark()now skip the up-front$deggrid search when no pipeline stage reads it, i.e. fornpmax = 0(literal deconvolution parameters) and fordecon_fun = identity2, wherebenchmark()previously re-ran the whole grid search once per outer fold and discarded the result. No result changes anywhere; only non-default configurations are affected.decon_funis not reachable through the exported API (identity2is internal), so of the two onlynpmax = 0can be triggered by a publicfit_mdm()/benchmark()call; the defaultnpmax = -1still needs the grid.
metabodeconplus 0.22.1
- Improvement: make
calc_prarp()clamp both scores at zero, soprarpandprarpxstay in[0, 1]. Practically irrelevant, because the residual is never bigger than the spectrum area for any reasonable deconvolution, but makes the implementation match the theoretical formulation.
metabodeconplus 0.22.0
CRAN release: 2026-08-09
CRAN resubmission addressing the review of 0.21.0, which still saw changes of
options()andpar()without an appropriate reset inR/plot.RandR/util.R. No user-facing API changes.Removed the private multi-figure helpers
set_fig()andlocal_fig().set_fig()changedpar(fig=, new=)and returned a reset function that its two callers registered viaon.exit()/withr::defer(), so the reset sat in a different function than thepar()call it reverts. That logic now lives inwith_fig()and indraw_spectrum(), which changepar()and register the restoringon.exit()handler in the same function, beforepar()is touched. Plot output is unchanged.Removed the unused private helper
catft(), which permanently set themetabodeconplus.catft.timeoption, and dropped the equally unusedoptions(metabodeconplus.aki_cache=)assignment from.onLoad(). The package no longer sets any global option that outlives a function call.
metabodeconplus 0.21.0
-
fit_mdm()andbenchmark()now default tomodel = "ranger"(probability random forest) instead of"lasso". Ranger is the intended default published model; passmodel = "lasso"for the L1-penalised logistic-regression backend. -
rangermoved from Suggests to Imports: it is the default model backend, so it is now a hard dependency and its availability is no longer checked conditionally.speaqmoved from Imports to Suggests, since it is only used by the non-defaultalign(use_speaq = TRUE)path. - CRAN resubmission addressing the review of 0.20.2. No user-facing API changes beyond the removal of
install_mdrb()/check_mdrb_deps().- Removed the exported
install_mdrb()andcheck_mdrb_deps()functions: packages must not install other packages (CRAN policy). The optional Rust backendmdrbis now purely user-installed. Whendeconvolute(use_rust >= 1)is requested butmdrbis missing,check_mdrb()stops with an error that prints the exactinstall.packages("mdrb", repos = "https://spang-lab.r-universe.dev")command and links to https://github.com/spang-lab/mdrb. - Documentation examples no longer use
\dontrun{}: runnable examples on the publicsim/sim2datasets are now unwrapped or wrapped in\donttest{}, and no example uses more than two cores. - Removed the
metabodeconplus:::(triple-colon) references from theharmonize_grid()andfit_mdm()/benchmark()documentation. - No longer set
options(warn = -1)anywhere (removed together withcheck_mdrb_deps()). - Internal development helpers no longer write to
.GlobalEnvor changepar()without an immediateon.exit()/withrrestore.
- Removed the exported
metabodeconplus 0.20.2
- Gave metabodeconplus a distinct
TitleandDescriptioninDESCRIPTIONso they no longer duplicate the CRAN metabodecon package. The title now mentions model fitting, and the description highlights the end-to-end model-fitting workflow (fit_mdm()/benchmark()) and states that metabodeconplus is the backwards-incompatible successor to metabodecon. - CI: the slow, network-dependent tests now run on at least one runner per OS.
R-CMD-check.yamlpromotes the macOS and Windowsreleasejobs fromfasttoall(RUN_SLOW_TESTS=TRUE), so OS-specific slow tests (e.g. the persistentdatadir()test, which isskip_on_os("linux")) keep their coverage. Download failures skip gracefully viaskip_if_no_example_datasets(), so the slow jobs do not flake on transient network errors.
metabodeconplus 0.20.1
- Fixed a flaky Windows
R CMD checkfailure in theglmnet/lassofit_mdm()andbenchmark()smoke tests.glmnet’s compiled code intermittently triggers a Windows access violation (exit code0xC0000005) when run inside atestthatparallel worker, crashing the test subprocess. The fault is upstream and independent of howfit_lasso()drivesglmnet— it reproduces identically with random folds, stratified folds, a manual cross-validation loop, and even the Gaussian family — and it does not occur outside the parallel-worker context. The lasso backend is an optional/secondary path (the default published model,ranger, is unaffected). These lasso smoke tests are therefore skipped on Windows only in automated check environments — CI and CRAN /R CMD check, including win-builder — while still running during local interactive development on Windows and on Linux/macOS everywhere. Therangertests run on all platforms.
metabodeconplus 0.20.0
- First release of metabodeconplus, the continuation of the metabodecon package under a new name. It provides an integrated workflow for 1D NMR spectra: deconvolution, alignment, feature-matrix construction and classification models (
fit_mdm()/benchmark()), with an optional Rust backend (mdrb). - The classic metabodecon (1.6.3) remains available separately, so existing workflows keep working while metabodeconplus evolves. As a fresh
0.xpackage, metabodeconplus does not yet make backwards-compatibility promises.