refactor: Split tipbox storage into left and right warehouses

This commit is contained in:
ZiWei
2026-01-15 17:04:20 +08:00
parent 6f7adce998
commit b64de9b509
6 changed files with 379 additions and 127 deletions

View File

@@ -83,11 +83,11 @@ def bioyond_warehouse_reagent_storage(name: str) -> WareHouse:
category="warehouse",
)
def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse:
"""创建BioYond站内Tip盒堆栈A01B03用于存放枪头盒"""
def bioyond_warehouse_tipbox_storage_left(name: str) -> WareHouse:
"""创建BioYond站内Tip盒堆栈左侧部分A02B032列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盒堆栈右侧部分A01B011列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

View File

@@ -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右"), # 右侧堆栈: A05D08
"站内试剂存放堆栈": bioyond_warehouse_reagent_storage("站内试剂存放堆栈"), # A01A02
# "移液站内10%分装液体准备仓库": bioyond_warehouse_liquid_preparation("移液站内10%分装液体准备仓库"), # A01B04
"站内Tip盒堆栈": bioyond_warehouse_tipbox_storage("站内Tip盒堆栈"), # A01B03, 存放枪头盒.
"站内Tip盒堆栈(左)": bioyond_warehouse_tipbox_storage_left("站内Tip盒堆栈(左)"), # A02B03
"站内Tip盒堆栈(右)": bioyond_warehouse_tipbox_storage_right("站内Tip盒堆栈(右)"), # A01B01
"测量小瓶仓库(测密度)": bioyond_warehouse_density_vial("测量小瓶仓库(测密度)"), # A01B03
}
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():

View File

@@ -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盒堆栈A01B03用于存放枪头盒"""
def bioyond_warehouse_tipbox_storage_left(name: str) -> WareHouse:
"""创建BioYond站内Tip盒堆栈左侧部分A02B032列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盒堆栈右侧部分A01B011列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",
)

View File

@@ -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的处理

View File

@@ -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": {}
}
]
}
}

View File

@@ -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": {}
}
]
}
}