Changelog
Source:NEWS.md
AlpsNMR (development version)
Breaking changes
-
plot_vip_scores():nbootstrapargument renamed ton_samples, and its threshold line now uses the correct degrees of freedom (df = n_samples - 1), matching the selectionbp_VIP_analysis()actually performs. -
nmr_read_bruker_fid():endianargument removed (byte order is now auto-detected fromacqus), and it now returns a data frame withtime_s/fid_complexcolumns instead of a raw numeric vector. Also fixes silent truncation of the FID to half its length. -
nmr_baseline_threshold()/nmr_baseline_threshold_plot():range_without_peaks/chemshift_rangeno longer default toc(9.5, 10)ppm; must now be given explicitly. -
nmr_detect_peaks():range_without_peaksno longer defaults toc(9.5, 10)ppm either; either it orbaselineThreshmust now be given, or the call aborts with a clear message instead of failing deep inside with a confusing one (#66). -
download_MTBLS242():keep_only_preop_and_3months(logical) replaced bytimepoints(a character vector ofTimePointvalues to keep, orNULLfor every timepoint), so any two (or more) of the study’s five timepoints can be selected, not just preop and 12 months.timepoints = c("preop", "12 months after surgery")is the new default and reproduces the oldkeep_only_preop_and_3months = TRUEbehavior. -
nmr_baseline_threshold_plot():NMRExperiment = NULLnow means “every sample” (paginated via newnrow/ncol/pagearguments) instead of silently subsampling to 10 random samples when there were more than 20."all"remains a synonym forNULL.nrow/ncoldefault to a snug grid for small sample counts, or a fixed 3x3 (paginate withpage) for 7 or more.
New features
-
nmr_baseline_threshold_plot(): newnrow/ncol/pagearguments paginate the per-sample facets instead of cramming every sample onto one illegible page. -
bp_VIP_analysis()/bp_kfold_VIP_analysis(): new optionalidentity_columnargument. When given, fold assignment and bootstrap resampling keep everyidentity_columngroup (e.g. a subject’s repeated measurements) together, and the fittedplsdamodels become multilevel, matching whatnmr_data_analysis()already did for the sameidentity_column. Opt-in and backward compatible (defaults toNULL, reproducing the previous behavior).
Bug fixes
-
peaklist_fit_lorentzians()(used bynmr_detect_peaks(fit_lorentzians = TRUE)): its “Fitting lorentzians” progress bar was not gated behind the same interactive/non-knitr check every other progress bar in the package uses, so it always printed, including inside notebooks/vignettes. -
nmr_identify_regions_blood()/nmr_identify_regions_urine()/nmr_identify_regions_cell(): eachppm_to_assignquery always contributed exactlynum_proposed_compoundsrows, padding withNAwhen fewer candidate metabolites were found within tolerance; thoseNA-only rows are now dropped instead of returned. -
models_stability_plot_plsda()/models_stability_plot_bootstrap(): the loadings-correlation heatmap now uses a fixed, sign-agnostic color scale (-1 and +1 both render as the same dark blue, 0 as white; a latent variable’s sign is arbitrary, so -1 and +1 indicate equally strong agreement) instead of a plain sequential palette that auto-scaled to whatever range the data happened to have. Also fixes self-correlation cells (expected to be exactly 1) intermittently rendering as blank/white: a loading vector’s self dot-product can come out as e.g.1.0000000000000002due to floating-point rounding, which fell just outside the (-1,1) scale limits and was dropped toNAby ggplot2’s default out-of-bounds handling; now clamped to the nearest limit instead. -
bp_VIP_analysis(): VIP scores were indexed by the requestedncomprather than the fitted model’s actualmodel$ncomp; on data wheremixOmicssilently fits fewer components than requested (e.g. a degenerate bootstrap resample), this causedsubscript out of bounds. -
bp_kfold_VIP_analysis(): fixed fold partitioning, which assigned samples to folds with a deterministicx %% ksplit instead of the intended random shuffle. -
bp_VIP_analysis(): a degenerate (single-class) bootstrap resample is now redrawn instead of being patched with a fixed, non-random replacement, which biased a fraction of the bootstrap replicates. -
read_bruker_param(): fixed a wrong regex capture-group index causingsubscript out of boundson some Bruker parameter files. -
parse_title_file(): fixed agsub()call missingperl = TRUE, which left trailing whitespace untrimmed from Bruker pdata title fields. -
choose_best_nlv(): fixed a key-name mismatch that madediagnostic_plot,diagnostic_box_plot, andmodel_performancesalwaysNULLfor models built withplsda_auroc_vip_method(). -
models_stability_plot_plsda()/models_stability_plot_bootstrap()/plot_bootstrap_multimodel(): fixed two ggplot2 arguments deprecated since ggplot2 3.3.4/3.4.0, which warned on every call. -
create_sample_names(): disambiguates samples sharing a leaf directory name (e.g. Bruker EXPNO10) by stripping the full common path prefix, instead of only one parent level. Collisions more than one level deep now get readable names instead ofvctrs-generated...Nsuffixes (#62). -
tidy.nmr_dataset_1D()(and thusplot()/nmr_baseline_threshold_plot()): an unknownNMRExperimentvalue now warns and is excluded (if some values are valid) or errors (if none are), instead of silently returning rows withNAintensities (#69).
Other changes
-
download_MTBLS242(): validate downloaded files against MetaboLights’ published SHA-256 checksums for the MTBLS242 dataset (#72). - Bumped several dependency version floors to roughly their versions from a year ago. Packages with a recent major release are pinned to the last minor of the previous major instead, to avoid forcing an upgrade:
ggplot2 (>= 3.5.2),fs (>= 1.6.7),curl (>= 6.4.0),zip (>= 2.3.3),progressr (>= 0.19.0).
AlpsNMR 4.7.2 (2024-08-10)
- Disable nested parallellization in
nmr_detect_peaks_tune_snr().
AlpsNMR 4.7.1 (2024-06-02)
- Added
nmr_autophase()for automated phase correction using the NMRphasing package (#68). - Added
to_ASICSfunction to export dataset for ASICS quantification (#68).
AlpsNMR 4.1.6 (2023-02-16)
- Download improvements:
- Progress bar
- Detect user interruptions
- Sleep 3 seconds between retrying failed downloads
AlpsNMR 4.1.5 (2023-02-10)
- Replace deprecated dplyr::select() calls.
- Remove workaround for mixOmics bug, bump mixOmics dependency
- Simplify implementation (same algorithm) for determining the optimal number of latent variables in the plsda models.
- Bump dplyr dependency version.
AlpsNMR 4.1.4 (2022-11-08)
- Disable nested parallelization
- Update workaround Biocparallel bpmapply
- Revert bpstop to sleep
AlpsNMR 4.1.2 (2022-11-04)
- Try a more robust fix on palomino4 (bpstop() instead sleep)
- Use register() in an example to avoid further breakage on palomino
- Workaround performance issues on BiocParallel::bpmapply() (https://github.com/Bioconductor/BiocParallel/pull/228)
AlpsNMR 4.1.1 (2022-11-02)
- Remove archive dependency
- Try fixing build on palomino4, due to race condition in R CMD check
AlpsNMR 3.99.5 (2022-10-26)
Minor changes
- Remove call to deprecated
ggplot2::qplot()
AlpsNMR 3.99.4 (2022-10-19)
Major changes
Improved the
download_MTBLS242()function, allowing to either download the parts of MTBLS242 needed for the tutorial or the whole dataset, which may be nice to have if you want to play beyond the tutorial.When reading a Bruker sample from a zip file, you now can specify in the file name the zip subdirectory. For instance, “/path/to/sample.zip!/sample/3”, when
sample.zipcontains a folder namedsamplewith a subfolder named3that includes the sample data you want to actually read.
Minor changes
- Remove Bioconductor Build System workaround, since https://github.com/Bioconductor/BBS/issues/220 was fixed.
AlpsNMR 3.99.3 (2022-10-17)
- Add libarchive as a SystemRequirement to workaround a limitation of the Bioconductor build system (BBS), that can’t pick system requirements recursively. Thanks to Jennifer Wokaty for checking the BBS and providing this suggestion.
AlpsNMR 3.99.2 (2022-10-14)
Breaking changes
- Set
fix_baseline = FALSEinnmr_integrate_regions()as default. The formerTRUEapproach here did not make much sense if peak boundaries were not perfectly established.
Major changes
Baseline estimation: We now offer
nmr_baseline_estimation()besidesnmr_baseline_removal(). The estimation function computes the baseline and saves it instead of subtracting it from the signal. This is a better approach because it lets each step of the pipeline decide whether it makes sense to subtract the baseline or not. Thenmr_baseline_removal()is for now still available, but it will be deprecated in a future version.For the
baselineThreshargument innmr_detect_peaks()we now suggest usingnmr_baseline_threshold(dataset, method = "median3mad"). This is more robust than the former (but still the default) method.Peak detection and integration: We want to approach the peak detection, clustering an integration in a different way. While the old pipeline still works as expected, we have introduced new arguments to peak detection, with backwards compatible defaults and a peak clustering function. We still provide the vignette with the former workflow, because it is still relevant but we may deprecate it in a future version, once we are confident the changes we are making are robust across several datasets.
Parallellization: We are switching from the
futurepackage toBiocParallel, to better integrate in the Bioconductor ecosystem. In this version, if you use a different future plan you may get a warning to switch to BiocParallel. In a future version we will remove our dependency with the (awesome)futurepackage.
Minor changes
- You can now set experiment names (NMRExperiment) with
names(dataset) <- c("Sample1", "Sample2"). - You can now pass a named vector with the sample names to the nmr_read_samples function. The names will be used as the sample names.
- Peak detection has a more robust baseline threshold estimation
- Peak detection estimates the baseline threshold on each sample individually. The threshold is calculated using only the sample where we are currently detecting the peaks.
- Peak detection includes a simple but effective lorentzian fitting (for area and width estimation)
- Add functions to evaluate the quality of the peak detection using plots
- More fine grained interpolation axis if
axis = NULLis given innmr_interpolate_1D() - Save list of excluded regions in the
nmr_datasetobject. - Drop MassSpecWavelet workaround on partial argument matching since it was fixed upstream
- Documentation: Start providing verbose messages with tips in functions
- Remove unused deprecated imports from the
futurepackage (#65, thanks to @HenrikBengtsson) - Add URL and BugReports to the DESCRIPTION (#64, thanks to @HenrikBengtsson)
- Reading bruker samples is now a bit more robust and gives detailed tracebacks in case of error.
AlpsNMR 3.5.1 (2022-04-07)
-
plot_interactivenow accepts anoverwriteargument to avoid asking the user interactively - Improve
nmr_detect_peaks_tune_snrto tune the SNR threshold with the right other parameters - Documentation improvements
- Split Peak_detection page into smaller and more specific pages
- Let the user choose how code is parallellized, as suggested by BiocParallel documentation.
- Replace furr/future parallellization loops with BiocParallel. Provides a warning in case a future::plan() has been set.
- Demote Imports to Suggests: SummarizedExpriment, S4Vectors, ggrepel, GGally
- Remove dependencies: tidyselect, assertthat, plyr, furrr
- Add
download_MTBLS242()function to help download the data for the tutorial - Skip mixOmics test if affected by https://github.com/mixOmicsTeam/mixOmics/pull/199
- Fix auto setting of the baseline threshold for the peak detection
AlpsNMR 3.3.4 (2021-09-16)
- Fix issue with PCA plots not working as expected
- Ensure NMRExperiment names are not duplicated in a dataset (closes #44)
- Fix issue with some title file formatting in Bruker samples (closes #46)
- Export groups in to_ChemoSpec
- License since AlpsNMR was released has alwayd been MIT as stated in the bioinformatics paper
AlpsNMR 3.1.3 (2020-11-19)
- Added instructions to follow a longer tutorial
- nmr_pca_outliers_plot modified to show names in all boundaries of the plot
AlpsNMR 3.1.2 (2020-11-04)
- Bug fix related with Bioconductor Renviron variable R_CHECK_LENGTH_1_CONDITION
AlpsNMR 2.99.6 (2020-10-19)
- Added import/export options form nmr_dataset_1D to SummarizedExperiment
- Added import/export options form nmr_dataset_peak_table to SummarizedExperiment
AlpsNMR 2.99.5 (2020-10-14)
- Bug in bp_kfold_VIP_analysis solved
- Several packages moved from import to depends
- Reexport of some functions removed
- to_rDolphin_blood code reorganized
- Typos removed from tutorial
- norm_pqn_diagnostic$norm_factor used in tutorial instead of plot it
- Parallel changed for BiocParallel
AlpsNMR 2.99.4 (2020-09-28)
- Warning in plot_interactive function added
- Suppressed other warnings of plot_interactive function
AlpsNMR 2.99.3 (2020-09-21)
- sapply calls changed for vapply
- Bioconductor installation instructions included
- MIT license removed
- LazyData: TRUE removed
- Excessive print statements removed from vignettes
- sessionInfo() added to end of vignettes
- Created inst/script directoy to describe inst/extdata source and creation #TODO falta rellenar el archivo
- Commented out code removed
AlpsNMR 2.99.2 (2020-08-26)
- AlpsNMR.Rproj removed from git repository
- Reduced demo dataset to avoid package size > 5 MB
- Modified introduction to alpsnmr vignette and some tests to work with reduced demo dataset
AlpsNMR 2.99.1 (2020-08-25)
- AlpsNMR.Rproj added to gitignore
- Modified examples to avoid create files in main package folder
AlpsNMR 2.99.0 (2020-08-24)
- Added bootstrap and permutation method and some plots related to it
- Minor modifications for bioconductor submision
AlpsNMR 2.5.9002 (2020-05-25)
- Changes to pass BiocCheck
- Added permutation test and permutation test plot to
nmr_data_analysis
AlpsNMR 2.3.3.9002
- NIHS_specific removed
- Tests coverage up to 30%
- Update of
save_profiling_plots - Add tutorial
- Remotes installation
- nmr_diagnose is deprecated. Since nmr_diagnose was only used for getting extra normalization information, it was been replaced with
nmr_normalize_extra_infothat offers a less confusing name.
AlpsNMR 2.3.3.9001
- Add
nmr_identify_regions_cellfunction - Add documentation of
HMDB_cell - Vignettes updated
- New functions to apply multilevel statistics
- Update of README file
AlpsNMR 2.3.3
- Change of
nmr_identify_regions_bloodfunction - Add
nmr_identify_regions_urinefunction - Add documentation of
HMDB_urine - Add
computes_peak_width_ppmfunction fornmr_integrate_peak_positions - New
get_integration_with_metadata - Vignettes updated
- New functions to apply machine learning to proccessed datasets
AlpsNMR 2.3.2
- Inclusion of baseline removal using assymetric least squares
- Change the baselineThresh to NULL so it is autodetected
- Vignettes updated including baseline removal
- Bug correction in nmr_baseline_threshold
- Elimination of package vignettes (there is an error to be solved there)
- New
nmr_identify_regionsfunction - Add documentation of
HMDB_blood - New
files_to_rDolphinfunction