-
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(protocol-designer): enable sharing tip racks between pipettes #2753
Conversation
Codecov Report
@@ Coverage Diff @@
## edge #2753 +/- ##
==========================================
- Coverage 51.09% 51.09% -0.01%
==========================================
Files 656 656
Lines 17971 17967 -4
==========================================
- Hits 9183 9180 -3
+ Misses 8788 8787 -1
Continue to review full report at Codecov.
|
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.
PD looks like it's working to me! I've pushed a little guard for the existing app logic but I think due to existing API behavior it's technically unnecessary
📙
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.
WOOP!
1e0321d
to
162f8ff
Compare
* refactor(components): remove old clickOutside HoC (#2664) Closes #2590 * refactor(shared-data): Modify z-height logic and docs for labware designer (#2670) * refactor(shared-data): Modify z-height logic and docs for labware designer * feat(protocol-designer): liquid placement modal performance boost (#2661) Move liquid placement modal to use new abstraction, SelectableLabware, and mirror the changes that went into the performance improvements of the WellSelectionModal. Also, rename the SelectablePlate component and container to HighlightableLabware as it is now only being used in the LabwareOnDeck compound and is neither hoverable, nor selectable. Closes #2557 * feat(protocol-designer): disconnect well selection modal from hovered step state (#2662) Well selection modal well contents are now only correlated with the currently selected step (the one being edited) Closes #2558 * refactor(protocol-designer): change StepType from number to string (#2666) * uses UUID for steps * update step reducer tests to use string IDs not numbers Closes #2588 * build(travis): Refactor build to use stages (#2668) * build(app-shell): Add publisherName to electron-builder windows config (#2677) * ci(travis): Move flow typechecking to separate job in test stage (#2683) * refactor(protocol-designer): unite delete labware and handleFormChange logic (#2680) There was some unecessary duplication of concerns between handling unsaved form changes and handling deletion of labware in all saved forms. This addition creates a function that can be used by both cases, to unite the logic into one source of truth. Closes #2657 * fix(api): re-position p1000 droptip/blowout positions (#2681) * fix(api): re-position p1000 droptip/blowout positions to better handle tip variance * restores p1000_single_v1 positions to previous API values * perf(api): Decrease plunger motor max speed by 20% (#2682) * feat(api): Add 1.5ml tuberack to old labware definition section (#2679) * refactor(api): more functions use hc (#2675) * refactor(api): Move smoothie update into smoothie driver This makes it easier to use hardware control instead of the robot in main and is where the functionality should have been in the first place. Note that this doesn’t currently apply to the update server. * refactor(api): Add a fixture to test with both new and old apis By using the new old_and_new_client fixture instead of either async_client or test_client and building a server instance directly, tests can now check both the old and new versions of the API. old_and_new_client is a parameterized fixture that pytest will automatically run once with each parameter, resetting the globals to the correct version. In addition, the globals in opentrons/__init__ are now defined such that they can be reset to a different API version by a function call. This has to be used quite carefully since it will only reset the global instances themselves, not copies interned elsewhere, but it’s quite useful for this testing purpose. * refactor(api): Change modules to work with control endpoints We needed the old and new modules to look a bit more alike, and now can get attached modules and module info from the run app while using hardware_control. * refactor(api): Pull light control fully into gpio driver Previously it lived an uncomfortable life half in robot and half in gpio. Since lights aren’t controlled by smoothie, robot is a bad place for them (but the calls remain there for back compatibility). * refactor(api): Make servers use injected hw and new api if ff set The RPC and HTTP servers (to a large but not complete extent) and the system as a whole now rely on an injected hardware instance for talking to hardware. This does not extend to deck calibration, protocol sessions (including labware calibration), or testing tools. In addition, there’s work done on the tests so that tests can more easily run on both versions of the api while relying on simple fixtures; async_client and main_router and the things that depend on them, for instance, now will run on both apis unless marked otherwise. Many small additions have been made to both the new and old APIs to get them to work a bit more like each other to make the logic necessary in dependent systems like the servers to be a little more similar between versions. * refactor(api): add ability to override critical point in moves and get position This is needed for the move endpoint because it makes it a lot easier to move pipettes to a change pipette position guaranteed to neither be too high nor too low. Closes #2245 * feat(protocol-designer): use tip max vol, not pipette max vol (#2656) * aspirate/consolidate/transfer/distribute use smallest of (tip max volume, pipette max volume) * added 200uL Tiprack to PD as an option Closes #2160 * chore(react): upgrade react to v16.6.3 (#2687) * feat(protocol-designer): allow user to set touch-tip offset (#2691) * refactor tip offset components to allow them to also work with touch tip * add new fields for forms and to step-generation command creator args to allow touch-tip offsets * rename fields used only by mix to have mix_ prefix * refactor field types Closes #2540 * docs(api): Add instructions to set up API locally (#2699) There have been several customer questions about how to use the API locally to test protocols. While there is still not a good workflow, these instructions should help. * feat(protocol-designer): make settings tab always active (#2700) Closes #2697 * refactor(protocol-designer): remove activeModals selector (#2701) Closes #2592 * feat(protocol-designer): disambiguate left/right pipette names when they match (#2698) Closes #2078 * refactor(app): Update app before robot (#2685) * feat(api): Adds pipette models v1.4 to robot config (#2689) * feat(api): Adds pipette models v1.4 to robot config * shift p10-multi blowout position up 1.5mm * fixed mistake in p1000 v1.4 blow-out position * adds v1.4 to pipette barcoding scanning tool * refactor(api): Use modules in protocol api (#2702) * refactor(api): Use modules in protocol api There are now ModuleContexts in protocol_api/contexts.py that expose the module API. The protocol API also has a new workflow for adding labware to modules: - create a module with ProtocolContext.load_module() - call module.load_labware[_by_name]() to load the labware This avoids the shared=True functionality that was only used for modules but was designed to be super generic. Modules also now have their own specs file that defines their geometry, including the offsets from the deck to their labware and their overall shape. In addition, fix some minor bugs: - axis maxima bumped by +0.05mm for all axes to avoid floating point precision problems when positions are run through deck transform - hardware_control SynchronousAdapter needs to actually return the results of coroutines it executes - Reset the protocol context location cache after homing feature(api): Add magnetic module compatiblity to labware schema Labware now has an extra couple of parameters. isMagneticModuleCompatible is a bool indicating whether the labware can be easily used by a magdeck; magneticModuleEngageHeight is the height to raise the magnets for that piece of labware. If a labware that is not compatible is loaded onto a magdeck, you get a warning and must explicitly specify the magnet height. * Fix failing tests * docs(api): Fix incorrect labels for rows and columns in labware docs (#2710) * docs: Correct the link for changing robot gantry speed (#2711) * chore(release): 3.6.0-beta.1 (#2724) * refactor(app): Remove padding from wifi connect form (#2730) * refactor(protocol-designer): rename selectors to start with "get" (#2720) Closes #2591 * feat(protocol-designer): make multichannel substeps collapsed by default (#2729) Closes #2678 * feat(protocol-designer): add tooltip to advanced settings icon (#2727) Closes #2706 * feat(protocol-designer): remove label from 200ul/300ul tiprack image (#2722) Closes #2704 * fix(api): Fix the flaky tempdeck test (#2725) * fix(api): Fix the flaky tempdeck test The tempdeck driver, when it fails, will sleep and try again. When we’re testing that, we need to wait a bit - since it’s in a thread - before checking the output. * refactor(app): Add update in progress and restart screens (#2728) * refactor(shared-data): rename slot width/height constants (#2723) use separate constants when dealing with robot coordinate system (eg in labwareTools) versus when rendering deck/labware in SVG coordinates Closes #2535 * refactor(app): Add app update message and release notes toggle (#2738) * fix(shared-data): fix total-liquid-volume of opentrons-tuberack-50ml (#2744) Closes #2743 * chore(release): 3.6.0 (#2746) * feat(protocol-designer): allow user to re-enable dismissed hints (#2726) Closes #2652 * feat(protocol-designer): highlight tips per substep (#2716) Closes #2537 * feat(protocol-designer): drag and drop step reordering (#2714) Add drag and drop functionality allowing users to arbitrarily reorder their steps in the steplist. Closes #2654 * fix(protocol-designer): fix missing disposal volume in new distribute forms (#2733) Closes #2705 * feat(protocol-designer): remove option of tiprack-1000ul-chem from pd (#2745) * feat(protocol-designer): new protocol modal defaults and visual updates (#2739) remove null selection for pipette models from new file modal. Also condense styles to clean up visual space. Closes #2721 * feat(protocol-designer): remove delay from advanced settings of all step types (#2731) Closes #2579 * feat(protocol-designer): place tipracks on protocol creation (#2750) By default, when a user creates a protocol, one tip rack for each given mount should be placed on the deck. Closes #1327 * new p10s function added to config file (#2774) * fix(api): new p10s function added to config file Due to inaccuracy of the old function, this new function was calculated based on testing several pipettes. The function has been tested on the scale and the robot. * feat(protocol-designer): show file created and modified date (#2754) * make metadata be a Formik form; remove unsaved metadata fields from redux Closes #1623 * chore(release): 3.6.1 (#2780) * feat(protocol-designer): implement duplicate step (#2715) * feat(protocol-designer): implement duplicate step Right click on a step in the step list and you now have the option to duplicate it or delete it. * feat(protocol-designer): standardize blowout and disposal volume destinations (#2732) Flesh out differences in options and implementation of blowout destination (disposal volume and otherwise) across Transfer, Consolidate, Distribute, and Mix type steps. Closes #1989 * refactor(step-generation): getNextRobotStateAndWarnings and use in aspirate (#2747) In an effort to consolidate the logic in step generation that calculates the next robotState given a command, this adds a function called getNextRobotStateAndWarnings. Eventually this will be used in all command creators to generate the next robotState given StepArgs. This takes the first step by migrating the aspirate commandCreator from aspirateUpdateLiquidState to the new getNextRobotStateAndWarnings Closes #2734 * feat(protocol-designer): enable sharing tip racks between pipettes (#2753) * feat(protocol-designer): scroll to top of page when step created/selected (#2785) * fix(protocol-designer): fix changeTip once bug in distribute step (#2784) Closes #2748 * fix(protocol-designer): finish implementing flow rate in PD (#2782) Closes #2773 * fix(protocol-designer): fix when add liquid hint is shown (#2787) Closes #2777 * feat(protocol-designer): use pipette min vol as default/recommended disposal volume (#2788) Closes #2777
* refactor(components): remove old clickOutside HoC (#2664) Closes #2590 * refactor(shared-data): Modify z-height logic and docs for labware designer (#2670) * refactor(shared-data): Modify z-height logic and docs for labware designer * feat(protocol-designer): liquid placement modal performance boost (#2661) Move liquid placement modal to use new abstraction, SelectableLabware, and mirror the changes that went into the performance improvements of the WellSelectionModal. Also, rename the SelectablePlate component and container to HighlightableLabware as it is now only being used in the LabwareOnDeck compound and is neither hoverable, nor selectable. Closes #2557 * feat(protocol-designer): disconnect well selection modal from hovered step state (#2662) Well selection modal well contents are now only correlated with the currently selected step (the one being edited) Closes #2558 * refactor(protocol-designer): change StepType from number to string (#2666) * uses UUID for steps * update step reducer tests to use string IDs not numbers Closes #2588 * build(travis): Refactor build to use stages (#2668) * build(app-shell): Add publisherName to electron-builder windows config (#2677) * ci(travis): Move flow typechecking to separate job in test stage (#2683) * refactor(protocol-designer): unite delete labware and handleFormChange logic (#2680) There was some unecessary duplication of concerns between handling unsaved form changes and handling deletion of labware in all saved forms. This addition creates a function that can be used by both cases, to unite the logic into one source of truth. Closes #2657 * fix(api): re-position p1000 droptip/blowout positions (#2681) * fix(api): re-position p1000 droptip/blowout positions to better handle tip variance * restores p1000_single_v1 positions to previous API values * perf(api): Decrease plunger motor max speed by 20% (#2682) * feat(api): Add 1.5ml tuberack to old labware definition section (#2679) * refactor(api): more functions use hc (#2675) * refactor(api): Move smoothie update into smoothie driver This makes it easier to use hardware control instead of the robot in main and is where the functionality should have been in the first place. Note that this doesn’t currently apply to the update server. * refactor(api): Add a fixture to test with both new and old apis By using the new old_and_new_client fixture instead of either async_client or test_client and building a server instance directly, tests can now check both the old and new versions of the API. old_and_new_client is a parameterized fixture that pytest will automatically run once with each parameter, resetting the globals to the correct version. In addition, the globals in opentrons/__init__ are now defined such that they can be reset to a different API version by a function call. This has to be used quite carefully since it will only reset the global instances themselves, not copies interned elsewhere, but it’s quite useful for this testing purpose. * refactor(api): Change modules to work with control endpoints We needed the old and new modules to look a bit more alike, and now can get attached modules and module info from the run app while using hardware_control. * refactor(api): Pull light control fully into gpio driver Previously it lived an uncomfortable life half in robot and half in gpio. Since lights aren’t controlled by smoothie, robot is a bad place for them (but the calls remain there for back compatibility). * refactor(api): Make servers use injected hw and new api if ff set The RPC and HTTP servers (to a large but not complete extent) and the system as a whole now rely on an injected hardware instance for talking to hardware. This does not extend to deck calibration, protocol sessions (including labware calibration), or testing tools. In addition, there’s work done on the tests so that tests can more easily run on both versions of the api while relying on simple fixtures; async_client and main_router and the things that depend on them, for instance, now will run on both apis unless marked otherwise. Many small additions have been made to both the new and old APIs to get them to work a bit more like each other to make the logic necessary in dependent systems like the servers to be a little more similar between versions. * refactor(api): add ability to override critical point in moves and get position This is needed for the move endpoint because it makes it a lot easier to move pipettes to a change pipette position guaranteed to neither be too high nor too low. Closes #2245 * feat(protocol-designer): use tip max vol, not pipette max vol (#2656) * aspirate/consolidate/transfer/distribute use smallest of (tip max volume, pipette max volume) * added 200uL Tiprack to PD as an option Closes #2160 * chore(react): upgrade react to v16.6.3 (#2687) * feat(protocol-designer): allow user to set touch-tip offset (#2691) * refactor tip offset components to allow them to also work with touch tip * add new fields for forms and to step-generation command creator args to allow touch-tip offsets * rename fields used only by mix to have mix_ prefix * refactor field types Closes #2540 * docs(api): Add instructions to set up API locally (#2699) There have been several customer questions about how to use the API locally to test protocols. While there is still not a good workflow, these instructions should help. * feat(protocol-designer): make settings tab always active (#2700) Closes #2697 * refactor(protocol-designer): remove activeModals selector (#2701) Closes #2592 * feat(protocol-designer): disambiguate left/right pipette names when they match (#2698) Closes #2078 * refactor(app): Update app before robot (#2685) * feat(api): Adds pipette models v1.4 to robot config (#2689) * feat(api): Adds pipette models v1.4 to robot config * shift p10-multi blowout position up 1.5mm * fixed mistake in p1000 v1.4 blow-out position * adds v1.4 to pipette barcoding scanning tool * refactor(api): Use modules in protocol api (#2702) * refactor(api): Use modules in protocol api There are now ModuleContexts in protocol_api/contexts.py that expose the module API. The protocol API also has a new workflow for adding labware to modules: - create a module with ProtocolContext.load_module() - call module.load_labware[_by_name]() to load the labware This avoids the shared=True functionality that was only used for modules but was designed to be super generic. Modules also now have their own specs file that defines their geometry, including the offsets from the deck to their labware and their overall shape. In addition, fix some minor bugs: - axis maxima bumped by +0.05mm for all axes to avoid floating point precision problems when positions are run through deck transform - hardware_control SynchronousAdapter needs to actually return the results of coroutines it executes - Reset the protocol context location cache after homing feature(api): Add magnetic module compatiblity to labware schema Labware now has an extra couple of parameters. isMagneticModuleCompatible is a bool indicating whether the labware can be easily used by a magdeck; magneticModuleEngageHeight is the height to raise the magnets for that piece of labware. If a labware that is not compatible is loaded onto a magdeck, you get a warning and must explicitly specify the magnet height. * Fix failing tests * docs(api): Fix incorrect labels for rows and columns in labware docs (#2710) * docs: Correct the link for changing robot gantry speed (#2711) * chore(release): 3.6.0-beta.1 (#2724) * refactor(app): Remove padding from wifi connect form (#2730) * refactor(protocol-designer): rename selectors to start with "get" (#2720) Closes #2591 * feat(protocol-designer): make multichannel substeps collapsed by default (#2729) Closes #2678 * feat(protocol-designer): add tooltip to advanced settings icon (#2727) Closes #2706 * feat(protocol-designer): remove label from 200ul/300ul tiprack image (#2722) Closes #2704 * fix(api): Fix the flaky tempdeck test (#2725) * fix(api): Fix the flaky tempdeck test The tempdeck driver, when it fails, will sleep and try again. When we’re testing that, we need to wait a bit - since it’s in a thread - before checking the output. * refactor(app): Add update in progress and restart screens (#2728) * refactor(shared-data): rename slot width/height constants (#2723) use separate constants when dealing with robot coordinate system (eg in labwareTools) versus when rendering deck/labware in SVG coordinates Closes #2535 * refactor(app): Add app update message and release notes toggle (#2738) * fix(shared-data): fix total-liquid-volume of opentrons-tuberack-50ml (#2744) Closes #2743 * chore(release): 3.6.0 (#2746) * feat(protocol-designer): allow user to re-enable dismissed hints (#2726) Closes #2652 * feat(protocol-designer): highlight tips per substep (#2716) Closes #2537 * feat(protocol-designer): drag and drop step reordering (#2714) Add drag and drop functionality allowing users to arbitrarily reorder their steps in the steplist. Closes #2654 * fix(protocol-designer): fix missing disposal volume in new distribute forms (#2733) Closes #2705 * feat(protocol-designer): remove option of tiprack-1000ul-chem from pd (#2745) * feat(protocol-designer): new protocol modal defaults and visual updates (#2739) remove null selection for pipette models from new file modal. Also condense styles to clean up visual space. Closes #2721 * feat(protocol-designer): remove delay from advanced settings of all step types (#2731) Closes #2579 * feat(protocol-designer): place tipracks on protocol creation (#2750) By default, when a user creates a protocol, one tip rack for each given mount should be placed on the deck. Closes #1327 * new p10s function added to config file (#2774) * fix(api): new p10s function added to config file Due to inaccuracy of the old function, this new function was calculated based on testing several pipettes. The function has been tested on the scale and the robot. * feat(protocol-designer): show file created and modified date (#2754) * make metadata be a Formik form; remove unsaved metadata fields from redux Closes #1623 * chore(release): 3.6.1 (#2780) * feat(protocol-designer): implement duplicate step (#2715) * feat(protocol-designer): implement duplicate step Right click on a step in the step list and you now have the option to duplicate it or delete it. * feat(protocol-designer): standardize blowout and disposal volume destinations (#2732) Flesh out differences in options and implementation of blowout destination (disposal volume and otherwise) across Transfer, Consolidate, Distribute, and Mix type steps. Closes #1989 * refactor(step-generation): getNextRobotStateAndWarnings and use in aspirate (#2747) In an effort to consolidate the logic in step generation that calculates the next robotState given a command, this adds a function called getNextRobotStateAndWarnings. Eventually this will be used in all command creators to generate the next robotState given StepArgs. This takes the first step by migrating the aspirate commandCreator from aspirateUpdateLiquidState to the new getNextRobotStateAndWarnings Closes #2734 * feat(protocol-designer): enable sharing tip racks between pipettes (#2753) * feat(protocol-designer): scroll to top of page when step created/selected (#2785) * fix(protocol-designer): fix changeTip once bug in distribute step (#2784) Closes #2748 * fix(protocol-designer): finish implementing flow rate in PD (#2782) Closes #2773 * fix(protocol-designer): fix when add liquid hint is shown (#2787) Closes #2777 * feat(protocol-designer): use pipette min vol as default/recommended disposal volume (#2788) Closes #2777 * fix(protocol-designer): fix regression of #2370 (#2791) * feat(api): p10 behavior feature flag (#2794) This moves the P10 aspiration changes previously introduced in the config to code behind feature flag. This reverts commit 9c5e0a2. The revert is because shipping this change might compromise users’ science efforts if their aspiration volumes change without sufficiently notifying them. To prevent behavior changing in unexpected ways that has bad effects on science, it’s now behind a feature flag that is off by default. Closes #2792 * refactor(app): Simplify upgrade/downgrade modal render logic (#2751) * fix(protocol-designer): fix distribute aspirate touchtip offset (#2795) * fix(protocol-designer): fix bug where new protocol w 1 pipette deleted fixedTrash (#2797) * feat(shared-data): Add more new labware definitions to shared-data (#2703) * fix(protocol-designer): fix swap pipettes button dispatch (#2798)
overview
A collaboration with @b-cooper and @mcous 💿
Allow sharing tipracks between pipettes if they are assigned to the same tiprack type.
changelog
review requests
Try it and try real hard to break it