Source code for biohit_pipettor_plus.deck_structure.labware_classes.tipdropzone


from biohit_pipettor_plus.deck_structure.labware_classes.labware import Labware
from biohit_pipettor_plus.deck_structure.serializable import register_class

[docs] @register_class class TipDropzone(Labware): """ Represents a Tip Dropzone labware with relative drop position and height. Attributes ---------- drop_height_relative : float Drop height relative to the labware height. """ def __init__(self, size_x: float, size_y: float, size_z: float, can_be_stacked_upon: bool = False, offset: tuple[float, float] = (0, 0), drop_height_relative: float = 20, position: tuple[float, float] = None, labware_id: str = None ): """ Initialize a TipDropzone instance. Parameters ---------- size_x : float Width of the drop zone in millimeters. size_y : float Depth of the drop zone in millimeters. size_z : float Height of the drop zone in millimeters. labware_id : str, optional Unique ID for the dropzone object. position : tuple[float, float], optional (x, y) position coordinates of the tip dropzone in millimeters. If None, position is not set. drop_height_relative : float, optional Height from which tips are dropped relative to the labware. Default is 20. """ super().__init__(size_x=size_x, size_y=size_y, size_z=size_z, offset=offset, labware_id=labware_id, position=position, can_be_stacked_upon=can_be_stacked_upon) self.drop_height_relative = drop_height_relative
[docs] def get_state_snapshot(self) -> dict: """Return empty snapshot - TipDropzone has no mutable state""" return {}
[docs] def restore_state_snapshot(self, snapshot: dict) -> None: """No-op - TipDropzone has no mutable state to restore""" pass
[docs] def to_dict(self) -> dict: """ Serialize the TipDropzone instance to a dictionary, extending the base Labware fields. Returns ------- dict dictionary representation of the tip dropzone. """ base_dict = super().to_dict() base_dict.update({ "drop_height_relative": self.drop_height_relative, }) return base_dict
@classmethod def _from_dict(cls, data: dict) -> "TipDropzone": """ Deserialize a TipDropzone instance from a dictionary using the base Labware _from_dict. Parameters ---------- data : dict dictionary containing tip dropzone attributes. Returns ------- TipDropzone Reconstructed TipDropzone instance. """ # Safely handle position deserialization # Safely handle position deserialization position = tuple(data["position"]) if data.get("position") else None return cls( size_x=data["size_x"], size_y=data["size_y"], size_z=data["size_z"], offset=data["offset"], can_be_stacked_upon=data.get("can_be_stacked_upon", False), position=position, drop_height_relative=data["drop_height_relative"], labware_id=data["labware_id"] )