Demo - On-the-fly liquid pipetting adjustment

Just here to share some scripting ideas with the group in case it helps anyone down the road or helps inspire the solution to other problems!

I have a use case where I am aspirating/dispensing to several volumes in a loop from a single source reservoir to different wells. The volume changes for each dispense - think something like a dilution curve. To ensure accurate delivery of volume across a wide range of volumes, it’s important to change the aspiration/dispense speeds according to the liquid volume - for instance, 5uL requires significantly different aspiration speed than 50uL.

In Biomek software, this can be achieved by entering a script step into the asp/disp loop which modifies the following values:

MyVolumeArray(i) = {5,25,50}
Loop i = 0 to 2
World.LiquidTypes.MyLiquidClass.context.c__aspiratespeed = MyVolumeArray(i)/3
World.LiquidTypes.MyLiquidClass.context.c__dispensespeed = MyVolumeArray(i)/2

ASPIRATE volume=MyVolumeArray(i)  liquidType=MyLiquidClass
DISPENSE volume=MyVolumeArray(i)  liquidType=MyLiquidClass

NOTE: final value must be >0.49 as there is an implied Round(value,0) somewhere between loading the variable and passing it to firmware command. Luckily though, a speed of 0 will trigger a validation error before execution

This will result in 3s aspirations and 2s dispenses for each liquid transfer within the loop regardless - of volume. This could be expanded to tiptouch_theta, z_delta, delay, and any other liquid type parameter as is needed - the variables that can be changed are very intuitive looking at the liquid technique editor. Happy automating!