pub struct TimsDatasetDDA {
pub loader: TimsDataLoader,
pub pasef_meta: Vec<PasefMsMsMeta>,
}Fields§
§loader: TimsDataLoader§pasef_meta: Vec<PasefMsMsMeta>Implementations§
Source§impl TimsDatasetDDA
impl TimsDatasetDDA
pub fn new( bruker_lib_path: &str, data_path: &str, in_memory: bool, use_bruker_sdk: bool, ) -> Self
Sourcepub fn new_with_calibration(
data_path: &str,
in_memory: bool,
im_lookup: Vec<f64>,
) -> Self
pub fn new_with_calibration( data_path: &str, in_memory: bool, im_lookup: Vec<f64>, ) -> Self
Create a new DDA dataset with pre-computed ion mobility calibration lookup table.
This enables accurate ion mobility calibration with fast parallel extraction. The im_lookup table should be pre-computed using the Bruker SDK.
§Arguments
data_path- Path to the .d folderin_memory- Whether to load all data into memoryim_lookup- Pre-computed scan→1/K0 lookup table from Bruker SDK
§Returns
A new TimsDatasetDDA with LookupIndexConverter (thread-safe, accurate)
Sourcepub fn new_with_mz_calibration(
data_path: &str,
in_memory: bool,
tof_intercept: f64,
tof_slope: f64,
) -> Self
pub fn new_with_mz_calibration( data_path: &str, in_memory: bool, tof_intercept: f64, tof_slope: f64, ) -> Self
Create a DDA dataset with regression-derived m/z calibration.
This method uses externally-provided m/z calibration coefficients (e.g., from linear regression on precursor data) instead of the simple boundary model.
§Arguments
data_path- Path to the .d folderin_memory- Whether to load all data into memorytof_intercept- Intercept for sqrt(mz) = intercept + slope * toftof_slope- Slope for sqrt(mz) = intercept + slope * tof
§Returns
A new TimsDatasetDDA with CalibratedIndexConverter (thread-safe, accurate)
Sourcepub fn uses_bruker_sdk(&self) -> bool
pub fn uses_bruker_sdk(&self) -> bool
Check if the Bruker SDK is being used for index conversion. Returns false for both Simple and Lookup converters (which are thread-safe).
pub fn get_selected_precursors(&self) -> Vec<DDAPrecursor>
pub fn get_precursor_frames( &self, min_intensity: f64, max_num_peaks: usize, num_threads: usize, ) -> Vec<TimsFrame>
Sourcepub fn extract_precursor_ms1_signals(
&self,
precursor_coords: Vec<PrecursorCoord>,
rt_window_sec: f64,
mz_tol_ppm: f64,
im_window: f64,
n_isotopes: usize,
num_threads: usize,
) -> Vec<PrecursorMS1Signal>
pub fn extract_precursor_ms1_signals( &self, precursor_coords: Vec<PrecursorCoord>, rt_window_sec: f64, mz_tol_ppm: f64, im_window: f64, n_isotopes: usize, num_threads: usize, ) -> Vec<PrecursorMS1Signal>
Extract MS1 precursor signals for a batch of precursors in parallel.
For each precursor, extracts:
- XIC (chromatographic profile) from MS1 frames in RT window
- Mobilogram (IM profile)
- Isotope envelope
- Statistical moments (mean, variance, skewness, apex, FWHM) for each dimension
Uses batched processing to avoid loading all MS1 frames at once.
§Arguments
precursor_coords- Vector of precursor coordinates (id, mz, rt_sec, mobility, charge)rt_window_sec- RT window in seconds (total width)mz_tol_ppm- m/z tolerance in ppmim_window- IM window in 1/K0 units (total width)n_isotopes- Number of isotope peaks to extractnum_threads- Number of threads for parallel processing
§Returns
Vector of PrecursorMS1Signal, one per input precursor
pub fn get_pasef_frame_ms_ms_info(&self) -> Vec<PasefMsMsMeta>
Sourcepub fn get_pasef_fragments(&self, num_threads: usize) -> Vec<PASEFDDAFragment>
pub fn get_pasef_fragments(&self, num_threads: usize) -> Vec<PASEFDDAFragment>
Get the fragment spectra for all PASEF selected precursors
Sourcepub fn get_pasef_fragments_for_precursors(
&self,
precursor_ids: Option<&[u32]>,
num_threads: usize,
) -> Vec<PASEFDDAFragment>
pub fn get_pasef_fragments_for_precursors( &self, precursor_ids: Option<&[u32]>, num_threads: usize, ) -> Vec<PASEFDDAFragment>
Get fragment spectra for specific precursor IDs only. If precursor_ids is None, returns all fragments (same as get_pasef_fragments). This is more memory-efficient for batched processing.
Sourcepub fn get_preprocessed_pasef_fragments(
&self,
dataset_name: &str,
config: SpectrumProcessingConfig,
num_threads: usize,
) -> Vec<PreprocessedSpectrum>
pub fn get_preprocessed_pasef_fragments( &self, dataset_name: &str, config: SpectrumProcessingConfig, num_threads: usize, ) -> Vec<PreprocessedSpectrum>
Get preprocessed PASEF fragments ready for database search. This method performs parallel processing of all fragment spectra, including:
- Flattening frames across ion mobility dimension
- Deisotoping (optional)
- Filtering to top N peaks
- Computing inverse mobility along scan marginal
§Arguments
dataset_name- Name of the dataset for generating spec_idsconfig- Spectrum processing configurationnum_threads- Number of threads to use for parallel processing
§Returns
Vector of preprocessed spectra ready for Sage search
pub fn sample_pasef_fragment_random( &self, target_scan_apex: i32, experiment_max_scan: i32, ) -> TimsFrame
pub fn sample_pasef_fragments_random( &self, target_scan_apex_values: Vec<i32>, experiment_max_scan: i32, ) -> TimsFrame
pub fn sample_precursor_signal( &self, num_frames: usize, max_intensity: f64, take_probability: f64, ) -> TimsFrame
Trait Implementations§
Source§impl IndexConverter for TimsDatasetDDA
impl IndexConverter for TimsDatasetDDA
fn tof_to_mz(&self, frame_id: u32, tof_values: &Vec<u32>) -> Vec<f64>
fn mz_to_tof(&self, frame_id: u32, mz_values: &Vec<f64>) -> Vec<u32>
fn scan_to_inverse_mobility( &self, frame_id: u32, scan_values: &Vec<u32>, ) -> Vec<f64>
fn inverse_mobility_to_scan( &self, frame_id: u32, inverse_mobility_values: &Vec<f64>, ) -> Vec<u32>
Source§impl TimsData for TimsDatasetDDA
impl TimsData for TimsDatasetDDA
fn get_frame(&self, frame_id: u32) -> TimsFrame
fn get_raw_frame(&self, frame_id: u32) -> RawTimsFrame
fn get_slice(&self, frame_ids: Vec<u32>, num_threads: usize) -> TimsSlice
fn get_acquisition_mode(&self) -> AcquisitionMode
fn get_frame_count(&self) -> i32
fn get_data_path(&self) -> &str
Auto Trait Implementations§
impl Freeze for TimsDatasetDDA
impl RefUnwindSafe for TimsDatasetDDA
impl Send for TimsDatasetDDA
impl Sync for TimsDatasetDDA
impl Unpin for TimsDatasetDDA
impl UnwindSafe for TimsDatasetDDA
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.