mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-13 19:25:12 +00:00
添加加热震荡模块与磁力模块
This commit is contained in:
@@ -1090,7 +1090,10 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware):
|
||||
pass
|
||||
if mix_times is not None:
|
||||
mix_times = int(mix_times)
|
||||
|
||||
|
||||
# 设置tip racks
|
||||
self.set_tiprack(tip_racks)
|
||||
|
||||
# 识别传输模式(mix_times 为 None 也应该能正常移液,只是不做 mix)
|
||||
num_sources = len(sources)
|
||||
num_targets = len(targets)
|
||||
@@ -1153,9 +1156,15 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware):
|
||||
"""一对一传输模式:N sources -> N targets"""
|
||||
# 验证参数长度
|
||||
if len(asp_vols) != len(targets):
|
||||
raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `targets` {len(targets)}.")
|
||||
if len(asp_vols) == 1:
|
||||
asp_vols = [asp_vols[0]] * len(targets)
|
||||
else:
|
||||
raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `targets` {len(targets)}.")
|
||||
if len(dis_vols) != len(targets):
|
||||
raise ValueError(f"Length of `dis_vols` {len(dis_vols)} must match `targets` {len(targets)}.")
|
||||
if len(dis_vols) == 1:
|
||||
dis_vols = [dis_vols[0]] * len(targets)
|
||||
else:
|
||||
raise ValueError(f"Length of `dis_vols` {len(dis_vols)} must match `targets` {len(targets)}.")
|
||||
if len(sources) != len(targets):
|
||||
raise ValueError(f"Length of `sources` {len(sources)} must match `targets` {len(targets)}.")
|
||||
|
||||
@@ -1495,7 +1504,10 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware):
|
||||
"""多对一传输模式:N sources -> 1 target(汇总/混合)"""
|
||||
# 验证和扩展体积参数
|
||||
if len(asp_vols) != len(sources):
|
||||
raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `sources` {len(sources)}.")
|
||||
if len(asp_vols) == 1:
|
||||
asp_vols = [asp_vols[0]] * len(sources)
|
||||
else:
|
||||
raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `sources` {len(sources)}.")
|
||||
|
||||
# 支持两种模式:
|
||||
# 1. dis_vols 为单个值:所有源汇总,使用总吸液体积或指定分液体积
|
||||
|
||||
@@ -1011,6 +1011,11 @@ class PRCXI9300Handler(LiquidHandlerAbstract):
|
||||
async def shaker_action(self, time: int, module_no: int, amplitude: int, is_wait: bool):
|
||||
return await self._unilabos_backend.shaker_action(time, module_no, amplitude, is_wait)
|
||||
|
||||
async def magnetic_action(self, time: int, module_no: int, height: int, is_wait: bool):
|
||||
return await self._unilabos_backend.magnetic_action(time, module_no, height, is_wait)
|
||||
|
||||
async def shaking_incubation_action(self, time: int, module_no: int, amplitude: int, is_wait: bool, temperature: int):
|
||||
return await self._unilabos_backend.shaking_incubation_action(time, module_no, amplitude, is_wait, temperature)
|
||||
async def heater_action(self, temperature: float, time: int):
|
||||
return await self._unilabos_backend.heater_action(temperature, time)
|
||||
async def move_plate(
|
||||
@@ -1116,6 +1121,26 @@ class PRCXI9300Backend(LiquidHandlerBackend):
|
||||
self.steps_todo_list.append(step)
|
||||
return step
|
||||
|
||||
async def shaking_incubation_action(self, time: int, module_no: int, amplitude: int, is_wait: bool, temperature: int):
|
||||
step = self.api_client.shaking_incubation_action(
|
||||
time=time,
|
||||
module_no=module_no,
|
||||
amplitude=amplitude,
|
||||
is_wait=is_wait,
|
||||
temperature=temperature,
|
||||
)
|
||||
self.steps_todo_list.append(step)
|
||||
return step
|
||||
|
||||
async def magnetic_action(self, time: int, module_no: int, height: int, is_wait: bool):
|
||||
step = self.api_client.magnetic_action(
|
||||
time=time,
|
||||
module_no=module_no,
|
||||
height=height,
|
||||
is_wait=is_wait,
|
||||
)
|
||||
self.steps_todo_list.append(step)
|
||||
return step
|
||||
|
||||
async def pick_up_resource(self, pickup: ResourcePickup, **backend_kwargs):
|
||||
|
||||
@@ -1985,6 +2010,27 @@ class PRCXI9300Api:
|
||||
"AssistFun4": is_wait,
|
||||
}
|
||||
|
||||
def shaking_incubation_action(self, time: int, module_no: int, amplitude: int, is_wait: bool, temperature: int):
|
||||
return {
|
||||
"StepAxis": "Left",
|
||||
"Function": "Shaking_Incubation",
|
||||
"AssistFun1": time,
|
||||
"AssistFun2": module_no,
|
||||
"AssistFun3": amplitude,
|
||||
"AssistFun4": is_wait,
|
||||
"AssistFun5": temperature,
|
||||
}
|
||||
|
||||
def magnetic_action(self, time: int, module_no: int, height: int, is_wait: bool):
|
||||
return {
|
||||
"StepAxis": "Left",
|
||||
"Function": "Magnetic",
|
||||
"AssistFun1": time,
|
||||
"AssistFun2": module_no,
|
||||
"AssistFun3": height,
|
||||
"AssistFun4": is_wait,
|
||||
}
|
||||
|
||||
class DefaultLayout:
|
||||
|
||||
def __init__(self, product_name: str = "PRCXI9300"):
|
||||
|
||||
Reference in New Issue
Block a user