diff --git a/unilabos/resources/bioyond/decks.py b/unilabos/resources/bioyond/decks.py index 432ea171..923bf04b 100644 --- a/unilabos/resources/bioyond/decks.py +++ b/unilabos/resources/bioyond/decks.py @@ -25,8 +25,8 @@ class BIOYOND_PolymerReactionStation_Deck(Deck): "站内试剂存放堆栈": bioyond_warehouse_liquid_and_lid_handling("站内试剂存放堆栈"), } self.warehouse_locations = { - "堆栈1": Coordinate(0.0, 650.0, 0.0), - "堆栈2": Coordinate(2550.0, 650.0, 0.0), + "堆栈1": Coordinate(0.0, 430.0, 0.0), + "堆栈2": Coordinate(2550.0, 430.0, 0.0), "站内试剂存放堆栈": Coordinate(800.0, 475.0, 0.0), } self.warehouses["站内试剂存放堆栈"].rotation = Rotation(z=90) diff --git a/unilabos/resources/itemized_carrier.py b/unilabos/resources/itemized_carrier.py index 61672c35..3205c9dd 100644 --- a/unilabos/resources/itemized_carrier.py +++ b/unilabos/resources/itemized_carrier.py @@ -93,16 +93,20 @@ class ItemizedCarrier(ResourcePLR): self.sites: List[Optional[ResourcePLR]] = list(sites.values()) self._ordering = sites self.child_locations: Dict[str, Coordinate] = {} + self.child_size: Dict[str, dict] = {} for spot, resource in sites.items(): if resource is not None and getattr(resource, "location", None) is None: raise ValueError(f"resource {resource} has no location") if resource is not None: self.child_locations[spot] = resource.location + self.child_size[spot] = {"width": resource.size_x, "height": resource.size_y, "depth": resource.size_z} else: self.child_locations[spot] = Coordinate.zero() + self.child_size[spot] = {"width": 0, "height": 0, "depth": 0} elif isinstance(sites, list): # deserialize时走这里;还需要根据 self.sites 索引children self.child_locations = {site["label"]: Coordinate(**site["position"]) for site in sites} + self.child_size = {site["label"]: site["size"] for site in sites} self.sites = [site["occupied_by"] for site in sites] self._ordering = {site["label"]: site["position"] for site in sites} else: @@ -323,7 +327,7 @@ class ItemizedCarrier(ResourcePLR): if isinstance(self[identifier], ResourcePLR) and not isinstance(self[identifier], ResourceHolder) else self[identifier] if isinstance(self[identifier], str) else None, "position": {"x": location.x, "y": location.y, "z": location.z}, - "size": {"width": self._size_x, "height": self._size_y, "depth": self._size_z}, + "size": self.child_size[identifier], "content_type": ["bottle", "container", "tube", "bottle_carrier", "tip_rack"] } for identifier, location in self.child_locations.items()] }