From 72d81439c12f3fad32d714aaaed1ca4b039afa17 Mon Sep 17 00:00:00 2001 From: Emilia Date: Tue, 13 Feb 2024 21:54:23 -0500 Subject: [PATCH] fix: custom get_destination_wells The code here was like, stupid tbh. --- plate-tool-lib/src/transfer_region.rs | 44 ++++++++++++++------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/plate-tool-lib/src/transfer_region.rs b/plate-tool-lib/src/transfer_region.rs index ced6b13..31b4a57 100644 --- a/plate-tool-lib/src/transfer_region.rs +++ b/plate-tool-lib/src/transfer_region.rs @@ -109,21 +109,23 @@ impl TransferRegion { } pub fn get_destination_wells(&self) -> Vec<(u8, u8)> { - let map = self.calculate_map(); - let source_wells = self.get_source_wells(); + match &self.source_region { + Region::Custom(c) => c.dest.clone(), + _ => { + let map = self.calculate_map(); + let source_wells = self.get_source_wells(); - let mut wells = Vec::<(u8, u8)>::new(); + let mut wells = Vec::<(u8, u8)>::new(); - // log::debug!("GDW:"); - for well in source_wells { - if let Some(mut dest_wells) = map(well) { - // log::debug!("Map {:?} to {:?}", well, dest_wells); - wells.append(&mut dest_wells); + for well in source_wells { + if let Some(mut dest_wells) = map(well) { + wells.append(&mut dest_wells); + } + } + + wells } } - // log::debug!("GDW END."); - - wells } #[allow(clippy::type_complexity)] // Resolving gives inherent associated type error @@ -204,14 +206,16 @@ impl TransferRegion { // How many times can we replicate? (1..) .position(|n| { - n * number_used_src_wells.0 * il_dest.0.unsigned_abs() - il_dest.0.unsigned_abs() + n * number_used_src_wells.0 * il_dest.0.unsigned_abs() + - il_dest.0.unsigned_abs() + 1 > d_dims.0 }) .unwrap() as u8, (1..) .position(|n| { - n * number_used_src_wells.1 * il_dest.1.unsigned_abs() - il_dest.1.unsigned_abs() + n * number_used_src_wells.1 * il_dest.1.unsigned_abs() + - il_dest.1.unsigned_abs() + 1 > d_dims.1 }) @@ -242,14 +246,12 @@ impl TransferRegion { .filter(|(x, y)| { // How many times have we replicated? < How many are we allowed // to replicate? - x.checked_sub(d_ul.0) - .unwrap() - .div_euclid(number_used_src_wells.0 * il_dest.0.unsigned_abs()) - < count.0 - && y.checked_sub(d_ul.1) - .unwrap() - .div_euclid(number_used_src_wells.1 * il_dest.1.unsigned_abs()) - < count.1 + x.checked_sub(d_ul.0).unwrap().div_euclid( + number_used_src_wells.0 * il_dest.0.unsigned_abs(), + ) < count.0 + && y.checked_sub(d_ul.1).unwrap().div_euclid( + number_used_src_wells.1 * il_dest.1.unsigned_abs(), + ) < count.1 }) .collect(), )