Plate struct
This commit is contained in:
parent
94bb6b249d
commit
3a91b99b6b
|
@ -0,0 +1 @@
|
||||||
|
pub mod plate;
|
|
@ -0,0 +1,73 @@
|
||||||
|
pub struct Plate {
|
||||||
|
pub plate_type: PlateType,
|
||||||
|
pub plate_format: PlateFormat,
|
||||||
|
well_groups: Vec<u8>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Plate {
|
||||||
|
pub fn new(plate_type: PlateType, plate_format: PlateFormat) -> Self {
|
||||||
|
let (l,w) = plate_format.size();
|
||||||
|
Plate {
|
||||||
|
plate_type,
|
||||||
|
plate_format,
|
||||||
|
well_groups: Vec::with_capacity((l*w) as usize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn size(&self) -> (u8,u8) {
|
||||||
|
self.plate_format.size()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_well_group(&self, i: u8, j: u8) -> u8 {
|
||||||
|
self.well_groups[ ((i-1)*self.size().1 + (j-1)) as usize ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum PlateType {
|
||||||
|
Source,
|
||||||
|
Destination
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum PlateFormat {
|
||||||
|
W6,
|
||||||
|
W12,
|
||||||
|
W24,
|
||||||
|
W48,
|
||||||
|
W96,
|
||||||
|
W384,
|
||||||
|
W1536,
|
||||||
|
W3456,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PlateFormat {
|
||||||
|
pub fn size(&self) -> (u8,u8) {
|
||||||
|
match self {
|
||||||
|
PlateFormat::W6 => (2,3),
|
||||||
|
PlateFormat::W12 => (3,4),
|
||||||
|
PlateFormat::W24 => (4,6),
|
||||||
|
PlateFormat::W48 => (6,8),
|
||||||
|
PlateFormat::W96 => (8,12),
|
||||||
|
PlateFormat::W384 => (16,24),
|
||||||
|
PlateFormat::W1536 => (32,48),
|
||||||
|
PlateFormat::W3456 => (48,72),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::{Plate, PlateFormat, PlateType};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_well_group() {
|
||||||
|
let plate = Plate { // Plate where we know every plate group number
|
||||||
|
plate_type: PlateType::Source,
|
||||||
|
plate_format: PlateFormat::W12,
|
||||||
|
well_groups: vec![1,2,3,4,5,6,7,8,9,10,11,12]
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(plate.get_well_group(1, 3), 3);
|
||||||
|
assert_eq!(plate.get_well_group(2, 3), 7);
|
||||||
|
assert_eq!(plate.get_well_group(3, 1), 9);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
mod components;
|
mod components;
|
||||||
|
mod data;
|
||||||
|
|
||||||
use components::source_plate::SourcePlate;
|
use components::source_plate::SourcePlate;
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
|
Loading…
Reference in New Issue