Mixing#

star supported Vantage supported OT supported EVO not tested

Mixing in PLR is hardware agnostic. You can currently mix before an aspiration or after a dispense by passing the mix parameter to the corresponding method call.

A standalone mixing operation will be added in the future.

# Example deck setup for STAR. This can be any robot.
from pylabrobot.liquid_handling import LiquidHandler, LiquidHandlerChatterboxBackend
from pylabrobot.resources import STARDeck  # as an example
lh = LiquidHandler(backend=LiquidHandlerChatterboxBackend(), deck=STARDeck())
await lh.setup()

from pylabrobot.resources import TIP_CAR_480_A00, hamilton_96_tiprack_1000uL_filter
tip_carrier = TIP_CAR_480_A00(name="tiprack_1")
tip_carrier[0] = tr0 = hamilton_96_tiprack_1000uL_filter(name="tiprack_1_0")
lh.deck.assign_child_resource(tip_carrier, rails=1)

from pylabrobot.resources import PLT_CAR_L5AC_A00, Cor_96_wellplate_360ul_Fb
plate_carrier = PLT_CAR_L5AC_A00(name="plate_carrier_1")
plate_carrier[0] = plate = Cor_96_wellplate_360ul_Fb(name="plate_1")
lh.deck.assign_child_resource(plate_carrier, rails=10)
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 waste_block was assigned to the liquid handler.
Resource tiprack_1 was assigned to the liquid handler.
Resource plate_carrier_1 was assigned to the liquid handler.

Mixing#

Import the Mix object, and pass it to the mix parameter of LiquidHandler.aspirate and LiquidHandler.dispense as a list, with one object per channel.

await lh.pick_up_tips(tr0["A1"])
Picking up tips:
pip#  resource             offset           tip type     max volume (µL)  fitting depth (mm)   tip length (mm)  filter    
  p0: tiprack_1_0_tipspot_0_0 0,0,0            HamiltonTip  1065             8                    95.1             Yes       
from pylabrobot.liquid_handling.standard import Mix
await lh.aspirate(plate["A1"], vols=[100], mix=[Mix(volume=50, repetitions=3, flow_rate=100)])
Aspirating:
pip#  vol(ul)  resource             offset           flow rate  blowout    lld_z       
  p0: 100.0    plate_1_well_0_0     0,0,0            None       None       None       
await lh.dispense(plate["A1"], vols=[100], mix=[Mix(volume=50, repetitions=3, flow_rate=100)])
Dispensing:
pip#  vol(ul)  resource             offset           flow rate  blowout    lld_z       
  p0: 100.0    plate_1_well_0_0     0,0,0            None       None       None       
await lh.return_tips()
Dropping tips:
pip#  resource             offset           tip type     max volume (µL)  fitting depth (mm)   tip length (mm)  filter    
  p0: tiprack_1_0_tipspot_0_0 0,0,0            HamiltonTip  1065             8                    95.1             Yes       
await lh.stop()
Stopping the liquid handler.