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

docs(api): new_pipette.rst revisions for Flex #13218

Merged
merged 42 commits into from
Aug 9, 2023
Merged

Conversation

jwwojak
Copy link
Contributor

@jwwojak jwwojak commented Aug 2, 2023

Overview

Suggested text and code example revisions to the Pipette API docs (new_pipette.rst file) to include Flex text and code examples.

Sandbox link: http:https://sandbox.docs.opentrons.com/pipette-docs-revisions/v2/

Test Plan

  • Checked links and cross-references to make sure they work.
  • Asking reviewers to check doc code changes. Revisions replace sample code showing OT-2 examples in favor of Flex examples.

Changelog

Changes include:

  • Extensive text re-writing throughout.
  • Some new headers and reorganization.
  • Removed some references or text to OT-2 GEN1 pipettes. Emphasis is on OT-2 GEN2 and Flex pipettes.
  • Sample code changes from OT-2 examples to Flex.
  • Simplifying flow rate data. Remove duplicated info, use tables for better info display.

Review requests

Please 2x check the code samples.

Also, perhaps @SyntaxColoring could take a look at the section titled "Loading a Flex 96-Channel Pipette." The example puts the 96 channel in the left slot( mount='left'). It's a simple load_instrument example, but maybe there's more to add or a better example to give users. Any input would be appreciated.

Risk assessment

Low. Documentation changes only. Any removed OT-2 GEN1 pipette info has been saved separately in case we need to restore it.

Mid-day save
End of day commit
Midmorning save, just in case.
Culling tables and organizing pipette types. Lunch commit.
End of day save
Mid day save.
End of day save.
Early morning save up.
More before lunch.
mid afternoon save
End of day revisions and save.
Top 'o the morning save.
Updated flow rates. May open draft PR.
Added comment about table alignment.
Small tweak. final final final. Open pr.
@jwwojak jwwojak added docs papi-v2 Python API V2 labels Aug 2, 2023
@jwwojak jwwojak requested a review from ecormany August 2, 2023 17:43
@jwwojak jwwojak self-assigned this Aug 2, 2023
@codecov
Copy link

codecov bot commented Aug 2, 2023

Codecov Report

Merging #13218 (5a490b9) into edge (e8c8807) will not change coverage.
Report is 14 commits behind head on edge.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##             edge   #13218   +/-   ##
=======================================
  Coverage   72.32%   72.32%           
=======================================
  Files        2399     2399           
  Lines       66338    66338           
  Branches     7383     7383           
=======================================
  Hits        47978    47978           
  Misses      16594    16594           
  Partials     1766     1766           
Flag Coverage Δ
g-code-testing 96.44% <ø> (ø)
notify-server 89.13% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Fix/condense flow rate tables.
Change flow rate section title. Add some comments.
Change header for GEN2 - GEN1 pipette comparisons
Table formatting fix because of comment on preceeding line.
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.

Whew, this page is in fact a lot! It's definitely organized better than before. I did leave several comments on improving structure further. Another pass through and this should be good.


.. code-block:: python
:substitutions:
Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by ``load_instrument()`` are attached properly.
Copy link
Contributor

Choose a reason for hiding this comment

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

this language, "you must inform the robot about the pipettes you want to use in your protocol", repeats the opening sentence too closely. the rest of the info in this ¶ is good.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removing that paragraph and incorporating into 2nd paragraph of 1st section.

Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. As noted above, the:py:meth:~.ProtocolContext.load_instrument method provides this capability. It also requires the :ref:pipette's API load name <new-pipette-models>, its left or right mount position, and (optionally) a list of associated tip racks. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by load_instrument() are attached properly.

api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
ecormany and others added 4 commits August 3, 2023 15:37
Lunch time special. Saving. More tk.
Moved tip racks up in the TOC. Added subsections for multi-channel pipettes and well plates. Pushing from local and will now address on-line repo comments.
A decent draft push. This is ready for the regular PR process, I think. Will push and convert.
@jwwojak
Copy link
Contributor Author

jwwojak commented Aug 7, 2023

Turning this into a regular PR and re-requesting review.

@jwwojak jwwojak marked this pull request as ready for review August 7, 2023 20:01
@jwwojak jwwojak requested a review from a team as a code owner August 7, 2023 20:01
@jwwojak jwwojak requested a review from ecormany August 7, 2023 20:01
Duplicated similar text that should have appeared in a Note. Removing the similar text.
And revising some tables and table headers.
Simplify examples. Consolidate each rate type into 1 sample block.
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.

