From 8164d990ccc299583dfabc7957100c0d42f70b2b Mon Sep 17 00:00:00 2001 From: q434343 <554662886@qq.com> Date: Wed, 1 Apr 2026 11:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E5=89=8D=E5=90=B8=E7=A9=BA?= =?UTF-8?q?=E6=B0=94=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liquid_handler_abstract.py | 42 +++++++++---------- .../devices/liquid_handling/prcxi/prcxi.py | 2 + 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/unilabos/devices/liquid_handling/liquid_handler_abstract.py b/unilabos/devices/liquid_handling/liquid_handler_abstract.py index 09f3f006..a10e1eed 100644 --- a/unilabos/devices/liquid_handling/liquid_handler_abstract.py +++ b/unilabos/devices/liquid_handling/liquid_handler_abstract.py @@ -1672,25 +1672,25 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): use_channels=use_channels, ) - # if blow_out_air_volume_before_vol > 0: - # source_tracker = getattr(sources[0], "tracker", None) - # source_tracker_was_disabled = bool(getattr(source_tracker, "is_disabled", False)) - # try: - # if source_tracker is not None and hasattr(source_tracker, "disable"): - # source_tracker.disable() - # await self.aspirate( - # resources=[sources[0]], - # vols=[blow_out_air_volume_before_vol], - # use_channels=use_channels, - # flow_rates=None, - # offsets=[Coordinate(x=0, y=0, z=sources[0].get_size_z())], - # liquid_height=None, - # blow_out_air_volume=None, - # spread="custom", - # ) - # finally: - # if source_tracker is not None: - # source_tracker.enable() + if blow_out_air_volume_before_vol > 0: + source_tracker = getattr(sources[0], "tracker", None) + source_tracker_was_disabled = bool(getattr(source_tracker, "is_disabled", False)) + try: + if source_tracker is not None and hasattr(source_tracker, "disable"): + source_tracker.disable() + await self.aspirate( + resources=[sources[0]], + vols=[0], + use_channels=use_channels, + flow_rates=None, + offsets=[Coordinate(x=0, y=0, z=sources[0].get_size_z())], + liquid_height=None, + blow_out_air_volume=[blow_out_air_volume_before_vol], + spread="custom", + ) + finally: + if source_tracker is not None: + source_tracker.enable() await self.aspirate( resources=[sources[0]], @@ -1712,9 +1712,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): use_channels=use_channels, flow_rates=[dis_flow_rates[0]] if dis_flow_rates and len(dis_flow_rates) > 0 else None, offsets=[offsets[0]] if offsets and len(offsets) > 0 else None, - blow_out_air_volume=( - [blow_out_air_volume_vol] if blow_out_air_volume_vol > 0 else None - ), + blow_out_air_volume=[blow_out_air_volume_vol+blow_out_air_volume_before_vol], liquid_height=[liquid_height[0]] if liquid_height and len(liquid_height) > 0 else None, spread=spread, ) diff --git a/unilabos/devices/liquid_handling/prcxi/prcxi.py b/unilabos/devices/liquid_handling/prcxi/prcxi.py index 9309e23f..3d3dce45 100644 --- a/unilabos/devices/liquid_handling/prcxi/prcxi.py +++ b/unilabos/devices/liquid_handling/prcxi/prcxi.py @@ -1816,6 +1816,8 @@ class PRCXI9300Backend(LiquidHandlerBackend): async def aspirate(self, ops: List[SingleChannelAspiration], use_channels: List[int] = None): """Aspirate liquid from the specified resources.""" + if ops[0].blow_out_air_volume and ops[0].volume == 0: + return if hasattr(use_channels, "tolist"): _use_channels = use_channels.tolist() else: