pylabrobot.lib.liquid_handling.tip_presence_probing.probe_tip_presence_via_pickup#

async pylabrobot.lib.liquid_handling.tip_presence_probing.probe_tip_presence_via_pickup(tip_spots: List[TipSpot], use_channels: List[int], *, pick_up_tips: Callable[[List[TipSpot], List[int]], Awaitable[None]], drop_tips: Callable[[List[TipSpot], List[int]], Awaitable[None]], sense_tip_presence: Callable[[], Awaitable[Sequence[bool]]] | None = None, missed_channels: Callable[[Exception], Collection[int] | None] | None = None) → Dict[str, bool]#

Pick up the tip in each spot and put it back; a channel that comes up empty found none.

After a pick-up that raises, which channels came up empty is read from the error by missed_channels when it names them, else from the channels’ own sensors. The error is raised again when neither says, when they name a channel outside the pick-up, or when no channel came up empty, so a failure other than an empty spot is never taken for one. The tips picked up go straight back into their own spots. Trackers are left as the device’s own calls leave them.

Parameters:
Returns:

Each spot’s name, and whether it held a tip.

Raises:

ValueError – As plan_tip_presence_probes.

Return type:

Dict[str, bool]