Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Blow out distribute() disposal volume in places other than the fixed trash #5170

Open
SyntaxColoring opened this issue Mar 5, 2020 · 9 comments
Labels
api Affects the `api` project endorsed-by-support This feature request came from, or is endorsed by, Opentrons' Support team. feature-request A request for a new feature or a change that isn't a bug. May require further triage or scoping. papi-v2 Python API V2 robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience).

Comments

@SyntaxColoring
Copy link
Contributor

SyntaxColoring commented Mar 5, 2020

Background

distribute() has a disposal_volume parameter that sets the minimum amount of liquid to be kept in the tip at any given time. The disposal volume is blown out into the trash before going back to the source for more liquid.

Problem

This wastes reagent. We trash the disposal volume, but in many cases, we could blow it back into the source well to be reused.

Request

Allow a distribute()'s disposal volume to be blown out in the source well, instead of the trash.

Perhaps also allow it to be blown out to any arbitrary location.

┆Issue is synchronized with this Wrike Task by Unito

@SyntaxColoring SyntaxColoring added api Affects the `api` project feature-request A request for a new feature or a change that isn't a bug. May require further triage or scoping. labels Mar 5, 2020
@SyntaxColoring
Copy link
Contributor Author

SyntaxColoring commented Mar 10, 2020

Partial workarounds

Change pipette.trash_container

In a few limited cases, you can kind of do this by changing pipette.trash_container, but that has two problems:

  • It conflates solid (tip) trash with liquid (reagent blow out) trash.
  • It accepts a labware object and assumes well A1; you can't change which well.

Break the command up

For more control, you can break up the big distribute() command into many building block commands—using individual aspirate()s, dispense()s, and so on.

The downside to this is that you have to calculate yourself how to break higher volume transfers into multiple movements. With distribute(), the API normally does this for you.

@PaulBisesi
Copy link

As a user, this feature would be very useful. We achieved this behavior in our apiv1 protocols by passing a location to a distribute()'s blow_out parameter. In apiv2 it seems this functionality no longer works, as the command will ignore anything in the blow_out parameter (including False or a location) and blow out in the trash.

@SyntaxColoring
Copy link
Contributor Author

SyntaxColoring commented Jun 24, 2020

Possible duplicate of #4940 (haven't read very closely to see if there are any differences, yet). Not a duplicate of #4940. That's about blowing out whatever minute volume accidentally remains after a transfer(). This is about blowing out the many µL of extra "disposal volume" liquid that we intentionally aspirate to keep the pipette above its minimum volume, in a distribute().

@SyntaxColoring
Copy link
Contributor Author

From #5734:

When using the aspirate / dispense commands in python you can access the source well for blow out. This is vital when using valuable reagents. However, this cannot be accessed in the distribute/consolidate commands which are necessary for our protocol.

@cmdenis
Copy link

cmdenis commented Aug 18, 2020

I would be needing that functionality too, but I ended up doing a version for myself. The multidispensing management was particularly tricky. Perhaps this can help anyone doing the same thing:

distribution.txt

The function 'distribution' accepts a list of wells, the volume to be dispensed per well and the maximum volume contained by the pipette and returns the list of trips the pipette makes with the wells that will be used for each of the trips.

@James-Kitson
Copy link

As a user, this feature would be very useful. We achieved this behavior in our apiv1 protocols by passing a location to a distribute()'s blow_out parameter. In apiv2 it seems this functionality no longer works, as the command will ignore anything in the blow_out parameter (including False or a location) and blow out in the trash.

This is especially useful if you're setting up tagged PCRs for next gen sequencing. In this situation, I want to distribute my tagged primers to multiple plates then drop tips without any blowout to prevent any tagged primer aerosols from floating around in the robot.

@SyntaxColoring SyntaxColoring added robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience). papi-v2 Python API V2 labels May 14, 2021
@SyntaxColoring
Copy link
Contributor Author

SyntaxColoring commented May 14, 2021

I want to distribute my tagged primers to multiple plates then drop tips without any blowout to prevent any tagged primer aerosols from floating around in the robot.

@James-Kitson Unless I misunderstand, that might be a separate problem. When our pipettes drop tips, they have to blow out, because the ejector is controlled by the same motor that controls the plunger. Ejecting a tip is like blowing out really far.

@James-Kitson
Copy link

@James-Kitson Unless I misunderstand, that might be a separate problem. When our pipettes drop tips, they have to blow out, because the ejector is controlled by the same motor that controls the plunger. Ejecting a tip is like blowing out really far.

Ah yes fair enough, maybe I just need to play with carry-over volumes then!

@mattwelch
Copy link

Bug triage results: MMM

@Matt-Zwimpfer Matt-Zwimpfer added the endorsed-by-support This feature request came from, or is endorsed by, Opentrons' Support team. label Nov 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Affects the `api` project endorsed-by-support This feature request came from, or is endorsed by, Opentrons' Support team. feature-request A request for a new feature or a change that isn't a bug. May require further triage or scoping. papi-v2 Python API V2 robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience).
Projects
None yet
Development

No branches or pull requests

6 participants