mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-04 13:25:13 +00:00
Merge remote-tracking branch 'origin/dev' into device_visualization
# Conflicts: # README.md # README_zh.md # recipes/ros-humble-unilabos-msgs/recipe.yaml # recipes/unilabos/recipe.yaml # setup.py # unilabos/devices/liquid_handling/biomek.py # unilabos/devices/liquid_handling/biomek_test.py # unilabos/devices/liquid_handling/complete_biomek_protocol_0608.json # unilabos/registry/devices/liquid_handler.yaml # unilabos/registry/registry.py # unilabos/ros/msgs/message_converter.py # unilabos_msgs/action/LiquidHandlerMoveBiomek.action # unilabos_msgs/action/LiquidHandlerTransferBiomek.action
This commit is contained in:
@@ -10,6 +10,7 @@ from pylabrobot.resources import (
|
|||||||
Container,
|
Container,
|
||||||
Coordinate,
|
Coordinate,
|
||||||
)
|
)
|
||||||
|
import copy
|
||||||
from unilabos_msgs.msg import Resource
|
from unilabos_msgs.msg import Resource
|
||||||
|
|
||||||
from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker # type: ignore
|
from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker # type: ignore
|
||||||
@@ -61,7 +62,7 @@ class LiquidHandlerBiomek:
|
|||||||
'LocalPattern': True,
|
'LocalPattern': True,
|
||||||
'Operation': 'Aspirate',
|
'Operation': 'Aspirate',
|
||||||
'OverrideHeight': False,
|
'OverrideHeight': False,
|
||||||
'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True),
|
'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True),
|
||||||
'Prototype': 'MC P300 High',
|
'Prototype': 'MC P300 High',
|
||||||
'ReferencedPattern': '',
|
'ReferencedPattern': '',
|
||||||
'RowsFirst': False,
|
'RowsFirst': False,
|
||||||
@@ -450,8 +451,8 @@ class LiquidHandlerBiomek:
|
|||||||
"""
|
"""
|
||||||
items = []
|
items = []
|
||||||
|
|
||||||
asp_params = self.aspirate_techniques.get(aspirate_techniques, {})
|
asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques])
|
||||||
dis_params = self.dispense_techniques.get(dispense_techniques, {})
|
dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques])
|
||||||
|
|
||||||
asp_params['Position'] = source
|
asp_params['Position'] = source
|
||||||
dis_params['Position'] = target
|
dis_params['Position'] = target
|
||||||
@@ -564,7 +565,7 @@ class LiquidHandlerBiomek:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
print("=== Biomek完整流程测试 ===")
|
print("=== Biomek完整流程测试 ===")
|
||||||
print("包含: 仪器设置 + 完整实验步骤")
|
print("包含: 仪器设置 + 完整实验步骤")
|
||||||
|
|
||||||
@@ -968,15 +969,6 @@ if __name__ == "__main__":
|
|||||||
"liquid_volume": [],
|
"liquid_volume": [],
|
||||||
"liquid_input_wells": []
|
"liquid_input_wells": []
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "working plate on P12",
|
|
||||||
"parent": "deck",
|
|
||||||
"slot_on_deck": "P12",
|
|
||||||
"class_name": "BCDeep96Round",
|
|
||||||
"liquid_type": [],
|
|
||||||
"liquid_volume": [],
|
|
||||||
"liquid_input_wells": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "working plate on P13",
|
"id": "working plate on P13",
|
||||||
"parent": "deck",
|
"parent": "deck",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from typing import List, Sequence, Optional, Union, Literal
|
|||||||
import json
|
import json
|
||||||
import pathlib
|
import pathlib
|
||||||
from typing import Sequence, Optional, List, Union, Literal
|
from typing import Sequence, Optional, List, Union, Literal
|
||||||
|
import copy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -67,7 +68,7 @@ class LiquidHandlerBiomek:
|
|||||||
'LocalPattern': True,
|
'LocalPattern': True,
|
||||||
'Operation': 'Aspirate',
|
'Operation': 'Aspirate',
|
||||||
'OverrideHeight': False,
|
'OverrideHeight': False,
|
||||||
'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True),
|
'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True),
|
||||||
'Prototype': 'MC P300 High',
|
'Prototype': 'MC P300 High',
|
||||||
'ReferencedPattern': '',
|
'ReferencedPattern': '',
|
||||||
'RowsFirst': False,
|
'RowsFirst': False,
|
||||||
@@ -351,8 +352,9 @@ class LiquidHandlerBiomek:
|
|||||||
"""
|
"""
|
||||||
items = []
|
items = []
|
||||||
|
|
||||||
asp_params = self.aspirate_techniques.get(aspirate_techniques, {})
|
asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques])
|
||||||
dis_params = self.dispense_techniques.get(dispense_techniques, {})
|
dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques])
|
||||||
|
|
||||||
|
|
||||||
asp_params['Position'] = source
|
asp_params['Position'] = source
|
||||||
dis_params['Position'] = target
|
dis_params['Position'] = target
|
||||||
@@ -403,7 +405,9 @@ class LiquidHandlerBiomek:
|
|||||||
transfer_params["Solvent"] = 'Water'
|
transfer_params["Solvent"] = 'Water'
|
||||||
transfer_params["TipLocation"] = tip_rack
|
transfer_params["TipLocation"] = tip_rack
|
||||||
tmp={'transfer': transfer_params}
|
tmp={'transfer': transfer_params}
|
||||||
|
|
||||||
self.temp_protocol["steps"].append(tmp)
|
self.temp_protocol["steps"].append(tmp)
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -872,15 +876,6 @@ if __name__ == "__main__":
|
|||||||
"liquid_volume": [],
|
"liquid_volume": [],
|
||||||
"liquid_input_wells": []
|
"liquid_input_wells": []
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "working plate on P12",
|
|
||||||
"parent": "deck",
|
|
||||||
"slot_on_deck": "P12",
|
|
||||||
"class_name": "BCDeep96Round",
|
|
||||||
"liquid_type": [],
|
|
||||||
"liquid_volume": [],
|
|
||||||
"liquid_input_wells": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "working plate on P13",
|
"id": "working plate on P13",
|
||||||
"parent": "deck",
|
"parent": "deck",
|
||||||
@@ -968,6 +963,7 @@ if __name__ == "__main__":
|
|||||||
print(f"步骤 {step['step_number']}: {description}")
|
print(f"步骤 {step['step_number']}: {description}")
|
||||||
|
|
||||||
if operation == 'transfer':
|
if operation == 'transfer':
|
||||||
|
|
||||||
handler.transfer_biomek(
|
handler.transfer_biomek(
|
||||||
source=parameters['source'],
|
source=parameters['source'],
|
||||||
target=parameters['target'],
|
target=parameters['target'],
|
||||||
|
|||||||
Reference in New Issue
Block a user