Liquid Handling

Basic pipetting

A tutorial on basic aspiration and dispense operations using liquid classes.

In this guide a deck with a plate, tips and a trough is created. Tips are picked up to aspirate liquid from the trough using a predefined liquid class and then dispensed into a plate well.

Prerequisites

Power On the System

Ensure that the Microlab STAR is powered on and ready for operation. Verify that the connector is running and connected to the UniteLabs platform.

from unitelabs.sdk import Client
from unitelabs.liquid_handling.hamilton import MicrolabSTAR
from unitelabs.inout import create_remote_connection

client = Client()

# Initialize the Hamilton Microlab STAR
hamilton = MicrolabSTAR(
    transport_factory=create_remote_connection,
    client=client,
    name="Microlab STAR",
)
await hamilton.initialize()

Arrange the Deck

Arrange the deck layout using the components from the labware library. This guide uses

  • a tip carrier with one tip rack filled with standard tips (300 μL) and
  • a plate carrier with one standard 96 well microtiter plate and a standard 300 ml trough filled with water.
from unitelabs.labware import Liquid, Standard96Plate, StandardTrough, Vector
from unitelabs.labware.hamilton import PLT_CAR_L5MD_A00, TIP_CAR_480_A00, StandardTip, StandardTipRack

# Tip carrier
tip_carrier = TIP_CAR_480_A00()
tip_rack = StandardTipRack(filled_with=StandardTip)

tip_carrier[0] = tip_rack
hamilton.deck.add(tip_carrier, track=7)

# Plate carrier
plate_carrier = PLT_CAR_L5MD_A00()
plate = Standard96Plate()
trough = StandardTrough()
trough.container.add_liquid(Liquid.WATER, 150_000)

plate_carrier[0] = plate
plate_carrier[1] = trough
hamilton.deck.add(plate_carrier, track=1)

Aspirate

Make sure to pick up tips with the channels first:

await hamilton.pipettes.pick_up_tips_from(channels=range(8), rack=tip_rack)

Use the channels to each aspirate 100 µl of water from the trough.

from unitelabs.labware.hamilton import LiquidClass

liquid_class = LiquidClass.StandardVolume_Water_DispenseJet_Empty()

await hamilton.pipettes.aspirate(
    fillables=trough,
    channels=range(8),
    volumes=100,
    liquid_class=liquid_class
)

Check the current volume of a channel.

current_volume = await hamilton.pipettes[0].current_volume()

print(f"{current_volume} µl")
# 104.928380 µl

Dispense

Dispense the water from each channel into a well of the plate.

await hamilton.pipettes.dispense(
    fillables=plate["A1":"I1"],
    channels=range(8),
    volumes=100,
    liquid_class=liquid_class
)

Copyright © 2024