mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 04:51:10 +00:00
* feat: Enhance Bioyond synchronization and resource management - Implemented synchronization for all material types (consumables, samples, reagents) from Bioyond, logging detailed information for each type. - Improved error handling and logging during synchronization processes. - Added functionality to save Bioyond material IDs in UniLab resources for future updates. - Enhanced the `sync_to_external` method to handle material movements correctly, including querying and creating materials in Bioyond. - Updated warehouse configurations to support new storage types and improved layout for better resource management. - Introduced new resource types such as reactors and tip boxes, with detailed specifications. - Modified warehouse factory to support column offsets for naming conventions (e.g., A05-D08). - Improved resource tracking by merging extra attributes instead of overwriting them. - Added a new method for updating resources in Bioyond, ensuring better synchronization of resource changes. * feat: 添加TipBox和Reactor的配置到bottles.yaml * fix: 修复液体投料方法中的volume参数处理逻辑
248 lines
6.0 KiB
Python
248 lines
6.0 KiB
Python
from unilabos.resources.warehouse import WareHouse, warehouse_factory
|
||
|
||
|
||
def bioyond_warehouse_1x4x4(name: str) -> WareHouse:
|
||
"""创建BioYond 4x4x1仓库 (左侧堆栈: A01~D04)"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=4,
|
||
num_items_y=4,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=147.0,
|
||
item_dy=106.0,
|
||
item_dz=130.0,
|
||
category="warehouse",
|
||
col_offset=0, # 从01开始: A01, A02, A03, A04
|
||
)
|
||
|
||
|
||
def bioyond_warehouse_1x4x4_right(name: str) -> WareHouse:
|
||
"""创建BioYond 4x4x1仓库 (右侧堆栈: A05~D08)"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=4,
|
||
num_items_y=4,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=147.0,
|
||
item_dy=106.0,
|
||
item_dz=130.0,
|
||
category="warehouse",
|
||
col_offset=4, # 从05开始: A05, A06, A07, A08
|
||
)
|
||
|
||
|
||
|
||
def bioyond_warehouse_1x4x2(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x2仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=1,
|
||
num_items_y=4,
|
||
num_items_z=2,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
removed_positions=None
|
||
)
|
||
# 定义benyond的堆栈
|
||
def bioyond_warehouse_1x2x2(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=1,
|
||
num_items_y=2,
|
||
num_items_z=2,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
def bioyond_warehouse_10x1x1(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=10,
|
||
num_items_y=1,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
def bioyond_warehouse_1x3x3(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=1,
|
||
num_items_y=3,
|
||
num_items_z=3,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
def bioyond_warehouse_2x1x3(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=2,
|
||
num_items_y=1,
|
||
num_items_z=3,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
|
||
def bioyond_warehouse_3x3x1(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=3,
|
||
num_items_y=3,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
def bioyond_warehouse_5x1x1(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=5,
|
||
num_items_y=1,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
def bioyond_warehouse_3x3x1_2(name: str) -> WareHouse:
|
||
"""创建BioYond 4x1x4仓库"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=3,
|
||
num_items_y=3,
|
||
num_items_z=1,
|
||
dx=12.0,
|
||
dy=12.0,
|
||
dz=12.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
)
|
||
|
||
def bioyond_warehouse_liquid_and_lid_handling(name: str) -> WareHouse:
|
||
"""创建BioYond开关盖加液模块台面"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=2,
|
||
num_items_y=5,
|
||
num_items_z=1,
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=137.0,
|
||
item_dy=96.0,
|
||
item_dz=120.0,
|
||
category="warehouse",
|
||
removed_positions=None
|
||
)
|
||
|
||
|
||
def bioyond_warehouse_1x8x4(name: str) -> WareHouse:
|
||
"""创建BioYond 8x4x1反应站堆栈(A01~D08)"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=8, # 8列(01-08)
|
||
num_items_y=4, # 4行(A-D)
|
||
num_items_z=1, # 1层
|
||
dx=10.0,
|
||
dy=10.0,
|
||
dz=10.0,
|
||
item_dx=147.0,
|
||
item_dy=106.0,
|
||
item_dz=130.0,
|
||
category="warehouse",
|
||
)
|
||
|
||
|
||
def bioyond_warehouse_reagent_storage(name: str) -> WareHouse:
|
||
"""创建BioYond站内试剂存放堆栈(A01~A02, 1行×2列)"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=2, # 2列(01-02)
|
||
num_items_y=1, # 1行(A)
|
||
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",
|
||
)
|
||
|
||
|
||
def bioyond_warehouse_liquid_preparation(name: str) -> WareHouse:
|
||
"""创建BioYond移液站内10%分装液体准备仓库(A01~B04)"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=4, # 4列(01-04)
|
||
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",
|
||
)
|
||
|
||
|
||
def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse:
|
||
"""创建BioYond站内Tip盒堆栈(A01~B03),用于存放枪头盒"""
|
||
return warehouse_factory(
|
||
name=name,
|
||
num_items_x=3, # 3列(01-03)
|
||
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",
|
||
) |