Dispensing modes: previous `empty` parameter now `blow_out`

Important update for STAR and Vantage users:

A coworker remarked that the empty parameter does not always empty the liquid in the tip, even when expected based on the volumes passed to lh.aspirate and dispense (eg asp 1000, disp 5*200). This is expected on Vantage and STAR because of the nonlinear correction curve, also implemented by VENUS.

There are different dispense modes in the firmware:

  1. 0 = part in jet
  2. 1 = blow in jet
  3. 2 = Part at surface
  4. 3 = Blow at surface
  5. 4 = Empty

Of those, only the first fouir are available in the Hamilton Liquid Editor as:

  1. jet part
  2. jet empty
  3. surface part
  4. surface empty

Note that ‘empty’ here corresponds to ‘blow’ in the firmware docs. Dispense mode 4 (truly empty) is not available in a liquid class, and is only used by VENUS when doing a sequence aspiration/dispense.

In PyLabRobot, I opted to use a blow_out parameter (as well as jet) for {aspirate,dispense}(96) instead of the previous empty. As before, this is a list of bools, one per channel, and one value for 96-head operations. And as before, these are used for inferring the liquid class and specifying the dispense type. As before, both are overwritten when specified explicitly.

I then re-introduced empty for actually emptying the tip, ie dispense mode 4. This does correspond to the firmware (which I assume most people here will look at) but does not correspond to the Hamilton liquid class.

IF YOU WERE USING empty IN YOUR PROTOCOLS, PLEASE UPDATE TO blow_out.