pylabrobot.opentrons.flex.flex_head.FlexHead8#
- class pylabrobot.opentrons.flex.flex_head.FlexHead8(flex: Flex, mount: str, pipette_id: str, channels: int, pipette_model: str, max_volume: float)#
Bases:
_FlexHead8-channel pipette head, column-addressed (anchor-well fan-out).
Liquid operations use PLR coordinates anchored at the rearmost well the nozzle row covers (on a 96-format plate, column 2 uses A3). The Flex hardware fans the in-place plunger command out to all 8 physical nozzles. Tip/volume trackers are committed only for the channels/wells actually actuated, skipping
None(inactive) channels (None-skip) – and only after the wire command succeeds.columnindexes the sets of 8 rows the nozzles can cover, which on a 96-format plate is just the physical columns (0-11). A denser layout has more than one such set per physical column, since the nozzles skip rows to hold their 9 mm pitch: a 384 plate takescolumn0-47, where 0 covers A1/C1/E1/../O1 and 1 covers B1/D1/../P1. See_column_anchor_and_items.Single-tip cherry-pick (
pick_up_single_tip/aspirate_single/dispense_single/drop_single_tip) switches the pipette to SINGLE nozzle mode first viaconfigureNozzleLayout; column ops reset back to ALL mode if a prior single-tip op left the layout otherwise (_ensure_all_mode).Coordinate motion, position reads, priming, tip handling and plate air transfers have been exercised on the p1000 multi-channel Flex. Air tests establish command sequencing and motion, not liquid-volume accuracy. Tip-presence sensing can report absent for a physically seated single tip.
Methods
__init__(flex, mount, pipette_id, channels, ...)air_gap_in_place(volume[, flow_rate])Draw a
volumeuL air gap where the head already is -- oneairGapInPlacecommand.aspirate(target, volume, *[, column, ...])Aspirate
volumeuL fromtargetusing PLR coordinates and in-place aspiration.aspirate_container(container, volume[, ...])Aspirate
volumeuL per channel from one single-cavity container.aspirate_in_place(volume[, flow_rate])Aspirate
volumeuL where the head already is -- oneaspirateInPlacecommand.aspirate_single(plate, well, volume[, flow_rate])Aspirate a single well with the currently mounted single tip.
blow_out([flow_rate])Blow out at the current position -- one
blowOutInPlacecommand.configure_for_volume(volume)Put the pipette in the volume mode that suits
volumeuL.The robot's own defaults for this pipette and the tip currently on it.
discard_tips(trash)Discard the mounted column of tips into the trash.
dispense(target, volume, *[, column, ...])Dispense
volumeuL intotargetusing PLR coordinates and in-place dispensing.dispense_container(container, volume[, ...])Dispense
volumeuL per channel into one single-cavity container.dispense_in_place(volume[, flow_rate, push_out])Dispense
volumeuL where the head already is -- onedispenseInPlacecommand.dispense_single(plate, well, volume[, flow_rate])Dispense to a single well with the currently mounted single tip.
drop_single_tip(trash)Drop the single mounted tip to trash and restore ALL nozzle mode.
drop_tips(target[, column])Drop a full column of tips -- one wire command, fanned to 8 channels.
Per-channel tip state (Case-2: no private-attribute peeking by consumers).
Read this head's tip sensor: "present", "absent" or "unknown".
Query the Flex's hardware tip-presence sensor for THIS head's pipette.
liquid_probe(plate, column)Probe for liquid in a column -- one
liquidProbecommand anchored at its rearmost well; return the found liquid z (mm).move_relative(axis, distance)Jog one axis by
distancemm from wherever the head is now.move_to([x, y, z, speed, minimum_z_height])Move the head to an absolute deck-frame position, holding any axis left unspecified -- ONE
moveToCoordinatescommand.move_to_addressable_area(addressable_area_name)Move to a named fixture on the deck rather than to labware.
move_to_well(target[, offset, origin, ...])Move to a well, named rather than measured -- ONE
moveToWellcommand.pick_up_single_tip(tip_rack[, well, offset, ...])Pick up one tip in SINGLE nozzle mode, anchored on
primary_nozzle.pick_up_tips(target, *[, column, ...])Pick up tip(s), choosing the nozzle layout for this call.
position()The head's current deck-frame position -- one
savePositionquery.Move the plunger to where an aspirate starts from ("priming").
reachable_single_nozzles(labware, well)The anchor nozzles that can address
wellwhere the labware currently sits.touch_tip(plate, column[, radius, offset])Touch the mounted tips to their well walls -- one
touchTipcommand anchored at the column's rearmost well.try_liquid_probe(plate, column)Like
liquid_probebut returnNoneinstead of raising when no liquid is found.unsafe_blow_out_in_place(flow_rate)Blow out where the head is, skipping the engine's own checks.
Drop the mounted tip where the head is, skipping the engine's own checks.
verify_tip_presence(expected_state)Have the robot fail the command unless its tip sensor reads
expected_state.