#mass-spectrometry #spectra #format #tolerance #mgf #mzml

bin+lib mzdata

A library to read mass spectrometry data formats and a data model for mass spectra

50 breaking releases

new 0.52.0 Apr 8, 2025
0.51.0 Mar 27, 2025
0.50.0 Mar 20, 2025
0.40.0 Dec 15, 2024
0.3.0 Jul 23, 2021

#431 in Parser implementations

Download history 71/week @ 2024-12-21 193/week @ 2024-12-28 161/week @ 2025-01-04 220/week @ 2025-01-11 99/week @ 2025-01-18 113/week @ 2025-01-25 630/week @ 2025-02-01 441/week @ 2025-02-08 686/week @ 2025-02-15 214/week @ 2025-02-22 138/week @ 2025-03-01 266/week @ 2025-03-08 305/week @ 2025-03-15 216/week @ 2025-03-22 111/week @ 2025-03-29 339/week @ 2025-04-05

984 downloads per month
Used in 7 crates (6 directly)

Apache-2.0

1.5MB
37K SLoC

mzdata

Latest Version docs.rs

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::new(fs::File::open("./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

  1. mzML and indexedmzML
  2. MGF
  3. mzMLb
  4. Thermo RAW

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–38MB
~560K SLoC