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

fix(api): Raise cases for unsupported nozzle layouts #15009

Merged
merged 4 commits into from
Apr 26, 2024

Conversation

CaseyBatten
Copy link
Contributor

@CaseyBatten CaseyBatten commented Apr 25, 2024

Overview

See RTC-440

This PR seeks to limit user access to unapproved configurations through the PAPI and raise errors when configuring potentially unsafe layouts for the nozzle map.

UPDATE:
After discussion, doc side changes and API docstrings have been moved to alternative PR.

Test Plan

Ensure that protocols with that attempt to utilize unsupported single/row/quadrants API commands are rejected. Ensure that if engine commands are used, no more than 24 tips can be added to partial configuration.

Changelog

  • Added disabled layouts filter to PAPI to prevent configuration in unapproved layouts (these layouts can still be achieved through backend commands, which is desired for hardware testing or advanced users)
  • Limit the size of configurations that are not FULL to 24 nozzles, a size limit found by hardware testing.

Review requests

Risk assessment

Relatively low as we were not exposing these configurations publicly yet anyways, however some use cases involving non-public facing API may be effected.

Copy link
Contributor

@ecormany ecormany left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the draft doc suggestions! I think we should communicate almost all of this info to users in one venue or another. I'll set up a time for us to discuss the best placement and wording.

@@ -25,6 +25,10 @@ For greater convenience, also import the individual layout constants that you pl

Then when you call ``configure_nozzle_layout`` later in your protocol, you can set ``style=COLUMN``.

It is important to note that for versions <= 7.3, when configuring for COLUMN layout, there may be a noticeable tip overlap offset that will need to be accounted for through Labware Position Check.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there isn't an API change here, I think this is best addressed in the 7.3 release notes, probably under the "Improved features" header.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another possible location is as a note in the API Reference entry. Regardless, I think I'd want to keep it out of the main description of the feature in this article — especially if we've improved the behavior to the point that we don't have to be issuing warnings about how the latest version works.

@@ -25,6 +25,10 @@ For greater convenience, also import the individual layout constants that you pl

Then when you call ``configure_nozzle_layout`` later in your protocol, you can set ``style=COLUMN``.

It is important to note that for versions <= 7.3, when configuring for COLUMN layout, there may be a noticeable tip overlap offset that will need to be accounted for through Labware Position Check.

Along that same line of logic, it would be advisable to determine a configuration to be used for a specific labware, and only interact with that labware when in said configuration.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what this means.

):
if len(rows) * len(columns) > MAXIMUM_NOZZLE_COUNT:
raise IncompatibleNozzleConfiguration(
f"Partial Nozzle Layouts may not be configured to contain more than {MAXIMUM_NOZZLE_COUNT} channels."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copy suggestion

Suggested change
f"Partial Nozzle Layouts may not be configured to contain more than {MAXIMUM_NOZZLE_COUNT} channels."
f"Partial nozzle layouts can contain at most {MAXIMUM_NOZZLE_COUNT} channels."

]
if style in disabled_layouts:
raise ValueError(
f"Nozzle layout configuration of style {style.value} is currently unsupported."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copy suggestion

Suggested change
f"Nozzle layout configuration of style {style.value} is currently unsupported."
f"{style.value} nozzle layouts are currently not supported."

@CaseyBatten CaseyBatten changed the title fix(docs, api): Update docs to detail partial tip overlap and raise cases for unsupported nozzle layouts fix(api): Raise cases for unsupported nozzle layouts Apr 26, 2024
@CaseyBatten CaseyBatten marked this pull request as ready for review April 26, 2024 18:30
@CaseyBatten CaseyBatten requested a review from a team as a code owner April 26, 2024 18:30
Copy link
Contributor

@vegano1 vegano1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes look fine to me.

@CaseyBatten CaseyBatten merged commit 35e4e10 into edge Apr 26, 2024
20 checks passed
@CaseyBatten CaseyBatten deleted the partial-tip-doc-and-error-expansion branch April 26, 2024 20:12
ecormany added a commit that referenced this pull request Apr 29, 2024
…#15003)

# Overview

Update partial tip pickup docs to reflect the latest behavior, as added
in #15009 and to be released in robot software 7.3.

Addresses RTC-440.

# Test Plan


[Sandbox](http:https://sandbox.docs.opentrons.com/docs-partial-pickup-channel-1/v2/)

# Changelog

- Removed "Column 12" and "Column 1" headers from Partial Tip Pickup
page. Removed tip-tracking code for Column 1 as no longer needed..
- Reworded note in `configure_nozzle_layout` API reference entry.

# Review requests

Already spoke with @CaseyBatten to get an idea of what needed to be
included here and what will go in separate documentation.

- <s>Should we actually put this straight into `edge` and deploy ASAP,
or can it wait a month and roll out with 2.18 docs (current plan)?</s>
PAPI 2.18 deploy will be timed with robot stack 7.3 release, which this
aligns with.

# Risk assessment

none
ecormany added a commit that referenced this pull request May 2, 2024
…#15003)

Update partial tip pickup docs to reflect the latest behavior, as added
in #15009 and to be released in robot software 7.3.

Addresses RTC-440.

[Sandbox](http:https://sandbox.docs.opentrons.com/docs-partial-pickup-channel-1/v2/)

- Removed "Column 12" and "Column 1" headers from Partial Tip Pickup
page. Removed tip-tracking code for Column 1 as no longer needed..
- Reworded note in `configure_nozzle_layout` API reference entry.

Already spoke with @CaseyBatten to get an idea of what needed to be
included here and what will go in separate documentation.

- <s>Should we actually put this straight into `edge` and deploy ASAP,
or can it wait a month and roll out with 2.18 docs (current plan)?</s>
PAPI 2.18 deploy will be timed with robot stack 7.3 release, which this
aligns with.

none
Carlos-fernandez pushed a commit that referenced this pull request May 20, 2024
limit user access to unapproved configurations through the PAPI and raise errors when configuring potentially unsafe layouts
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

Successfully merging this pull request may close these issues.

None yet

3 participants