Basic Pipetting
>=0.35.0.In this guide a deck with a plate, tips, and a trough is created. Tips are picked up to aspirate liquid from the trough and dispense into a plate. Both direct keyword arguments and parameter sets are demonstrated.
Prerequisites
- A switched on Tecan Freedom EVO device with a Multi-Channel Arm
- A tip carrier with EVO tips, a plate carrier with a destination plate, and a trough
- A running Tecan Freedom EVO connector
- Basic understanding of the liquid handler class (See Deck & Carriers)
- Basic understanding of tip handling (See Tip Handling)
Power On the System
from unitelabs.sdk import AsyncApiClient
from unitelabs.labware import Vector
from unitelabs.liquid_handling.tecan import TecanFreedomEvo, TecanFreedomEvoConfiguration
client = AsyncApiClient()
evo = TecanFreedomEvo(
name="Tecan Freedom EVO",
client=client,
configuration=TecanFreedomEvoConfiguration(mca_discard_location=Vector(x=1000, y=100, z=100)),
)
await evo.configure()
await evo.initialize()
await evo.activate()
Arrange the Deck
from unitelabs.labware.liquids import PredefinedLiquids
from unitelabs.labware.plates import Standard96Plate
from unitelabs.labware.tecan import EvoTipBox_MCA_DiTi_200, EvoTip_MCA_DiTi_200, MP_3Pos_flat, MP_4Pos_flat
from unitelabs.labware.troughs import StandardTrough
tip_carrier = MP_4Pos_flat()
tip_box = EvoTipBox_MCA_DiTi_200(identifier="TipBox_200uL")
tip_box.fill(EvoTip_MCA_DiTi_200)
tip_carrier[0] = tip_box
evo.deck.add(tip_carrier, track=1)
plate_carrier = MP_3Pos_flat()
source_trough = StandardTrough(identifier="SourceTrough_Water")
source_trough.container.add_liquid(PredefinedLiquids.WATER, 50_000.0)
dest_plate = Standard96Plate(identifier="DestinationPlate_96Well")
plate_carrier[0] = source_trough
plate_carrier[1] = dest_plate
evo.deck.add(plate_carrier, track=8)
Aspirate
Pick up tips first, then aspirate from the trough.
await evo.mca.pick_up_tips_from(rack=tip_box)
await evo.mca.aspirate(
source=source_trough,
volume=100,
)
Dispense
Dispense the aspirated volume into the destination plate.
await evo.mca.dispense(
target=dest_plate,
volume=100,
)
Using Parameter Sets
For more control, use MCAAspirateParameterSet/MCADispenseParameterSet instead of keyword arguments. A device-independent AspirateParameterSet/DispenseParameterSet is also accepted and adopted onto the EVO-specific class.
from unitelabs.liquid_handling.tecan.modules import MCAAspirateParameterSet, MCADispenseParameterSet
from unitelabs.liquid_handling.modules import PipetteMode
aspirate_params = MCAAspirateParameterSet(volume=100)
await evo.mca.aspirate(source_trough, aspirate_params)
dispense_params = MCADispenseParameterSet(
volume=100,
pipette_mode=PipetteMode.BOTTOM,
liquid_offset=3.0,
)
await evo.mca.dispense(dest_plate, dispense_params)
Liquid Classes
Pass a liquid class to calibrate the plunger physics for the liquid being handled — see Liquid Classes for details.
from unitelabs.labware.tecan import EvoLiquidClass
await evo.mca.aspirate(source_trough, volume=100, liquid_class=EvoLiquidClass())
Mixing
Mix in place before an aspirate, or after a dispense, by setting mix_cycles (and optionally mix_volume/mix_liquid_offset).
await evo.mca.aspirate(
source=source_trough,
volume=100,
mix_cycles=3,
mix_volume=50,
)
Touch-Side Dispense
Setting touch_side=True moves the tips against the well wall after dispensing, deriving the distance from the destination's geometry. This is only supported for plate/well targets, not troughs.
from unitelabs.liquid_handling.tecan import TouchTipDirection
await evo.mca.dispense(
target=dest_plate,
volume=100,
touch_side=True,
touch_side_direction=TouchTipDirection.EAST,
)
Discard Tips
await evo.mca.discard_tips()
Aspirate Parameter Reference
The following parameters are accepted by mca.aspirate() as keyword arguments or via MCAAspirateParameterSet:
| Parameter | Type | Default | Description |
|---|---|---|---|
volume | Number | auto | Volume in µL aspirated by every mounted channel. Defaults to min(free tip space, available source volume). |
liquid_class | EvoLiquidClass | auto | Supplies the plunger physics (calibration, per-phase speeds, air gaps). Defaults to an uncalibrated class. |
pipette_mode | AspiratePipetteMode | SURFACE | Descend relative to the liquid SURFACE or the container BOTTOM. |
liquid_offset | Number | auto | Z offset in mm relative to the pipette mode. Defaults to min(0.5, liquid level). |
offset | Vector | (0,0,0) | XY offset in mm added to the A1 reference well. Use liquid_offset for Z. |
follow_liquid | bool or Number | False | Track the falling liquid level during aspiration. True derives the distance from the volume. |
pull_out_distance | Number | 0 | Distance in mm to slowly retract the tips out of the liquid afterward, to reduce wetting. |
end_z_offset | Number | auto | Height in mm above the container the head retracts to afterward. Defaults to the traverse height. |
min_traverse_height | Number | auto | Z the head raises to before the X/Y move. Defaults to the configured min_traverse_height. |
mix_cycles | int | 0 | Number of aspirate/dispense cycles to mix the source beforehand. 0 or omitted disables mixing. |
mix_liquid_offset | Number | auto | Additional Z offset during mixing. |
mix_volume | Number | auto | Volume aspirated/dispensed per mix cycle. Defaults to as much as tip and well can hold. |
Dispense Parameter Reference
The following parameters are accepted by mca.dispense() as keyword arguments or via MCADispenseParameterSet:
| Parameter | Type | Default | Description |
|---|---|---|---|
volume | Number | auto | Volume in µL dispensed by every mounted channel. Defaults to min(tip content, free target volume). |
liquid_class | EvoLiquidClass | auto | Supplies the plunger physics. Defaults to an uncalibrated class. |
pipette_mode | DispensePipetteMode | SURFACE | Descend relative to SURFACE or BOTTOM. JET is not supported by this head. |
liquid_offset | Number | auto | Z offset in mm relative to the pipette mode. |
offset | Vector | (0,0,0) | XY offset in mm added to the A1 reference well. |
follow_liquid | bool or Number | False | Track the rising liquid level during dispense. |
pull_out_distance | Number | 0 | Distance in mm to slowly retract the tips out of the liquid afterward. |
end_z_offset | Number | auto | Height in mm above the container the head retracts to afterward. |
min_traverse_height | Number | auto | Z the head raises to before the X/Y move. |
mix_cycles | int | 0 | Number of aspirate/dispense cycles to mix the destination afterward. |
mix_liquid_offset | Number | auto | Additional Z offset during mixing. |
mix_volume | Number | auto | Volume per mix cycle. Defaults to what the tip and destination hold before the dispense. |
touch_side | bool or Number | False | True derives the wall-touch distance from container geometry after dispensing; a Number sets it directly. |
touch_side_direction | TouchTipDirection | EAST | Direction to move the tips against the well wall after dispensing. |
mca_plunger_steps_per_ul on TecanFreedomEvoConfiguration (default 200) converts µL to plunger steps for the whole head. Only adjust it if every liquid you pipette is off by the same factor or an order of magnitude — for individual-liquid corrections, use a custom liquid class instead (see Liquid Classes).