-
Notifications
You must be signed in to change notification settings - Fork 179
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(shared-data): Add more new labware definitions to shared-data #2703
Conversation
@IanLondon could you look into what ramifications the rename would have on PD? Specifically, would it make it so a protocol made in a previous version will no longer load correctly? No longer run correctly? Any other weirdness? |
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.
Left a few questions about the data, but they're comparatively minor. Could you attach or link the documents where the measurements came from (machine drawings or the like), and include the arguments you passed to the generator functions for record-sake?
shared-data/definitions2/Opentrons_15_tuberack_15_mL_falcon.json
Outdated
Show resolved
Hide resolved
shared-data/definitions2/Opentrons_24_tuberack_2_mL_Eppendorf.json
Outdated
Show resolved
Hide resolved
shared-data/definitions2/Opentrons_6_tuberack_50_mL_falcon.json
Outdated
Show resolved
Hide resolved
1b2059d
to
bc1fd48
Compare
Codecov Report
@@ Coverage Diff @@
## edge #2703 +/- ##
==========================================
- Coverage 51.29% 51.13% -0.17%
==========================================
Files 653 671 +18
Lines 17874 18793 +919
==========================================
+ Hits 9169 9609 +440
- Misses 8705 9184 +479
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.
the labware rename breaks tube racks in old PD protocols and would not allow new PD protocols (this PR) to run on the robot if they use tube racks (see my rambling comment)
@@ -37,12 +37,12 @@ const hardcodedLabware = { | |||
['opentrons-aluminum-block-PCR-strips-200ul', 'Aluminum Block - 0.2mL PCR Strips'], | |||
], | |||
'Tube Rack': [ | |||
['opentrons-tuberack-1.5ml-eppendorf', '1.5mL Tube Rack (4-in-1 Rack)'], |
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.
doing this name change will break existing protocols that our beta users have made in an ugly way (if the protocol uses any of these tuberacks),
it also makes it so protocols using tube racks won't run on the robot because these names don't work with labware.load
in Python - as it is now, I think you'd get "ValueError: container not found in default-containers.json" on upload
If we wanted to support these new names now, we could do a migration so that while loading a file, PD swaps the old names to the new names. And we'd also have to make PD translate back to 'opentrons-tuberack-15ml' style name when it saves the file, so that the JSON executor in Python can put that into labware.load
But it seems messy. I think I'd rather do the name change all at once when we move to definitions2/
and have the JSON definitions embedded in the protocols. Once we get to that point, the labware names in JSON protocols no longer need to reference a key in default-containers.json, so it's easier to change the names (they might only have nicknames and no "load name" in the commands part, and in the PD-specific data they would have a "load name" referencing the definitions2/
file name? maybe)
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.
That sounds fine to me, Ben had wanted to maybe change the names to make transitioning easier. But it seems like that might cause us to have to do more upfront work and thus defeat the purpose of attempting to change the names earlier
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.
I agree with doing this in a way that is less painful to PD users
shared-data/definitions/Opentrons_24_tuberack_1.5_mL_Eppendorf.json
Outdated
Show resolved
Hide resolved
cdcebe1
to
accb263
Compare
shared-data/definitions/Opentrons_24_tuberack_1.5_mL_Eppendorf.json
Outdated
Show resolved
Hide resolved
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.
LGTM! Did not test on robot
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.
📻
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.
I hate to do it to you but can we take the opportunity now to lowercase the filenames and load names? @IanLondon is right, it's kind of inconsistent and the names are so long that getting the capitalization right is annoying even for us now doing testing.
Names are better now but IMO we should still think about changing the python load labware functions to lowercase everything |
* 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
Using the new generator functions, create and test more labware definitions according to issue #2614
changelog
Change definition names in shared-data/definitions to match with shared-data/definitions2 names for easier transition (change corresponding occurrence in PD)Known Issues
12 row Trough issuing amove_to
causes the pipette to move to bottom of the well instead of center -- should this be baked into def or do we handle in code?Labware Definition Data
1.5ml tuberack eppendorf
2ml Tuberack eppendorf
2ml Tuberack screwcap
Opentrons Tuberack 15mL
Opentrons 50 mL tuberack
Aluminum 2ml block
Aluminum 96 Block
12 Channel Trough
Aluminum 96 PCR Plate Biorad
Eppendorf 10ul Tips
Eppendorf 1000ul Tips
6 Well Plate Corning
12 Well Plate Corning
24 Well Plate Corning
48 Well Plate Corning
384 Well Plate Corning
GEB tiprack 10ul (Opentrons)
GEB tiprack 1000ul (Opentrons)
review requests
Pls test on a robot if you can by the following: