Troughs
Troughs
Troughs are used to store large amounts of liquid such as water, ethanol, or buffer solutions. In contrast to a plate, aspiration from or to a trough with multiple channels work from the same shared container volume.
Conceptually, a trough is a collection of Fillables with a defined number of access points (Hole objects) for pipetting channels. These Fillables and holes can be arranged in any layout. In the example below, a grid of 96 holes is generated — similar to a 96-well plate layout — so that multi-channel heads can access the trough at each column position. cols and rows are hints for the arrangement of the Holes.
import collections.abc
import dataclasses
from unitelabs.labware import (
Container,
Cuboid,
Fillable,
Hole,
StandardMicroplateDimensions,
Trough,
Vector,
place_standardized,
)
@dataclasses.dataclass
class StandardTrough(Trough, StandardMicroplateDimensions):
"""A standard trough."""
cols: int = 12
rows: int = 8
dimensions: Vector = dataclasses.field(default_factory=lambda: Vector(z=44))
children: collections.abc.Sequence[Fillable] = dataclasses.field(
repr=False,
default_factory=lambda: [
Fillable(
container=Container(max_volume=300_000, sections=[Cuboid(width=108, depth=72, height=40)]),
children=[
Hole(dimensions=dimensions).copy(location=location)
for location, dimensions in place_standardized(count=96, boundary_height=44, item_height=40)
],
)
],
)
More complex troughs can have multiple containers, as with "12-column troughs" or "8-row troughs". For consistency across these labware types, troughs' containers are accessed like trough.containers[0], even if there is only one container (i.e. the standard trough above, the most common case).