-
Notifications
You must be signed in to change notification settings - Fork 178
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(app, shared-data, step-generation): frontend low volume support #13526
Conversation
…low volume support closes RAUT-714
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## low-volume-pipetting #13526 +/- ##
========================================================
+ Coverage 71.29% 71.38% +0.08%
========================================================
Files 2382 2434 +52
Lines 66907 68076 +1169
Branches 7772 7926 +154
========================================================
+ Hits 47703 48596 +893
- Misses 17364 17615 +251
- Partials 1840 1865 +25
Flags with carried forward coverage won't be shown. Click here to find out more.
|
@@ -163,6 +165,20 @@ export const transfer: CommandCreator<TransferArgs> = ( | |||
changeTipNow = isInitialSubtransfer || destWell !== prevDestWell | |||
} | |||
|
|||
const configureForVolumeCommand: CurriedCommandCreator[] = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: this command emits every time for a p50 flex pipette in the beginning of a transfer. So if you were to aspirate/dispense multiple times in the same transfer (at the same volume, since you're not allowed to change volumes in the middle of a transfer in PD), this command will only happen once at the beginning. But if you were to add a new transfer right afterwards with the same volume, the command would emit again. That is where i'm not too sure how to refactor to not emit it again 🤔 , would need to do so in a follow up PR
1f47e0c
to
6ead3d6
Compare
App command render looks good! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's hard for me to tell if conceptually these changes are correct (since I'm still learning PD), but I tested per your instructions and everything works. The JS lgtm as well! 🚀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Stuff from initial testing
- ✅ app rendering of configure looks good
- ❓ though it says "Configuring 1 ul for aspiration with " and maybe it should say "Configuring pipette to aspirate 1ul"
- ❌ PD UI for push out needs to change; we should either not
- not have push out UI at all (my pref) because specifying it is complex (see below) and not emit the arg in step-generation so it uses default settings or
- have push out be a check box that defaults to checked, such that when it's checked step-generation doesn't emit the push out arg and when it's not checked step-generation emits it with a 0 value
- have push out be the same "default or set value" ui field that we have elsewhere where defaulted is null/not present in s-g, and a real value is set to that value. note that here it can only be shown on full dispenses and the limits for the value have to be computed from the liquid settings as (bottom-blow_out)*plunger_surface_area
- haven't tested the actual generated protocol yet though
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
configureForVolume
needs to be emitted more frequently. right now it's emitted only before 1ul aspirates, which means the pipette could never switch out of the low volume mode. we need to, on flex 50ul pipettes, emit before each aspirate that starts with the plunger empty, with the total volume we'll aspirate until the next time the plunger is empty
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- made a protocol in PD branch with 50ul 1 and 8 channels
- with a variety of transfer volumes, always saw configure for volume
- protocol analyzed successfully in app branch
- ODD and app runlog displayed configures successfully
- configures executed properly traced through to api logs
- made protocol with mix in PD branch
- saw configure before mix multistep
- made protocol with 1000ul pipettes and saw no configure for volumes
Looks good to me in my dev testing!
…13526) Front-end support for flex low volume closes RAUT-714 --------- Co-authored-by: Andy Sigler <[email protected]>
…13526) Front-end support for flex low volume closes RAUT-714 --------- Co-authored-by: Andy Sigler <[email protected]>
closes RAUT-714
Overview
This adds low volume front-end support
Test Plan
in PD/Step-generation:
sandbox: https://sandbox.designer.opentrons.com/app_pd-low-volume-support/
configureForVolume
command occurs before theaspirate
with the p50 pipette but not before theaspirate
with the p1000 pipette.configureForVolume
command happening before the mix'saspirate
anddispense
commandsin the App:
configureForVolume
commands.Changelog
in shared-data:
ConfigureForVolumeCreateCommand
andConfigureForVolumeRunTimeCommand
, add the optionalpushOut
param todispense
commandin app:
commandText
and add test casesin PD:
in Step-generation:
configureForVolume.ts
atomic command, add test for ittransfer.ts
before anaspirate
happens and volume is 1uL and with the correct pipettes.mix.ts
to happen before the set of mixaspirate
anddispense
commands.dispense.ts
Review requests
see test plan
Risk assessment
low