pylabrobot.liquid_handling.liquid_handler.LiquidHandler.dispense#

async LiquidHandler.dispense(resources: Union[pylabrobot.resources.container.Container, Sequence[pylabrobot.resources.container.Container]], vols: Union[List[float], float], use_channels: Optional[List[int]] = None, flow_rates: Union[float, List[Union[float, pylabrobot.default._DefaultType]], pylabrobot.default._DefaultType] = Default, end_delay: float = 0, offsets: Union[pylabrobot.resources.coordinate.Coordinate, pylabrobot.default._DefaultType, Sequence[Union[pylabrobot.resources.coordinate.Coordinate, pylabrobot.default._DefaultType]]] = Default, liquid_height: Union[float, pylabrobot.default._DefaultType, List[Union[float, pylabrobot.default._DefaultType]]] = Default, **backend_kwargs)#

Dispense liquid to the specified channels.

Examples

Dispense a constant amount of liquid to the first column:

>>> lh.dispense(plate["A1:H1"], 50)

Dispense an linearly increasing amount of liquid to the first column:

>>> lh.dispense(plate["A1:H1"], range(0, 500, 50))

Dispense arbitrary amounts of liquid to the first column:

>>> lh.dispense(plate["A1:H1"], [0, 40, 10, 50, 100, 200, 300, 400])

Dispense liquid to wells in different plates:

>>> lh.dispense((plate["A1"], 50), (plate2["A1"], 50), (plate3["A1"], 50))

Dispensing with a 10mm z-offset:

>>> 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):

>>> 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 (Union[List[float], 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 (Optional[List[int]]) – List of channels to use. Index from front to back. If None, the first len(channels) channels will be used.

  • flow_rates (Union[float, List[Union[float, pylabrobot.default._DefaultType]], pylabrobot.default._DefaultType]) – the flow rates, in ul/s. If Default, the backend default will be used.

  • end_delay (float) – The delay after the last dispense in seconds, optional. This is useful for when the tips used in the dispense are dripping.

  • offsets (Union[pylabrobot.resources.coordinate.Coordinate, pylabrobot.default._DefaultType, Sequence[Union[pylabrobot.resources.coordinate.Coordinate, pylabrobot.default._DefaultType]]]) – List of offsets for each channel, a translation that will be applied to the dispense location. If None, no offset will be applied.

  • liquid_height (Union[float, pylabrobot.default._DefaultType, List[Union[float, pylabrobot.default._DefaultType]]]) – The height of the liquid in the well, in mm.

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

  • resources (Union[pylabrobot.resources.container.Container, Sequence[pylabrobot.resources.container.Container]]) –

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.