diff --git a/crates/sage-cli/src/input.rs b/crates/sage-cli/src/input.rs index d6e5ae7..5062435 100644 --- a/crates/sage-cli/src/input.rs +++ b/crates/sage-cli/src/input.rs @@ -1,11 +1,10 @@ use anyhow::{ensure, Context}; use clap::ArgMatches; -use sage_cloudpath::CloudPath; +use sage_cloudpath::{tdf::BrukerSpectrumProcessor, CloudPath}; use sage_core::{ database::{Builder, Parameters}, lfq::LfqSettings, mass::Tolerance, - spectrum::BrukerSpectrumProcessor, tmt::Isobaric, }; use serde::{Deserialize, Serialize}; diff --git a/crates/sage-cli/src/main.rs b/crates/sage-cli/src/main.rs index 74526d1..c96a99d 100644 --- a/crates/sage-cli/src/main.rs +++ b/crates/sage-cli/src/main.rs @@ -218,7 +218,11 @@ impl Runner { path_lower.ends_with(ext) } }) { - sage_cloudpath::util::read_tdf(path, file_id, scorer.bruker_spectrum_processor) + sage_cloudpath::util::read_tdf( + path, + file_id, + self.parameters.bruker_spectrum_processor, + ) } else { sage_cloudpath::util::read_mzml(path, file_id, sn) }; @@ -268,7 +272,6 @@ impl Runner { report_psms: self.parameters.report_psms, wide_window: self.parameters.wide_window, annotate_matches: self.parameters.annotate_matches, - bruker_spectrum_processor: self.parameters.bruker_spectrum_processor, }; //Collect all results into a single container diff --git a/crates/sage-cli/tests/integration.rs b/crates/sage-cli/tests/integration.rs index ef86ccc..018337b 100644 --- a/crates/sage-cli/tests/integration.rs +++ b/crates/sage-cli/tests/integration.rs @@ -1,7 +1,7 @@ use sage_core::database::Builder; use sage_core::mass::Tolerance; use sage_core::scoring::Scorer; -use sage_core::spectrum::{BrukerSpectrumProcessor, SpectrumProcessor}; +use sage_core::spectrum::SpectrumProcessor; #[test] fn integration() -> anyhow::Result<()> { @@ -32,7 +32,6 @@ fn integration() -> anyhow::Result<()> { report_psms: 1, wide_window: false, annotate_matches: false, - bruker_spectrum_processor: BrukerSpectrumProcessor::default(), }; let psm = scorer.score(&processed); diff --git a/crates/sage-cloudpath/Cargo.toml b/crates/sage-cloudpath/Cargo.toml index a616c41..bd0a98c 100644 --- a/crates/sage-cloudpath/Cargo.toml +++ b/crates/sage-cloudpath/Cargo.toml @@ -23,7 +23,7 @@ log = "0.4.0" once_cell = "1.0" tokio = { version = "1.0", features = ["fs", "io-util", "rt", "macros"] } quick-xml = { version = "0.31.0", features = ["async-tokio"] } -timsrust = { version = "0.4.0"} +timsrust = { version = "0.4.1"} rayon = "1.5" reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false } regex = "1.6" diff --git a/crates/sage-cloudpath/src/tdf.rs b/crates/sage-cloudpath/src/tdf.rs index e7d9cb1..6a16e69 100644 --- a/crates/sage-cloudpath/src/tdf.rs +++ b/crates/sage-cloudpath/src/tdf.rs @@ -1,11 +1,10 @@ use rayon::prelude::*; use sage_core::{ mass::Tolerance, - spectrum::{ - BrukerSpectrumProcessor, FrameWindowSplittingStrategy, QuadWindowExpansionStrategy, - }, spectrum::{Precursor, RawSpectrum, Representation}, }; +use serde::{Deserialize, Serialize}; +use timsrust::readers::SpectrumReaderConfig; pub struct TdfReader; @@ -18,9 +17,7 @@ impl TdfReader { ) -> Result, timsrust::TimsRustError> { let spectrum_reader = timsrust::readers::SpectrumReader::build() .with_path(path_name.as_ref()) - .with_config(Self::parse_bruker_spectrum_config( - bruker_spectrum_processor, - )) + .with_config(bruker_spectrum_processor.spectrum_reader_config) .finalize()?; let spectra: Vec = (0..spectrum_reader.len()) .into_par_iter() @@ -69,67 +66,9 @@ impl TdfReader { precursor.inverse_ion_mobility = Option::from(dda_precursor.im as f32); precursor } +} - fn parse_bruker_spectrum_config( - config: BrukerSpectrumProcessor, - ) -> timsrust::readers::SpectrumReaderConfig { - let mut spectrum_processing_params = timsrust::readers::SpectrumProcessingParams::default(); - if let Some(smoothing_window) = config.smoothing_window { - spectrum_processing_params.smoothing_window = smoothing_window; - } - if let Some(centroiding_window) = config.centroiding_window { - spectrum_processing_params.centroiding_window = centroiding_window; - } - if let Some(calibration_tolerance) = config.calibration_tolerance { - spectrum_processing_params.calibration_tolerance = calibration_tolerance; - } - if let Some(calibrate) = config.calibrate { - spectrum_processing_params.calibrate = calibrate; - } - let frame_splitting_params: timsrust::readers::FrameWindowSplittingConfiguration; - if let Some(dia_strategy) = config.dia_strategy { - frame_splitting_params = match dia_strategy { - FrameWindowSplittingStrategy::Quadrupole(q) => { - timsrust::readers::FrameWindowSplittingConfiguration::Quadrupole(match q { - QuadWindowExpansionStrategy::None => { - timsrust::readers::QuadWindowExpansionStrategy::None - } - QuadWindowExpansionStrategy::Even(n) => { - timsrust::readers::QuadWindowExpansionStrategy::Even(n) - } - QuadWindowExpansionStrategy::UniformScan(x) => { - timsrust::readers::QuadWindowExpansionStrategy::UniformScan(x) - } - QuadWindowExpansionStrategy::UniformMobility(x) => { - timsrust::readers::QuadWindowExpansionStrategy::UniformMobility(x, None) - } - }) - } - FrameWindowSplittingStrategy::Window(q) => { - timsrust::readers::FrameWindowSplittingConfiguration::Window(match q { - QuadWindowExpansionStrategy::None => { - timsrust::readers::QuadWindowExpansionStrategy::None - } - - QuadWindowExpansionStrategy::Even(n) => { - timsrust::readers::QuadWindowExpansionStrategy::Even(n) - } - - QuadWindowExpansionStrategy::UniformScan(x) => { - timsrust::readers::QuadWindowExpansionStrategy::UniformScan(x) - } - QuadWindowExpansionStrategy::UniformMobility(x) => { - timsrust::readers::QuadWindowExpansionStrategy::UniformMobility(x, None) - } - }) - } - }; - } else { - frame_splitting_params = timsrust::readers::FrameWindowSplittingConfiguration::default() - } - timsrust::readers::SpectrumReaderConfig { - spectrum_processing_params, - frame_splitting_params, - } - } +#[derive(Clone, Copy, Serialize, Deserialize, Default)] +pub struct BrukerSpectrumProcessor { + pub spectrum_reader_config: SpectrumReaderConfig, } diff --git a/crates/sage-cloudpath/src/util.rs b/crates/sage-cloudpath/src/util.rs index b2e7a23..c3f18b8 100644 --- a/crates/sage-cloudpath/src/util.rs +++ b/crates/sage-cloudpath/src/util.rs @@ -1,5 +1,5 @@ -use crate::{read_and_execute, Error}; -use sage_core::spectrum::{BrukerSpectrumProcessor, RawSpectrum}; +use crate::{read_and_execute, tdf::BrukerSpectrumProcessor, Error}; +use sage_core::spectrum::RawSpectrum; use serde::Serialize; use tokio::io::AsyncReadExt; diff --git a/crates/sage/src/scoring.rs b/crates/sage/src/scoring.rs index 81171b1..e2d0c0e 100644 --- a/crates/sage/src/scoring.rs +++ b/crates/sage/src/scoring.rs @@ -2,7 +2,7 @@ use crate::database::{IndexedDatabase, PeptideIx}; use crate::heap::bounded_min_heapify; use crate::ion_series::{IonSeries, Kind}; use crate::mass::{Tolerance, NEUTRON, PROTON}; -use crate::spectrum::{BrukerSpectrumProcessor, Precursor, ProcessedSpectrum}; +use crate::spectrum::{Precursor, ProcessedSpectrum}; use serde::Serialize; use std::ops::AddAssign; use std::sync::atomic::{AtomicUsize, Ordering}; @@ -191,7 +191,6 @@ pub struct Scorer<'db> { // the precursor tolerance window based on MS2 isolation window and charge pub wide_window: bool, pub annotate_matches: bool, - pub bruker_spectrum_processor: BrukerSpectrumProcessor, } #[inline(always)] diff --git a/crates/sage/src/spectrum.rs b/crates/sage/src/spectrum.rs index 88540bf..e8fb4c0 100644 --- a/crates/sage/src/spectrum.rs +++ b/crates/sage/src/spectrum.rs @@ -1,5 +1,3 @@ -use serde::{Deserialize, Serialize}; - use crate::database::binary_search_slice; use crate::mass::{Tolerance, NEUTRON, PROTON}; @@ -359,32 +357,6 @@ impl SpectrumProcessor { } } -#[derive(Clone, Copy, Serialize, Deserialize, Default)] -pub struct BrukerSpectrumProcessor { - pub smoothing_window: Option, - pub centroiding_window: Option, - pub calibration_tolerance: Option, - pub calibrate: Option, - pub dia_strategy: Option, -} - -type ScanSpanStep = (usize, usize); -type MobilitySpanStep = (f64, f64); - -#[derive(Debug, Copy, Clone, Serialize, Deserialize)] -pub enum QuadWindowExpansionStrategy { - None, - Even(usize), - UniformMobility(MobilitySpanStep), - UniformScan(ScanSpanStep), -} - -#[derive(Debug, Clone, Copy, Serialize, Deserialize)] -pub enum FrameWindowSplittingStrategy { - Quadrupole(QuadWindowExpansionStrategy), - Window(QuadWindowExpansionStrategy), -} - #[cfg(test)] mod test { use super::*;