UniteLabs

Basic Pipetting

Aspirating and dispensing with the Tecan Freedom EVO MCA96 head.
The Freedom EVO is supported in liquid handling SDK versions >=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)
Using the parameter set form is mutually exclusive with keyword arguments. An aspirate or dispense receiving a parameter set will drop any keyword arguments and use only the information from the parameter set.

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:

ParameterTypeDefaultDescription
volumeNumberautoVolume in µL aspirated by every mounted channel. Defaults to min(free tip space, available source volume).
liquid_classEvoLiquidClassautoSupplies the plunger physics (calibration, per-phase speeds, air gaps). Defaults to an uncalibrated class.
pipette_modeAspiratePipetteModeSURFACEDescend relative to the liquid SURFACE or the container BOTTOM.
liquid_offsetNumberautoZ offset in mm relative to the pipette mode. Defaults to min(0.5, liquid level).
offsetVector(0,0,0)XY offset in mm added to the A1 reference well. Use liquid_offset for Z.
follow_liquidbool or NumberFalseTrack the falling liquid level during aspiration. True derives the distance from the volume.
pull_out_distanceNumber0Distance in mm to slowly retract the tips out of the liquid afterward, to reduce wetting.
end_z_offsetNumberautoHeight in mm above the container the head retracts to afterward. Defaults to the traverse height.
min_traverse_heightNumberautoZ the head raises to before the X/Y move. Defaults to the configured min_traverse_height.
mix_cyclesint0Number of aspirate/dispense cycles to mix the source beforehand. 0 or omitted disables mixing.
mix_liquid_offsetNumberautoAdditional Z offset during mixing.
mix_volumeNumberautoVolume 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:

ParameterTypeDefaultDescription
volumeNumberautoVolume in µL dispensed by every mounted channel. Defaults to min(tip content, free target volume).
liquid_classEvoLiquidClassautoSupplies the plunger physics. Defaults to an uncalibrated class.
pipette_modeDispensePipetteModeSURFACEDescend relative to SURFACE or BOTTOM. JET is not supported by this head.
liquid_offsetNumberautoZ offset in mm relative to the pipette mode.
offsetVector(0,0,0)XY offset in mm added to the A1 reference well.
follow_liquidbool or NumberFalseTrack the rising liquid level during dispense.
pull_out_distanceNumber0Distance in mm to slowly retract the tips out of the liquid afterward.
end_z_offsetNumberautoHeight in mm above the container the head retracts to afterward.
min_traverse_heightNumberautoZ the head raises to before the X/Y move.
mix_cyclesint0Number of aspirate/dispense cycles to mix the destination afterward.
mix_liquid_offsetNumberautoAdditional Z offset during mixing.
mix_volumeNumberautoVolume per mix cycle. Defaults to what the tip and destination hold before the dispense.
touch_sidebool or NumberFalseTrue derives the wall-touch distance from container geometry after dispensing; a Number sets it directly.
touch_side_directionTouchTipDirectionEASTDirection 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).