UniteLabs
Hamilton STAR

Waste Block

Overview

On Hamilton STAR line, the waste block is a specialized, always present labware component that provides:

  • Teaching needle spots - Storage and access points for teaching needles
  • Waste positions - Tip discard positions for tip disposal during workflows Waste block on Hamilton Microlab STARlet robots is located just right of the track 30 and on STAR robots just right of the track 54.

In Unitelabs, the waste block is automatically configured when using initialize() or configure() command on STAR liquid handler. The waste block is created with the correct number of spots based on the number of channels the liquid handler possesses.

Using the Waste Block

Discarding Tips

To discard tips to the waste block, use the discard_tips() method. The SDK automatically targets the correct waste positions:

# Discard tips from all channels that have tips
await hamilton.pipettes.discard_tips()

# Discard tips from specific channels
await hamilton.pipettes.discard_tips(channels=[0, 1, 2])

# Discard with custom offset
from unitelabs.labware import Vector
await hamilton.pipettes.discard_tips(drop_offset=Vector(x=0, y=0, z=5))

To learn more about tip handling, see the Tips Handling page.

Using Teaching Needles

To pick up teaching needles from the waste block, use the pick_up_teaching_needles() method on the pipettes module.

# Pick up and put down teaching needle on the first pipetting channel (default)
await hamilton.pipettes.pick_up_teaching_needles()
await hamilton.pipettes.put_down_teaching_needles()

# Pick up and put down teaching needles on specific channels
await hamilton.pipettes.pick_up_teaching_needles(channels=[0, 2, 4])
await hamilton.pipettes.put_down_teaching_needles(channels=[0, 2, 4])

Accessing Waste Spots

Waste spots (discard positions) are stored as children of the waste block:

from unitelabs.liquid_handling.hamilton import MicrolabSTAR

star = MicrolabSTAR("Hamilton Microlab STAR")
await hamilton.deck.configure(waste_block=True, teaching_needles=True)

# Get all waste spots
waste_spots = star.deck.waste_block.children  # List of WasteSpot (one per channel)

# Access a specific spot by index
spot = waste_spots[0]
print(f"Waste spot location: {spot.absolute_location}")

# Iterate over waste spots
for i, spot in enumerate(waste_spots):
    print(f"Channel {i} waste spot: {spot.absolute_location}")

Accessing Teaching Needles

If the waste block has teaching needles configured, access them through the teaching needle block:

# Get the teaching needle block
teaching_block = star.deck.waste_block.teaching_needle_block  # Returns TeachingNeedleBlock or None

if teaching_block:
    # Access teaching needles
    for needle in teaching_block.children:
        print(f"Teaching needle at: {needle.absolute_location}")