Compare commits

..

4 Commits

Author SHA1 Message Date
Guangxin Zhang
0bdb888108 Refine 2025-06-08 20:48:52 +08:00
Guangxin Zhang
b0ffe7df90 Refine copy issue 2025-06-08 20:34:27 +08:00
Guangxin Zhang
c7e610c1da Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-Lab-OS into 37-biomek-i5i7 2025-06-08 20:33:07 +08:00
Guangxin Zhang
3f4d247127 Refine biomek 2025-06-08 20:29:39 +08:00
4 changed files with 49 additions and 4028 deletions

View File

@@ -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",

View File

@@ -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'],

File diff suppressed because it is too large Load Diff

View File

@@ -643,222 +643,6 @@
] ]
} }
], ],
"P12": [
{
"Properties": {
"Name": "working plate on P12",
"Device": "",
"liquidtype": "Water",
"BarCode": "",
"SenseEveryTime": false
},
"Known": true,
"Class": "LabwareClasses\\BCDeep96Round",
"DataSets": {
"Volume": {}
},
"RuntimeDataSets": {
"Volume": {}
},
"EvalAmounts": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"Nominal": false,
"EvalLiquids": [
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water",
"Water"
]
}
],
"P13": [ "P13": [
{ {
"Properties": { "Properties": {
@@ -1326,9 +1110,9 @@
"Pod": "Pod1", "Pod": "Pod1",
"items": [ "items": [
{ {
"Position": "P12", "Position": "P1",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "50",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -1435,6 +1219,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -1451,9 +1236,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P11",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "50",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -1626,9 +1411,9 @@
"Pod": "Pod1", "Pod": "Pod1",
"items": [ "items": [
{ {
"Position": "P12", "Position": "P2",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "100",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -1735,6 +1520,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -1751,9 +1537,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P11",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "100",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -1957,7 +1743,7 @@
{ {
"Position": "P12", "Position": "P12",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "150",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2064,6 +1850,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -2080,9 +1867,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P22",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "150",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2255,9 +2042,9 @@
"Pod": "Pod1", "Pod": "Pod1",
"items": [ "items": [
{ {
"Position": "P12", "Position": "P3",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2364,6 +2151,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -2380,9 +2168,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P12",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2595,7 +2383,7 @@
{ {
"Position": "P12", "Position": "P12",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2702,6 +2490,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -2718,9 +2507,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P22",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -2893,9 +2682,9 @@
"Pod": "Pod1", "Pod": "Pod1",
"items": [ "items": [
{ {
"Position": "P12", "Position": "P3",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -3002,6 +2791,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -3018,9 +2808,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P12",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -3233,7 +3023,7 @@
{ {
"Position": "P12", "Position": "P12",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -3340,6 +3130,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -3356,9 +3147,9 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P22",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "400",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
"WellsX": 12, "WellsX": 12,
"LabwareClass": "Matrix96_750uL", "LabwareClass": "Matrix96_750uL",
@@ -3548,7 +3339,7 @@
"Pod": "Pod1", "Pod": "Pod1",
"items": [ "items": [
{ {
"Position": "P12", "Position": "P4",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "40",
"liquidtype": "Well Contents", "liquidtype": "Well Contents",
@@ -3657,6 +3448,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",
@@ -3673,7 +3465,7 @@
"UseExpression": false "UseExpression": false
}, },
{ {
"Position": "P14", "Position": "P13",
"Height": -2.0, "Height": -2.0,
"Volume": "40", "Volume": "40",
"liquidtype": "Tip Contents", "liquidtype": "Tip Contents",
@@ -4012,6 +3804,7 @@
true, true,
true, true,
true, true,
true,
true true
], ],
"Prototype": "MC P300 High", "Prototype": "MC P300 High",