Waste Configuration
Overview
Hamilton Vantage liquid handlers support two types of tip waste:
- Universal Waste (
VantageUniversalWaste) - This large waste can accommodate tips from multiple vantage modules (1000 ul pipettes, 5ml XL channels, CoRe 96 head etc.). It takes up 8 tracks of deck space and is similar in construction to STAR waste block. The Universal Waste uses a SHIFT discard method where pipetting channels shift sideways after ejecting tips. - 2T Waste (
Vantage2TWaste) - This slim waste takes 2 tracks of deck space and can be used with channels (1000 ul pipettes, 5ml XL channels) only. Correct ejection plate must be used to accommodate different channel configurations. The 2T Waste uses a DROP discard method where tips drop straight down without channel shifting.
Waste Configuration
Information about the waste system is not stored in the instrument FW, therefore waste has to be manually configured before initializing the Vantage liquid handler. If you are not sure about waste configuration of your system, consult with the manufacturer.
Vantage Waste can only be placed on certain deck positions, depending on your instrument type:
| Waste Type | Waste Type Enum | 1.3m Instrument | 2.0m Instrument |
|---|---|---|---|
| Universal | WasteType.UNIVERSAL | 20, 30, 40 | 34, 50, 60, 70 |
| 2T | WasteType.TWO_T | 25, 35, 45 | 39, 55, 65, 75 |
Universal Waste Configuration
To configure universal waste, you need to specify the waste type and track location in the vantage configuration and then call configure() method:
from unitelabs.liquid_handling.hamilton import Vantage
from unitelabs.liquid_handling.hamilton.interfaces import WasteType
vantage = Vantage("My Vantage")
# Configure Universal Waste at track 40
config = await vantage.get_configuration()
config.waste_type = WasteType.UNIVERSAL
config.waste_track = 40
await vantage.configure()
2T Waste Configuration
For 2T waste, the ejection plate must be specified additionally based on the instrument hardware.
Following ejection plates are available for Hamilton Vantage: PIP_1000UL, PIP_1000UL_MAGPIP.
from unitelabs.labware.hamilton.waste import Hamilton2TEjectionPlate
from unitelabs.liquid_handling.hamilton.interfaces import WasteType
# Configure 2T Waste with PIP_1000UL ejection plate
config = await vantage.get_configuration()
config.waste_type = WasteType.TWO_T
config.waste_track = 35
config.ejection_plate = Hamilton2TEjectionPlate.PIP_1000UL
await vantage.configure()
Discarding Tips
To use waste to discard tips it is enough to call discard_tips() method from the used pipetting channels. The SDK automatically uses the correct discard location and method based on your configured waste type.
# Discard tips from all channels that have tips
await vantage.pipettes.discard_tips()
# Discard from specific channels
await vantage.xl_channels.discard_tips(channels=[0, 1])
Accessing Waste Spots Locations
Access waste spots by channel type:
# Get the waste block
waste_block = vantage.deck.waste_block
# Access spots by type
pip_spots = waste_block.spots.get("pip", []) # Standard pipetting
xl_spots = waste_block.spots.get("xl", []) # XL channels
core96_spots = waste_block.spots.get("core96", []) # CoRe 96 head
magpip_spots = waste_block.spots.get("magpip", []) # Magnetic pipetting
# Iterate over spots
for spot in pip_spots:
print(f"Waste spot at: {spot.absolute_location}")
Defining Custom Waste
Because Vantage Wastes are defined as labware dataclasses, any type of custom waste can be defined and used by the user by creating a custom labware dataclass and passing it to the Vantage configuration.
In the following example, a custom universal waste with limited ejection space (only front half of the waste is used for tip ejection) is defined and used:
from decimal import Decimal
import dataclasses
import typing
from unitelabs.geometry.vector import Vector
from unitelabs.labware.hamilton.waste import VantageUniversalWaste, UNIVERSAL_DIMENSIONS
from unitelabs.liquid_handling.hamilton import Vantage
from unitelabs.liquid_handling.hamilton.interfaces import WasteType
vantage = Vantage("My Vantage")
@dataclasses.dataclass
class CustomUniversalWaste(VantageUniversalWaste):
y_min: typing.ClassVar[Decimal] = Decimal("201.6")
y_max: typing.ClassVar[Decimal] = Decimal("290")
dimensions: Vector = dataclasses.field(
default_factory=lambda: Vector(
x=UNIVERSAL_DIMENSIONS.x,
y=Decimal("290") - Decimal("201.6"),
z=UNIVERSAL_DIMENSIONS.z
)
)
config = await vantage.get_configuration()
config.waste_track = 40
config.waste_type = CustomUniversalWaste
await vantage.configure()