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,
Coordinate,
)
import copy
from unilabos_msgs.msg import Resource
from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker # type: ignore
@@ -61,7 +62,7 @@ class LiquidHandlerBiomek:
'LocalPattern': True,
'Operation': 'Aspirate',
'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',
'ReferencedPattern': '',
'RowsFirst': False,
@@ -450,8 +451,8 @@ class LiquidHandlerBiomek:
"""
items = []
asp_params = self.aspirate_techniques.get(aspirate_techniques, {})
dis_params = self.dispense_techniques.get(dispense_techniques, {})
asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques])
dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques])
asp_params['Position'] = source
dis_params['Position'] = target
@@ -564,7 +565,7 @@ class LiquidHandlerBiomek:
if __name__ == "__main__":
print("=== Biomek完整流程测试 ===")
print("包含: 仪器设置 + 完整实验步骤")
@@ -968,15 +969,6 @@ if __name__ == "__main__":
"liquid_volume": [],
"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",
"parent": "deck",

View File

@@ -15,6 +15,7 @@ from typing import List, Sequence, Optional, Union, Literal
import json
import pathlib
from typing import Sequence, Optional, List, Union, Literal
import copy
@@ -67,7 +68,7 @@ class LiquidHandlerBiomek:
'LocalPattern': True,
'Operation': 'Aspirate',
'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',
'ReferencedPattern': '',
'RowsFirst': False,
@@ -351,8 +352,9 @@ class LiquidHandlerBiomek:
"""
items = []
asp_params = self.aspirate_techniques.get(aspirate_techniques, {})
dis_params = self.dispense_techniques.get(dispense_techniques, {})
asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques])
dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques])
asp_params['Position'] = source
dis_params['Position'] = target
@@ -403,7 +405,9 @@ class LiquidHandlerBiomek:
transfer_params["Solvent"] = 'Water'
transfer_params["TipLocation"] = tip_rack
tmp={'transfer': transfer_params}
self.temp_protocol["steps"].append(tmp)
return
@@ -872,15 +876,6 @@ if __name__ == "__main__":
"liquid_volume": [],
"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",
"parent": "deck",
@@ -968,6 +963,7 @@ if __name__ == "__main__":
print(f"步骤 {step['step_number']}: {description}")
if operation == 'transfer':
handler.transfer_biomek(
source=parameters['source'],
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": [
{
"Properties": {
@@ -1326,9 +1110,9 @@
"Pod": "Pod1",
"items": [
{
"Position": "P12",
"Position": "P1",
"Height": -2.0,
"Volume": "40",
"Volume": "50",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -1435,6 +1219,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -1451,9 +1236,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P11",
"Height": -2.0,
"Volume": "40",
"Volume": "50",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -1626,9 +1411,9 @@
"Pod": "Pod1",
"items": [
{
"Position": "P12",
"Position": "P2",
"Height": -2.0,
"Volume": "40",
"Volume": "100",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -1735,6 +1520,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -1751,9 +1537,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P11",
"Height": -2.0,
"Volume": "40",
"Volume": "100",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -1957,7 +1743,7 @@
{
"Position": "P12",
"Height": -2.0,
"Volume": "40",
"Volume": "150",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2064,6 +1850,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -2080,9 +1867,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P22",
"Height": -2.0,
"Volume": "40",
"Volume": "150",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2255,9 +2042,9 @@
"Pod": "Pod1",
"items": [
{
"Position": "P12",
"Position": "P3",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2364,6 +2151,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -2380,9 +2168,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P12",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2595,7 +2383,7 @@
{
"Position": "P12",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2702,6 +2490,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -2718,9 +2507,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P22",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -2893,9 +2682,9 @@
"Pod": "Pod1",
"items": [
{
"Position": "P12",
"Position": "P3",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -3002,6 +2791,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -3018,9 +2808,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P12",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -3233,7 +3023,7 @@
{
"Position": "P12",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Well Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -3340,6 +3130,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -3356,9 +3147,9 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P22",
"Height": -2.0,
"Volume": "40",
"Volume": "400",
"liquidtype": "Tip Contents",
"WellsX": 12,
"LabwareClass": "Matrix96_750uL",
@@ -3548,7 +3339,7 @@
"Pod": "Pod1",
"items": [
{
"Position": "P12",
"Position": "P4",
"Height": -2.0,
"Volume": "40",
"liquidtype": "Well Contents",
@@ -3657,6 +3448,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",
@@ -3673,7 +3465,7 @@
"UseExpression": false
},
{
"Position": "P14",
"Position": "P13",
"Height": -2.0,
"Volume": "40",
"liquidtype": "Tip Contents",
@@ -4012,6 +3804,7 @@
true,
true,
true,
true,
true
],
"Prototype": "MC P300 High",