pub struct LookupIndexConverter {
pub tof_intercept: f64,
pub tof_slope: f64,
pub im_lookup: Vec<f64>,
pub im_min: f64,
pub im_max: f64,
}Expand description
Ion mobility index converter using pre-computed lookup table.
This converter uses a pre-computed scan→1/K0 lookup table extracted from the Bruker SDK. It enables accurate ion mobility calibration with fast parallel extraction.
Background:
- The Bruker calibration formula is patented and proprietary
- Using the Bruker SDK gives accurate values but is slow (not thread-safe)
- Linear interpolation is fast but inaccurate
- This converter uses SDK-probed lookup for accuracy with O(1) thread-safe lookups
The lookup table is typically small (~8KB for 1000 scans) and constant across all frames.
Fields§
§tof_intercept: f64§tof_slope: f64§im_lookup: Vec<f64>§im_min: f64§im_max: f64Implementations§
Source§impl LookupIndexConverter
impl LookupIndexConverter
Sourcepub fn new(
mz_min: f64,
mz_max: f64,
tof_max_index: u32,
im_lookup: Vec<f64>,
) -> Self
pub fn new( mz_min: f64, mz_max: f64, tof_max_index: u32, im_lookup: Vec<f64>, ) -> Self
Create a new LookupIndexConverter with pre-computed ion mobility lookup.
§Arguments
mz_min- Minimum m/z value for TOF conversionmz_max- Maximum m/z value for TOF conversiontof_max_index- Maximum TOF indexim_lookup- Pre-computed scan→1/K0 lookup table from Bruker SDK
§Returns
A new LookupIndexConverter instance
Sourcepub fn with_mz_fit(
tof_intercept: f64,
tof_slope: f64,
im_lookup: Vec<f64>,
) -> Self
pub fn with_mz_fit( tof_intercept: f64, tof_slope: f64, im_lookup: Vec<f64>, ) -> Self
Create a LookupIndexConverter with regression-derived m/z coefficients.
Uses sqrt(mz) = tof_intercept + tof_slope * tof with coefficients fitted
from the Bruker SDK (see derive_mz_calibration), instead of the 2-point
boundary model in new. Preferred whenever the SDK is available.
§Arguments
tof_intercept- Intercept of the sqrt(mz)-vs-tof regressiontof_slope- Slope of the sqrt(mz)-vs-tof regressionim_lookup- Pre-computed scan→1/K0 lookup table from Bruker SDK
Trait Implementations§
Source§impl IndexConverter for LookupIndexConverter
impl IndexConverter for LookupIndexConverter
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>
Auto Trait Implementations§
impl Freeze for LookupIndexConverter
impl RefUnwindSafe for LookupIndexConverter
impl Send for LookupIndexConverter
impl Sync for LookupIndexConverter
impl Unpin for LookupIndexConverter
impl UnsafeUnpin for LookupIndexConverter
impl UnwindSafe for LookupIndexConverter
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.