From be429147c0fd1074ca88c2019619cb36499e19d4 Mon Sep 17 00:00:00 2001 From: dijkstra402 Date: Sat, 8 Nov 2025 15:42:18 +0800 Subject: [PATCH] Fix infinite recursion in YB_jia_yang_tou_da by renaming carrier function to YB_jia_yang_tou_da_Carrier --- test/resources/test_resourcetreeset.py | 4 +- .../workstation/bioyond_studio/config.py | 28 +++++----- .../registry/resources/bioyond/YB_bottle.yaml | 18 +++---- .../resources/bioyond/YB_bottle_carriers.yaml | 54 +++++++++---------- .../resources/bioyond/YB_bottle_carriers.py | 48 ++++++++--------- unilabos/resources/bioyond/YB_bottles.py | 16 +++--- 6 files changed, 84 insertions(+), 84 deletions(-) diff --git a/test/resources/test_resourcetreeset.py b/test/resources/test_resourcetreeset.py index 99c6a984..3d3bd4e7 100644 --- a/test/resources/test_resourcetreeset.py +++ b/test/resources/test_resourcetreeset.py @@ -15,9 +15,9 @@ lab_registry.setup() type_mapping = { - "加样头(大)": ("YB_jia_yang_tou_da_1X1_carrier", "3a190ca0-b2f6-9aeb-8067-547e72c11469"), + "加样头(大)": ("YB_jia_yang_tou_da", "3a190ca0-b2f6-9aeb-8067-547e72c11469"), "液": ("YB_1BottleCarrier", "3a190ca1-2add-2b23-f8e1-bbd348b7f790"), - "配液瓶(小)板": ("YB_6x_SmallSolutionBottleCarrier", "3a190c8b-3284-af78-d29f-9a69463ad047"), + "配液瓶(小)板": ("YB_peiyepingxiaoban", "3a190c8b-3284-af78-d29f-9a69463ad047"), "配液瓶(小)": ("YB_pei_ye_xiao_Bottler", "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"), } diff --git a/unilabos/devices/workstation/bioyond_studio/config.py b/unilabos/devices/workstation/bioyond_studio/config.py index adb2d720..c416ab86 100644 --- a/unilabos/devices/workstation/bioyond_studio/config.py +++ b/unilabos/devices/workstation/bioyond_studio/config.py @@ -234,22 +234,22 @@ WAREHOUSE_MAPPING = { # 物料类型配置 MATERIAL_TYPE_MAPPINGS = { - "100ml液体": ("YB_1Bottle100mlCarrier", "d37166b3-ecaa-481e-bd84-3032b795ba07"), - "液": ("YB_1BottleCarrier", "3a190ca1-2add-2b23-f8e1-bbd348b7f790"), - "高粘液": ("YB_1GaoNianYeBottleCarrier", "abe8df30-563d-43d2-85e0-cabec59ddc16"), - "加样头(大)": ("YB_jia_yang_tou_da_1X1_carrier", "3a190ca0-b2f6-9aeb-8067-547e72c11469"), - # "加样头(大)板": ("YB_jia_yang_tou_da_1X1_carrier", "a8e714ae-2a4e-4eb9-9614-e4c140ec3f16"), - "5ml分液瓶板": ("YB_6x5ml_DispensingVialCarrier", "3a192fa4-007d-ec7b-456e-2a8be7a13f23"), - "5ml分液瓶": ("YB_fen_ye_5ml_Bottle", "3a192c2a-ebb7-58a1-480d-8b3863bf74f4"), - "20ml分液瓶板": ("YB_6x20ml_DispensingVialCarrier", "3a192fa4-47db-3449-162a-eaf8aba57e27"), - "20ml分液瓶": ("YB_fen_ye_20ml_Bottle", "3a192c2b-19e8-f0a3-035e-041ca8ca1035"), - "配液瓶(小)板": ("YB_6x_SmallSolutionBottleCarrier", "3a190c8b-3284-af78-d29f-9a69463ad047"), + "100ml液体": ("YB_100ml_yeti", "d37166b3-ecaa-481e-bd84-3032b795ba07"), + "液": ("YB_ye", "3a190ca1-2add-2b23-f8e1-bbd348b7f790"), + "高粘液": ("YB_gaonianye", "abe8df30-563d-43d2-85e0-cabec59ddc16"), + "加样头(大)": ("YB_jia_yang_tou_da", "3a190ca0-b2f6-9aeb-8067-547e72c11469"), + # "加样头(大)板": ("YB_jia_yang_tou_da", "a8e714ae-2a4e-4eb9-9614-e4c140ec3f16"), + "5ml分液瓶板": ("YB_5ml_fenyepingban", "3a192fa4-007d-ec7b-456e-2a8be7a13f23"), + "5ml分液瓶": ("YB_5ml_fenyeping", "3a192c2a-ebb7-58a1-480d-8b3863bf74f4"), + "20ml分液瓶板": ("YB_20ml_fenyepingban", "3a192fa4-47db-3449-162a-eaf8aba57e27"), + "20ml分液瓶": ("YB_20ml_fenyeping", "3a192c2b-19e8-f0a3-035e-041ca8ca1035"), + "配液瓶(小)板": ("YB_peiyepingxiaoban", "3a190c8b-3284-af78-d29f-9a69463ad047"), "配液瓶(小)": ("YB_pei_ye_xiao_Bottle", "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"), - "配液瓶(大)板": ("YB_4x_LargeSolutionBottleCarrier", "53e50377-32dc-4781-b3c0-5ce45bc7dc27"), + "配液瓶(大)板": ("YB_peiyepingdaban", "53e50377-32dc-4781-b3c0-5ce45bc7dc27"), "配液瓶(大)": ("YB_pei_ye_da_Bottle", "19c52ad1-51c5-494f-8854-576f4ca9c6ca"), - "适配器块": ("YB_AdapterBlock", "efc3bb32-d504-4890-91c0-b64ed3ac80cf"), - "枪头盒": ("YB_TipBox", "3a192c2e-20f3-a44a-0334-c8301839d0b3"), - "枪头": ("YB_Pipette_Tip", "b6196971-1050-46da-9927-333e8dea062d"), + "适配器块": ("YB_shi_pei_qi_kuai", "efc3bb32-d504-4890-91c0-b64ed3ac80cf"), + "枪头盒": ("YB_qiang_tou_he", "3a192c2e-20f3-a44a-0334-c8301839d0b3"), + "枪头": ("YB_qiang_tou", "b6196971-1050-46da-9927-333e8dea062d"), } SOLID_LIQUID_MAPPINGS = { diff --git a/unilabos/registry/resources/bioyond/YB_bottle.yaml b/unilabos/registry/resources/bioyond/YB_bottle.yaml index 6d8a380d..7cafab48 100644 --- a/unilabos/registry/resources/bioyond/YB_bottle.yaml +++ b/unilabos/registry/resources/bioyond/YB_bottle.yaml @@ -1,37 +1,37 @@ -YB_Pipette_Tip: +YB_qiang_tou: category: - yb3 - YB_bottle class: - module: unilabos.resources.bioyond.YB_bottles:YB_Pipette_Tip + module: unilabos.resources.bioyond.YB_bottles:YB_qiang_tou type: pylabrobot - description: YB_Pipette_Tip + description: YB_qiang_tou handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_fen_ye_20ml_Bottle: +YB_20ml_fenyeping: category: - yb3 - YB_bottle class: - module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_20ml_Bottle + module: unilabos.resources.bioyond.YB_bottles:YB_20ml_fenyeping type: pylabrobot - description: YB_fen_ye_20ml_Bottle + description: YB_20ml_fenyeping handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_fen_ye_5ml_Bottle: +YB_5ml_fenyeping: category: - yb3 - YB_bottle class: - module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_5ml_Bottle + module: unilabos.resources.bioyond.YB_bottles:YB_5ml_fenyeping type: pylabrobot - description: YB_fen_ye_5ml_Bottle + description: YB_5ml_fenyeping handles: [] icon: '' init_param_schema: {} diff --git a/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml b/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml index eb2ff6fc..a387ca64 100644 --- a/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml +++ b/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml @@ -1,11 +1,11 @@ -YB_1Bottle100mlCarrier: +YB_100ml_yeti: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1Bottle100mlCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_100ml_yeti type: pylabrobot - description: YB_1Bottle100mlCarrier + description: YB_100ml_yeti handles: [] icon: '' init_param_schema: {} @@ -24,27 +24,27 @@ YB_1BottleCarrier: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_1GaoNianYeBottleCarrier: +YB_gaonianye: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1GaoNianYeBottleCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_gaonianye type: pylabrobot - description: YB_1GaoNianYeBottleCarrier + description: YB_gaonianye handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_4x_LargeSolutionBottleCarrier: +YB_peiyepingdaban: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_4x_LargeSolutionBottleCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingdaban type: pylabrobot - description: YB_4x_LargeSolutionBottleCarrier + description: YB_peiyepingdaban handles: [] icon: '' init_param_schema: {} @@ -76,66 +76,66 @@ YB_6VialCarrier: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_6x20ml_DispensingVialCarrier: +YB_20ml_fenyepingban: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x20ml_DispensingVialCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_20ml_fenyepingban type: pylabrobot - description: YB_6x20ml_DispensingVialCarrier + description: YB_20ml_fenyepingban handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_6x5ml_DispensingVialCarrier: +YB_5ml_fenyepingban: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x5ml_DispensingVialCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_5ml_fenyepingban type: pylabrobot - description: YB_6x5ml_DispensingVialCarrier + description: YB_5ml_fenyepingban handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_6x_SmallSolutionBottleCarrier: +YB_peiyepingxiaoban: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x_SmallSolutionBottleCarrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingxiaoban type: pylabrobot - description: YB_6x_SmallSolutionBottleCarrier + description: YB_peiyepingxiaoban handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_AdapterBlock: +YB_shi_pei_qi_kuai: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_AdapterBlock + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_shi_pei_qi_kuai type: pylabrobot - description: YB_AdapterBlock + description: YB_shi_pei_qi_kuai handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_TipBox: +YB_qiang_tou_he: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_TipBox + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_qiang_tou_he type: pylabrobot - description: YB_TipBox + description: YB_qiang_tou_he handles: [] icon: '' init_param_schema: {} @@ -167,14 +167,14 @@ YB_jia_yang_tou_da: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_jia_yang_tou_da_1X1_carrier: +YB_jia_yang_tou_da_Carrier: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_jia_yang_tou_da_1X1_carrier + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_jia_yang_tou_da_Carrier type: pylabrobot - description: YB_jia_yang_tou_da_1X1_carrier + description: YB_jia_yang_tou_da_Carrier handles: [] icon: '' init_param_schema: {} diff --git a/unilabos/resources/bioyond/YB_bottle_carriers.py b/unilabos/resources/bioyond/YB_bottle_carriers.py index d61a327f..28c8fcc1 100644 --- a/unilabos/resources/bioyond/YB_bottle_carriers.py +++ b/unilabos/resources/bioyond/YB_bottle_carriers.py @@ -6,11 +6,11 @@ from unilabos.resources.bioyond.YB_bottles import ( YB_ye_Bottle, YB_ye_100ml_Bottle, YB_gao_nian_ye_Bottle, - YB_fen_ye_5ml_Bottle, - YB_fen_ye_20ml_Bottle, + YB_5ml_fenyeping, + YB_20ml_fenyeping, YB_pei_ye_xiao_Bottle, YB_pei_ye_da_Bottle, - YB_Pipette_Tip, + YB_qiang_tou, ) # 命名约定:试剂瓶-Bottle,烧杯-Beaker,烧瓶-Flask,小瓶-Vial @@ -243,7 +243,7 @@ def YB_1BottleCarrier(name: str) -> BottleCarrier: # 高粘液瓶载架 - 单个中央位置 -def YB_1GaoNianYeBottleCarrier(name: str) -> BottleCarrier: +def YB_gaonianye(name: str) -> BottleCarrier: # 载架尺寸 (mm) carrier_size_x = 127.8 @@ -270,7 +270,7 @@ def YB_1GaoNianYeBottleCarrier(name: str) -> BottleCarrier: resource_size_y=beaker_diameter, name_prefix=name, ), - model="YB_1GaoNianYeBottleCarrier", + model="YB_gaonianye", ) carrier.num_items_x = 1 carrier.num_items_y = 1 @@ -280,7 +280,7 @@ def YB_1GaoNianYeBottleCarrier(name: str) -> BottleCarrier: # 100ml液体瓶载架 - 单个中央位置 -def YB_1Bottle100mlCarrier(name: str) -> BottleCarrier: +def YB_100ml_yeti(name: str) -> BottleCarrier: # 载架尺寸 (mm) carrier_size_x = 127.8 @@ -307,7 +307,7 @@ def YB_1Bottle100mlCarrier(name: str) -> BottleCarrier: resource_size_y=beaker_diameter, name_prefix=name, ), - model="YB_1Bottle100mlCarrier", + model="YB_100ml_yeti", ) carrier.num_items_x = 1 carrier.num_items_y = 1 @@ -316,7 +316,7 @@ def YB_1Bottle100mlCarrier(name: str) -> BottleCarrier: return carrier # 5ml分液瓶板 - 4x2布局,8个位置 -def YB_6x5ml_DispensingVialCarrier(name: str) -> BottleCarrier: +def YB_5ml_fenyepingban(name: str) -> BottleCarrier: # 载架尺寸 (mm) @@ -355,18 +355,18 @@ def YB_6x5ml_DispensingVialCarrier(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_6x5ml_DispensingVialCarrier", + model="YB_5ml_fenyepingban", ) carrier.num_items_x = 4 carrier.num_items_y = 2 carrier.num_items_z = 1 ordering = ["A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"] for i in range(8): - carrier[i] = YB_fen_ye_5ml_Bottle(f"{name}_vial_{ordering[i]}") + carrier[i] = YB_5ml_fenyeping(f"{name}_vial_{ordering[i]}") return carrier # 20ml分液瓶板 - 4x2布局,8个位置 -def YB_6x20ml_DispensingVialCarrier(name: str) -> BottleCarrier: +def YB_20ml_fenyepingban(name: str) -> BottleCarrier: # 载架尺寸 (mm) @@ -405,18 +405,18 @@ def YB_6x20ml_DispensingVialCarrier(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_6x20ml_DispensingVialCarrier", + model="YB_20ml_fenyepingban", ) carrier.num_items_x = 4 carrier.num_items_y = 2 carrier.num_items_z = 1 ordering = ["A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"] for i in range(8): - carrier[i] = YB_fen_ye_20ml_Bottle(f"{name}_vial_{ordering[i]}") + carrier[i] = YB_20ml_fenyeping(f"{name}_vial_{ordering[i]}") return carrier # 配液瓶(小)板 - 4x2布局,8个位置 -def YB_6x_SmallSolutionBottleCarrier(name: str) -> BottleCarrier: +def YB_peiyepingxiaoban(name: str) -> BottleCarrier: # 载架尺寸 (mm) @@ -455,7 +455,7 @@ def YB_6x_SmallSolutionBottleCarrier(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_6x_SmallSolutionBottleCarrier", + model="YB_peiyepingxiaoban", ) carrier.num_items_x = 4 carrier.num_items_y = 2 @@ -467,7 +467,7 @@ def YB_6x_SmallSolutionBottleCarrier(name: str) -> BottleCarrier: # 配液瓶(大)板 - 2x2布局,4个位置 -def YB_4x_LargeSolutionBottleCarrier(name: str) -> BottleCarrier: +def YB_peiyepingdaban(name: str) -> BottleCarrier: # 载架尺寸 (mm) carrier_size_x = 127.8 @@ -505,7 +505,7 @@ def YB_4x_LargeSolutionBottleCarrier(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_4x_LargeSolutionBottleCarrier", + model="YB_peiyepingdaban", ) carrier.num_items_x = 2 carrier.num_items_y = 2 @@ -516,7 +516,7 @@ def YB_4x_LargeSolutionBottleCarrier(name: str) -> BottleCarrier: return carrier # 加样头(大)板 - 1x1布局,1个位置 -def YB_jia_yang_tou_da_1X1_carrier(name: str) -> BottleCarrier: +def YB_jia_yang_tou_da_Carrier(name: str) -> BottleCarrier: # 载架尺寸 (mm) carrier_size_x = 127.8 @@ -554,7 +554,7 @@ def YB_jia_yang_tou_da_1X1_carrier(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_6x_LargeDispenseHeadCarrier", + model="YB_jia_yang_tou_da_Carrier", ) carrier.num_items_x = 1 carrier.num_items_y = 1 @@ -563,7 +563,7 @@ def YB_jia_yang_tou_da_1X1_carrier(name: str) -> BottleCarrier: return carrier -def YB_AdapterBlock(name: str) -> BottleCarrier: +def YB_shi_pei_qi_kuai(name: str) -> BottleCarrier: """适配器块 - 单个中央位置""" # 载架尺寸 (mm) @@ -591,7 +591,7 @@ def YB_AdapterBlock(name: str) -> BottleCarrier: resource_size_y=adapter_diameter, name_prefix=name, ), - model="YB_AdapterBlock", + model="YB_shi_pei_qi_kuai", ) carrier.num_items_x = 1 carrier.num_items_y = 1 @@ -600,7 +600,7 @@ def YB_AdapterBlock(name: str) -> BottleCarrier: return carrier -def YB_TipBox(name: str) -> BottleCarrier: +def YB_qiang_tou_he(name: str) -> BottleCarrier: """枪头盒 - 8x12布局,96个位置""" # 载架尺寸 (mm) @@ -639,7 +639,7 @@ def YB_TipBox(name: str) -> BottleCarrier: size_y=carrier_size_y, size_z=carrier_size_z, sites=sites, - model="YB_TipBox", + model="YB_qiang_tou_he", ) carrier.num_items_x = 12 carrier.num_items_y = 8 @@ -648,6 +648,6 @@ def YB_TipBox(name: str) -> BottleCarrier: for i in range(96): row = chr(65 + i // 12) # A-H col = (i % 12) + 1 # 1-12 - carrier[i] = YB_Pipette_Tip(f"{name}_tip_{row}{col}") + carrier[i] = YB_qiang_tou(f"{name}_tip_{row}{col}") return carrier diff --git a/unilabos/resources/bioyond/YB_bottles.py b/unilabos/resources/bioyond/YB_bottles.py index 83b73e46..c8f1c950 100644 --- a/unilabos/resources/bioyond/YB_bottles.py +++ b/unilabos/resources/bioyond/YB_bottles.py @@ -15,7 +15,7 @@ def YB_jia_yang_tou_da( height=height, max_volume=max_volume, barcode=barcode, - model="YB_jia_yang_tou_da_1X1_carrier", + model="YB_jia_yang_tou_da", ) """液1x1""" @@ -51,7 +51,7 @@ def YB_ye_100ml_Bottle( height=height, max_volume=max_volume, barcode=barcode, - model="YB_1Bottle100mlCarrier", + model="YB_100ml_yeti", ) """高粘液""" @@ -73,7 +73,7 @@ def YB_gao_nian_ye_Bottle( ) """5ml分液瓶""" -def YB_fen_ye_5ml_Bottle( +def YB_5ml_fenyeping( name: str, diameter: float = 20.0, height: float = 50.0, @@ -87,11 +87,11 @@ def YB_fen_ye_5ml_Bottle( height=height, max_volume=max_volume, barcode=barcode, - model="YB_fen_ye_5ml_Bottle", + model="YB_5ml_fenyeping", ) """20ml分液瓶""" -def YB_fen_ye_20ml_Bottle( +def YB_20ml_fenyeping( name: str, diameter: float = 30.0, height: float = 65.0, @@ -105,7 +105,7 @@ def YB_fen_ye_20ml_Bottle( height=height, max_volume=max_volume, barcode=barcode, - model="YB_fen_ye_20ml_Bottle", + model="YB_20ml_fenyeping", ) """配液瓶(小)""" @@ -145,7 +145,7 @@ def YB_pei_ye_da_Bottle( ) """枪头""" -def YB_Pipette_Tip( +def YB_qiang_tou( name: str, diameter: float = 10.0, height: float = 50.0, @@ -159,5 +159,5 @@ def YB_Pipette_Tip( height=height, max_volume=max_volume, barcode=barcode, - model="YB_Pipette_Tip", + model="YB_qiang_tou", )