From c21c01b00aba18de756a8b47497dd8a43f328ab5 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Fri, 11 Sep 2026 15:13:00 +0200 Subject: [PATCH 1/2] fix: im conversion --- crates/timsrust-tdf/src/calibration.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/crates/timsrust-tdf/src/calibration.rs b/crates/timsrust-tdf/src/calibration.rs index f7d18de..fa54282 100644 --- a/crates/timsrust-tdf/src/calibration.rs +++ b/crates/timsrust-tdf/src/calibration.rs @@ -114,9 +114,8 @@ pub struct UncalibratedScan2ImConverter { impl UncalibratedScan2ImConverter { fn from_boundaries(im_min: f64, im_max: f64, scan_max_index: u32) -> Self { - let scan_intercept: f64 = im_max.sqrt(); - let scan_slope: f64 = - (im_min.sqrt() - scan_intercept) / scan_max_index as f64; + let scan_intercept: f64 = im_max; + let scan_slope: f64 = (im_min - scan_intercept) / scan_max_index as f64; Self { scan_intercept, scan_slope, @@ -146,15 +145,14 @@ impl Converter for UncalibratedScan2ImConverter { fn convert(&self, value: ScanIndex) -> Im { let value = f64::from(value); let im = self.scan_intercept + self.scan_slope * value; - let result = im * im; - Im::from(result) + Im::from(im) } } impl Converter for UncalibratedScan2ImConverter { fn convert(&self, value: Im) -> ScanIndex { let value = f64::from(value); - let result = (value.sqrt() - self.scan_intercept) / self.scan_slope; + let result = (value - self.scan_intercept) / self.scan_slope; ScanIndex::try_from(result as u32) .expect("ScanIndex conversion out of bounds") } From abec8319c5a5649c8ed90da6c81ddeaa477dd166 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Fri, 11 Sep 2026 15:19:51 +0200 Subject: [PATCH 2/2] chore: max scan --- crates/timsrust-tdf/src/calibration.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/timsrust-tdf/src/calibration.rs b/crates/timsrust-tdf/src/calibration.rs index fa54282..9497146 100644 --- a/crates/timsrust-tdf/src/calibration.rs +++ b/crates/timsrust-tdf/src/calibration.rs @@ -137,7 +137,7 @@ impl UncalibratedScan2ImConverter { .max() .expect("SqlReader cannot return empty vecs, so there is always a max scan index"); let (im_min, im_max) = get_im_bounds(&sql_metadata).unwrap(); - Self::from_boundaries(im_min, im_max, scan_max_index) + Self::from_boundaries(im_min, im_max, scan_max_index - 1) } }