One stack. Five vendors. Open Rust.
OpenMassSpec is the open-source Rust stack for mass spectrometry raw-file access. Read Thermo, Bruker, Waters, Agilent, and SCIEX acquisitions through a single API, convert them to PSI-MS mzML 1.1.0 with the canonical writer, and stream them straight into Arrow for downstream analytics. No vendor SDKs, no Windows-only DLLs, no binary blobs in your release pipeline.
| Layer | Crate | What it does |
|---|---|---|
| Umbrella | openmassspec-io |
Feature-gated re-exports + detect_format + convert_to_mzml |
| CLI | openmassspec-io-cli |
vendor2mzml one-shot binary |
| Python | openmassspec |
Metapackage exposing the converter from Python |
| Shared core | openmassspec-core | SpectrumRecord, Arrow batch, mzML writer |
Thermo .raw |
opentfraw | Finnigan reader |
Bruker .d/ |
opentimstdf | timsTOF TDF reader |
Waters .raw/ |
openwraw | MassLynx bundle reader |
Agilent .d/ |
openaraw | MassHunter reader |
SCIEX .wiff |
opensxraw | legacy .wiff/.wiff.scan reader |
Current pinned stack lives in STACK.md.
Pre-built vendor2mzml binaries land on the GitHub
Releases page.
Or build from source:
cargo install openmassspec-io-cli --features all[dependencies]
openmassspec-io = { version = "1.0", features = ["all"] }Vendor features are independent (thermo, bruker, waters,
agilent, sciex) so you only compile what you ship.
pip install openmassspecvendor2mzml /data/sample.raw /tmp/sample.mzML --indexedvendor2mzml sniffs the format from the path (or directory layout for
Bruker .d/ and Waters .raw/ bundles), routes through the matching
vendor crate, and writes indexed PSI-MS mzML 1.1.0.
use openmassspec_io::{detect_format, convert_to_mzml};
let fmt = detect_format("sample.raw")?;
println!("detected: {fmt:?}");
convert_to_mzml("sample.raw", "sample.mzML", /* indexed */ true)?;import openmassspec
openmassspec.to_mzml("sample.raw", "sample.mzML", indexed=True)Full reference, conversion semantics, and the per-vendor parser notes live at sigilweaver.app/openmassspec/docs.
The source for that site is in docs/ (Docusaurus). See
docs/README.md for the build commands.
Bug reports and PRs are welcome on any of the five repos. See SECURITY.md for the security policy.
This umbrella ships releases via scripts/release-stack.sh
which gates on the downstream SpecLance
truth-test before tagging.
Apache-2.0. Each vendor crate carries its own header and upstream attribution; this repo only orchestrates them.