Copyright (c) 2016-2026 Dr. Charles Le Losq
email: lelosq@ipgp.fr
Licence MIT: see LICENCE.md
- fix rubberband_baseline call in baseline() and add a test
- compat: lower version for CondaPkg
- auto_lambda_whittaker() => selects lambda value for Whittaker smoothing using L-curve method (grid search).
- smooth() => now allow automatic selection of lambda for whittaker smoothing (experimental).
- despiking() => was very slow for spectra with lots of points using gcvspline. Now we use the "flat" smoothing method with automatic window selection (twice the size of the number of neighboor points for despiking).
- rubberband_baseline() => new code, pure Julia, no Python dependencies.
- Tests have been updated to include auto_lambda_whittaker()
- pull request #37: Fix the use of ## and # in the documentation examples (thanks @garrekstemo!)
- Fix the documentation construction, as well as a few docstrings
1.0.0 was re-written in depth, with large changes in the API. We thus skip to 2.0.0 to indicate this.
- baseline() was a wrapper of the rampy.baseline function. This created problems. This is now using only Julia code.
- smooth() entirely re-written using Julia deps and code (leveraging in particular DSP.jl and SavitskyGolay.jl)
- The API of nearly all functions was improved, to allow various forms of inputs (multiple dispatch).
- docstrings and docs revised in depth. Docs are generated by Documenter.jl, examples by Literate.jl.
- gaussian(), lorentzian(), pseudovoigt(): peak shapes
- fit_peaks() : fit a signal with a sum of peaks.
- FitContext : struct for the context of a fit
- FitResult : struct for the results of a fit
- prepare_context() : type to prepares the context of a fit
- print_params() : print parameters after a fit
- plot_fit() : plot parameters after a fit
- get_peak_results() : transform a vector of parameters in to a vector of Named Tuples describing each peak parameters
- fit_qNewton() : quasi-Newton algorithm for the fit
- fit_Optim() : IPNewton fit with Optim.jl
- bootstrap() : performs a bootstrapping analysis to get uncertainty estimates on peak parameters.
- create_peaks(): generate peaks.
- find_peaks(): detects peaks.
- area_peaks(): measure peak areas, replace bandarea().
- correct_xshift(): returns the signal(s) corrected from a given linear
shift. - baseline functions in Julia: arPLS_baseline, drPLS_baseline, als_baseline, rubberband_baseline.
- extract_signal(): replace get_portion_interest().
- invcm_to_nm(), nm_to_invcm(): allow conversion of the X axis from nm to inverse cm, or the opposite.
- pearson7(): API changed to match that of gaussian(), lorentzian(), pseudovoigt()
- bandarea(): replaced by area_peaks(). Moved to src/legacy_code.jl
- xshift_correction(): replaced by correct_xshift(). moved to src/legacy_code.jl
- xshift_inversion(): no need. moved to src/legacy_code.jl
- pseudovoigts(), gaussiennes(), lorentziennes() API do not really make sense now that we have create_peaks, so those are removed. moved to src/legacy_code.jl. Use create_peaks().
- bootperf(): removed as it is not compatible with the new API and dependencies. A better function will be added in an upcoming version. Moved to src/legacy_code.jl
- Spectra is pretty stable now, switching to version 1.0
- solves a problem with deps/build.log
- add functions normalise, despiking, centroid
-
requires PyCall v0.19 or higher
-
calls to Python modules now follow the new PyCall API
-
mlregressor now calls the Python mlregressor class from the rampy library; see Jupyter notebook example.
-
addition of mlexplorer that calls the rampy.mlexplorer Python function; see Jupyter notebook example.
-
various doc improvements
Breaking change:
-
Requires Julia 1.0 or above.
-
drop of multiple functions that probably were not useful to people: rameau (see the rampy Python package for this function), all functions in diffusions.jl, as well as in ctxremoval.jl
-
smooth() and baseline() are wrapper to the functions provided by rampy in Python. This is not a problem as speed is not the criterion when using such functions. Julia's speed will be helful at a latter stage, i.e. during peak fitting for instance.
Modifications:
-
NMF calculations in ctxremoval use sklearn, not the NMF julia package (not working yet in 0.7-1.0)
-
use of Polynomials.jl for the polynomial baseline fit.
Additions:
-
flipsp() allows to flip an array of decreasing values (e.g. IR spectra) in one line.
-
resample() allows to resample a x-y signal along a new x_new axis in one line.
-
standardizatin in the baseline() function is now written in pure Julia (avoid annoying messages from scikit-learn);
-
addition of the arPLS algorithm from Baek et al. (2015) to automatic fit the baseline;
-
addition of the whittaker smoother to fit the baseline;
-
addition of the ElasticNet and Lasso algorithms in the ml_regressor function.
- Addition of the asymmetric least square ALS algorithm for baseline fitting from Eilers and Boelens, 2005, Baseline Correction with Asymmetric Least Squares. Updates of examples and tests accordingly.
-
Wrapping of the GCVSPL.f library is dropped, we now call gcvspline, the Python package that wraps GCVSPL.f. This now should solve any trouble with Windows users! No change of API, except the drop of the gcvspl_julia and splder_julia functions. This should be transparent for users.
-
smooth function added, see doc; smoothing with gcvspline is provided.
-
Numerous tests added.
-
Various examples added.
-
Spectra works with Julia v0.6: test on Travis OK.
-
Critical change in peakhw that was returning the full width of the peaks instead of the half-width. This is now corrected. Name of peakhw is changed in peakmeas. This also outputs the peak intensity and centroid.
-
Merged pull request #6 from staticfloat/updated_ci_url
-
Various slight corrections in the code
-
Documentation is now generated using Documenter.jl
Corrections:
-
In the documentation of the rameau function, the prediction coefficient was badly indicated. This is an array containing the coefficient and its error, not a single float value.
-
/deps/build.jl was badly written. This is now corrected.
Critical changes in requirements:
-
Compat removed
-
Julia >= 0.5 (dropping 0.4.x)
Additions:
-
mmap_switch option in rameau added to overpass the problem of memory mapping error when calling readcsv/readdlm in virtual environments
-
roi_hf_external is a new option that allows to setup where the baseline is fitted when using the "External" calibration methods
-
scaler option in mlregressor allows to choose between two ways of standardizing the data for machine learning
Corrections:
-
A few corrections for better support of Julia versions >= 0.5
-
A few corrections and documentation improvements
Additions:
- Addition of the double baseline feature in Rameau in the experimental mode
Corrections:
-
Corrections for removing the warning messages going with Julia 0.5.0
-
Use of Compat and Compat.String to avoid warning in Julia 0.4
Corrections:
- Corrections for removing the warning messages going with Julia 0.5.0
Additions:
-
A Ctxremoval function for removing crystal signals from Raman spectra of glasses is added;
-
A mlregressor function adding functionalities of SciKit Learn into Spectra.jl for using machine learning in the treatment of spectra has been added.
Improvements:
-
Improved Baseline function. IMPORTANT NOTE: the gcvspline and Dspline smoothing coefficients in your software will need to be revised!
-
Improved RamEau function with improved internal calibration and critical corrections for the external calibration protocol.
Corrections:
- RamEau external calibration was not converting the water contents from mol/L to wt%. This is now corrected.