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.
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.
R (36) or Python (53).| 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.
The status column in the table gives the date of the most recent:
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.