Plate Carriers#

Plate carriers slide into rails on railed-decks like Hamilton STAR(let) and Tecan EVO, and are used to hold Plates.

Using a plate carrier#

The PyLabRobot Resource Library (PLR-RL) has a big number of predefined carriers. You can find these in the PLR-RL docs. Hamilton Plate Carriers may be of particular interest.

from pylabrobot.resources.ml_star import PLT_CAR_L5AC_A00
my_plate_carrier = PLT_CAR_L5AC_A00(name="my_plate_carrier")
my_plate_carrier.capacity
5

To assign a plate at a specific location in the plate carrier, simply set it at a specific index. In PLR, carriers are 0-indexed where the site at the front of the robot (nearest to the door) is 0.

from pylabrobot.resources import Cor_96_wellplate_360ul_Fb

my_plate = Cor_96_wellplate_360ul_Fb(name="my_plate")
my_plate_carrier[0] = my_plate

You can assign plates to a variable and to the carrier in a single line.

my_plate_carrier[1] = my_other_plate = Cor_96_wellplate_360ul_Fb(name="my_other_plate")

The children (in the arborescence) of a plate carrier are pylabrobot.resources.carrier.PlateHolder objects. These model the sites for plates on the carrier. A PlateHolder may or may not have a Plate as a child, depending on whether the spot is occupied.

my_plate_carrier[0]
PlateHolder(name=carrier-my_plate_carrier-spot-0, location=(004.000, 008.500, 086.150), size_x=127.0, size_y=86.0, size_z=0, category=plate_holder)
my_plate.parent
PlateHolder(name=carrier-my_plate_carrier-spot-0, location=(004.000, 008.500, 086.150), size_x=127.0, size_y=86.0, size_z=0, category=plate_holder)

You can use the PlateHolder.resource attribute to access the Plate object, if it exists.

my_plate_carrier[0].resource
Plate(name=my_plate, size_x=127.76, size_y=85.48, size_z=14.2, location=(000.000, 000.000, -03.030))
my_plate_carrier[2].resource is None
True

Moving plates onto carrier sites#

If your liquid handling robot has a robotic arm, or if you are using an external robot arm that can interface with carriers, you can move plates out of or onto carriers using the move_plate method. For this, you can specify the destination by indexing into the carrier. This will return a PlateHolder object.

As an example, we will use the LiquidHandlerChatterboxBackend, but this code will work on any robot that supports moving plates.

from pylabrobot.liquid_handling import LiquidHandler, LiquidHandlerChatterboxBackend
from pylabrobot.resources import STARDeck
lh = LiquidHandler(backend=LiquidHandlerChatterboxBackend(), deck=STARDeck())
lh.deck.assign_child_resource(my_plate_carrier, rails=1)
await lh.setup()
Resource my_plate_carrier was assigned to the liquid handler.
Setting up the liquid handler.
Resource deck was assigned to the liquid handler.
Resource trash was assigned to the liquid handler.
Resource trash_core96 was assigned to the liquid handler.
Resource my_plate_carrier was assigned to the liquid handler.
await lh.move_resource(my_plate, my_plate_carrier[2])
Moving Move(resource=Plate(name=my_plate, size_x=127.76, size_y=85.48, size_z=14.2, location=(000.000, 000.000, -03.030)), destination=PlateHolder(name=carrier-my_plate_carrier-spot-2, location=(004.000, 200.500, 086.150), size_x=127.0, size_y=86.0, size_z=0, category=plate_holder), intermediate_locations=[], resource_offset=Coordinate(x=0, y=0, z=0), destination_offset=Coordinate(x=0, y=0, z=0), pickup_distance_from_top=0, get_direction=<GripDirection.FRONT: 1>, put_direction=<GripDirection.FRONT: 1>).

Pedestal z height#

ValueError(“pedestal_size_z must be provided. See https://docs.pylabrobot.org/resources/plate_carriers.html#pedestal_size_z for more information.”)

Many plate carriers feature a “pedestal” or “platform” on the sites. Plates can sit on this pedestal, or directly on the bottom of the site. This depends on the pedestal and plate geometry, so it is important that we know the height of the pedestal.

The pedestal information is not typically available in labware databases (like the VENUS or EVOware databases), and so we rely on users to measure and contribute this information.

Here’s how you measure the pedestal height:

Pedestal height measurement

Once you have measured the pedestal height, you can contribute this information to the PyLabRobot Labware database. Here’s a guide on contributing to the open-source project: “How to Open Source”.

For background, see PR 143: PyLabRobot/pylabrobot#143.