[ANN] Spectra.jl: new major release!

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
14 Likes