Skip to content

Commit

Permalink
Merge branch 'edge' into app_lpc-store-handle-labware
Browse files Browse the repository at this point in the history
  • Loading branch information
mjhuff committed Jan 30, 2025
2 parents ad749ef + b1684cb commit d8a8856
Show file tree
Hide file tree
Showing 447 changed files with 22,567 additions and 6,574 deletions.
4 changes: 2 additions & 2 deletions api-client/src/maintenance_runs/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import type {
} from '@opentrons/shared-data'
import type {
RunCommandSummary,
LabwareOffsetCreateData,
LegacyLabwareOffsetCreateData,
RunStatus,
RunAction,
} from '../runs'
Expand Down Expand Up @@ -42,7 +42,7 @@ export interface MaintenanceRunError {
}

export interface CreateMaintenanceRunData {
labwareOffsets?: LabwareOffsetCreateData[]
labwareOffsets?: LegacyLabwareOffsetCreateData[]
}

export interface LabwareDefinitionSummary {
Expand Down
1 change: 1 addition & 0 deletions api-client/src/modules/api-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ interface PhysicalPort {
port: number
hub: boolean
portGroup: PortGroup
hubPort?: number
}

type ModuleOffsetSource =
Expand Down
6 changes: 3 additions & 3 deletions api-client/src/runs/createLabwareOffset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import { POST, request } from '../request'

import type { ResponsePromise } from '../request'
import type { HostConfig } from '../types'
import type { LabwareOffsetCreateData, Run } from './types'
import type { LegacyLabwareOffsetCreateData, Run } from './types'

export function createLabwareOffset(
config: HostConfig,
runId: string,
data: LabwareOffsetCreateData
data: LegacyLabwareOffsetCreateData
): ResponsePromise<Run> {
return request<Run, { data: LabwareOffsetCreateData }>(
return request<Run, { data: LegacyLabwareOffsetCreateData }>(
POST,
`/runs/${runId}/labware_offsets`,
{ data },
Expand Down
4 changes: 2 additions & 2 deletions api-client/src/runs/createRun.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import type { ResponsePromise } from '../request'
import type { HostConfig } from '../types'
import type {
Run,
LabwareOffsetCreateData,
LegacyLabwareOffsetCreateData,
RunTimeParameterValuesCreateData,
RunTimeParameterFilesCreateData,
} from './types'

export interface CreateRunData {
protocolId?: string
labwareOffsets?: LabwareOffsetCreateData[]
labwareOffsets?: LegacyLabwareOffsetCreateData[]
runTimeParameterValues?: RunTimeParameterValuesCreateData
runTimeParameterFiles?: RunTimeParameterFilesCreateData
}
Expand Down
30 changes: 26 additions & 4 deletions api-client/src/runs/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ export interface LabwareOffset {
id: string
createdAt: string
definitionUri: string
location: LabwareOffsetLocation
location: LegacyLabwareOffsetLocation
locationSequence?: LabwareOffsetLocationSequence
vector: VectorOffset
}

Expand Down Expand Up @@ -156,14 +157,35 @@ export interface CreateRunActionData {
actionType: RunActionType
}

export interface LabwareOffsetLocation {
export interface OnAddressableAreaLabwareOffsetLocationSequenceComponent {
kind: 'onAddressableArea'
labware: string
}

export interface OnModuleOffsetLocationSequenceComponent {
kind: 'onModule'
moduleModel: ModuleModel
}

export interface OnLabwareOffsetLocationSequenceComponent {
kind: 'onLabware'
labwareUri: string
}

export type LabwareOffsetLocationSequenceComponent =
| OnAddressableAreaLabwareOffsetLocationSequenceComponent
| OnModuleOffsetLocationSequenceComponent
| OnLabwareOffsetLocationSequenceComponent
export type LabwareOffsetLocationSequence = LabwareOffsetLocationSequenceComponent[]

export interface LegacyLabwareOffsetLocation {
slotName: string
moduleModel?: ModuleModel
definitionUri?: string
}
export interface LabwareOffsetCreateData {
export interface LegacyLabwareOffsetCreateData {
definitionUri: string
location: LabwareOffsetLocation
location: LegacyLabwareOffsetLocation
vector: VectorOffset
}

Expand Down
106 changes: 53 additions & 53 deletions api/docs/v1/pipettes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ same behavior as before.
The P20 Single GEN2 is back-compatible with the P10 Single in this regard. If your protocol
specifies an ``instruments.P10_Single`` and your robot has an ``instruments.P20_Single_GEN2``
attached, you can run your protocol, and the robot will act as if the maximum volume of the P20
Single GEN2 is 10 μl.
Single GEN2 is 10 µl.

If you have a P50 Single specified in your protocol, there is no automatic backwards compatibility.
If you want to use a Gen2 Pipette, you must change your protocol to load either a P300 Single GEN2
(if you are using volumes between 20 and 50 μl) or a P20 Single GEN2 (if you are using volumes
below 20 μl).
(if you are using volumes between 20 and 50 µl) or a P20 Single GEN2 (if you are using volumes
below 20 µl).


Plunger Flow Rates
Expand Down Expand Up @@ -99,92 +99,92 @@ The given defaults for every pipette model is the following:
P10_Single
----------

- Aspirate Default: 5 μl/s
- Dispense Default: 10 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 1 μl
- Maximum Volume: 10 μl
- Aspirate Default: 5 µl/s
- Dispense Default: 10 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 1 µl
- Maximum Volume: 10 µl

P10_Multi
---------

- Aspirate Default: 5 μl/s
- Dispense Default: 10 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 1 μl
- Maximum Volume: 10 μl
- Aspirate Default: 5 µl/s
- Dispense Default: 10 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 1 µl
- Maximum Volume: 10 µl

P50_Single
----------

- Aspirate Default: 25 μl/s
- Dispense Default: 50 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 5 μl
- Maximum Volume: 50 μl
- Aspirate Default: 25 µl/s
- Dispense Default: 50 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 5 µl
- Maximum Volume: 50 µl

P50_Multi
---------

- Aspirate Default: 25 μl/s
- Dispense Default: 50 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 5 μl
- Maximum Volume: 50 μl
- Aspirate Default: 25 µl/s
- Dispense Default: 50 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 5 µl
- Maximum Volume: 50 µl

P300_Single
-----------

- Aspirate Default: 150 μl/s
- Dispense Default: 300 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 30 μl
- Maximum Volume: 300 μl
- Aspirate Default: 150 µl/s
- Dispense Default: 300 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 30 µl
- Maximum Volume: 300 µl

P300_Multi
----------

- Aspirate Default: 150 μl/s
- Dispense Default: 300 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 30 μl
- Maximum Volume: 300 μl
- Aspirate Default: 150 µl/s
- Dispense Default: 300 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 30 µl
- Maximum Volume: 300 µl

P1000_Single
------------

- Aspirate Default: 500 μl/s
- Dispense Default: 1000 μl/s
- Blow Out Default: 1000 μl/s
- Minimum Volume: 100 μl
- Maximum Volume: 1000 μl
- Aspirate Default: 500 µl/s
- Dispense Default: 1000 µl/s
- Blow Out Default: 1000 µl/s
- Minimum Volume: 100 µl
- Maximum Volume: 1000 µl

P20_Single_GEN2
---------------

- Aspirate Default: 3.78 μl/s
- Dispense Default: 3.78 μl/s
- Blow Out Default: 3.78 μl/s
- Minimum Volume: 1 μl
- Maximum Volume: 20 μl
- Aspirate Default: 3.78 µl/s
- Dispense Default: 3.78 µl/s
- Blow Out Default: 3.78 µl/s
- Minimum Volume: 1 µl
- Maximum Volume: 20 µl

P300_Single_GEN2
----------------

- Aspirate Default: 46.43 μl/s
- Dispense Default: 46.43 μl/s
- Blow Out Default: 46.43 μl/s
- Minimum Volume: 20 μl
- Maximum Volume: 300 μl
- Aspirate Default: 46.43 µl/s
- Dispense Default: 46.43 µl/s
- Blow Out Default: 46.43 µl/s
- Minimum Volume: 20 µl
- Maximum Volume: 300 µl

P1000_Single_GEN2
-----------------

- Aspirate Default: 137.35 μl/s
- Dispense Default: 137.35 μl/s
- Blow Out Default: 137.35 μl/s
- Minimum Volume: 100 μl
- Maximum Volume: 1000 μl
- Aspirate Default: 137.35 µl/s
- Dispense Default: 137.35 µl/s
- Blow Out Default: 137.35 µl/s
- Minimum Volume: 100 µl
- Maximum Volume: 1000 µl

Old Pipette Constructor
=======================
Expand Down
2 changes: 1 addition & 1 deletion api/docs/v2/complex_commands/parameters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ One reason to set ``new_tip="always"`` is to avoid cross-contamination between w

:py:meth:`~.InstrumentContext.transfer` will pick up a new tip before *every* aspirate when ``new_tip="always"``. This includes when :ref:`tip refilling <complex-tip-refilling>` requires multiple aspirations from a single source well.

:py:meth:`~.InstrumentContext.distribute` and :py:meth:`~.InstrumentContext.consolidate` only pick up one tip, even when ``new_tip="always"``. For example, this distribute command returns to the source well a second time, because the amount to be distributed (400 µL total plus disposal volume) exceeds the pipette capacity (300 μL)::
:py:meth:`~.InstrumentContext.distribute` and :py:meth:`~.InstrumentContext.consolidate` only pick up one tip, even when ``new_tip="always"``. For example, this distribute command returns to the source well a second time, because the amount to be distributed (400 µL total plus disposal volume) exceeds the pipette capacity (300 µL)::

pipette.distribute(
volume=200,
Expand Down
8 changes: 6 additions & 2 deletions api/docs/v2/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,10 @@
("py:class", r".*protocol_api\.config.*"),
("py:class", r".*opentrons_shared_data.*"),
("py:class", r".*protocol_api._parameters.Parameters.*"),
("py:class", r".*RobotContext"), # shh it's a secret (for now)
("py:class", r'.*AbstractLabware|APIVersion|LabwareLike|LoadedCoreMap|ModuleTypes|NoneType|OffDeckType|ProtocolCore|WellCore'), # laundry list of not fully qualified things
("py:class", r".*RobotContext"), # shh it's a secret (for now)
("py:class", r".*FlexStackerContext"), # ssh it's a secret (for now)
(
"py:class",
r".*AbstractLabware|APIVersion|LabwareLike|LoadedCoreMap|ModuleTypes|NoneType|OffDeckType|ProtocolCore|WellCore",
), # laundry list of not fully qualified things
]
6 changes: 3 additions & 3 deletions api/docs/v2/modules/temperature_module.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,11 @@ The Temperature Module supports these 96-well block and labware combinations for

* - 96-well block contents
- API Load Name
* - Bio-Rad well plate 200 μL
* - Bio-Rad well plate 200 µL
- ``opentrons_96_aluminumblock_biorad_wellplate_200uL``
* - Generic PCR strip 200 μL
* - Generic PCR strip 200 µL
- ``opentrons_96_aluminumblock_generic_pcr_strip_200uL``
* - NEST well plate 100 μL
* - NEST well plate 100 µL
- ``opentrons_96_aluminumblock_nest_wellplate_100uL``

This command loads the same physical adapter and labware as the example in the Standalone Adapters section above, but it is also compatible with earlier API versions::
Expand Down
49 changes: 26 additions & 23 deletions api/docs/v2/pipettes/characteristics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -184,29 +184,32 @@ These flow rates will remain in effect until you change the ``flow_rate`` attrib
Flex Pipette Flow Rates
-----------------------

Flex pipette flow rates depend on pipette volume and tip capacity. Each pipette–tip combination has a default flow rate for aspirating, dispensing, and blowing out liquid. When using a 50 µL pipette, you should only use 50 µL tips.

.. list-table::
:header-rows: 1

* - Pipette Model
- Tip Capacity (µL)
- Flow Rate (µL/s)
* - 50 µL (1- and 8-channel)
- 50
- 57
* - 1000 µL (1-, 8-, and 96-channel)
- 50
- 478
* - 1000 µL (1-, 8-, and 96-channel)
- 200
- 716
* - 1000 µL (1-, 8-, and 96-channel)
- 1000
- 716


Additionally, all Flex pipettes have a well bottom clearance of 1 mm for aspirate and dispense actions.
The following table provides data on the default aspirate, dispense, and blowout flow rates (in µL/s) for Flex pipettes. Default flow rates for each pipette-tip combination are the same across all three actions.

.. Excludes low-vol 96 channel. Not yet released.
+-----------------------------+-------------------+------------------------+
| Pipette Model | Tip Capacity (µL) | Default Flow Rate (µL) |
+=============================+===================+========================+
| 1- and 8-channel (50 µL) | 50 | 35 |
+-----------------------------+-------------------+------------------------+
| 1- and 8-channel (1000 µL) | 50 | 478 |
+ +-------------------+------------------------+
| | 200 | 716 |
+ +-------------------+------------------------+
| | 1000 | 716 |
+-----------------------------+-------------------+------------------------+
| 96-channel (5-1000 µL) | 50 | 6 |
+ +-------------------+------------------------+
| | 200 | 80 |
+ +-------------------+------------------------+
| | 1000 | 160 |
+-----------------------------+-------------------+------------------------+

Additionally:

- When using a 50 µL pipette, you should only use 50 µL tips.
- All Flex pipettes have a well bottom clearance of 1 mm for aspirate and dispense actions.

.. _ot2-flow-rates:

Expand Down
2 changes: 1 addition & 1 deletion api/docs/v2/tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Hardware and Labware

Before running a protocol, you’ll want to have the right kind of hardware and labware ready for your Flex or OT-2.

- **Flex users** should review Chapter 2: Installation and Relocation in the `instruction manual <https://insights.opentrons.com/hubfs/Products/Flex/Opentrons%20Flex%20Manual.pdf>`_. Specifically, see the pipette information in the "Instrument Installation and Calibration" section. You can use either a 1-channel or 8-channel pipette for this tutorial. Most Flex code examples will use a `Flex 1-Channel 1000 μL pipette <https://shop.opentrons.com/opentrons-flex-1-channel-pipette/>`_.
- **Flex users** should review Chapter 2: Installation and Relocation in the `instruction manual <https://insights.opentrons.com/hubfs/Products/Flex/Opentrons%20Flex%20Manual.pdf>`_. Specifically, see the pipette information in the "Instrument Installation and Calibration" section. You can use either a 1-channel or 8-channel pipette for this tutorial. Most Flex code examples will use a `Flex 1-Channel 1000 µL pipette <https://shop.opentrons.com/opentrons-flex-1-channel-pipette/>`_.

- **OT-2 users** should review the robot setup and pipette information on the `Get Started page <https://support.opentrons.com/s/ot2-get-started>`_. Specifically, see `attaching pipettes <https://support.opentrons.com/s/article/Get-started-Attach-pipettes>`_ and `initial calibration <https://support.opentrons.com/s/article/Get-started-Calibrate-the-deck>`_. You can use either a single-channel or 8-channel pipette for this tutorial. Most OT-2 code examples will use a `P300 Single-Channel GEN2 <https://shop.opentrons.com/single-channel-electronic-pipette-p20/>`_ pipette.

Expand Down
9 changes: 9 additions & 0 deletions api/release-notes-internal.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ For more details about this release, please see the full [technical change log][

[technical change log]: https://github.com/Opentrons/opentrons/releases

## Internal Release 2.4.0-alpha.1

This internal release, pulled from the `edge` branch, contains features being developed for 8.4.0. It's for internal testing only.

### New Stuff In This Release (list in progress):

- Python API version bumped to 2.23
- Added liquid classes and new transfer functions

## Internal Release 2.3.0-alpha.2

This internal release, pulled from the `edge` branch, contains features being developed for 8.3.0. It's for internal testing only.
Expand Down
Loading

0 comments on commit d8a8856

Please sign in to comment.