TubeRack#

TubeRack is a ContainerRack whose positions hold Tube objects. Unlike the base ContainerRack, assigning another resource type raises ValueError. Each position is a ResourceHolder and can be empty. See the ContainerRack guide for position lookup, range assignment, and removal.

Create a rack#

The dimensions below are illustrative and use millimeters; use measured dimensions for physical labware.

from pylabrobot.resources import Tube, TubeRack, create_ordered_items_2d
from pylabrobot.resources.resource_holder import ResourceHolder

rack = TubeRack(
  name="sample_tube_rack",
  size_x=60,
  size_y=40,
  size_z=20,
  ordered_items=create_ordered_items_2d(
    ResourceHolder,
    num_items_x=2,
    num_items_y=2,
    dx=5,
    dy=5,
    dz=0,
    item_dx=25,
    item_dy=25,
    size_x=16,
    size_y=16,
    size_z=20,
    name_prefix="sample_tube_rack",
  ),
)

tube = Tube(name="sample_1", size_x=16, size_y=16, size_z=40, max_volume=5000)
rack["A1"] = tube

assert rack.get_tube("A1") is tube
assert rack.get_tube("B1") is None
assert rack.get_container("A1") is tube

get_tube() returns None for an empty position. In contrast, get_container() raises ValueError for an empty position; check has_container() first when occupancy is uncertain. These assignments only update the resource model; they do not move physical tubes.

See TubeRack for the API reference.