Hi everyone,
I found that when I dispense into multiple wells in the same column using multiple channels simultaneously the pipetting accuracy is exactly as desired:
for x in tqdm(range(88, 93,8)):
dest_wells = prep_plate_0.children[x:x+5]
await lh.dispense(
dest_wells,
vols=[8]*len(dest_wells),
swap_speed = [20]*len(dest_wells),
homogenization_speed = [20]*len(dest_wells),
offsets = [Coordinate(x=0,y=0,z=1.66)]*len(dest_wells),
mix_speed = 20
)
dest_wells
> [Well(name=prep_plate_0_well_11_0, location=(108.500, 070.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well),
Well(name=prep_plate_0_well_11_1, location=(108.500, 061.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well),
Well(name=prep_plate_0_well_11_2, location=(108.500, 052.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well),
Well(name=prep_plate_0_well_11_3, location=(108.500, 043.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well),
Well(name=prep_plate_0_well_11_4, location=(108.500, 034.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well)]
However, as soon as I use a single dispensation the arm moves about 5mm to the right and the tip then crashes into the plate.
await lh.dispense(dest_wells[channel_idx],
vols = [8],
swap_speed = 40,
homogenization_speed = 20,
flow_rates = 120,
blow_out_air_volume = 2,
offsets = [Coordinate(x=0,y=0,z=1.66)],
mix_speed = 30,
use_channels = [channel_idx]
)
channel_idx
> 0
dest_wells[channel_idx]
> Well(name=prep_plate_0_well_11_0, location=(108.500, 070.000, 000.750), size_x=9.0, size_y=9.0, size_z=11.3, category=well)
I have checked the specified destination wells and they are exactly the same (shown above with the associated code).
I observe the exact same behaviour at aspirations.
Here is one example that I filmed:
Working coordinates for multi-aspirate
source_wells = reagent_plate_1.children[:4]
for x in range(1):
await lh.aspirate(
source_wells,
vols=[2]*len(source_wells),
swap_speed = [50]*len(source_wells),
homogenization_speed = [20]*len(source_wells),
lld_mode = [lh.backend.LLDMode(1)]*len(source_wells),
use_channels = [channel+4*x for channel in [0,1,2,3]]
)
Disfunctional coordinates for single-aspirate
await lh.aspirate(
source_wells[0],
vols=[2],
swap_speed = [50],
homogenization_speed = [20],
lld_mode = [lh.backend.LLDMode(1)],
use_channels = [0]
)
these two cells executed right after one another:
This is a very consistent across different locations and different plates.
Does anyone have an idea why single dispensations would suddenly change their x offset without any commands to do so (as far as I can see)?