Autoload
A tutorial on a liquid handler Autoload module.
In this guide the basic deck is extended with a loading tray and the Autoload is used to move carriers on and off the deck. The barcode scanner of the Autoload is used to scan barcodes of the carrier and plate placed on it.
Prerequisites
- A switched on Microlab STAR device with the Autoload module
- A plate carrier with barcode, plate with a barcode
- A running Microlab STAR connector
- Basic understanding of how labware is used (See Importing standard labware)
- Basic understanding of the liquid handler class (See Getting started with liquid handlers)
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 plate carrier with one barcoded standard 96 well microtiter plate.
- a sample carrier filled with barcoded tubes.
If the liquid handler is outfitted with a loading tray, this loading tray is configured during initialization and extends the regular main deck. The loading tray part of the deck can be accessed through the autoload module.
from unitelabs.labware import Standard96Plate, Vector
from unitelabs.labware.falcon import Standard15mLTube
from unitelabs.labware.hamilton import PLT_CAR_L5MD_A00, SMP_CAR_12_A00
# Sample carrier
sample_carrier = SMP_CAR_12_A00()
sample_carrier.fill(Standard15mLTube())
hamilton.autoload.loading_tray.add(sample_carrier, track=1)
# Plate carrier
plate_carrier = PLT_CAR_L5MD_A00()
plate = Standard96Plate()
plate_carrier[0] = plate
hamilton.autoload.loading_tray.add(plate_carrier, track=7)
Positioning and movement
Before diving into loading and unloading, the current position of the autoload relative to the tracks is queried.
await hamilton.autoload.current_track()
The autoload carriage can also be moved to a defined track position or moved to safety using the move_to()
and the
park()
method.
await hamilton.autoload.move_to(track=30)
await hamilton.autoload.park()
Loading
The load_carrier()
method will drive the autoload carriage to the defined track and move the carrier onto the deck
space. The in-built barcode reader can read barcodes of tubes and plates that are placed on the carrier. The following
line of code loads the plate carrier and reads the barcodes of all plates placed on it using the ISBT Standard barcode
encoding.
barcodes = await hamilton.autoload.load_carrier(carrier=plate_carrier,read_barcode=1, is_last= False)
In this example, the carriers are loaded one after another and thus the autoload carriage should remain in position
after loading the first carrier. For this, the is_last=False
is used. Otherwise, the carriage would return to its
parking position after each loading procedure.
The method returns a list of strings with the decoded barcode information. The position in the list corresponds to the position of the labware on the carrier.
The load_carrier()
method infers the orientation of the barcode on the labware and will turn the reader into a
vertical or horizontal orientation respectively. The following line loads the sample carrier and reads the barcodes in a
vertical orientation.
barcodes = await hamilton.autoload.load_carrier(carrier=sample_carrier)
Barcode types
There is a variety of barcodes in use and in some cases it may be necessary to specify which barcode type is being read
to ensure the barcode is interpreted correctly. The following barcode types can be interpreted by the autoload module as
defined by the hardware. The read_barcode
parameter default is defined by the carrier and the plates placed on it. If
none of the labware specifies a barcode preference, the ISBT Standard (1) is used as a default when passing True
.
Barcode type | Parameter value |
---|---|
ISBT Standard (Default) | 1 |
Code 128 (subset B and C) | 2 |
Code 39 | 4 |
Codabar | 8 |
Code 2 of 5 Interleaved (ITF) | 16 |
UPC A/E | 32 |
YESN / EAN-8 | 64 |
Unloading
Unloading is performed with the unload_carrier()
method. In the following snippet, the last unload method returns the
autoload carriage to its home position after completing the unload process using the is_last
parameter.
await hamilton.autoload.unload_carrier(carrier=sample_carrier)
await hamilton.autoload.unload_carrier(carrier=plate_carrier, is_last=True)
Selected low-level methods
More useful methods can be accessed through the low-level api using hamilton.autoload.api
. These methods only check
basic parameter constraint and not any logical or collision-related constraints. The can be invoked as follows:
await hamilton.autoload.api.get_deck_presences()
Useful low-level methods include, among others:
get_deck_presences()
Check the presence of carriers on the deck without movement. Presence sensors can only check the highest track number that is occupied by the carrier, not its width.get_loading_tray_presences()
Check the presence of carriers on the loading tray by moving along the tracks. Presence sensors can only check the highest track number that is occupied by the carrier, not its width.get_carrier_presence(track)
Check the presence of a single carrier on the loading tray by moving to the specified tracks.set_loading_indicators(status)
Set the loading indicators (LED's) of the autoload unit.get_module_type()
Request the installed autoload module type.