Hello,
I recently updated my Opentrons OT2s to Robot Version 6.3.1. Among other things, I was excited to be able to use the new “define_liquids” and “well.load_liquid” in API version 2.14 to make things easier for the operators of the OT2s.
I was disappointed to see that the “protocol_context.max_speeds” command is not working on API version 2.14 at this point and is a known limitation. The suggested workaround is to use “InstrumentContext.default_speed” or “the per method speed argument”. I don’t see any documentation anywhere about the second option, so not sure how to try that.
I use the protocol_context.max_speeds quite heavily in my code, specifically to control the z-Axis speed for my pipettes to ensure that i don’t bring extra liquid out with me as the pipette tips withdraw from the liquids after i dispense, and then resetting it to be faster once i have done a blowout to quickly get the tips to the trash. I also use it to slow down the pipetting speed when moving out of a liquid after aspirating as well. Begin able to modify these speeds has helped optimize the speed of my protocols and the reliability of the pipetting.
The “InstrumentContext.default_speed” would slow down the entire gantry; does that include the Z axis, or is it just the X and Y movement? The example given in the API docs shows it used with pipette.move_to ; will it only work movement type commands like “.move_to”? Or will it work if I wrap it around pipetting commands?
I.e. is what I normally do below:
protocol_context.max_speeds['Z'] = 20 # Set Speed of Z Axis
pipette.well_bottom_clearance.aspirate = 1
pipette.well_bottom_clearance.dispense = 1
pipette.mix(1, dilution_volume_1, dilution_buffer)
pipette.well_bottom_clearance.aspirate = 1
pipette.well_bottom_clearance.dispense = 1
pipette.aspirate(dilution_volume_1, dilution_buffer)
protocol_context.max_speeds['Z'] = 100 # Set Speed of Z Axis
pipette.dispense(dilution_volume_1, target)
protocol_context.max_speeds['Z'] = 20 # Set Speed of Z Axis
protocol_context.delay(seconds=3)
pipette.blow_out(target.bottom(9.5))
pipette.touch_tip(v_offset=-5, speed=50, radius=0.5)
protocol_context.max_speeds['Z'] = 100 # Set Speed of Z Axis
the same as below:
pipette.default_speed = 100 = 20 # Set Speed of Z Axis
pipette.well_bottom_clearance.aspirate = 1
pipette.well_bottom_clearance.dispense = 1
pipette.mix(1, dilution_volume_1, dilution_buffer)
pipette.well_bottom_clearance.aspirate = 1
pipette.well_bottom_clearance.dispense = 1
pipette.aspirate(dilution_volume_1, dilution_buffer)
pipette.default_speed = 100 # Set Speed of Z Axis
pipette.dispense(dilution_volume_1, target)
pipette.default_speed = 20 # Set Speed of Z Axis
protocol_context.delay(seconds=3)
pipette.blow_out(target.bottom(9.5))
pipette.touch_tip(v_offset=-5, speed=50, radius=0.5)
pipette.default_speed = 100 # Set Speed of Z Axis
If not, any ideas on how to accomplish what I am trying to do in the meantime?
What is the plan for the “protocol_context.max_speeds”? Is this being deprecated? Or is there a fix in the works? I poked around on the Opentrons GitHub but couldn’t find any current issues raised about it. If the above code will not accomplish what I am looking to do, then I won’t be able to use the new liquid commands until it is fixed.
@MeghanFerzoco , who should I tag in the future for questions like this? I’m very happy to see Opentrons officially more active on the forum!