You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: api/docs/v2/complex_commands/parameters.rst
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -113,7 +113,7 @@ For example, this basic transfer command will mix 50 µL of liquid 3 times befor
113
113
114
114
Mixing occurs before every aspiration, including when :ref:`tip refilling <complex-tip-refilling>` is required.
115
115
116
-
Liquid class definitions determine mix behavior in liquid class complex commands like ``transfer_with_liquid_class()``. For more information, see the :ref:`Opentrons-verified liquid class definitions <liquid-class-definitions>`.
116
+
Liquid class definitions determine mix behavior in liquid class complex commands like ``transfer_with_liquid_class()``. If mixing is enabled before an aspiration, the pipette will mix in place at the aspirate position. You can see position and other values in the:ref:`Opentrons-verified liquid class definitions <liquid-class-definitions>`.
117
117
118
118
.. note::
119
119
:py:meth:`~.InstrumentContext.consolidate` ignores any value of ``mix_before``. Mixing on the second and subsequent aspirations of a consolidate command would defeat its purpose: to aspirate multiple times in a row, from different wells, *before* dispensing.
@@ -285,7 +285,7 @@ For example, this ``transfer()`` command will mix 50 µL of liquid 3 times after
285
285
mix_after=(3, 50),
286
286
)
287
287
288
-
Liquid class definitions determine mix behavior in liquid class complex commands like ``transfer_with_liquid_class()``. For more information, see the :ref:`Opentrons-verified liquid class definitions <liquid-class-definitions>`.
288
+
Liquid class definitions determine mix behavior in liquid class complex commands like ``transfer_with_liquid_class()``. If mixing is enabled after a dispense, the pipette will mix in place at the dispense position. You can see position and other values in the:ref:`Opentrons-verified liquid class definitions <liquid-class-definitions>`.
Copy file name to clipboardExpand all lines: api/docs/v2/liquid_class_definitions.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
Liquid Class Definitions
7
7
*************************
8
8
9
-
A *liquid class definition* specifies nearly all transfer behavior a Flex pipette will perform during a :py:meth:`.InstrumentContext.transfer_with_liquid_class`, :py:meth:`.InstrumentContext.distribute_with_liquid_class`, or :py:meth:`InstrumentContext.consolidate_with_liquid_class`. Properties, like aspirate flow rate, submerge speed, or dispense position, are required in every liquid class definition.
9
+
A *liquid class definition* specifies nearly all transfer behavior a Flex pipette will perform during a :py:meth:`.InstrumentContext.transfer_with_liquid_class`, :py:meth:`.InstrumentContext.distribute_with_liquid_class`, or :py:meth:`.InstrumentContext.consolidate_with_liquid_class`. Properties, like aspirate flow rate, submerge speed, or dispense position, are required in every liquid class definition.
10
10
11
11
This section details specific changes to transfer behavior for each Opentrons-verified liquid class. The transfer steps are listed in the order the robot performs them. Advanced settings like mix, pre-wet tip, touch tip, and blowout are automatically disabled in Opentrons-verified liquid class definitions.
You'll need to add a label, like ``liquid_1``, to liquid classes in your protocol. This helps you keep track of multiple liquids of the same class in a protocol. It's also required by ``transfer_with_liquid_class()``, instead of a liquid class load name like ``glycerol_50``.
164
+
Use :py:meth:`.ProtocolContext.get_liquid_class` to name the Opentrons-verified liquid class you'll use in the protocol. :py:meth:`~.get_liquid_class` also takes into account pipettes and tipracks in your protocol to define transfer behavior.
153
165
154
-
155
-
Use the :py:meth:`.InstrumentContext.transfer_with_liquid_class` method to transfer an aqueous, volatile, or viscous liquid defined in a Flex protocol. This method accepts arguments that let you specify your liquid, volume, source and destination wells, tip handling preferences, and trash location.
166
+
Next, use the :py:meth:`.InstrumentContext.transfer_with_liquid_class` method to transfer an aqueous, volatile, or viscous liquid defined in a Flex protocol. This method requires the stored set of properties defined earlier, ``viscous_liquid``, instead of the ``glycerol_50`` load name. It accepts additional arguments that let you specify your liquid, volume, source and destination wells, tip handling preferences, and trash location.
156
167
157
168
Opentrons-verified liquid class definitions are based on Flex pipette and tip combinations. The API will raise an error if you try to perform a liquid class transfer with an OT-2 pipette and tips.
158
169
159
-
In the example below, a Flex P50 1-channel pipette will transfer 50 µL of your viscous ``liquid_1`` from each well of the source plate to each well of the destination plate. A new tip is used for each well transfer, and each tip is dropped in the trash bin loaded in slot A3.
170
+
In the example below, a Flex P50 1-channel pipette will transfer 50 µL of your ``viscous_liquid`` from well A1 of the reservoir to well A1 of the destination plate. A new tip is used for each well transfer, and each tip is dropped in the trash bin loaded in slot A3.
160
171
161
172
.. code-block:: python
162
173
163
-
pipette_50.transfer_with_liquid_class(
164
-
liquid_class=liquid_1,
165
-
volume=50,
166
-
source=nest_plate.rows()[0],
167
-
dest=arma_plate.rows()[0],
168
-
new_tip="always",
169
-
trash_location=trash
170
-
)
174
+
# transfer with the viscous liquid class
175
+
pipette.transfer_with_liquid_class(
176
+
liquid_class=viscous_liquid,
177
+
volume=50,
178
+
source=reservoir["A1"],
179
+
dest=plate["A1"],
180
+
new_tip="always",
181
+
trash_location=trash
182
+
)
183
+
184
+
.. versionadded:: 2.24
171
185
172
186
173
187
Here, the ``glycerol_50`` viscous liquid class definition accounts for all other transfer behavior, like flow rate, whether or not to add an air gap or delay, and submerge and retract speeds. For each aspirate, the pipette:
@@ -202,57 +216,63 @@ Customizing Liquid Classes
202
216
203
217
You can create your own liquid class to customize transfer behavior for any liquid in a Flex protocol. To make changes, you can edit individual properties of an existing liquid class, or add properties to a new liquid class.
204
218
205
-
To customize an Opentrons-verified liquid class, use :py:meth:`InstrumentContext.define_liquid_class` to define your custom liquid class after adding your pipettes, tips, trash, and labware::
219
+
To customize an Opentrons-verified liquid class, first add your pipettes, tips, trash, and labware. Then, use :py:meth:`~.ProtocolContext.get_liquid_class` to specify the liquid class you'll make changes to::
220
+
221
+
# get base liquid class and custom properties for the Flex pipette and tips
Then, complete your transfers with the modified ``custom_water`` liquid class.
230
245
246
+
All Opentrons-verified liquid classes position the pipette relative to the well. To customize your liquid class to use :ref:`meniscus-relative <well-meniscus>` locations, set the ``positionReference`` to ``"liquid-meniscus"``for actions like an aspirate or dispense.
231
247
232
-
You can also create a new liquid class for your Flex protocols. Instead of using an Opentrons-verified ``base_liquid_class``, you'll start from scratch, providing a value for `every required property <https://github.com/Opentrons/opentrons/blob/edge/shared-data/liquid-class/schemas/1.json>`__ in your liquid class.
248
+
You can also create a new liquid classfor your Flex protocols. Instead of using an Opentrons-verified liquid class, you'll start from scratch, providing a value for `every required property <https://github.com/Opentrons/opentrons/blob/edge/shared-data/liquid-class/schemas/1.json>`__ in your liquid class.
233
249
234
250
.. code-block:: python
235
251
236
-
# add all required properties, like aspirate properties, for the pipette, tip rack, and liquid class
237
-
custom_liquid_class_properties = {
238
-
"p20_single_gen2": {
239
-
"opentrons/opentrons_96_tiprack_20ul/1": {
240
-
"aspirate": {
241
-
"aspirate_position": {
242
-
"offset": {"x": 1, "y": 2, "z": 3},
243
-
"position_reference": "well-bottom",
244
-
}
252
+
# examples of required properties in a dictionary for your pipette and tip racks
The example above only includes aspirate position properties. To create your liquid class, you'll need to define values for `required properties <https://github.com/Opentrons/opentrons/blob/edge/shared-data/liquid-class/schemas/1.json>` like submerging before aspirating or after dispensing, speeds and flow rates, and position offsets.
274
+
The example above is shortened andonly includes aspirate position properties. To create your liquid class, you'll need to define values for all `required properties <https://github.com/Opentrons/opentrons/blob/edge/shared-data/liquid-class/schemas/1.json>` in your new liquid class, like submerging before aspirating or after dispensing, speeds and flow rates, and position offsets.
255
275
256
276
.. note::
257
277
258
-
The :py:meth:`.InstrumentContext.get_liquid_class` method only accepts Opentrons-verified liquid classes, like ``glycerol_50``. You'll need to use :py:meth:`.InstrumentContext.define_liquid_class` in each Flex protocol that uses a custom liquid class.
278
+
The :py:meth:`.ProtocolContext.get_liquid_class` method only accepts Opentrons-verified liquid classes, like ``glycerol_50``. You'll need to use :py:meth:`.ProtocolContext.define_liquid_class` in each Flex protocol that uses a custom liquid class.
Copy file name to clipboardExpand all lines: api/docs/v2/new_examples.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -193,7 +193,7 @@ This protocol uses some :ref:`building block commands <v2-atomic-commands>` to t
193
193
Advanced Method
194
194
---------------
195
195
196
-
These protocols accomplishes the same thing as the previous example, but does it a little more efficiently. Notice how it uses the :py:meth:`.InstrumentContext.transfer` or :py:meth:`InstrumentContext.transfer_with_liquid_class` method to move liquid between well plates. Because each is a complex command, you don't need separate calls to ``aspirate`` or ``dispense`` here.
196
+
These protocols accomplishes the same thing as the previous example, but does it a little more efficiently. Notice how it uses the :py:meth:`.InstrumentContext.transfer` or :py:meth:`.InstrumentContext.transfer_with_liquid_class` method to move liquid between well plates. Because each is a complex command, you don't need separate calls to ``aspirate`` or ``dispense`` here.
197
197
198
198
Let's start with a basic complex command, using ``transfer()``. The source and destination well arguments (e.g., ``plate["A1"], plate["B1"]``) are part of ``transfer()`` method parameters.
0 commit comments