diff --git a/unilabos/resources/itemized_carrier.py b/unilabos/resources/itemized_carrier.py index c56cc8b4..ddda316f 100644 --- a/unilabos/resources/itemized_carrier.py +++ b/unilabos/resources/itemized_carrier.py @@ -88,6 +88,8 @@ class ItemizedCarrier(ResourcePLR): ) self.num_items = len(sites) self.num_items_x, self.num_items_y, self.num_items_z = num_items_x, num_items_y, num_items_z + self.layout = "z-y" if self.num_items_z > 1 and self.num_items_x == 1 else "x-z" if self.num_items_z > 1 and self.num_items_y == 1 else "x-y" + if isinstance(sites, dict): sites = sites or {} self.sites: List[Optional[ResourcePLR]] = list(sites.values()) diff --git a/unilabos/resources/warehouse.py b/unilabos/resources/warehouse.py index 775c55aa..67facde7 100644 --- a/unilabos/resources/warehouse.py +++ b/unilabos/resources/warehouse.py @@ -5,10 +5,13 @@ from pylabrobot.resources.carrier import ResourceHolder, create_homogeneous_reso from unilabos.resources.itemized_carrier import ItemizedCarrier, ResourcePLR +LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + def warehouse_factory( name: str, - num_items_x: int = 4, - num_items_y: int = 1, + num_items_x: int = 1, + num_items_y: int = 4, num_items_z: int = 4, dx: float = 137.0, dy: float = 96.0, @@ -33,13 +36,16 @@ def warehouse_factory( locations.append(Coordinate(x, y, z)) if removed_positions: locations = [loc for i, loc in enumerate(locations) if i not in removed_positions] - sites = create_homogeneous_resources( + _sites = create_homogeneous_resources( klass=ResourceHolder, locations=locations, resource_size_x=127.0, resource_size_y=86.0, name_prefix=name, ) + len_x, len_y = (num_items_x, num_items_y) if num_items_z == 1 else (num_items_y, num_items_z) if num_items_x == 1 else (num_items_x, num_items_z) + keys = [f"{LETTERS[j]}{i + 1}" for i in range(len_x) for j in range(len_y)] + sites = {i: site for i, site in zip(keys, _sites.values())} return WareHouse( name=name,