80 releases (breaking)
| 0.63.4 | Mar 31, 2026 |
|---|---|
| 0.63.3 | Dec 6, 2025 |
| 0.63.0 | Nov 22, 2025 |
| 0.56.0 | Jul 20, 2025 |
| 0.3.0 | Jul 23, 2021 |
#596 in Parser implementations
339 downloads per month
Used in 11 crates
(7 directly)
2MB
42K
SLoC
mzdata
A Rust library for reading mass spectrometry data file formats.
Quickstart
use std::fs;
use mzdata::prelude::*;
use mzpeaks::Tolerance;
use mzdata::MzMLReader;
use mzdata::spectrum::SignalContinuity;
fn main() {
let mut ms1_count = 0;
let mut msn_count = 0;
let reader = MzMLReader::open_path("./test/data/small.mzML").unwrap();
for spectrum in reader {
if spectrum.ms_level() == 1 {
ms1_count += 1;
} else {
msn_count += 1;
}
println!("Scan {} => BP {}", spectrum.id(), spectrum.peaks().base_peak().mz);
if spectrum.signal_continuity() == SignalContinuity::Centroid {
let peak_picked = spectrum.into_centroid().unwrap();
println!("Matches for 579.155: {:?}", peak_picked.peaks.all_peaks_for(579.155, Tolerance::Da(0.02)));
}
}
println!("MS1 Count: {}\nMSn Count: {}", ms1_count, msn_count);
assert_eq!(ms1_count, 14);
assert_eq!(msn_count, 34);
}
Supported Formats
mzMLandindexedmzMLMGFmzMLb- Thermo RAW
- Bruker TDF
imzML- PROXI
Disclaimer
This library was made in part to learn Rust, so it may not use the preferred idioms, patterns, or libraries. Any recommendations are welcome.
Dependencies
~5–36MB
~603K SLoC