mirror of
https://github.com/deepmodeling/Uni-Lab-OS
synced 2026-03-28 02:17:49 +00:00
Remove deprecated PRCXI9300PlateAdapterSite, replaced by PRCXI9300ModuleSite
PRCXI9300PlateAdapterSite was already removed by upstream/prcix9320. Its functionality is now provided by PRCXI9300ModuleSite which serves as the base class for functional modules (heating/cooling/shaking/magnetic). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -546,100 +546,6 @@ class PRCXI9300TubeRack(TubeRack):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
class PRCXI9300PlateAdapterSite(ItemizedCarrier):
|
|
||||||
def __init__(self, name: str, size_x: float, size_y: float, size_z: float,
|
|
||||||
material_info: Optional[Dict[str, Any]] = None, **kwargs):
|
|
||||||
# 处理 sites 参数的不同格式
|
|
||||||
|
|
||||||
sites = create_homogeneous_resources(
|
|
||||||
klass=ResourceHolder,
|
|
||||||
locations=[Coordinate(0, 0, 0)],
|
|
||||||
resource_size_x=size_x,
|
|
||||||
resource_size_y=size_y,
|
|
||||||
resource_size_z=size_z,
|
|
||||||
name_prefix=name,
|
|
||||||
)[0]
|
|
||||||
|
|
||||||
# 确保不传递重复的参数
|
|
||||||
kwargs.pop('layout', None)
|
|
||||||
sites_in = kwargs.pop('sites', None)
|
|
||||||
|
|
||||||
# 创建默认的sites字典
|
|
||||||
sites_dict = {name: sites}
|
|
||||||
# 优先从 sites_in 读取 'content_type',否则使用默认值
|
|
||||||
|
|
||||||
content_type = [
|
|
||||||
"plate",
|
|
||||||
"tip_rack",
|
|
||||||
"plates",
|
|
||||||
"tip_racks",
|
|
||||||
"tube_rack",
|
|
||||||
"plateadapter"
|
|
||||||
]
|
|
||||||
# 如果提供了sites参数,则用sites_in中的值替换sites_dict中对应的元素
|
|
||||||
if sites_in is not None and isinstance(sites_in, dict):
|
|
||||||
for site_key, site_value in sites_in.items():
|
|
||||||
if site_key in sites_dict:
|
|
||||||
sites_dict[site_key] = site_value
|
|
||||||
|
|
||||||
super().__init__(name, size_x, size_y, size_z,
|
|
||||||
sites=sites_dict,
|
|
||||||
num_items_x=kwargs.pop('num_items_x', 1),
|
|
||||||
num_items_y=kwargs.pop('num_items_y', 1),
|
|
||||||
num_items_z=kwargs.pop('num_items_z', 1),
|
|
||||||
content_type=content_type,
|
|
||||||
**kwargs)
|
|
||||||
self._unilabos_state = {}
|
|
||||||
if material_info:
|
|
||||||
self._unilabos_state["Material"] = material_info
|
|
||||||
|
|
||||||
|
|
||||||
def assign_child_resource(self, resource, location=Coordinate(0, 0, 0), reassign=True, spot=None):
|
|
||||||
"""重写 assign_child_resource 方法,对于适配器位置,不使用索引分配"""
|
|
||||||
# 直接调用 Resource 的 assign_child_resource,避免 ItemizedCarrier 的索引逻辑
|
|
||||||
from pylabrobot.resources.resource import Resource
|
|
||||||
Resource.assign_child_resource(self, resource, location=location, reassign=reassign)
|
|
||||||
|
|
||||||
def unassign_child_resource(self, resource):
|
|
||||||
"""重写 unassign_child_resource 方法,对于适配器位置,不使用 sites 列表"""
|
|
||||||
# 直接调用 Resource 的 unassign_child_resource,避免 ItemizedCarrier 的 sites 逻辑
|
|
||||||
from pylabrobot.resources.resource import Resource
|
|
||||||
Resource.unassign_child_resource(self, resource)
|
|
||||||
|
|
||||||
def serialize_state(self) -> Dict[str, Dict[str, Any]]:
|
|
||||||
try:
|
|
||||||
data = super().serialize_state()
|
|
||||||
except AttributeError:
|
|
||||||
data = {}
|
|
||||||
|
|
||||||
# 包含 sites 配置信息,但避免序列化 ResourceHolder 对象
|
|
||||||
if hasattr(self, 'sites') and self.sites:
|
|
||||||
# 只保存 sites 的基本信息,不保存 ResourceHolder 对象本身
|
|
||||||
sites_info = []
|
|
||||||
for site in self.sites:
|
|
||||||
if hasattr(site, '__class__') and 'pylabrobot' in str(site.__class__.__module__):
|
|
||||||
# 对于 pylabrobot 对象,只保存基本信息
|
|
||||||
sites_info.append({
|
|
||||||
"__pylabrobot_object__": True,
|
|
||||||
"class": site.__class__.__name__,
|
|
||||||
"module": site.__class__.__module__,
|
|
||||||
"name": getattr(site, 'name', str(site))
|
|
||||||
})
|
|
||||||
else:
|
|
||||||
sites_info.append(site)
|
|
||||||
data['sites'] = sites_info
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
def load_state(self, state: Dict[str, Any]) -> None:
|
|
||||||
"""加载状态,包括 sites 配置信息"""
|
|
||||||
super().load_state(state)
|
|
||||||
|
|
||||||
# 从状态中恢复 sites 配置信息
|
|
||||||
if 'sites' in state:
|
|
||||||
self.sites = [state['sites']]
|
|
||||||
|
|
||||||
|
|
||||||
class PRCXI9300ModuleSite(ItemizedCarrier):
|
class PRCXI9300ModuleSite(ItemizedCarrier):
|
||||||
"""
|
"""
|
||||||
PRCXI 功能模块的基础站点类(加热/冷却/震荡/磁吸等)。
|
PRCXI 功能模块的基础站点类(加热/冷却/震荡/磁吸等)。
|
||||||
|
|||||||
Reference in New Issue
Block a user