Build Status

The following table collects information about free and open source software (FOSS) for spectroscopy. All information is taken from the respective websites and/or repositories. Some projects have been described in publications. If so, a link is provided, but the document may be behind a paywall.

Unless otherwise noted, the software mentioned here:

Stanstrup et al. have published a comprehensive paper describing the R packages suitable for use in metabolomics, which partially overlaps with the information here. The authors have also created a dynamic document with the same information and more. In addition, awesome-spectra is a page somewhat in the spirit of the work here, but apparently depends on authors to add their own material, and is missing some key entries (e.g. no NMR packages).

The CRAN Task View for Chemometrics & Computational Physics includes some R packages listed here as well as related software.

How Does One Choose a Package?

The projects listed here have been lightly vetted. If a project looks incomplete, or I can’t tell what it does, it’s not included! With that in mind, there are still many packages to consider. As a general guide, the excellent checklist provided by Lortie et al. is included here for your consideration.

Lortie Table 1


Name Description Lang Focus Status
ANATOLIA (pub) NMR lineshape analysis C++ NMR (Bruker) 2019-10-23
apogee (pub) Tools for working with APOGEE data Python IR 2020-08-10
BaMORC (pub) Automated 13C assignments in proteins R NMR (13C) 2019-01-02
baseline Baseline correction R Any 2020-09-12
BATMAN (pub) Estimation of metabolite concentrations from 1H NMR R NMR (1D)
bfit Visualize NMR data Python NMR (1D) 2020-10-14
BICePs (pub) Bayesian inference of conformational populations from NMR data Python NMR 2020-05-21
bionmr-utils Biological NMR utilities Python NMR 2019-11-08
blochsimu Simulation of Bloch equations Python NMR 2015-04-27
BMRBr Interface to BMRB database R Data sharing 2019-03-08
brukeropusreader Read Bruker OPUS files Python Data Sharing (IR) 2020-06-23
CARA Biomolecular NMR peak assignment C++, Qt NMR 2020-09-18
ChemEx Analysis of chemical exchange by NMR Python NMR 2020-06-12
ChemoSpec EDA of 1D spectra R Any 2020-08-28
ChemoSpec2D EDA of 2D NMR R NMR (2D) 2020-08-31
CheShift (pub) Prediction 13C shifts in proteins Python NMR (13C) 2017-06-14
ChiantiPy Calculate radiative properties of astrophysical plasmas Python UV-Vis-IR 2020-10-06
COMPASS (pub) Protein backbone assignments from triple-resonance peak lists Qt NMR 2020-09-14
corr2D (pub) 2D correlation spectroscopy R IR 2019-07-29
CRIkit2 (pub) Hyperspectral imaging toolkit Python Raman 2020-09-10
crispy Calculate & plot core-level spectra Python XAS 2020-10-14
curvit Create light curves from UV imaging telescope data Python UV 2020-10-14
DeepSpectroscopy Spectroscopy with deep learning Python Any 2018-05-20
drawnmr Visualize NMR data Python NMR 2017-12-02
es Elementary supernova spectrum synthesis Python UV-Vis 2019-03-25
FAM-N (pub) Optimize composite pulses for MQMAS Python NMR (SS) 2019-07-15
Farseer-NMR (pub) Analysis & plotting of biological NMR peak lists Python NMR (2D) 2020-01-31
geoSpectral Workflow for data sets with space/time/spectral dimensions R Mid-IR 2020-02-21
hyperChemoBridge Interconversion of hyperSpec & ChemoSpec formats R Data sharing 2020-09-01
hyperSpec Hyperspectral data sets (spectra accompanied by spatial, time or concentration information) R Any 2020-05-29
icoshift 1D NMR alignment via ICOSHIFT algorithm Python NMR (1D) 2020-09-08
InSituAnalyze (pub) Spectral imaging Python IR 2020-01-24
iSTATS Shiny app for STOCSY of 1D NMR R NMR (1D) 2020-07-01
jcamp Read JCAMP-DX files Python Data sharing 2020-09-13
JSpecView (pub) Read & view spectra in JCAMP-DX format Java Data Sharing 2006-03-01
LiveView Real-time visualization tools for imaging spectroscopy C++ UV-VIS-IR 2020-10-08
MicroRaman (pub) Process microbial Raman spectra R Raman 2020-07-22
mrsimulator Toolbox for simulating NMR spectra Python NMR 2020-10-14
muma EDA of 1D NMR R NMR (1D) 2012-12-03
mwTab (pub) I/O mwTab files Python Data sharing (NMR) 2020-02-19
NIRStat (pub) NIR time-series R Time series (Near-IR) 2020-05-27
nmrfit qNMR through least-squares fitting Python NMR 2020-01-29
NMRFx Processing, visualization & analysis of NMR data Java NMR 2020-10-13
nmrGlue (pub) NMR data processing, analysis, visualization & conversion Python NMR (nD) 2020-09-30
nmrML (pub) Markup language for sharing NMR data XML Data sharing (NMR) 2020-10-13
nmrml2isa Convert nmrML files to ISA-TAB Python Data sharing (NMR) 2018-08-02
nmrPipe (pub) NMR data processing, analysis, visualization & conversion C-shell NMR (nD) 2017-12-12
NMRpro Process & visualize NMR data Python NMR 2016-10-17
NMRProcFlow (pub) Interactive processing of 1D NMR spectra for metabolomics R NMR (1D)
nmrsim Solution NMR simulation Python NMR (1D) 2020-09-13
nmrstarlib (pub) I/O NMR-STAR files to JSON used by BMRB Python Data Sharing (NMR) 2018-11-08
octavvs Vibrational spectroscopy Python IR, Raman 2020-03-27
OpenVibSpec Vibrational spectroscopy Python IR, Raman 2020-08-27
OpenVnmrJ NMR data acquisition & processing (Varian instruments) C NMR (1D) 2015-12-19
paramagpy (pub) Calculation of protein NMR paramagnetic effects Python NMR 2020-01-28
pavo Perceptual analysis, visualization & organization of spectral color data (incl images) R UV-Vis 2020-09-15
Peakaboo XRF analysis Java XRF 2020-10-13
Peakipy Deconvolution of 2D NMR peaks Python NMR (2D) 2020-07-26
photobiology (pub) Photobiology workflow tools R UV-Vis 2020-10-04
PINT (pub) NMR line shape fitting & analysis Qt NMR
plantspec (pub) Spectral analysis of plant stoichiometry R NIR 2019-03-20
PRFFECT (pub) Pre-processing & random forest feature extraction R IR 2017-07-14
prospectr Vis & NIR R Vis-Near-IR 2020-03-17
PyBMRB Visualizations based on BMRB data Python NMR (1D) 2020-03-26
pycroscopy Imaging microscopy Python Raman 2020-09-01
pydnmr Simulation dynamic NMR Python NMR (1D) 2020-06-13
PyNMR-STAR I/O NMR-STAR files from BMRB Python Data Sharing (NMR) 2020-10-08
PyRoShift (pub) Compute rotamer populations from 13C NMR shifts Python NMR (13C) 2019-11-03
pySpecData Process multidimensional data Python NMR, ESR 2020-10-14
pyspectra General purpose? Python Any 2019-08-28
pyUSID (pub) Universal spectroscopy & imaging data format Python Data Sharing 2020-10-12
quasar General purpose running on Orange Python Any 2020-10-14
RADIS Compute IR spectra Python IR 2020-09-06
RamPy Processing Raman, IR, XAS spectra Python Raman 2020-09-28
RBMRB Interface to BMRB database R Data sharing 2018-08-09
rCSRI Tools for confocal Raman imaging spectroscopy R Raman 2019-11-19
rDolphin 1D NMR profiling for metabolomics R NMR (1D) 2020-10-05
readJDX Import JCAMP-DX files to ChemoSpec/Spectra format R Data sharing 2020-07-21
resemble Non-linear modeling of Vis & IR spectra R Vis-IR 2020-10-12
rNMR (pub) Visualization of 1D and 2D NMR R NMR (nD) 2015-02-09
Rnmr1D (pub) 1D NMR processing for metabolomics R NMR (1D) 2020-10-02
sabarsi Workflow for processing surface enhanced Raman spectra (SERS) R Raman 2019-08-08
serrsBayes (pub) Modelling of surface enhanced Raman spectra (SERS) R Raman 2020-05-28
simplerspec Spectral processing & modeling R Near-IR, Mid-IR 2020-07-26
speaq (pub) NMR data processing R NMR (nD) 2020-02-01
specreduce Reduce & calibrate spectroscopic data Python UV-Vis-IR 2020-05-13
spectacles Storing, manipulation & analysis of spectroscopic data sets R Any 2020-09-09
spectra Library for UV, IR, 1D & 2D NMR Python Any 2020-09-09
Spectra Treatment of spectra (Raman, infrared, XAS, NMR) data Julia Any 2020-10-09
spectra-formatter Tool to write out NMR data for publication summaries html NMR (1D) 2019-02-11
spectralAnalysis EDA of 1D spectra R Any 2018-06-12
SpectroscoPyx Atomic/Plasma spectroscopy Python UV-Vis 2020-01-23
specutils Toolbox for astronomical spectroscopic data Python UV-Vis 2020-10-14
SpecViz Interactive analysis of 1D astronomical spectra Python UV-Vis 2020-10-12
SPIKE Processing 1D/2D spectroscopic data Python Any 2020-05-19
ssNAKE (pub) SS NMR processing & fitting Python NMR (SS) 2020-06-12
tameNMR 1H NMR metabolomics R NMR (1D) 2020-08-25
TIMP (pub) Time-resolved spectroscopy R Time series 2019-03-11
Vespucci (pub) Tools for spectroscopic data analysis & imaging C++ Raman 2020-02-18
web_geochemistry Shiny app for visualizing XRF & NAA geochemistry concentrations R XRF 2019-04-11
wobble (pub) Analysis of stellar spectra time series Python Time series 2020-10-08
WrightTools (pub) Toolbox for coherent multidimensional spectroscopy Python Raman 2020-10-14
XL-e (pub) Simulate photoelectron spectra driven by laser pulses Fortran PES 2015-10-30
xrf_filetools XRF file tools Go XRF 2018-05-03
xrf_parser Parse files from handheld XRF spectrometers Python XRF 2019-07-22
xyza2pipe File conversion for NMR data formats C Data sharing (NMR nD) 2019-03-02

Additions or corrections? Please file an issue with the necessary information or submit a pull request at the repo.

Status Column:

The status column in the table gives the date of the most recent:

  • commit to a repository,
  • activity on an issue filed in a repository,
  • web site update, or
  • submission to an archival network such as CRAN or PyPI

as a proxy for regular maintenance. Keep in mind that some software is fairly mature and thus an older status date does not necessarily mean the software is not maintained. Follow the links to the websites for more details.

The status date is found by automatic checking of sites with valid links. Commits and issues are only checked for Github sites, via the Github API. Web site updates are found using a simple search for common date formats and may be inaccurate. Keep in mind the most recent activity may be on any branch in a repo, and may be newer than any official releases.

Abbreviations & Terms:
  • CRAN: Comprehensive R Archival Network
  • EDA: Exploratory data analysis (unsupervised chemometrics)
  • Focus: The type of spectroscopy the software is focused on. Keep in mind that software designed with a given spectroscopy in mind may still work with other types of spectroscopic data.
  • Language: Most software is built on several languages. In the table, “lang” refers to the primary language used to create the software.
  • PyPI: Python Package Index
  • Python: Multipurpose programming language details
  • R: A software environment for statistical computing and graphics details, platforms