Spectra.jl version 2.0.1 is just out!
Spectra.jl is a package aimed at helping spectroscopic (Raman, Infrared, Nuclear Magnetic Resonance, XAS…) data treatment under Julia. The aim is to provide a simplest way to perform actions like smoothing, baseline fitting and removal, or peak fitting for instance.
v2.0 is a major re-write of the version 1.0, which was honestly not in great shape and needed a full revision. This is why we have a new major release.
Please check it out, I hope you will enjoy it!
Improvements
- baseline() was a wrapper of the Python 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.
Additions
- 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.
Modifications
- pearson7(): API changed to match that of gaussian(), lorentzian(), pseudovoigt()
Removed functions
- 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