pylabrobot.opentrons.flex.flex_head.FlexHead8.aspirate#

async FlexHead8.aspirate(target: Plate | Well | Sequence[Well] | Container, volume: float, *, column: int | None = None, use_channels: Sequence[int] | None = None, flow_rate: float | None = None, offset: Coordinate | None = None, liquid_height: float | None = None) → None#

Aspirate volume uL from target using PLR coordinates and in-place aspiration.

ONE method for every 8-channel aspirate; the target type selects the addressing and use_channels names the active nozzles for this call:

  • a Sequence[Well] (a plate.column(c)) -> that column, anchored at its rearmost well, one Well.tracker per active channel (None-skip);

  • a single Well -> the mounted single nozzle draws from it;

  • a Container (trough/reservoir) -> every active nozzle dips into the one cavity, its single tracker staged with volume x active-channels.

The nozzle LAYOUT is fixed at pickup, not here: the engine refuses a reconfiguration while a tip is attached, and an aspirate always has a tip, so no configureNozzleLayout is ever emitted by an aspirate. This method only names which mounted nozzles it drives and refuses a request the mount cannot satisfy, before any wire command.

column is the transitional bridge for the old aspirate(plate, column=c) call and takes a Plate target; prefer plate.column(c).

Parameters:
Return type:

None