diff --git a/unilabos/resources/bioyond/YB_warehouses.py b/unilabos/resources/bioyond/YB_warehouses.py index 8c49e99..7461f3d 100644 --- a/unilabos/resources/bioyond/YB_warehouses.py +++ b/unilabos/resources/bioyond/YB_warehouses.py @@ -83,11 +83,11 @@ def bioyond_warehouse_reagent_storage(name: str) -> WareHouse: category="warehouse", ) -def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: - """创建BioYond站内Tip盒堆栈(A01~B03),用于存放枪头盒""" +def bioyond_warehouse_tipbox_storage_left(name: str) -> WareHouse: + """创建BioYond站内Tip盒堆栈左侧部分(A02~B03),2列2行""" return warehouse_factory( name=name, - num_items_x=3, # 3列(01-03) + num_items_x=2, # 2列 num_items_y=2, # 2行(A-B) num_items_z=1, # 1层 dx=10.0, @@ -97,7 +97,25 @@ def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: item_dy=96.0, item_dz=120.0, category="warehouse", - col_offset=0, + col_offset=1, # 从02开始: A02, A03 + layout="row-major", + ) + +def bioyond_warehouse_tipbox_storage_right(name: str) -> WareHouse: + """创建BioYond站内Tip盒堆栈右侧部分(A01~B01),1列2行""" + return warehouse_factory( + name=name, + num_items_x=1, # 1列 + num_items_y=2, # 2行(A-B) + num_items_z=1, # 1层 + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=137.0, + item_dy=96.0, + item_dz=120.0, + category="warehouse", + col_offset=0, # 从01开始: A01 layout="row-major", ) @@ -167,7 +185,7 @@ def bioyond_warehouse_1x4x2(name: str) -> WareHouse: def bioyond_warehouse_1x2x2(name: str) -> WareHouse: """创建BioYond 1x2x2仓库(1列×2行×2层)- 旧版本,已弃用 - + 布局(2层): 层1: A01 B01 @@ -191,7 +209,7 @@ def bioyond_warehouse_1x2x2(name: str) -> WareHouse: def bioyond_warehouse_2x2x1(name: str) -> WareHouse: """创建BioYond 2x2x1仓库(2行×2列×1层) - + 布局: A01 | A02 B01 | B02 @@ -246,14 +264,14 @@ def bioyond_warehouse_1x3x3(name: str) -> WareHouse: def bioyond_warehouse_5x3x1(name: str, row_offset: int = 0) -> WareHouse: """创建BioYond 5x3x1仓库(5行×3列×1层) - + 标准布局(row_offset=0): A01 | A02 | A03 B01 | B02 | B03 C01 | C02 | C03 D01 | D02 | D03 E01 | E02 | E03 - + 带偏移布局(row_offset=5): F01 | F02 | F03 G01 | G02 | G03 @@ -281,7 +299,7 @@ def bioyond_warehouse_5x3x1(name: str, row_offset: int = 0) -> WareHouse: def bioyond_warehouse_3x3x1(name: str) -> WareHouse: """创建BioYond 3x3x1仓库(3行×3列×1层) - + 布局: A01 | A02 | A03 B01 | B02 | B03 diff --git a/unilabos/resources/bioyond/decks.py b/unilabos/resources/bioyond/decks.py index 392b4a9..d70d4a4 100644 --- a/unilabos/resources/bioyond/decks.py +++ b/unilabos/resources/bioyond/decks.py @@ -18,7 +18,8 @@ from unilabos.resources.bioyond.YB_warehouses import ( bioyond_warehouse_1x8x4, bioyond_warehouse_reagent_storage, # bioyond_warehouse_liquid_preparation, - bioyond_warehouse_tipbox_storage, # 新增:Tip盒堆栈 + bioyond_warehouse_tipbox_storage_left, # 新增:Tip盒堆栈(左) + bioyond_warehouse_tipbox_storage_right, # 新增:Tip盒堆栈(右) bioyond_warehouse_density_vial, ) @@ -47,16 +48,17 @@ class BIOYOND_PolymerReactionStation_Deck(Deck): "堆栈1右": bioyond_warehouse_1x4x4_right("堆栈1右"), # 右侧堆栈: A05~D08 "站内试剂存放堆栈": bioyond_warehouse_reagent_storage("站内试剂存放堆栈"), # A01~A02 # "移液站内10%分装液体准备仓库": bioyond_warehouse_liquid_preparation("移液站内10%分装液体准备仓库"), # A01~B04 - "站内Tip盒堆栈": bioyond_warehouse_tipbox_storage("站内Tip盒堆栈"), # A01~B03, 存放枪头盒. + "站内Tip盒堆栈(左)": bioyond_warehouse_tipbox_storage_left("站内Tip盒堆栈(左)"), # A02~B03 + "站内Tip盒堆栈(右)": bioyond_warehouse_tipbox_storage_right("站内Tip盒堆栈(右)"), # A01~B01 "测量小瓶仓库(测密度)": bioyond_warehouse_density_vial("测量小瓶仓库(测密度)"), # A01~B03 } self.warehouse_locations = { - "堆栈1左": Coordinate(-200.0, 450.0, 0.0), # 左侧位置 - "堆栈1右": Coordinate(2350.0, 450.0, 0.0), # 右侧位置 - "站内试剂存放堆栈": Coordinate(730.0, 390.0, 0.0), - # "移液站内10%分装液体准备仓库": Coordinate(1200.0, 600.0, 0.0), - "站内Tip盒堆栈": Coordinate(300.0, 150.0, 0.0), - "测量小瓶仓库(测密度)": Coordinate(940.0, 530.0, 0.0), + "堆栈1左": Coordinate(-200.0, 400.0, 0.0), # 左侧位置 + "堆栈1右": Coordinate(2350.0, 400.0, 0.0), # 右侧位置 + "站内试剂存放堆栈": Coordinate(640.0, 400.0, 0.0), + "站内Tip盒堆栈(左)": Coordinate(300.0, 100.0, 0.0), + "站内Tip盒堆栈(右)": Coordinate(2250.0, 100.0, 0.0), # 向右偏移 2 * item_dx (137.0) + "测量小瓶仓库(测密度)": Coordinate(1000.0, 530.0, 0.0), } for warehouse_name, warehouse in self.warehouses.items(): @@ -89,9 +91,9 @@ class BIOYOND_PolymerPreparationStation_Deck(Deck): "溶液堆栈": bioyond_warehouse_1x4x4("溶液堆栈"), # 4行×4列 (A01-D04) } self.warehouse_locations = { - "粉末堆栈": Coordinate(0.0, 450.0, 0.0), - "试剂堆栈": Coordinate(1850.0, 200.0, 0.0), - "溶液堆栈": Coordinate(2500.0, 450.0, 0.0), + "粉末堆栈": Coordinate(-200.0, 400.0, 0.0), + "试剂堆栈": Coordinate(1750.0, 160.0, 0.0), + "溶液堆栈": Coordinate(2350.0, 400.0, 0.0), } for warehouse_name, warehouse in self.warehouses.items(): diff --git a/unilabos/resources/bioyond/warehouses.py b/unilabos/resources/bioyond/warehouses.py index 503dadb..547af1e 100644 --- a/unilabos/resources/bioyond/warehouses.py +++ b/unilabos/resources/bioyond/warehouses.py @@ -97,11 +97,11 @@ def bioyond_warehouse_reagent_storage(name: str) -> WareHouse: layout="vertical-col-major", # ⭐ 竖向warehouse专用布局 ) -def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: - """创建BioYond站内Tip盒堆栈(A01~B03),用于存放枪头盒""" +def bioyond_warehouse_tipbox_storage_left(name: str) -> WareHouse: + """创建BioYond站内Tip盒堆栈左侧部分(A02~B03),2列2行""" return warehouse_factory( name=name, - num_items_x=3, # 3列(01-03) + num_items_x=2, # 2列 num_items_y=2, # 2行(A-B) num_items_z=1, # 1层 dx=10.0, @@ -111,7 +111,25 @@ def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: item_dy=96.0, item_dz=120.0, category="warehouse", - col_offset=0, + col_offset=1, # 从02开始: A02, A03 + layout="row-major", + ) + +def bioyond_warehouse_tipbox_storage_right(name: str) -> WareHouse: + """创建BioYond站内Tip盒堆栈右侧部分(A01~B01),1列2行""" + return warehouse_factory( + name=name, + num_items_x=1, # 1列 + num_items_y=2, # 2行(A-B) + num_items_z=1, # 1层 + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=137.0, + item_dy=96.0, + item_dz=120.0, + category="warehouse", + col_offset=0, # 从01开始: A01 layout="row-major", ) diff --git a/unilabos/resources/graphio.py b/unilabos/resources/graphio.py index e46a4cf..1c514d4 100644 --- a/unilabos/resources/graphio.py +++ b/unilabos/resources/graphio.py @@ -811,6 +811,15 @@ def resource_bioyond_to_plr(bioyond_materials: list[dict], type_mapping: Dict[st logger.warning(f"物料 {material['name']} 的列号 x={x_val} 超出范围,无法映射到堆栈1左或堆栈1右") continue + # 特殊处理: Bioyond的"站内Tip盒堆栈"也需要进行拆分映射 + if wh_name == "站内Tip盒堆栈": + y_val = loc.get("y", 1) + if y_val == 1: + wh_name = "站内Tip盒堆栈(右)" + elif y_val in [2, 3]: + wh_name = "站内Tip盒堆栈(左)" + y = y - 1 # 调整列号,因为左侧仓库对应的 Bioyond y=2 实际上是它的第1列 + if hasattr(deck, "warehouses") and wh_name in deck.warehouses: warehouse = deck.warehouses[wh_name] logger.debug(f"[Warehouse匹配] 找到warehouse: {wh_name} (容量: {warehouse.capacity}, 行×列: {warehouse.num_items_x}×{warehouse.num_items_y})") @@ -837,7 +846,7 @@ def resource_bioyond_to_plr(bioyond_materials: list[dict], type_mapping: Dict[st row_idx = y - 1 # Bioyond的y(01,02,03) → row索引(0,1,2) layer_idx = z - 1 - idx = layer_idx * (warehouse.num_items_x * warehouse.num_items_y) + row_idx * warehouse.num_items_x + col_idx + idx = layer_idx * (warehouse.num_items_x * warehouse.num_items_y) + row_idx * warehouse.num_items_y + col_idx logger.debug(f"🔍 竖向warehouse {wh_name}: Bioyond(x={x},y={y},z={z}) → warehouse(col={col_idx},row={row_idx},layer={layer_idx}) → idx={idx}, capacity={warehouse.capacity}") # 普通横向warehouse的处理 diff --git a/unilabos/test/experiments/dispensing_station_bioyond.json b/unilabos/test/experiments/dispensing_station_bioyond.json index 0be4129..a6bd533 100644 --- a/unilabos/test/experiments/dispensing_station_bioyond.json +++ b/unilabos/test/experiments/dispensing_station_bioyond.json @@ -9,49 +9,125 @@ "parent": null, "type": "device", "class": "bioyond_dispensing_station", - "config": { - "config": { - "api_key": "DE9BDDA0", - "api_host": "http://192.168.1.200:44388", - "material_type_mappings": { - "BIOYOND_PolymerStation_1FlaskCarrier": [ - "烧杯", - "3a14196b-24f2-ca49-9081-0cab8021bf1a" - ], - "BIOYOND_PolymerStation_1BottleCarrier": [ - "试剂瓶", - "3a14196b-8bcf-a460-4f74-23f21ca79e72" - ], - "BIOYOND_PolymerStation_6StockCarrier": [ - "分装板", - "3a14196e-5dfe-6e21-0c79-fe2036d052c4" - ], - "BIOYOND_PolymerStation_Liquid_Vial": [ - "10%分装小瓶", - "3a14196c-76be-2279-4e22-7310d69aed68" - ], - "BIOYOND_PolymerStation_Solid_Vial": [ - "90%分装小瓶", - "3a14196c-cdcf-088d-dc7d-5cf38f0ad9ea" - ], - "BIOYOND_PolymerStation_8StockCarrier": [ - "样品板", - "3a14196e-b7a0-a5da-1931-35f3000281e9" - ], - "BIOYOND_PolymerStation_Solid_Stock": [ - "样品瓶", - "3a14196a-cf7d-8aea-48d8-b9662c7dba94" - ] - } - }, - "deck": { - "data": { - "_resource_child_name": "Bioyond_Dispensing_Deck", - "_resource_type": "unilabos.resources.bioyond.decks:BIOYOND_PolymerPreparationStation_Deck" - } - }, - "protocol_type": [] + "position": { + "x": 0, + "y": 0, + "z": 0 }, + "config": { + "api_key": "YOUR_API_KEY", + "api_host": "http://your-api-host:port", + "material_type_mappings": { + "BIOYOND_PolymerStation_1FlaskCarrier": [ + "烧杯", + "uuid-placeholder-flask" + ], + "BIOYOND_PolymerStation_1BottleCarrier": [ + "试剂瓶", + "uuid-placeholder-bottle" + ], + "BIOYOND_PolymerStation_6StockCarrier": [ + "分装板", + "uuid-placeholder-stock-6" + ], + "BIOYOND_PolymerStation_Liquid_Vial": [ + "10%分装小瓶", + "uuid-placeholder-liquid-vial" + ], + "BIOYOND_PolymerStation_Solid_Vial": [ + "90%分装小瓶", + "uuid-placeholder-solid-vial" + ], + "BIOYOND_PolymerStation_8StockCarrier": [ + "样品板", + "uuid-placeholder-stock-8" + ], + "BIOYOND_PolymerStation_Solid_Stock": [ + "样品瓶", + "uuid-placeholder-solid-stock" + ] + }, + "warehouse_mapping": { + "粉末堆栈": { + "uuid": "uuid-placeholder-powder-stack", + "site_uuids": { + "A01": "uuid-placeholder-powder-A01", + "A02": "uuid-placeholder-powder-A02", + "A03": "uuid-placeholder-powder-A03", + "A04": "uuid-placeholder-powder-A04", + "B01": "uuid-placeholder-powder-B01", + "B02": "uuid-placeholder-powder-B02", + "B03": "uuid-placeholder-powder-B03", + "B04": "uuid-placeholder-powder-B04", + "C01": "uuid-placeholder-powder-C01", + "C02": "uuid-placeholder-powder-C02", + "C03": "uuid-placeholder-powder-C03", + "C04": "uuid-placeholder-powder-C04", + "D01": "uuid-placeholder-powder-D01", + "D02": "uuid-placeholder-powder-D02", + "D03": "uuid-placeholder-powder-D03", + "D04": "uuid-placeholder-powder-D04" + } + }, + "溶液堆栈": { + "uuid": "uuid-placeholder-liquid-stack", + "site_uuids": { + "A01": "uuid-placeholder-liquid-A01", + "A02": "uuid-placeholder-liquid-A02", + "A03": "uuid-placeholder-liquid-A03", + "A04": "uuid-placeholder-liquid-A04", + "B01": "uuid-placeholder-liquid-B01", + "B02": "uuid-placeholder-liquid-B02", + "B03": "uuid-placeholder-liquid-B03", + "B04": "uuid-placeholder-liquid-B04", + "C01": "uuid-placeholder-liquid-C01", + "C02": "uuid-placeholder-liquid-C02", + "C03": "uuid-placeholder-liquid-C03", + "C04": "uuid-placeholder-liquid-C04", + "D01": "uuid-placeholder-liquid-D01", + "D02": "uuid-placeholder-liquid-D02", + "D03": "uuid-placeholder-liquid-D03", + "D04": "uuid-placeholder-liquid-D04" + } + }, + "试剂堆栈": { + "uuid": "uuid-placeholder-reagent-stack", + "site_uuids": { + "A01": "uuid-placeholder-reagent-A01", + "A02": "uuid-placeholder-reagent-A02", + "A03": "uuid-placeholder-reagent-A03", + "A04": "uuid-placeholder-reagent-A04", + "B01": "uuid-placeholder-reagent-B01", + "B02": "uuid-placeholder-reagent-B02", + "B03": "uuid-placeholder-reagent-B03", + "B04": "uuid-placeholder-reagent-B04" + } + } + }, + "http_service_config": { + "http_service_host": "127.0.0.1", + "http_service_port": 8080 + }, + "material_default_parameters": { + "NMP": { + "unit": "毫升", + "density": "1.03", + "densityUnit": "g/mL", + "description": "N-甲基吡咯烷酮 (N-Methyl-2-pyrrolidone)" + } + }, + "material_type_parameters": {} + }, + "deck": { + "data": { + "_resource_child_name": "Bioyond_Dispensing_Deck", + "_resource_type": "unilabos.resources.bioyond.decks:BIOYOND_PolymerPreparationStation_Deck" + } + }, + "size_x": 2700.0, + "size_y": 1080.0, + "size_z": 1500.0, + "protocol_type": [], "data": {} }, { @@ -80,4 +156,4 @@ "data": {} } ] -} +} \ No newline at end of file diff --git a/unilabos/test/experiments/reaction_station_bioyond.json b/unilabos/test/experiments/reaction_station_bioyond.json index dc3d89f..74f2d6d 100644 --- a/unilabos/test/experiments/reaction_station_bioyond.json +++ b/unilabos/test/experiments/reaction_station_bioyond.json @@ -20,65 +20,194 @@ "z": 0 }, "config": { - "config": { - "api_key": "DE9BDDA0", - "api_host": "http://192.168.1.200:44402", - "workflow_mappings": { - "reactor_taken_out": "3a16081e-4788-ca37-eff4-ceed8d7019d1", - "reactor_taken_in": "3a160df6-76b3-0957-9eb0-cb496d5721c6", - "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)": "3a16082a-96ac-0449-446a-4ed39f3365b6", - "liquid_feeding_beaker": "3a16087e-124f-8ddb-8ec1-c2dff09ca784", - "Drip_back": "3a162cf9-6aac-565a-ddd7-682ba1796a4a" + "api_key": "YOUR_API_KEY", + "api_host": "http://your-api-host:port", + "workflow_mappings": { + "reactor_taken_out": "workflow-uuid-reactor-out", + "reactor_taken_in": "workflow-uuid-reactor-in", + "Solid_feeding_vials": "workflow-uuid-solid-vials", + "Liquid_feeding_vials(non-titration)": "workflow-uuid-liquid-vials", + "Liquid_feeding_solvents": "workflow-uuid-solvents", + "Liquid_feeding(titration)": "workflow-uuid-titration", + "liquid_feeding_beaker": "workflow-uuid-beaker", + "Drip_back": "workflow-uuid-drip-back" + }, + "material_type_mappings": { + "BIOYOND_PolymerStation_Reactor": [ + "反应器", + "uuid-placeholder-reactor" + ], + "BIOYOND_PolymerStation_1BottleCarrier": [ + "试剂瓶", + "uuid-placeholder-bottle" + ], + "BIOYOND_PolymerStation_1FlaskCarrier": [ + "烧杯", + "uuid-placeholder-beaker" + ], + "BIOYOND_PolymerStation_6StockCarrier": [ + "样品板", + "uuid-placeholder-sample-plate" + ], + "BIOYOND_PolymerStation_Solid_Vial": [ + "90%分装小瓶", + "uuid-placeholder-solid-vial" + ], + "BIOYOND_PolymerStation_Liquid_Vial": [ + "10%分装小瓶", + "uuid-placeholder-liquid-vial" + ], + "BIOYOND_PolymerStation_TipBox": [ + "枪头盒", + "uuid-placeholder-tipbox" + ], + "BIOYOND_PolymerStation_Measurement_Vial": [ + "测量小瓶", + "uuid-placeholder-measure-vial" + ] + }, + "warehouse_mapping": { + "堆栈1左": { + "uuid": "uuid-placeholder-stack1-left", + "site_uuids": { + "A01": "uuid-placeholder-site-A01", + "A02": "uuid-placeholder-site-A02", + "A03": "uuid-placeholder-site-A03", + "A04": "uuid-placeholder-site-A04", + "B01": "uuid-placeholder-site-B01", + "B02": "uuid-placeholder-site-B02", + "B03": "uuid-placeholder-site-B03", + "B04": "uuid-placeholder-site-B04", + "C01": "uuid-placeholder-site-C01", + "C02": "uuid-placeholder-site-C02", + "C03": "uuid-placeholder-site-C03", + "C04": "uuid-placeholder-site-C04", + "D01": "uuid-placeholder-site-D01", + "D02": "uuid-placeholder-site-D02", + "D03": "uuid-placeholder-site-D03", + "D04": "uuid-placeholder-site-D04" + } }, - "material_type_mappings": { - "BIOYOND_PolymerStation_Reactor": [ - "反应器", - "3a14233b-902d-0d7b-4533-3f60f1c41c1b" - ], - "BIOYOND_PolymerStation_1BottleCarrier": [ - "试剂瓶", - "3a14233b-56e3-6c53-a8ab-fcaac163a9ba" - ], - "BIOYOND_PolymerStation_1FlaskCarrier": [ - "烧杯", - "3a14233b-f0a9-ba84-eaa9-0d4718b361b6" - ], - "BIOYOND_PolymerStation_6StockCarrier": [ - "样品板", - "3a142339-80de-8f25-6093-1b1b1b6c322e" - ], - "BIOYOND_PolymerStation_Solid_Vial": [ - "90%分装小瓶", - "3a14233a-26e1-28f8-af6a-60ca06ba0165" - ], - "BIOYOND_PolymerStation_Liquid_Vial": [ - "10%分装小瓶", - "3a14233a-84a3-088d-6676-7cb4acd57c64" - ], - "BIOYOND_PolymerStation_TipBox": [ - "枪头盒", - "3a143890-9d51-60ac-6d6f-6edb43c12041" - ], - "BIOYOND_PolymerStation_Measurement_Vial": [ - "测量小瓶", - "b1fc79c9-5864-4f05-8052-6ed3abc18a97" - ] + "堆栈1右": { + "uuid": "uuid-placeholder-stack1-right", + "site_uuids": { + "A05": "uuid-placeholder-site-A05", + "A06": "uuid-placeholder-site-A06", + "A07": "uuid-placeholder-site-A07", + "A08": "uuid-placeholder-site-A08", + "B05": "uuid-placeholder-site-B05", + "B06": "uuid-placeholder-site-B06", + "B07": "uuid-placeholder-site-B07", + "B08": "uuid-placeholder-site-B08", + "C05": "uuid-placeholder-site-C05", + "C06": "uuid-placeholder-site-C06", + "C07": "uuid-placeholder-site-C07", + "C08": "uuid-placeholder-site-C08", + "D05": "uuid-placeholder-site-D05", + "D06": "uuid-placeholder-site-D06", + "D07": "uuid-placeholder-site-D07", + "D08": "uuid-placeholder-site-D08" + } + }, + "站内试剂存放堆栈": { + "uuid": "uuid-placeholder-reagent-stack", + "site_uuids": { + "A01": "uuid-placeholder-reagent-A01", + "A02": "uuid-placeholder-reagent-A02" + } + }, + "测量小瓶仓库(测密度)": { + "uuid": "uuid-placeholder-density-stack", + "site_uuids": { + "A01": "uuid-placeholder-density-A01", + "A02": "uuid-placeholder-density-A02", + "A03": "uuid-placeholder-density-A03", + "B01": "uuid-placeholder-density-B01", + "B02": "uuid-placeholder-density-B02", + "B03": "uuid-placeholder-density-B03" + } + }, + "站内Tip盒堆栈(左)": { + "uuid": "uuid-placeholder-tipstack-left", + "site_uuids": { + "A02": "uuid-placeholder-tip-A02", + "A03": "uuid-placeholder-tip-A03", + "B02": "uuid-placeholder-tip-B02", + "B03": "uuid-placeholder-tip-B03" + } + }, + "站内Tip盒堆栈(右)": { + "uuid": "uuid-placeholder-tipstack-right", + "site_uuids": { + "A01": "uuid-placeholder-tip-A01", + "B01": "uuid-placeholder-tip-B01" + } } }, - "deck": { - "data": { - "_resource_child_name": "Bioyond_Deck", - "_resource_type": "unilabos.resources.bioyond.decks:BIOYOND_PolymerReactionStation_Deck" + "workflow_to_section_map": { + "reactor_taken_in": "反应器放入", + "reactor_taken_out": "反应器取出", + "Solid_feeding_vials": "固体投料-小瓶", + "Liquid_feeding_vials(non-titration)": "液体投料-小瓶(非滴定)", + "Liquid_feeding_solvents": "液体投料-溶剂", + "Liquid_feeding(titration)": "液体投料-滴定", + "liquid_feeding_beaker": "液体投料-烧杯", + "Drip_back": "液体回滴" + }, + "action_names": { + "reactor_taken_in": { + "config": "通量-配置", + "stirring": "反应模块-开始搅拌" + }, + "solid_feeding_vials": { + "feeding": "粉末加样模块-投料", + "observe": "反应模块-观察搅拌结果" + }, + "liquid_feeding_vials_non_titration": { + "liquid": "稀释液瓶加液位-液体投料", + "observe": "反应模块-滴定结果观察" + }, + "liquid_feeding_solvents": { + "liquid": "试剂AB放置位-试剂吸液分液", + "observe": "反应模块-观察搅拌结果" + }, + "liquid_feeding_titration": { + "liquid": "稀释液瓶加液位-稀释液吸液分液", + "observe": "反应模块-滴定结果观察" + }, + "liquid_feeding_beaker": { + "liquid": "烧杯溶液放置位-烧杯吸液分液", + "observe": "反应模块-观察搅拌结果" + }, + "drip_back": { + "liquid": "试剂AB放置位-试剂吸液分液", + "observe": "反应模块-向下滴定结果观察" } }, - "size_x": 2700.0, - "size_y": 1080.0, - "size_z": 2000.0, - "protocol_type": [] + "http_service_config": { + "http_service_host": "127.0.0.1", + "http_service_port": 8080 + }, + "material_default_parameters": { + "NMP": { + "unit": "毫升", + "density": "1.03", + "densityUnit": "g/mL", + "description": "N-甲基吡咯烷酮 (N-Methyl-2-pyrrolidone)" + } + }, + "material_type_parameters": {} }, + "deck": { + "data": { + "_resource_child_name": "Bioyond_Deck", + "_resource_type": "unilabos.resources.bioyond.decks:BIOYOND_PolymerReactionStation_Deck" + } + }, + "size_x": 2700.0, + "size_y": 1080.0, + "size_z": 2500.0, + "protocol_type": [], "data": {} }, { @@ -90,7 +219,7 @@ "class": "reaction_station.reactor", "position": { "x": 1150, - "y": 380, + "y": 300, "z": 0 }, "config": {}, @@ -105,7 +234,7 @@ "class": "reaction_station.reactor", "position": { "x": 1365, - "y": 380, + "y": 300, "z": 0 }, "config": {}, @@ -120,7 +249,7 @@ "class": "reaction_station.reactor", "position": { "x": 1580, - "y": 380, + "y": 300, "z": 0 }, "config": {}, @@ -135,7 +264,7 @@ "class": "reaction_station.reactor", "position": { "x": 1790, - "y": 380, + "y": 300, "z": 0 }, "config": {}, @@ -150,7 +279,7 @@ "class": "reaction_station.reactor", "position": { "x": 2010, - "y": 380, + "y": 300, "z": 0 }, "config": {}, @@ -181,4 +310,4 @@ "data": {} } ] -} +} \ No newline at end of file