This issue is for:
When dispensing to A1, A2, A3, A4 with touch_tip=True, it should touch tip to all 4 destination wells before blowing out.
It probably shouldn't touch tip to the blowout container, but maybe in certain cases it should?
And, it should probably be optional to touch tip to the source container after aspirating?
Either way, it surely shouldn't skip tip touch the last destination well.
It touches tip on all the wells but the last one. Blow out happens, then the touch tip follows the blow out:
'Picking up tip from <Deck><Slot A1><Container tiprack-200ul><Well C2>',
'Aspirating 170.0 at <Deck><Slot C2><Container trough-12row><Well A1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well A1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well B1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well C1>',
# NO TIP TOUCH ON C1!
'Blowing out at <Deck><Slot A2><Container trash-box><Well A1>',
'Touching tip',
'Aspirating 170.0 at <Deck><Slot C2><Container trough-12row><Well A1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well D1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well E1>',
'Touching tip',
'Dispensing 50.0 at <Deck><Slot C1><Container 96-PCR-flat><Well F1>',
# NO TIP TOUCH ON F1!
'Blowing out at <Deck><Slot A2><Container trash-box><Well A1>',
'Touching tip',
'Drop_tip at <Deck><Slot A2><Container trash-box><Well A1>'
Use touch_tip=True arg for distribute:
p200.distribute(50, trough[0], plate[:6], touch_tip=True)
Just want to leave a +1 on this issue, and note that it's a significant problem for any protocol dealing with small volumes (like setting up a PCR). Without the touch_tip, the robot will reliably avoid dispensing things like primers into the final tube of a PCR strip :(.
Still an issue in legacy API commit c5b375c360d3cbedf8971c91751e5ad595a9cf41 (v3.6.5-33-gc5b375c)
from opentrons import labware, instruments
plate = labware.load('96-flat', 2)
p300rack = labware.load('opentrons-tiprack-300ul', 3)
p300 = instruments.P300_Single('left', tip_racks=[p300rack])
from opentrons import robot
p300.distribute(50, plate[0], plate[1:7], touch_tip=True)
robot.commands()
commands are:
['Distributing 50 from well A1 in "2" to wells B1...G1 in "2"',
'Transferring 50 from well A1 in "2" to wells B1...G1 in "2"',
'Picking up tip well A1 in "3"',
'Aspirating 280.0 uL from well A1 in "2" at 1 speed',
'Touching tip',
'Dispensing 50.0 uL into well B1 in "2"',
'Touching tip',
'Dispensing 50.0 uL into well C1 in "2"',
'Touching tip',
'Dispensing 50.0 uL into well D1 in "2"',
'Touching tip',
'Dispensing 50.0 uL into well E1 in "2"',
'Touching tip',
'Dispensing 50.0 uL into well F1 in "2"',
# SKIPPED: does not touch tip on F1 after this dispense
'Blowing out at well A1 in "12"',
'Touching tip', # I'm not sure where this touch tip is happening - trash? A1? Both are unexpected
'Aspirating 50.0 uL from well A1 in "2" at 1 speed',
'Touching tip',
'Dispensing 50.0 uL into well G1 in "2"',
'Touching tip',
'Dropping tip well A1 in "12"']
We have a repro protocol above. We should test it out and see if this is still an issue
Same run log as Jan 11, tested with 3.13.1 (APIv1) with same protocol as above. Didn't check APIv2
Reproduced with API 3.13.2:
( ... )
. [66] :聽Dispensing 25.0 uL into well G6 in "3"
. [67] :聽Touching tip
. [68] :聽Dispensing 25.0 uL into well G9 in "3"
. [69] :聽Blowing out at well A1 in "12"
. [70] :聽Touching tip
. [71] :聽Aspirating 105.0 uL from well A1 in "11" at 1 speed
( ... )
It seems that the last touching and blowing steps (69 and 70, in this example) are wrongly swapped.
The consequence is an increase in the probability of dripping during the move from the last destination well to the blowout container, thus contaminating other wells. Unfortunately, we experienced such contamination.
The fix for this issue will be released in 3.14.