koth-core 0.12.0

Pure-Rust, in-memory LC-MS feature detection of koth: hills, isotope features and averagine scoring (no file I/O, no native dependencies)
Documentation

koth-core

The in-memory LC–MS feature detection stages of koth: chromatographic hill detection, isotope-envelope feature assembly with charge assignment, and averagine isotope-pattern scoring.

koth-core reads and writes no files and has no native dependencies (no SQLite, no vendor readers, no Arrow/Parquet). Bring your own spectra from your own mzML, Thermo or Bruker reader. Its normal dependencies are rayon, serde, toml, log, thiserror, rand and rustc-hash. The koth-ms crate (the koth_ff and koth_align executables) adds the readers, writers and cross-run LFQ, and runs exactly these stages.

[dependencies]
koth-core = "0.11"
use koth_core::{run_pipeline_from_spectra, KothConfig, Peak, PipelineOptions, Spectrum};

let spectra: Vec<Spectrum> = (0..20)
    .map(|i| Spectrum {
        scan_index: i,
        retention_time: i as f64 * 0.05,
        peaks: vec![Peak { mz: 500.0, intensity: 1.0e5, ion_mobility: 0.0 }],
        ms_level: 1,
        isolation_window: None,
        faims_cv: None,
    })
    .collect();

// The configuration is the same struct, and the same TOML, as `koth_ff -c`.
let config = KothConfig::default();
let out = run_pipeline_from_spectra(spectra.into_iter(), &config, &PipelineOptions::default())?;
println!("{} hills, {} features", out.hills.len(), out.features.len());
# Ok::<(), koth_core::Error>(())

For large runs, run_pipeline_streaming_from_spectra with a PipelineSink hands over features one at a time instead of collecting them. The stages can also be called one by one: run_hills, run_features, run_scoring.

Documentation · Algorithm · Source and issues

Licensed under MIT.