Skip to content

chore(api): update resin tip docstrings #17815

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

Open
wants to merge 4 commits into
base: edge
Choose a base branch
from

Conversation

sfoster1
Copy link
Member

Update the docstrings for the resin tip functions.

@sfoster1 sfoster1 requested a review from a team as a code owner March 19, 2025 14:42
@sfoster1 sfoster1 requested review from emilyburghardt and ecormany and removed request for a team March 19, 2025 14:42
Copy link
Collaborator

@emilyburghardt emilyburghardt left a comment

Choose a reason for hiding this comment

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

Added a few suggestions to tighten up the text. If we want, some of that pressure sensor information can be covered in a resin tips article in the docs, instead of here. Since we will include docstrings in 8.4 release (API docs 2.23), but not an article, we can wait on that.

I can make the suggestions I added here as we get closer to code freeze, and other changes as needed. Mostly just adding my thought process in here!

tip will perform a `pick up` action but there will be no tip tracking
associated with the pipette.
The location provided should contain resin tips. The pipette will attach itself
to the resin tips, acting as if they are present, but does not check any tip presence
Copy link
Collaborator

Choose a reason for hiding this comment

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

"Acting as if they are present" is throwing me off a bit. I think I know what you mean (that the pipette is going to attach without checking for tip presence), but maybe could be something like:

"The pipette will attach itself to any resin tips present, but does not check for tip presence."

Resin tips use pressure-based dispensing rather than isobaric volume-displacement
pipetting. The volume and rate parameters to this function control the motion of
the plunger to create a desired pressure profile inside the pipette chamber. The
volume and rate parameters to this function do not directly relate to the volume
Copy link
Collaborator

Choose a reason for hiding this comment

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

"The volume and rate parameters for this function control the motion of the plunger to create a desired pressure profile inside the pipette chamber. Unlike a regular dispense action, the volume and rate do not correspond to liquid volume or flow rate dispensed from the resin tips. Select your values for volume and flow rate based on experimentation with the resin tips to create a pressure profile."

5. Unseal resin tips from the pipette using :py:meth:`resin_tip_unseal`.

On the Opentrons Flex, the pipette pressure sensors will raise an overpressure
error if they sense a differential pressure inside the pipette chamber above the
Copy link
Collaborator

@emilyburghardt emilyburghardt Mar 19, 2025

Choose a reason for hiding this comment

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

"Flex pipette pressure sensors will raise an overpressure when a differential pressure inside the pipette chamber above sensor limits is detected. You may need to disable the pressure sensor to create the required pressure profile, which can cause damage or failure to your pipette's pressure sensors. For more, see [link to future resin tips article]."

Copy link
Member Author

Choose a reason for hiding this comment

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

See what, though?

Copy link
Collaborator

@emilyburghardt emilyburghardt Mar 19, 2025

Choose a reason for hiding this comment

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

I tried to add some syntax Github must not have liked. Updated to include that we could eventually link to the resin tips article in the API docs (once it's written and published with commercial release) where we could explain the pressure issue more. We won't be able to do that for the docstrings immediately, though.

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 Seth, this goes a long way towards explaining these features! So much so that I think we can eventually split out some of the content into other docs pages. For now, Emily can take these comments and clean up the prose with a follow-up commit.

In addition to my inline comments below, two things for resin_tip_unseal():

  • What is "a valid location to drop resin tips" / "A location containing that can accept tips."? Also fix the typo marked in strikethrough here.
  • home_after param isn't in the function signature, is this a copy-paste error?

"""Dispense a volume from resin tips into a labware.
"""Push liquid out of resin tips that are currently sealed to a pipette.

The ``location`` provided is where the liquid will be dispensed into.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can omit this line and rely on the param description below.


:param location: A location containing resin tips.
#. Use :py:meth:`InstrumentContext.resin_tip_dispense` to displace an experimentally
Copy link
Contributor

Choose a reason for hiding this comment

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

The repetition of "experimentally derived" here is almost humorous. Happy to leave it for now, it definitely gets the point across. We don't have magic numbers for you!

Copy link
Member Author

Choose a reason for hiding this comment

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

That's the intent hehe

Comment on lines 1893 to 1896
Flex pipette pressure sensors will raise an overpressure when a differential pressure
inside the pipette chamber above sensor limits is detected. You may need to disable the
pressure sensor to create the required pressure profile, which can cause damage or
failure to your pipette's pressure sensors.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's important to split out what is likely to happen from less likely instrument damage — which rises to the level of a warning.

Suggested change
Flex pipette pressure sensors will raise an overpressure when a differential pressure
inside the pipette chamber above sensor limits is detected. You may need to disable the
pressure sensor to create the required pressure profile, which can cause damage or
failure to your pipette's pressure sensors.
The pressure sensors in Flex pipettes will raise an overpressure error when the pressure
inside the pipette chamber exceeds their limits. You may need to disable the
pressure sensor to create the required pressure profile.
.. warning::
Building excessive pressure inside the pipette chamber (significantly above the sensor
limit) with the pressure sensors disabled can damage the pipette.

Ideally we would have some concrete guidance here — hopefully "significantly above" is accurate.

pressure sensor to create the required pressure profile, which can cause damage or
failure to your pipette's pressure sensors.

:param location: The location into which to dispense.
Copy link
Contributor

Choose a reason for hiding this comment

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

Yep, does what it says on the tin. We could mirror the less tautological language used for dispense(): "Tells the robot where to dispense liquid held in the pipette."

Suggested change
:param location: The location into which to dispense.
:param location: Tells the robot where to dispense to create the pressure profile.

Copy link
Member Author

Choose a reason for hiding this comment

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

"where to dispense to create the pressure profile" feels a little rough, maybe "where to locate the pipette while creating the pressure profile"?

Comment on lines 1901 to 1902
:param volume: The volume that the plunger should displace. Does not directly relate
to the volume of liquid that will be dispensed.
Copy link
Contributor

Choose a reason for hiding this comment

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

It's still µL of air to move, and presumably the max is governed by the nominal capacity of the tip in µL.

Suggested change
:param volume: The volume that the plunger should displace. Does not directly relate
to the volume of liquid that will be dispensed.
:param volume: The volume that the plunger should displace, in µL. Does not directly relate
to the volume of liquid that will be dispensed.

Copy link
Member Author

Choose a reason for hiding this comment

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

the max is governed by the physical displacement of the plunger, actually - the number in the pipette name.

:type volume: float

:param rate: Will default to 10.0, recommended to use the default. How quickly
a pipette dispenses liquid. The speed in µL/s is calculated as
``rate`` multiplied by :py:attr:`flow_rate.dispense<flow_rate>`.
the plunger moves to displace the commanded volume. The plunger speed
Copy link
Contributor

Choose a reason for hiding this comment

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

Would flip this around. Can't suggest because one line is unmodified, thx GitHub.

        :param rate: How quickly the plunger moves to displace the commanded volume. The plunger speed
                      Multiplied this value by :py:attr:`flow_rate.dispense<flow_rate>` to get the
                      plunger speed in µL/s. This rate does not directly relate to the flow rate of liquid
                      the flow rate of liquid out of the resin tip.

                      The default value of ``10.0`` is recommended.

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.

Do not smash that merge button as one more commit is needed to fix a couple typos, but then this is gtg by me.

Co-authored-by: Ed Cormany <edward.cormany@opentrons.com>
@ecormany
Copy link
Contributor

This never got merged so if we need to do any renaming, we should make those edits here and then retarget onto chore_release-8.4.0.

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.

3 participants