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

Opentrons: how to handle Transfer volumes that exceed the maximum volume of a pipette? #177

Open
bbartley opened this issue Nov 11, 2022 · 3 comments

Comments

@bbartley
Copy link
Collaborator

There are situations in which an operator may wish to transfer a volume that exceeds the maximum capacity of the mounted pipettes. There are a few possible ways in which we might deal with this:

  • Throw an error that says "you can't do that, because you've exceeded the maximum volume" and force the user to break the Transfer down into multiple Transfer steps, e.g., 200 uL, then another 200 uL, then another 200 uL...
  • Throw an error that says "you can't do that, because you've exceeded the maximum volume", but provide an optional parameter that allows the user to specify they want to repeat a Transfer n times
  • Make the Specialization smart enough to figure out for itself the most parsimonious way to break the Transfer down into multiple steps
@jakebeal
Copy link
Member

I would definitely be inclined towards option 3, since this is about execution of a general protocol not just on OpenTrons but on a specific robot under a specific configuration. I would find it extremely problematic to have "my robot has only a 50 uL pipette this morning" end up propagating back up to the protocol.

What I do think would make sense as an option, however, would be:

  1. Have the Specialization log a warning that it's planning to break down the operation into multiple steps
  2. Have an option for a "no decomposing transfers" in which the warning is instead an error. That would allow a user to choose whether to reconfigure their deck or to allow the breakdown.

@danbryce
Copy link
Collaborator

Inspired by @photocyte script that couldn't translate cherry picking to transfer operation.

Dan's take is that the protocol itself wouldn't enforce any semantics. The specialization should be where we warn, raise errors, or handle interpretation. The standard doesn't have a say about how this happens.

@photocyte
Copy link
Member

For posterity, link and text of original script/context:
https://bitsinbio.slack.com/archives/C02UJJ3AND8/p1667401643485429

"
, really exciting to hear progress on LabOP Opentrons specialization! Continuing our discussion from this weeks meeting, these are the protocols I've been adapting https://protocols.opentrons.com/protocol/cherrypicking , and a more recent fork: https://protocols.opentrons.com/protocol/6d901d-2 , for my current wetlab work. The modification I'd like to do is have a single transfer as specified by these CSVs (note 1: The CSV formats are different between the two versions, I prefer the CSV format for the cherrypicking protocol), actually be 3x repeated transfers with a single tip (no dropping & picking up new tips between transfers). (Note 2: The CSV gets baked into a JSON that is hardcoded into the .py , not ideal, but that is the Opentrons standard at the moment. I have a Jupyter notebook that simplifies making that JSON). The simple way: Have it be so the CSV specified volume, i.e. 300 µL, just gets repeated 3 total times. The harder way: make it so 900 µL could be specified in the CSV, but then the script would figure out how many transfers it should do, including doing "partial" transfers (say transferring 50 µL vs 300 µL). Would be curious to hear your thoughts on adapting this to LabOP...
"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants