async LiquidHandler.drop_tips(tip_spots: List[TipSpot | Resource], use_channels: List[int] | None = None, offsets: Coordinate | List[Coordinate | None] | None = None, allow_nonzero_volume: bool = False, **backend_kwargs)#

Drop tips to a resource.


Dropping tips to the first column.

>>> lh.pick_up_tips(tip_rack["A1:H1"])

Dropping tips with different offsets:

>>> lh.drop_tips(
...   channels=tips_resource["A1":"C1"],
...   offsets=[
...     Coordinate(0, 0, 0), # A1
...     Coordinate(1, 1, 1), # B1
... # C1
...   ]
... )
  • tips – Tip resource locations to drop to.

  • use_channels (List[int] | None) – List of channels to use. Index from front to back. If None, the first len(channels) channels will be used.

  • offsets (Coordinate | List[Coordinate | None] | None) – List of offsets for each channel, a translation that will be applied to the tip pickup location. If None, no offset will be applied.

  • allow_nonzero_volume (bool) – If True, the tip will be dropped even if its volume is not zero (there is liquid in the tip). If False, a RuntimeError will be raised if the tip has nonzero volume.

  • backend_kwargs – Additional keyword arguments for the backend, optional.

  • tip_spots (List[TipSpot | Resource])

  • RuntimeError – If the setup has not been run. See setup().

  • ValueError – If no channel will pick up a tip, in other words, if all channels are None or if the list of channels is empty.

  • ValueError – If the positions are not unique.

  • NoTipError – If a channel does not have a tip.

  • HasTipError – If a spot already has a tip.