Skip to contents

OpenSpecy web app Loading application…

Open separately

Loading OpenSpecy

WebR is starting in your browser. You can keep exploring the documentation while it loads.

The browser app is built from the same bundled Shiny source as run_app(). Each hosted build includes the WebAssembly library image produced for the matching OpenSpecy commit and its pinned dependency closure. To keep the download practical, the browser app exposes the medoid and multinomial model libraries; the local app continues to support the full libraries.

Analyze, Process, Identify, and Share Raman and (FT)IR Spectra

Raman and (FT)IR spectral analysis tool for environmental samples with a special focus on microplastics (Cowger et al. 2025, doi: 10.1021/acs.analchem.5c00962). With read_any(), Open Specy provides a single function for reading individual, batch, or map spectral data files like .asp, .csv, .jdx, .spc, .spa, .0, and .zip. process_spec() simplifies processing spectra, including smoothing, baseline correction, range restriction and flattening, intensity conversions, wavenumber alignment, and min-max normalization. Spectra can be identified in batch using an onboard reference library using match_spec(). A bundled Shiny app is available via run_app() or directly on this website.

Community and help

Join the hundreds of researchers around the world who are part of the Open Specy community by analyzing, sharing, processing, and identifying Raman and infrared spectra. Open Specy is free and open source thanks to its community and partners.

Spectroscopy resources

Partner with us

Help us make open spectroscopy tools and data more useful and accessible.

Partners and contributors

We gratefully recognize the organizations and people whose financial or in-kind support has sustained Open Specy.

Monetary partners

  • Thriving ($10,000–$100,000): Moore Institute for Plastic Pollution Research; Helmholtz Information & Data Science Academy; National Renewable Energy Laboratory; McPZ Foundation.
  • Maintaining ($1,000–$10,000): University of California, Riverside; National Science Foundation; Alfred Wegener Institute; Hawai’i Pacific University; National Institute of Standards and Technology; University of Toronto; University of Koblenz-Landau; Thermo Fisher Scientific.
  • Supporting ($100–$1,000): Jennifer Gadd.
  • Saving (under $100): Anne Jefferson; Heather Szafranski; Gwendolyn Lattin; Collin Weber; Gregory Gearhart; Anika Ballent; Shelly Moore; Susanne Brander (Oregon State University); Jeremy Conkle (Texas A&M University–Corpus Christi).

In-kind partners

  • Thriving ($10,000–$100,000): Win Cowger; Zacharias Steinmetz.
  • Maintaining ($1,000–$10,000): Garth Covernton; Jamie Leonard; Shelly Moore; Rachel Kozloski; Katherine Lasdin; Aleksandra Karapetrova; Laura Markley; Walter Yu; Walter Waldman; Vesna Teofilovic; Monica Arienzo; Mary Fey Long Norris; Cristiane Vidal; Scott Coffin; Charles Moore; Aline Carvalho; Shreyas Patankar; Andrea Faltynkova; Sebastian Primpke; Andrew Gray; Chelsea Rochman; Orestis Herodotu; Hannah De Frond; Keenan Munno; Hannah Hapich; Jennifer Lynch.
  • Supporting ($100–$1,000): Alexandre Dehaut; Gabriel Erni Cassola.

Contract services

Our experienced spectroscopists are available for contract work including:

  • adding new OpenSpecy features;
  • creating spectroscopy software;
  • microplastic sample analysis;
  • spectral identification;
  • study design; and
  • related custom spectroscopy projects.

Email wincowger@gmail.com to discuss a project.

Installation

OpenSpecy is available from CRAN and GitHub.

Install from CRAN (stable version)

You can install the latest release of OpenSpecy from CRAN with:

install.packages("OpenSpecy")

Install from GitHub (development version)

To install the development version of this package, paste the following code into your R console (requires devtools):

if (!require(devtools)) install.packages("devtools")
devtools::install_github("wincowgerDEV/OpenSpecy-package")

Getting started

Simple workflow for single spectral identification

See package vignette for a detailed standard operating procedure.

# Fetch current spectral library from https://osf.io/x7dpz/
get_lib("derivative")

# Load library into global environment
spec_lib <- load_lib("derivative")

# Read sample spectrum
raman_hdpe <- read_extdata("raman_hdpe.csv") |> 
  read_any()

# Look at the spectrum
plotly_spec(raman_hdpe)

# Process the spectra and conform it to the library format
raman_proc <- raman_hdpe |>
  process_spec(conform_spec_args = list(range = spec_lib$wavenumbers), 
               smooth_intens = T, make_rel = T)

# Compare raw and processed spectra
plotly_spec(raman_hdpe, raman_proc)

top_matches <- match_spec(raman_proc, library = spec_lib, na.rm = T, top_n = 5,
                          add_library_metadata = "sample_name",
                          add_object_metadata = "col_id")

# Print the top 5 results with relevant metadata
top_matches[, c("object_id", "library_id", "match_val", "SpectrumType",
                "SpectrumIdentity")]

# Get all metadata for the matches
get_metadata(spec_lib, logic = top_matches$library_id)

Compressed Specs workflow

as_Specs() can compress map or library spectra for fast approximate matching. The default workflow fits PCA and then Hilbert-encodes the PCA scores into exact high/low 64-bit code rows.

model <- fit_specs_pca(spec_lib, n_components = 16)
library_specs <- as_Specs(spec_lib, model)
query_specs <- as_Specs(raman_proc, model,
                        limits = attr(library_specs, "hilbert_model"))

match_spec(query_specs, library_specs, top_n = 5)
decompress_spec(query_specs, index = 1)

Open Specy on Python

Kris Heath created a Open Specy python package! https://pypi.org/project/openspi/

Citations

Cowger W, Steinmetz Z, Gray A, Munno K, Lynch J, Hapich H, Primpke S, De Frond H, Rochman C, Herodotou O (2021). “Microplastic Spectral Classification Needs an Open Source Community: Open Specy to the Rescue!” Analytical Chemistry, 93(21), 7543–7548. doi: 10.1021/acs.analchem.1c00123.

Cowger W, Steinmetz Z, Leong N, Faltynkova A, Sherrod H (2024). “OpenSpecy: Analyze, Process, Identify, and Share Raman and (FT)IR Spectra.” R package, 1.0.8. https://github.com/wincowgerDEV/OpenSpecy-package.