Analyze, Process, Identify, and Share Raman and (FT)IR Spectra
Overview
Raman and (FT)IR spectral analysis tool for plastic particles and other environmental samples (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 online at https://www.openanalysis.org/OpenSpecyV2/.
- Fixed cross-platform checks for the 2.0 release: relative normalization now returns zeros for finite constant spectra instead of
NaN, keeping defaultbuild_lib()outputs valid when alternate BLAS implementations produce an exact polynomial-baseline fit; ENVI companion-image paths are canonicalized before being stored; and OPUS fixture tests accept harmless parser warnings while retaining strict object, dimension, range, and metadata assertions. Hamming similarity retains its established equal-frequency-bin behavior.
From NEWS.md in the release
Install
Health
ERRORtestsr-oldrel-windows-x86_64
Running 'testthat.R' [206s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
> library(testthat)
> library(OpenSpecy)
>
> library(data.table)
> setDTthreads(2)
>
> test_check("OpenSpecy")
Particle analysis [file-backed source]: read into memory (1 regions; 16 spectra; 4 bands)
Particle analysis [Region1]: memory materialization (region 1/1; 16 spectra)
Particle analysis [Region1]: memory materialization complete (elapsed 0.0 s)
Particle analysis [Region1]: read (sample 1 of 1)
Particle analysis [Region1]: signal/noise
Particle analysis [Region1]: particle detection and collapse
Particle analysis [Region1]: library matching
Particle analysis [Region1]: outputs
Particle analysis [Region1]: complete
Particle analysis [file-backed source]: read into memory (1 regions; 16 spectra; 4 bands)
Particle analysis [Region1]: memory materialization (region 1/1; 16 spectra)
Particle analysis [Region1]: memory materialization complete (elapsed 0
...[truncated]...
l (1):
'test-shinylive_wasm.R:730:5'
• Repository-only workflow files are not in the package tarball (2):
'test-shinylive_wasm.R:635:5', 'test-shinylive_wasm.R:864:5'
• Repository-only workspace path contract is not in the package tarball (1):
'test-shinylive_wasm.R:845:5'
• repository-only reference workflow tables are not installed (4):
'test-build_lib.R:1679:3', 'test-build_lib.R:1865:3',
'test-build_lib.R:3151:3', 'test-build_lib.R:3188:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-run_app.R:1998:3'): bundled app applies spike correction through the registered API ──
Error in `file(con, "r")`: cannot open the connection
Backtrace:
▆
1. ├─base::grepl(...) at test-run_app.R:1998:3
2. │ └─base::is.factor(x)
3. └─base::readLines(namespace_path, warn = FALSE)
4. └─base::file(con, "r")
[ FAIL 1 | WARN 31 | SKIP 27 | PASS 3748 ]
Error:
! Test failures.
Execution halted- ERROR12 OK, 1 ERRORNow
- ERROR11 OK, 1 NOTE, 1 ERROR2026-09-13
- NOTE11 OK, 2 NOTE2026-06-09
- ERROR11 OK, 1 NOTE, 1 ERROR2026-06-08
- NOTE12 OK, 2 NOTE2026-03-10
Documentation
- Help pages
- 51 (1 internal)includes a package overview page
- Examples that run
- 93%39 run in a plain check (1 of them under a condition) · 3 never run
- Exported functions with examples
- 85%
- Documented parameters
- 78%
- Return-value docs
- 100%
- Help pages citing references
- 18%
Downloads
Repository
- PRs merged (all time)
- 91%
- Median days to close, 50 most recently updated closed issues
- 36
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Forks over time
Releases over time
Issues over time
PRs over time
Commits over time
12 development-tooling and community-health practices detected across 5 families in the upstream repository
Checks run against github.com/wincowgerdev/openspecy-package on 2026-10-22.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
Funding links: GitHub Sponsors
The repository owner accepts GitHub Sponsors
GitHub Pages site last deployed 2026-10-21 · The repository has a site deploy workflow
Show all practicesHide 1 practice
This repository shows signs of AI coding tools.
- Codexfirst seen 2025-07-10Pull request it wrote: opened by a project member
- Gemini CLIfirst seen 2026-05-21Config: a file or ignore line, not recorded which
- Claude Codefirst seen 2026-08-12Seen in the repository: .claude, .claude/skills, CLAUDE.mdNamed in .Rbuildignore: .claude, CLAUDE.mdNamed in .gitignore: .claude, .claude/skills
Dependencies
Installing OpenSpecy adds 102 packages (58 with compiled code, 84 MB of source tarballs). Heaviest: stringi 11 MB, ggplot2 6.0 MB, data.table 5.7 MB.
Code & Tests
Datasets
People & History
Show 16 more contributorsHide 16 contributors
Pick two releases to compare their code metrics.
- 2.0.3Latest2026-10-07 · current release · diff ↗ ·
listed once in CRAN's queue
Seen in one reading of CRAN's incoming queue, at 2026-10-07 06:45 UTC, so it stayed less than the time between readings. - unarchivedReturned to CRAN2026-10-06
- 2.0.12026-10-05 · diff ↗ ·
added 52 exports
Specs, add_visual_image, area_under_band, as_Specs, assess_lib, assess_spec, automate_particle_analysis, batch_detection_limit, build_lib, build_model_lib, calculate_emissivity, check_Specs, correct_spike, crowd_lookup, decode_specs_hilbert, decompress_spec, dedupe_spec, detect_image_origin, encode_specs_hilbert, estimate_temperature, fit_specs_pca, is_Specs, join_lib_metadata, join_material_hierarchy, lib_clean_metadata, lib_clean_name, lib_metadata_name_lookup, make_lib_lookup_template, material_percentage_uncertainty, minimum_detectable_amount and 22 more - archivedRemoved from CRAN2026-10-04issues were not corrected in time
- RR 4.6.0 released · 2026-04-24
- 1.5.32025-04-26 · diff ↗
- RR 4.5.0 released · 2025-04-11
- 1.4.0
- 1.2.0
- 1.1.0
- RR 4.4.0 released · 2024-04-24
- 1.0.8
- 1.0.72024-03-12 · diff ↗ ·
added 5 exports
calc_window_points, fill_spec, manage_na, os_similarity, split_spec - 1.0.62023-11-26 · diff ↗
- 1.0.52023-10-31 · diff ↗
- 1.0.42023-10-02 · diff ↗
Show 12 earlier eventsHide 12 earlier events
- 1.0.32023-09-14 · diff ↗
- 1.0.22023-09-05 · diff ↗ ·
removed 3 exports
find_spec, read_0, subtr_bgadded 37 exports
OpenSpecy, adj_res, ai_classify, as_OpenSpecy, as_hyperSpec, c_spec, check_OpenSpecy, collapse_spec, conform_res, conform_spec, cor_spec, def_features, filter_spec, flatten_range, gen_grid, get_metadata, heatmap_spec, ident_spec, interactive_plot, is_OpenSpecy, is_empty_vector, max_cor_named, mean_replace, plotly_spec, process_spec, read_any, read_envi, read_opus, read_opus_raw, read_spec and 7 more - RR 4.3.0 released · 2023-04-21
- 0.9.52022-07-06 · diff ↗
- RR 4.2.0 released · 2022-04-22
- 0.9.32021-10-13 · diff ↗
- 0.9.22021-05-20 · diff ↗
- RR 4.1.0 released · 2021-05-18
- 0.9.12021-04-11 · diff ↗
- 0.9.02021-04-09 · diff ↗
- 0.8.22021-03-31
- RR 4.0.0 released · 2020-04-24
Package metadata
- First published
- 2021-03-31
- Total releases
- 19 / 5 yrs
- License
- CC BY 4.0
- Minimum R
- ≥ 4.3.0
- Bundled data
- 249 KB / 2 files
- Download size
- 1.9 MB
Cite
Cite this package
Run in R for the authors' entry:
citation("OpenSpecy")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.1021/acs.analchem.5c00962.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.