diff --git a/test/experiments/reaction_station_bioyond.json b/test/experiments/reaction_station_bioyond.json index 72d8eb68..013855ed 100644 --- a/test/experiments/reaction_station_bioyond.json +++ b/test/experiments/reaction_station_bioyond.json @@ -19,8 +19,8 @@ "Solid_feeding_vials": "3a160877-87e7-7699-7bc6-ec72b05eb5e6", "Liquid_feeding_vials(non-titration)": "3a167d99-6158-c6f0-15b5-eb030f7d8e47", "Liquid_feeding_solvents": "3a160824-0665-01ed-285a-51ef817a9046", - "Liquid_feeding(titration)": "3a160824-0665-01ed-285a-51ef817a9046", - "Liquid_feeding_beaker": "3a16087e-124f-8ddb-8ec1-c2dff09ca784", + "Liquid_feeding(titration)": "3a16082a-96ac-0449-446a-4ed39f3365b6", + "liquid_feeding_beaker": "3a16087e-124f-8ddb-8ec1-c2dff09ca784", "Drip_back": "3a162cf9-6aac-565a-ddd7-682ba1796a4a" }, "material_type_mappings": { diff --git a/unilabos/resources/itemized_carrier.py b/unilabos/resources/itemized_carrier.py index 17f63cf4..44074b53 100644 --- a/unilabos/resources/itemized_carrier.py +++ b/unilabos/resources/itemized_carrier.py @@ -32,6 +32,7 @@ class Bottle(Well): barcode: Optional[str] = "", category: str = "container", model: Optional[str] = None, + **kwargs, ): super().__init__( name=name, @@ -427,6 +428,7 @@ class BottleCarrier(ItemizedCarrier): sites: Optional[Dict[Union[int, str], ResourceHolder]] = None, category: str = "bottle_carrier", model: Optional[str] = None, + **kwargs, ): super().__init__( name=name, diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index 5900acac..7a311881 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -582,6 +582,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): - update: 更新现有资源 - remove: 从资源树中移除资源 """ + from pylabrobot.resources import Resource as ResourcePLR try: data = json.loads(req.command) results = [] @@ -672,7 +673,8 @@ class BaseROS2DeviceNode(Node, Generic[T]): if callable(func): func(found_plr_resources) for plr_resource in found_plr_resources: - plr_resource.parent.unassign_child_resource(plr_resource) + if plr_resource.parent is not None: + plr_resource.parent.unassign_child_resource(plr_resource) self.resource_tracker.remove_resource(plr_resource) self.lab_logger().info(f"移除物料 {plr_resource} 及其子节点") for res in other_plr_resources: