Skip to content

Pipette

Description

Represents a single-channel pipette tool attached to the Jubilee system, similar in behavior to an Opentrons OT-2 pipette.

Provides methods for liquid handling operations including aspiration, dispensing, transferring, mixing, air gaps, tip pickup/return, and stirring.

Extends the base Tool class.

Constructor

python
Pipette(
    index,
    name,
    brand,
    model,
    max_volume,
    min_volume,
    zero_position,
    blowout_position,
    drop_tip_position,
    mm_to_ul
)
ParameterTypeDescription
indexintMachine tool index for the pipette.
namestrUser-friendly name of the pipette.
brandstrBrand name of the pipette (e.g., 'Opentrons').
modelstrModel of the pipette (e.g., 'P300 Single').
max_volumefloatMaximum liquid volume in µL.
min_volumefloatMinimum liquid volume in µL.
zero_positionfloatMotor position for 'ready' plunger state.
blowout_positionfloatMotor position for 'blowout' plunger state.
drop_tip_positionfloatMotor position for dropping tips.
mm_to_ulfloatConversion factor between plunger mm movement and µL dispensed.

Key Properties

PropertyTypeDescription
has_tipboolWhether a pipette tip is attached.
current_wellWellThe current well the pipette is operating on.
trashWellLocation for tip disposal.
TipTrackerTipTrackerObject tracking tip usage.
is_primedboolWhether the pipette plunger has been primed.

Important Methods

MethodReturnsDescription
aspirate(vol, location)NoneMove to location and aspirate volume.
dispense(vol, location)NoneMove to location and dispense volume.
transfer(vol, source, destination, ...)NoneHigh-level transfer function combining aspirate and dispense.
pickup_tip(tip)NonePick up a new pipette tip from specified location.
drop_tip(location)NoneDrop a pipette tip into a specified or default trash location.
mix(n, vol)NonePerform a mix operation in a well.
stir(n_times, height)NoneStir liquid in a well with circular motion.
air_gap(vol)NoneCreate an air gap inside the pipette tip.
blowout()NoneForcefully expel any remaining liquid.
add_tiprack(tiprack)NoneAttach a tiprack (or multiple) for automated tip management.
update_z_offset(tip)NoneUpdate z-offset depending on tip attachment.

Method Details

Aspirate

python
aspirate(vol: float, location: Union[Well, Tuple, Location])

Move to a specified location and aspirate the given volume.

Requires a tip.

Dispense

python
dispense(vol: float, location: Union[Well, Tuple, Location])

Move to a specified location and dispense the given volume.

Requires a tip.

Transfer

python
transfer(
    vol: Union[float, List[float]],
    source_well: Union[Well, Tuple, Location],
    destination_well: Union[Well, Tuple, Location],
    ...
)

High-level command combining aspiration and dispensing in one step.

Supports complex behaviors:

  • air_gap
  • mix_before, mix_after
  • Tip strategies (new_tip='always' | 'never' | 'once')

Pickup Tip

python
pickup_tip(tip: Union[Well, Tuple] = None)

Pick up a pipette tip from a tiprack or a specified location.

Automatically updates tool offset and registers tip use.

Drop Tip

python
drop_tip(location: Union[Well, Tuple] = None)

Drop the pipette tip into a trash well or specified location.

Resets tool offset accordingly.

Mix

python
mix(n: int, vol: float)

Repeatedly aspirate and dispense inside a well to mix the contents.

Stir

python
stir(n_times: int = 1, height: float = None)

Move in a circular motion inside a well to stir liquids.

Blowout

python
blowout(s: int = 6000)

Forcefully expel any remaining liquid in the tip.

Air Gap

python
air_gap(vol: float)

Aspirate a small volume of air between aspirated liquid and pipette plunger.

Add Tiprack

python
add_tiprack(tiprack: Union[Labware, List[Labware]])

Register a tiprack (or multiple) to track tip usage automatically.

Internal Helpers

HelperDescription
_aspirate, _dispense, _pickup_tip, _drop_tipLow-level primitives for direct motion control.
_create_volume_list, _extend_source_target_lists, _expand_for_volume_constraintsHelpers for batch transfer logic and volume management.

Usage Flow Example

python
from science_jubilee.tools import Pipette

# Load pipette from config
pipette = Pipette.from_config(index=2, name="P300_Single", config_file="p300_config.json")

# Attach to machine
m.load_tool(pipette)
m.pickup_tool(pipette)

# Associate tiprack
pipette.add_tiprack(tiprack)

# Aspirate and dispense
pipette.aspirate(100, source_well)
pipette.dispense(100, destination_well)

# Perform transfer
pipette.transfer(100, source_well, destination_well)

Important Notes

  • Pipette must be primed before aspirate/dispense actions.
  • Pipette requires a tip before any liquid handling.
  • Volumes are internally converted to axis movements.
  • Custom motion safety checks (safe Z movement) are built-in.
  • Tip management (pickup/return/drop) is integrated into usage flow.
  • Stirring assumes the well is large enough for circular tip motion.

Pre-release documentation · Internal research use only · Not authorized for redistribution.