Great, only a few things that didn't land in their final spot or needed a little cleanup. 🔜

You load pipettes in a protocol using the :py:meth:`~.ProtocolContext.load_instrument` method. This method requires the :ref:`pipette's API load name <new-pipette-models>`, its left or right mount position, and (optionally) a list of associated tip racks.

Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by ``load_instrument()`` are attached properly.
Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. As noted above, the:py:meth:`~.ProtocolContext.load_instrument` method provides this capability. It also requires the :ref:`pipette's API load name <new-pipette-models>`, its left or right mount position, and (optionally) a list of associated tip racks. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by ``load_instrument()`` are attached properly.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. As noted above, the:py:meth:`~.ProtocolContext.load_instrument` method provides this capability. It also requires the :ref:`pipette's API load name <new-pipette-models>`, its left or right mount position, and (optionally) a list of associated tip racks. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by ``load_instrument()`` are attached properly.
Similar to working with labware and modules, you must inform the robot about the pipettes you want to use in your protocol. As noted above, the :py:meth:`~.ProtocolContext.load_instrument` method provides this capability. It also requires the :ref:`pipette's API load name <new-pipette-models>`, its left or right mount position, and (optionally) a list of associated tip racks. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App and the robot won't let you start the protocol run until all pipettes loaded by ``load_instrument()`` are attached properly.

syntax fix

api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved

.. versionadded:: 2.0

When you load a pipette in this way, you are declaring that you want the specified pipette to be attached to the robot. Even if you don't use the pipette anywhere else in your protocol, the Opentrons App or the touchscreen on Flex will not let your protocol proceed until all pipettes loaded with ``load_instrument`` are attached.

If you're writing a protocol that uses the Flex Gripper, you might think that this would be the place in your protocol to declare that. However, the gripper doesn't require ``load_instrument``! Whether your gripper requires a protocol is determined by the presence of :py:meth:`.ProtocolContext.move_labware` commands. See :ref:`moving-labware` for more details.
Copy link
Contributor

Choose a reason for hiding this comment

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

should go up in the Flex section

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yikes. Yes it should. Fixing locally and will push.

Comment on lines 93 to 95
.. _new-multichannel-pipettes:

Multi-Channel Pipettes
======================
Multi-Channel Pipettes and Well Plates
Copy link
Contributor

Choose a reason for hiding this comment

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

check the cross-references to make sure this won't add the text "and Well Plates" to links elsewhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Let's go back to the original, "Multi-Channel Pipettes." I didn't really like the extra I added on -- too long.


.. code-block:: python

def run(protocol: protocol_api.ProtocolContext):
# Load a tiprack for 1000uL tips
tiprack1 = protocol.load_labware(
load_name='opentrons_flex_96_tiprack_1000ul',
location='D1')
# Load a wellplate
location='D1')
Copy link
Contributor

Choose a reason for hiding this comment

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

fix indents here, Python will consider this a syntax error

Copy link
Contributor Author

Choose a reason for hiding this comment

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

2x yikes. Fixing locally. Will push revisions.

api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
+-------------------------+-------------+-----------------+-----------------+-----------------+
| Pipette Model | Volume (µL) | Aspirate (µL/s) | Dispense (µL/s) | Blow-out (µL/s) |
+=========================+=============+=================+=================+=================+
| Flex 1-Channel Pipette | 1-50 | 8 | 4 |
Copy link
Contributor

Choose a reason for hiding this comment

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

wiiiiiide boi. let's list it twice: 8, 8, 4 and 160, 160, 80

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is a wide load. We'll have to repeat the 160 and 80 three times because these have the flow rates for the 5-1000 uL pipettes:

  • Flex 1-channel
  • Flex 8-channel
  • Flex 96-channel

With the revision, the only metrics that get the row spans are the volumes for the pipettes. Will fix and push.

api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
api/docs/v2/new_pipette.rst Outdated Show resolved Hide resolved
Changes from Ed's recent review. Once more unto the breech, friends!
Used wrong name for pipette position argument.
Fixing code alignment.
Revision to section intro.
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.

GTG. Massive improvement and lots of new info for Flex on this page. :shipit: 🦾

@jwwojak jwwojak merged commit c3f3494 into edge Aug 9, 2023
25 checks passed
@jwwojak
Copy link
Contributor Author

jwwojak commented Aug 9, 2023

This one was a monster! Thanks, @ecormany!

@jwwojak jwwojak deleted the pipette-docs-revisions branch August 10, 2023 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs papi-v2 Python API V2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants