pylabrobot.liquid_handling.liquid_handler.LiquidHandler.dispense#
- async LiquidHandler.dispense(resources: Sequence[Container], vols: List[float], use_channels: List[int] | None = None, flow_rates: List[float | None] | None = None, offsets: List[Coordinate] | None = None, liquid_height: List[float | None] | None = None, blow_out_air_volume: List[float | None] | None = None, **backend_kwargs)#
Dispense liquid to the specified channels.
Examples
Dispense a constant amount of liquid to the first column:
>>> await lh.dispense(plate["A1:H1"], 50)
Dispense an linearly increasing amount of liquid to the first column:
>>> await lh.dispense(plate["A1:H1"], range(0, 500, 50))
Dispense arbitrary amounts of liquid to the first column:
>>> await lh.dispense(plate["A1:H1"], [0, 40, 10, 50, 100, 200, 300, 400])
Dispense liquid to wells in different plates:
>>> await lh.dispense((plate["A1"], 50), (plate2["A1"], 50), (plate3["A1"], 50))
Dispensing with a 10mm z-offset:
>>> await lh.dispense(plate["A1"], vols=50, offsets=[Coordinate(0, 0, 10)])
Dispense a blue bucket (big container), with the first 4 channels (which will be spaced equally apart):
>>> await lh.dispense(blue_bucket, vols=50, use_channels=[0, 1, 2, 3])
- Parameters:
wells – A list of resources to dispense liquid to. Can be a list of resources, or a single resource, in which case all channels will dispense to that resource.
vols (List[float]) – A list of volumes to dispense, one for each channel, or a single volume to dispense to all channels. If
vols
is a single number, then all channels will dispense that volume. In units of ul.use_channels (List[int] | None) – List of channels to use. Index from front to back. If
None
, the firstlen(channels)
channels will be used.flow_rates (List[float | None] | None) – the flow rates, in ul/s. If
None
, the backend default will be used.offsets (List[Coordinate] | None) – List of offsets for each channel, a translation that will be applied to the dispense location.
liquid_height (List[float | None] | None) – The height of the liquid in the well wrt the bottom, in mm.
blow_out_air_volume (List[float | None] | None) – The volume of air to dispense after the liquid, in ul. If
None
, the backend default will be used.backend_kwargs – Additional keyword arguments for the backend, optional.
- Raises:
RuntimeError – If the setup has not been run. See
setup()
.ValueError – If the dispense info is invalid, in other words, when all channels are
None
.ValueError – If all channels are
None
.