Building a deck
Decks are typically used for arranging labware on the working deck of a liquid handler. Labware can be placed on the deck and the location of the labware will then be measured relative to the deck origin. The coordinate system of the deck is 3-dimensional with x-, y-, z- coordinates which correspond to width, depth, height respectively. When standing in front of the device, the origin is in the bottom, left corner that is in the front of the device. Depending on the device, the origin can be below the deck and beyond the marked tracks. Make sure to familiarize yourself with the respective deck specifics using the guide for that device (e.g. see Liquid handling / Positioning and movement).
Decks have a dimension that is constrained by the liquid handler space. When importing the deck directly as shown below, default constraints are applied.
from unitelabs.liquid_handling.hamilton import HamiltonDeck
deck = HamiltonDeck()
print(deck.summary())
Which returns:
Tracks Name ID Capacity Content X-Range Height
======================================================================================
1 - 30 ──
However, if the deck is created automatically using the specific liquid handler class, the deck dimensions are pre-configured for that particular liquid handler model (See Liquid handling / Getting started with liquid handlers for reference).
from unitelabs.liquid_handling.hamilton import MicrolabSTAR
# Initialize the Hamilton Microlab STAR
hamilton = MicrolabSTAR(name="Microlab STAR")
await hamilton.initialize()
print(hamilton.deck.summary())
Now we can start and add our first carrier. We will use a landscape tip carrier with 5 slots for tips racks. The location of the carrier on the deck is provided in absolute coordinates and passed using the Vector class. We place the carrier starting on rail 16.
from unitelabs.liquid_handling.hamilton import HamiltonDeck
from unitelabs.labware import Vector
from unitelabs.labware.hamilton import TIP_CAR_480_A00
deck = HamiltonDeck()
tip_carrier = TIP_CAR_480_A00(identifier="tip_carrier")
deck.add(tip_carrier, track=16)
# Alternatively the exact location can be set
# deck.add(tip_carrier, location=Vector(x=(16 - 1) * 22.5, y=63, z=0))
print(deck.summary())
Now our deck looks like this:
Tracks Name ID Capacity Content X-Range Height
======================================================================================
1 - 15 ┌─
16 - 21 ├─ TIP_CAR_480_A00 tip_carrier 0 tips 0 tips 337.5 - 472.5 130.0
│ ├─
│ ├─
│ ├─
│ ├─
│ └─
22 - 30
MicrolabSTAR
class, a deck is autogenerated and dynamically configured during the initialization process.We can add more labware to the carrier like a pre-defined Hamilton tip rack and Hamilton standard filter tips. In the following code we first instantiate the StandardTipRack, then fill it with StandardFilterTips and then set the tip rack into the second slot (from behind) of the tip carrier we created earlier. The tip_carrier object is linked to the deck.
from unitelabs.labware.hamilton import StandardFilterTip, StandardTipRack
tip_rack = StandardTipRack(filled_with=StandardFilterTip)
tip_carrier[1] = tip_rack
print(deck.summary())
Printing the deck summary shows that the tip rack and the tips were added successfully.
Tracks Name ID Capacity Content X-Range Height
======================================================================================
1 - 15 ┌─
16 - 21 ├─ TIP_CAR_480_A00 tip_carrier 96 tips 96 tips 337.5 - 472.5 135.0
│ ├─
│ ├─ StandardTipRack e3e3a74b 96 tips 96 tips
│ ├─
│ ├─
│ └─
22 - 30 └─
Adding plates can be done in the same way as adding racks. We will import a plate carrier and add a standard plate to it. We place the carrier starting on rail 10:
from unitelabs.labware.hamilton import TIP_CAR_480_A00, PLT_CAR_L5MD_A00
from unitelabs.labware.corning_costar import Cos_96_FB
plate_1 = Cos_96_FB()
plate_carrier = PLT_CAR_L5MD_A00(identifier="plate_carrier")
plate_carrier[1] = plate_1
deck.add(plate_carrier, track=10)
print(deck.summary())
Tracks Name ID Capacity Content X-Range Height
======================================================================================
1 - 9 ┌─
10 - 15 ├─ PLT_CAR_L5MD_A00 plate_carrier 5 plates 1 plates 202.5 - 337.5 130.0
│ ├─
│ ├─ Cos_96_FB a9e7efb0 34560 µl 0 µl
│ ├─
│ ├─
│ └─
16 - 21 ├─ TIP_CAR_480_A00 tip_carrier 96 tips 96 tips 337.5 - 472.5 135.0
│ ├─
│ ├─ StandardTipRack e3e3a74b 96 tips 96 tips
│ ├─
│ ├─
│ └─
22 - 30 └─
It is often required to create custom labware. Check out the Creating custom labware guide to learn more on that topic! The Getting started with liquid handlers guide explains how the deck is added to the liquid handler class and used in operation.