From c45938d74774c8cbbb094f1250e157909a92a46f Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Mon, 6 Jan 2025 10:29:52 -0600 Subject: [PATCH 01/81] chore(release): v8.3.0-alpha.1 release notes (#17188) ## Overview This PR is the rebased version of #17141 --- api/release-notes.md | 16 ++++++++++++++++ app-shell/build/release-notes.md | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/api/release-notes.md b/api/release-notes.md index 1fdd9a033d9..68d84b62cce 100644 --- a/api/release-notes.md +++ b/api/release-notes.md @@ -8,6 +8,22 @@ By installing and using Opentrons software, you agree to the Opentrons End-User --- +## Opentrons Robot Software Changes in 8.3.0 + +Welcome to the v8.3.0 release of the Opentrons robot software! This release adds support for Evosep Evotips on the Flex, as well as other features. + +### New Features + +- Use Evosep Evotips in Python API version 2.22 protocols for protein sample purification. Only available with the Flex 96-channel pipette. + +- Load a newly modified Flex 8-Channel EM 1000 µL pipette equipped with a PEEK motor component to automate emulsion applications. + +### Improved Features + +- Improvements to the Flex error recovery feature help protocols recover from detected stalls and collisions, saving you valuable time and resources. + +--- + ## Opentrons Robot Software Changes in 8.2.0 Welcome to the v8.2.0 release of the Opentrons robot software! This release adds support for the Opentrons Absorbance Plate Reader Module. diff --git a/app-shell/build/release-notes.md b/app-shell/build/release-notes.md index 9b9231e9709..4d5c7827f6f 100644 --- a/app-shell/build/release-notes.md +++ b/app-shell/build/release-notes.md @@ -8,6 +8,22 @@ By installing and using Opentrons software, you agree to the Opentrons End-User --- +## Opentrons App Changes in 8.3.0 + +Welcome to the v8.3.0 release of the Opentrons App! This release adds support for Evosep Evotips on the Flex, as well as other features. + +### New Features + +- Use Evosep Evotips in Python API version 2.22 protocols for protein sample purification. Only available with the Flex 96-channel pipette. +- Change the app or Flex touchscreen language to Mandarin in Settings. +- Load a newly modified Flex 8-Channel EM 1000 µL pipette equipped with a PEEK motor component to automate emulsion applications. + +### Improved Features + +- Improvements to the Flex error recovery feature help protocols recover from detected stalls and collisions, saving you valuable time and resources. + +--- + ## Opentrons App Changes in 8.2.0 Welcome to the v8.2.0 release of the Opentrons App! This release adds support for the Opentrons Absorbance Plate Reader Module, as well as other features. From 8c2474dbcd1b29225f020e8525a4d642b6d7227e Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Tue, 7 Jan 2025 13:02:50 -0500 Subject: [PATCH 02/81] fix(api): properly handle non-labware jsons in sim (#17198) opentrons_simulate tries to see if any json file it can reach is a labware and load it if so. We recently changed the exceptions we raise in verify_labware_definitions if that call fails, so now instead of ignoring the file on exception opentrons_simulate raises the error through and terminates. No good! Change the exception to something a little saner and make sure we can actually ignore invalid labware files in sim. Closes RQA-3820 --- api/src/opentrons/protocols/labware.py | 45 +++++++++++++++---- api/src/opentrons/util/entrypoint_util.py | 7 +-- .../errors/exceptions.py | 3 +- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/api/src/opentrons/protocols/labware.py b/api/src/opentrons/protocols/labware.py index d3159ee5d9f..ec05e3cbb72 100644 --- a/api/src/opentrons/protocols/labware.py +++ b/api/src/opentrons/protocols/labware.py @@ -4,7 +4,7 @@ import json import os from pathlib import Path -from typing import Any, AnyStr, Dict, Optional, Union, List +from typing import Any, AnyStr, Dict, Optional, Union, List, Sequence, Literal import jsonschema # type: ignore @@ -17,10 +17,30 @@ USER_DEFS_PATH, ) from opentrons_shared_data.labware.types import LabwareDefinition +from opentrons_shared_data.errors.exceptions import InvalidProtocolData MODULE_LOG = logging.getLogger(__name__) +LabwareProblem = Literal[ + "no-schema-id", "bad-schema-id", "schema-mismatch", "invalid-json" +] + + +class NotALabwareError(InvalidProtocolData): + def __init__( + self, problem: LabwareProblem, wrapping: Sequence[BaseException] + ) -> None: + messages: dict[LabwareProblem, str] = { + "no-schema-id": "No schema ID present in file", + "bad-schema-id": "Bad schema ID in file", + "invalid-json": "File does not contain valid JSON", + "schema-mismatch": "File does not match labware schema", + } + super().__init__( + message=messages[problem], detail={"kind": problem}, wrapping=wrapping + ) + def get_labware_definition( load_name: str, @@ -126,7 +146,7 @@ def save_definition( json.dump(labware_def, f) -def verify_definition( +def verify_definition( # noqa: C901 contents: Union[AnyStr, LabwareDefinition, Dict[str, Any]] ) -> LabwareDefinition: """Verify that an input string is a labware definition and return it. @@ -146,15 +166,24 @@ def verify_definition( if isinstance(contents, dict): to_return = contents else: - to_return = json.loads(contents) + try: + to_return = json.loads(contents) + except json.JSONDecodeError as e: + raise NotALabwareError("invalid-json", [e]) from e try: schema_version = to_return["schemaVersion"] + except KeyError as e: + raise NotALabwareError("no-schema-id", [e]) from e + + try: schema = schemata_by_version[schema_version] - except KeyError: - raise RuntimeError( - f'Invalid or unknown labware schema version {to_return.get("schemaVersion", None)}' - ) - jsonschema.validate(to_return, schema) + except KeyError as e: + raise NotALabwareError("bad-schema-id", [e]) from e + + try: + jsonschema.validate(to_return, schema) + except jsonschema.ValidationError as e: + raise NotALabwareError("schema-mismatch", [e]) from e # we can type ignore this because if it passes the jsonschema it has # the correct structure diff --git a/api/src/opentrons/util/entrypoint_util.py b/api/src/opentrons/util/entrypoint_util.py index 2da4cac874c..508f6769bc5 100644 --- a/api/src/opentrons/util/entrypoint_util.py +++ b/api/src/opentrons/util/entrypoint_util.py @@ -6,7 +6,6 @@ from dataclasses import dataclass import json import logging -from json import JSONDecodeError import pathlib import subprocess import sys @@ -21,8 +20,6 @@ TYPE_CHECKING, ) -from jsonschema import ValidationError # type: ignore - from opentrons.calibration_storage.deck_configuration import ( deserialize_deck_configuration, ) @@ -32,7 +29,7 @@ JUPYTER_NOTEBOOK_LABWARE_DIR, SystemArchitecture, ) -from opentrons.protocol_api import labware +from opentrons.protocols import labware from opentrons.calibration_storage import helpers from opentrons.protocol_engine.errors.error_occurrence import ( ErrorOccurrence as ProtocolEngineErrorOccurrence, @@ -79,7 +76,7 @@ def labware_from_paths( if child.is_file() and child.suffix.endswith("json"): try: defn = labware.verify_definition(child.read_bytes()) - except (ValidationError, JSONDecodeError): + except labware.NotALabwareError: log.info(f"{child}: invalid labware, ignoring") log.debug( f"{child}: labware invalid because of this exception.", diff --git a/shared-data/python/opentrons_shared_data/errors/exceptions.py b/shared-data/python/opentrons_shared_data/errors/exceptions.py index b27b3c9c3d3..bdc952d5760 100644 --- a/shared-data/python/opentrons_shared_data/errors/exceptions.py +++ b/shared-data/python/opentrons_shared_data/errors/exceptions.py @@ -1,4 +1,5 @@ """Exception hierarchy for error codes.""" + from typing import Dict, Any, Optional, List, Iterator, Union, Sequence, overload from logging import getLogger from traceback import format_exception_only, format_tb @@ -1099,7 +1100,7 @@ def __init__( self, message: Optional[str] = None, detail: Optional[Dict[str, str]] = None, - wrapping: Optional[Sequence[EnumeratedError]] = None, + wrapping: Optional[Sequence[Union[EnumeratedError, BaseException]]] = None, ) -> None: """Build an InvalidProtocolData.""" super().__init__(ErrorCodes.INVALID_PROTOCOL_DATA, message, detail, wrapping) From 696d2e444bd0495140c18784a0e4c80c472110f2 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 7 Jan 2025 11:42:52 -0700 Subject: [PATCH 03/81] fix(app): Fix gantry not homing when no labware in gripper jaws during Error Recovery (#17201) Closes RQA-3822 Adds the explicit homing command to the "no labware in jaws" option, preventing fatal errors that occur after gripper recovery involving axes with unknown positioning. --- .../shared/GripperIsHoldingLabware.tsx | 44 +++++++++++-------- .../GripperIsHoldingLabware.test.tsx | 18 ++++++++ 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx index 036f1aff3d0..6f4157bc909 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx @@ -29,12 +29,15 @@ export const HOLDING_LABWARE_OPTIONS: HoldingLabwareOption[] = [ export function GripperIsHoldingLabware({ routeUpdateActions, currentRecoveryOptionUtils, + recoveryCommands, }: RecoveryContentProps): JSX.Element { const { proceedNextStep, proceedToRouteAndStep, goBackPrevStep, + handleMotionRouting, } = routeUpdateActions + const { homeExceptPlungers } = recoveryCommands const { selectedRecoveryOption } = currentRecoveryOptionUtils const { MANUAL_MOVE_AND_SKIP, @@ -48,24 +51,29 @@ export function GripperIsHoldingLabware({ const { t } = useTranslation(['error_recovery', 'shared']) const handleNoOption = (): void => { - switch (selectedRecoveryOption) { - case MANUAL_MOVE_AND_SKIP.ROUTE: - void proceedToRouteAndStep( - MANUAL_MOVE_AND_SKIP.ROUTE, - MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - break - case MANUAL_REPLACE_AND_RETRY.ROUTE: - void proceedToRouteAndStep( - MANUAL_REPLACE_AND_RETRY.ROUTE, - MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE - ) - break - default: { - console.error('Unexpected recovery option for gripper routing.') - void proceedToRouteAndStep(OPTION_SELECTION.ROUTE) - } - } + // The "yes" option also contains a home, but it occurs later in the control flow, + // after the user has extricated the labware from the gripper jaws. + void handleMotionRouting(true) + .then(() => homeExceptPlungers()) + .then(() => { + switch (selectedRecoveryOption) { + case MANUAL_MOVE_AND_SKIP.ROUTE: + return proceedToRouteAndStep( + MANUAL_MOVE_AND_SKIP.ROUTE, + MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE + ) + case MANUAL_REPLACE_AND_RETRY.ROUTE: + return proceedToRouteAndStep( + MANUAL_REPLACE_AND_RETRY.ROUTE, + MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE + ) + default: { + console.error('Unexpected recovery option for gripper routing.') + return proceedToRouteAndStep(OPTION_SELECTION.ROUTE) + } + } + }) + .finally(() => handleMotionRouting(false)) } const primaryOnClick = (): void => { diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx index adedca04009..3279bdfea7c 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx @@ -23,19 +23,25 @@ const render = (props: ComponentProps) => { let mockProceedToRouteAndStep: Mock let mockProceedNextStep: Mock +let mockHandleMotionRouting: Mock +let mockHomeExceptPlungers: Mock describe('GripperIsHoldingLabware', () => { let props: ComponentProps beforeEach(() => { mockProceedToRouteAndStep = vi.fn(() => Promise.resolve()) mockProceedNextStep = vi.fn(() => Promise.resolve()) + mockHandleMotionRouting = vi.fn(() => Promise.resolve()) + mockHomeExceptPlungers = vi.fn(() => Promise.resolve()) props = { ...mockRecoveryContentProps, routeUpdateActions: { proceedToRouteAndStep: mockProceedToRouteAndStep, proceedNextStep: mockProceedNextStep, + handleMotionRouting: mockHandleMotionRouting, } as any, + recoveryCommands: { homeExceptPlungers: mockHomeExceptPlungers } as any, } }) @@ -82,12 +88,24 @@ describe('GripperIsHoldingLabware', () => { fireEvent.click(screen.getAllByLabelText('No')[0]) clickButtonLabeled('Continue') + await waitFor(() => { + expect(mockHandleMotionRouting).toHaveBeenCalledWith(true) + }) + + await waitFor(() => { + expect(mockHomeExceptPlungers).toHaveBeenCalled() + }) + await waitFor(() => { expect(mockProceedToRouteAndStep).toHaveBeenCalledWith( RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE ) }) + + await waitFor(() => { + expect(mockHandleMotionRouting).toHaveBeenCalledWith(false) + }) }) it(`proceeds to the correct step when the no option is clicked for ${RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE}`, async () => { From eeb7a02634436982e87290319ca455acb4a9a2a4 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Tue, 7 Jan 2025 16:47:35 -0500 Subject: [PATCH 04/81] fix(robot-server): Better errors for bad wpa2 pass (#17203) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We pipe errors from nmcli straight to the display when we get them. NMCLI has famously awful errors. We don't want to always squash them, because they could be useful, but in the case of a mis-entered WPA2 PSK, we can be pretty sure that's the problem. This will now say "check your wifi credentials" Screenshot 2025-01-07 at 4 46 15 PM ## Testing - [x] Connect to a wifi network and purposefully enter the wrong password; you should get a less awful message. Note that this only actually works if you're disconnected from wifi when you try to connect; if you're connected to wifi and then try and connect to a network and use the wrong password, you just don't get a result because the request went out over the original wifi network which got disconnected. It's the same code on the flex, ot-2 on the desktop (the ODD has a different message). Closes RSQ-3 --- .../service/legacy/routers/networking.py | 11 ++++++++- .../service/legacy/routers/test_networking.py | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/robot-server/robot_server/service/legacy/routers/networking.py b/robot-server/robot_server/service/legacy/routers/networking.py index ea3c4543ea8..d0acb1b64be 100644 --- a/robot-server/robot_server/service/legacy/routers/networking.py +++ b/robot-server/robot_server/service/legacy/routers/networking.py @@ -1,5 +1,6 @@ import logging import os +import re import subprocess from typing import Annotated, Optional @@ -96,6 +97,13 @@ async def get_wifi_networks( return WifiNetworks(list=[WifiNetworkFull(**n) for n in networks]) +def _massage_nmcli_error(error_string: str) -> str: + """Raises a better-formatted error message from an nmcli error string.""" + if re.search("password.*802-11-wireless-security\\.psk.*not given", error_string): + return "Could not connect to network. Please double-check network credentials." + return error_string + + @router.post( path="/wifi/configure", summary="Configure the robot's Wi-Fi", @@ -129,7 +137,8 @@ async def post_wifi_configure( if not ok: raise LegacyErrorResponse( - message=message, errorCode=ErrorCodes.GENERAL_ERROR.value.code + message=_massage_nmcli_error(message), + errorCode=ErrorCodes.GENERAL_ERROR.value.code, ).as_error(status.HTTP_401_UNAUTHORIZED) return WifiConfigurationResponse(message=message, ssid=configuration.ssid) diff --git a/robot-server/tests/service/legacy/routers/test_networking.py b/robot-server/tests/service/legacy/routers/test_networking.py index 22ea2359a92..ebc42a41839 100755 --- a/robot-server/tests/service/legacy/routers/test_networking.py +++ b/robot-server/tests/service/legacy/routers/test_networking.py @@ -5,6 +5,7 @@ import pytest from opentrons.system import nmcli, wifi +from robot_server.service.legacy.routers.networking import _massage_nmcli_error from typing import Optional @@ -369,3 +370,25 @@ def check_option(opt_dict): assert "options" in opt for method_opt in opt["options"]: check_option(method_opt) + + +@pytest.mark.parametrize( + "nmcli_message,result_message", + [ + ( + "Warning: password for '802-11-wireless-security.psk' not given in 'passwd-file' and nmcli cannot ask without '--ask' option. Error: Connection activation failed: Secrets were required, but not provided Hint: use 'journalctl -xe NM_CONNECTION=05d784ec-1feb4147-be22-c07d7915ef96 + NM_DEVICE=mlan0' to get more details.", + "Could not connect to network. Please double-check network credentials.", + ), + ( + "Warning: asdasdasff for '802-11-afasda' not given in 'asdadsa'. Error: Connection activation failed: Secrets were required, but not provided", + "Warning: asdasdasff for '802-11-afasda' not given in 'asdadsa'. Error: Connection activation failed: Secrets were required, but not provided", + ), + ( + "Error: Connection activation failed: Secrets were required, but not provided", + "Error: Connection activation failed: Secrets were required, but not provided", + ), + ], +) +def test_error_rewriting(nmcli_message: str, result_message: str) -> None: + """It should rewrite known nmcli failure messages.""" + assert _massage_nmcli_error(nmcli_message) == result_message From 0395804d3cd6cebbd47dc3807d69fe22a6488e3c Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 7 Jan 2025 17:23:06 -0500 Subject: [PATCH 05/81] fix(shared-data): Add back missing parent labwares for auto sealing lids (#17195) Covers RQA-3819 Adds in missing valid labware parents for the TC lid --- .../definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json b/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json index 479fd00b772..342fd30c4e0 100644 --- a/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json +++ b/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json @@ -81,7 +81,9 @@ "compatibleParentLabware": [ "armadillo_96_wellplate_200ul_pcr_full_skirt", "opentrons_96_wellplate_200ul_pcr_full_skirt", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "biorad_96_wellplate_200ul_pcr", + "opentrons_flex_deck_riser" ], "gripForce": 15, "gripHeightFromLabwareBottom": 7.91, From cff47c9812201d7f1a81bd44275d970a6cbae3a9 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 8 Jan 2025 08:00:25 -0700 Subject: [PATCH 06/81] fix(app-shell): Fix flaky file system test (#17212) Fix a flaky test by running filesystem commands sequentially instead of in parallel. --- .../__tests__/file-system.test.ts | 109 +++++++++--------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/app-shell/src/protocol-storage/__tests__/file-system.test.ts b/app-shell/src/protocol-storage/__tests__/file-system.test.ts index 4da2cd23abe..cc742e0b89b 100644 --- a/app-shell/src/protocol-storage/__tests__/file-system.test.ts +++ b/app-shell/src/protocol-storage/__tests__/file-system.test.ts @@ -109,66 +109,67 @@ describe('protocol storage directory utilities', () => { }) describe('parseProtocolDirs', () => { - it('reads and parses directories', () => { + it('reads and parses directories', async () => { const protocolsDir = makeEmptyDir() - const firstProtocolDirName = 'protocol_item_1' const secondProtocolDirName = 'protocol_item_2' - const firstDirPath = path.join(protocolsDir, firstProtocolDirName) const secondDirPath = path.join(protocolsDir, secondProtocolDirName) - return Promise.all([ - fs.emptyDir(path.join(protocolsDir, firstProtocolDirName)), - fs.emptyDir(path.join(protocolsDir, firstProtocolDirName, 'src')), - fs.createFile( - path.join(protocolsDir, firstProtocolDirName, 'src', 'main.py') - ), - fs.emptyDir(path.join(protocolsDir, firstProtocolDirName, 'analysis')), - fs.createFile( - path.join( - protocolsDir, - firstProtocolDirName, - 'analysis', - 'fake_timestamp0.json' - ) - ), - fs.emptyDir(path.join(protocolsDir, secondProtocolDirName)), - fs.emptyDir(path.join(protocolsDir, secondProtocolDirName, 'src')), - fs.createFile( - path.join(protocolsDir, secondProtocolDirName, 'src', 'main.json') - ), - fs.emptyDir(path.join(protocolsDir, secondProtocolDirName, 'analysis')), - fs.createFile( - path.join( - protocolsDir, - secondProtocolDirName, - 'analysis', - 'fake_timestamp1.json' - ) - ), - ]).then(() => { - return expect( - parseProtocolDirs([firstDirPath, secondDirPath]) - ).resolves.toEqual([ - { - dirPath: firstDirPath, - modified: expect.any(Number), - srcFilePaths: [path.join(firstDirPath, 'src', 'main.py')], - analysisFilePaths: [ - path.join(firstDirPath, 'analysis', 'fake_timestamp0.json'), - ], - }, - { - dirPath: secondDirPath, - modified: expect.any(Number), - srcFilePaths: [path.join(secondDirPath, 'src', 'main.json')], - analysisFilePaths: [ - path.join(secondDirPath, 'analysis', 'fake_timestamp1.json'), - ], - }, - ]) - }) + await fs.emptyDir(path.join(protocolsDir, firstProtocolDirName)) + await fs.emptyDir(path.join(protocolsDir, firstProtocolDirName, 'src')) + await fs.emptyDir( + path.join(protocolsDir, firstProtocolDirName, 'analysis') + ) + await fs.createFile( + path.join(protocolsDir, firstProtocolDirName, 'src', 'main.py') + ) + await fs.createFile( + path.join( + protocolsDir, + firstProtocolDirName, + 'analysis', + 'fake_timestamp0.json' + ) + ) + + await fs.emptyDir(path.join(protocolsDir, secondProtocolDirName)) + await fs.emptyDir(path.join(protocolsDir, secondProtocolDirName, 'src')) + await fs.emptyDir( + path.join(protocolsDir, secondProtocolDirName, 'analysis') + ) + await fs.createFile( + path.join(protocolsDir, secondProtocolDirName, 'src', 'main.json') + ) + await fs.createFile( + path.join( + protocolsDir, + secondProtocolDirName, + 'analysis', + 'fake_timestamp1.json' + ) + ) + + const result = await parseProtocolDirs([firstDirPath, secondDirPath]) + + expect(result).toEqual([ + { + dirPath: firstDirPath, + modified: expect.any(Number), + srcFilePaths: [path.join(firstDirPath, 'src', 'main.py')], + analysisFilePaths: [ + path.join(firstDirPath, 'analysis', 'fake_timestamp0.json'), + ], + }, + { + dirPath: secondDirPath, + modified: expect.any(Number), + srcFilePaths: [path.join(secondDirPath, 'src', 'main.json')], + analysisFilePaths: [ + path.join(secondDirPath, 'analysis', 'fake_timestamp1.json'), + ], + }, + ]) }) }) From b565fea1f15364eb867c3ddb4b46a870392667a8 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Wed, 8 Jan 2025 10:06:50 -0500 Subject: [PATCH 07/81] chore(app-shell): pass team id via env var only (#17210) This is very odd and I'm not sure when it would have changed but this is the thing the error message says to do. ## Testing - [x] does the apple build work - [x] does the apple build run --- app-shell/electron-builder.config.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app-shell/electron-builder.config.js b/app-shell/electron-builder.config.js index decac1f66b9..26bcf518e28 100644 --- a/app-shell/electron-builder.config.js +++ b/app-shell/electron-builder.config.js @@ -1,11 +1,7 @@ 'use strict' const path = require('path') -const { - OT_APP_DEPLOY_BUCKET, - OT_APP_DEPLOY_FOLDER, - APPLE_TEAM_ID, -} = process.env +const { OT_APP_DEPLOY_BUCKET, OT_APP_DEPLOY_FOLDER } = process.env const DEV_MODE = process.env.NODE_ENV !== 'production' const USE_PYTHON = process.env.NO_PYTHON !== 'true' const WINDOWS_SIGN = process.env.WINDOWS_SIGN === 'true' @@ -62,9 +58,7 @@ module.exports = async () => ({ icon: project === 'robot-stack' ? 'build/icon.icns' : 'build/three.icns', forceCodeSigning: !DEV_MODE, gatekeeperAssess: true, - notarize: { - teamId: APPLE_TEAM_ID, - }, + // note: notarize.teamId is passed by implicitly sending through the APPLE_TEAM_ID env var }, dmg: { icon: null, From 63cba42d4fecdbbbc1f3cffd5ab2102fcb41118a Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Wed, 8 Jan 2025 10:58:44 -0500 Subject: [PATCH 08/81] fix(hardware-testing): add oem argument to pipette load in lld test protocol (#17216) # Overview We're doing a direct "load_definintion" call in this protocol so we need to update it to have the new OEM arg added in 8.3 ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../protocols/liquid_sense/lld_test_empty_wells.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hardware-testing/hardware_testing/protocols/liquid_sense/lld_test_empty_wells.py b/hardware-testing/hardware_testing/protocols/liquid_sense/lld_test_empty_wells.py index 3adfd8e3208..2e289eed919 100644 --- a/hardware-testing/hardware_testing/protocols/liquid_sense/lld_test_empty_wells.py +++ b/hardware-testing/hardware_testing/protocols/liquid_sense/lld_test_empty_wells.py @@ -14,6 +14,7 @@ PipetteChannelType, PipetteModelType, PipetteVersionType, + PipetteOEMType, ) ########################################### @@ -113,6 +114,7 @@ def _setup( major=int(pip_model_list[-1][-3]), # type: ignore[arg-type] minor=int(pip_model_list[-1][-1]), # type: ignore[arg-type] ), + oem=PipetteOEMType.get_oem_from_model_str(str(pipette.model)), ) # Writes details about test run to google sheet. tipVolume = "t" + str(TIP_SIZE) From 0fa2cfc9de836d2c298adc13f88fbeac29b329c5 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 8 Jan 2025 12:40:38 -0700 Subject: [PATCH 09/81] fix(app): Fix gripper calibration copy during exit (#17220) Closes RQA-3832 --- app/src/organisms/GripperWizardFlows/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/organisms/GripperWizardFlows/index.tsx b/app/src/organisms/GripperWizardFlows/index.tsx index 1a4bab512eb..17b61ab51c8 100644 --- a/app/src/organisms/GripperWizardFlows/index.tsx +++ b/app/src/organisms/GripperWizardFlows/index.tsx @@ -145,6 +145,8 @@ export function GripperWizardFlows( }) const handleCleanUpAndClose = (): void => { + setIsExiting(true) + if (maintenanceRunData?.data.id == null) { handleClose() } else { From 5f869ea04c29cb6d1b2e4884af8d859dbbd88149 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Wed, 8 Jan 2025 14:40:57 -0500 Subject: [PATCH 10/81] docs(robot-server): Exclude `/labwareOffsets` endpoints from docs (#17219) --- robot-server/robot_server/labware_offsets/router.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/robot-server/robot_server/labware_offsets/router.py b/robot-server/robot_server/labware_offsets/router.py index 6aca03e4b18..155eef4b5ce 100644 --- a/robot-server/robot_server/labware_offsets/router.py +++ b/robot-server/robot_server/labware_offsets/router.py @@ -42,6 +42,7 @@ """ ), status_code=201, + include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def post_labware_offset( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -72,6 +73,7 @@ async def post_labware_offset( # noqa: D103 " Filters are ANDed together." " Results are returned in order from oldest to newest." ), + include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def get_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -163,6 +165,7 @@ async def get_labware_offsets( # noqa: D103 path="/labwareOffsets/{id}", summary="Delete a single labware offset", description="Delete a single labware offset. The deleted offset is returned.", + include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def delete_labware_offset( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -185,6 +188,7 @@ async def delete_labware_offset( # noqa: D103 router.delete, path="/labwareOffsets", summary="Delete all labware offsets", + include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def delete_all_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)] From 7e1d4a3b9fbe74b2071697564dc57a3fddcea441 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Wed, 8 Jan 2025 15:42:29 -0600 Subject: [PATCH 11/81] chore(translation): sync locize repo (#17207) --- .../assets/localization/en/app_settings.json | 2 +- .../localization/en/change_pipette.json | 6 +- .../localization/en/device_details.json | 48 ++++---- .../localization/en/device_settings.json | 2 +- .../localization/en/gripper_wizard_flows.json | 2 +- .../assets/localization/en/heater_shaker.json | 12 +- .../localization/en/incompatible_modules.json | 6 +- .../localization/en/labware_details.json | 4 +- .../localization/en/labware_landing.json | 6 +- .../en/labware_position_check.json | 20 ++-- .../localization/en/module_wizard_flows.json | 14 +-- .../localization/en/pipette_wizard_flows.json | 14 +-- .../en/protocol_command_text.json | 2 +- .../localization/en/protocol_details.json | 28 ++--- .../assets/localization/en/protocol_info.json | 6 +- .../assets/localization/en/protocol_list.json | 2 +- .../localization/en/protocol_setup.json | 2 +- .../localization/en/quick_transfer.json | 14 +-- app/src/assets/localization/en/shared.json | 2 +- .../localization/en/top_navigation.json | 2 +- app/src/assets/localization/zh/anonymous.json | 12 +- .../assets/localization/zh/app_settings.json | 2 +- app/src/assets/localization/zh/branded.json | 8 +- .../localization/zh/change_pipette.json | 6 +- .../localization/zh/device_details.json | 45 ++++---- .../localization/zh/device_settings.json | 50 +++++++- .../localization/zh/devices_landing.json | 2 +- .../localization/zh/drop_tip_wizard.json | 7 +- .../localization/zh/error_recovery.json | 36 ++++-- .../localization/zh/gripper_wizard_flows.json | 4 +- .../assets/localization/zh/heater_shaker.json | 12 +- .../localization/zh/incompatible_modules.json | 6 +- .../localization/zh/labware_details.json | 4 +- .../localization/zh/labware_landing.json | 6 +- .../zh/labware_position_check.json | 20 ++-- .../localization/zh/module_wizard_flows.json | 14 +-- .../localization/zh/pipette_wizard_flows.json | 15 +-- .../zh/protocol_command_text.json | 36 ++++-- .../localization/zh/protocol_details.json | 29 +++-- .../assets/localization/zh/protocol_info.json | 6 +- .../assets/localization/zh/protocol_list.json | 2 +- .../localization/zh/protocol_setup.json | 107 +++++++++--------- .../localization/zh/quick_transfer.json | 47 ++++---- .../assets/localization/zh/run_details.json | 63 ++++++----- app/src/assets/localization/zh/shared.json | 21 ++-- .../localization/zh/top_navigation.json | 9 +- 46 files changed, 430 insertions(+), 333 deletions(-) diff --git a/app/src/assets/localization/en/app_settings.json b/app/src/assets/localization/en/app_settings.json index c6c4b595597..540df5ef394 100644 --- a/app/src/assets/localization/en/app_settings.json +++ b/app/src/assets/localization/en/app_settings.json @@ -117,7 +117,7 @@ "usb_to_ethernet_unknown_manufacturer": "Unknown Manufacturer", "usb_to_ethernet_unknown_product": "Unknown Adapter", "use_system_language": "Use system language", - "view_software_update": "View software update", "view_adapter_info": "view adapter info", + "view_software_update": "View software update", "view_update": "View Update" } diff --git a/app/src/assets/localization/en/change_pipette.json b/app/src/assets/localization/en/change_pipette.json index b9ca35752d5..f63445ea779 100644 --- a/app/src/assets/localization/en/change_pipette.json +++ b/app/src/assets/localization/en/change_pipette.json @@ -1,8 +1,8 @@ { "are_you_sure_exit": "Are you sure you want to exit before {{direction}} your pipette?", "attach_name_pipette": "Attach a {{pipette}} Pipette", - "attach_pipette_type": "Attach a {{pipetteName}} Pipette", "attach_pipette": "Attach a pipette", + "attach_pipette_type": "Attach a {{pipetteName}} Pipette", "attach_the_pipette": "

Attach the pipette

Push in the white connector tab until you feel it plug into the pipette.", "attached_pipette_does_not_match": "The attached {{name}} does not match the {{pipette}} you had originally selected.", "attaching": "attaching", @@ -16,10 +16,10 @@ "confirming_attachment": "Confirming attachment", "confirming_detachment": "Confirming detachment", "continue": "Continue", - "detach_pipette_from_mount": "Detach Pipette from {{mount}} Mount", + "detach": "Detach pipette", "detach_pipette": "Detach {{pipette}} from {{mount}} Mount", + "detach_pipette_from_mount": "Detach Pipette from {{mount}} Mount", "detach_try_again": "Detach and try again", - "detach": "Detach pipette", "detaching": "detaching", "get_started": "Get started", "go_back": "Go back", diff --git a/app/src/assets/localization/en/device_details.json b/app/src/assets/localization/en/device_details.json index 17daa2c5955..f394a9a9ac8 100644 --- a/app/src/assets/localization/en/device_details.json +++ b/app/src/assets/localization/en/device_details.json @@ -1,16 +1,16 @@ { "about_gripper": "About gripper", "about_module": "About {{name}}", - "about_pipette_name": "About {{name}} Pipette", "about_pipette": "About pipette", - "abs_reader_status": "Absorbance Plate Reader Status", + "about_pipette_name": "About {{name}} Pipette", "abs_reader_lid_status": "Lid status: {{status}}", + "abs_reader_status": "Absorbance Plate Reader Status", + "add": "Add", "add_fixture_description": "Add this hardware to your deck configuration. It will be referenced during protocol analysis.", "add_to_slot": "Add to slot {{slotName}}", - "add": "Add", + "an_error_occurred_while_updating": "An error occurred while updating your pipette's settings.", "an_error_occurred_while_updating_module": "An error occurred while updating your {{moduleName}}. Please try again.", "an_error_occurred_while_updating_please_try_again": "An error occurred while updating your pipette's settings. Please try again.", - "an_error_occurred_while_updating": "An error occurred while updating your pipette's settings.", "attach_gripper": "Attach gripper", "attach_pipette": "Attach pipette", "bad_run": "run could not be loaded", @@ -18,13 +18,13 @@ "bundle_firmware_file_not_found": "Bundled fw file not found for module of type: {{module}}", "calibrate_gripper": "Calibrate gripper", "calibrate_now": "Calibrate now", - "calibrate_pipette_offset": "Calibrate pipette offset", "calibrate_pipette": "Calibrate pipette", - "calibration_needed_without_link": "Calibration needed.", + "calibrate_pipette_offset": "Calibrate pipette offset", "calibration_needed": "Calibration needed. Calibrate now", + "calibration_needed_without_link": "Calibration needed.", "canceled": "canceled", - "changes_will_be_lost_description": "Are you sure you want to exit without saving your deck configuration?", "changes_will_be_lost": "Changes will be lost", + "changes_will_be_lost_description": "Are you sure you want to exit without saving your deck configuration?", "choose_protocol_to_run": "Choose protocol to Run on {{name}}", "close_lid": "Close lid", "completed": "completed", @@ -36,9 +36,9 @@ "current_temp": "Current: {{temp}} °C", "current_version": "Current Version", "deck_cal_missing": "Pipette Offset calibration missing. Calibrate deck first.", + "deck_configuration": "deck configuration", "deck_configuration_is_not_available_when_robot_is_busy": "Deck configuration is not available when the robot is busy", "deck_configuration_is_not_available_when_run_is_in_progress": "Deck configuration is not available when run is in progress", - "deck_configuration": "deck configuration", "deck_fixture_setup_instructions": "Deck fixture setup instructions", "deck_fixture_setup_modal_bottom_description_desktop": "For detailed instructions for different types of fixtures, scan the QR code or go to the link below.", "deck_fixture_setup_modal_top_description": "First, unscrew and remove the deck slot where you'll install a fixture. Then put the fixture in place and attach it as needed.", @@ -58,14 +58,14 @@ "estop_pressed": "E-stop pressed. Robot movement is halted.", "failed": "failed", "files": "Files", - "firmware_update_needed": "Instrument firmware update needed. Start the update on the robot's touchscreen.", "firmware_update_available": "Firmware update available.", "firmware_update_failed": "Failed to update module firmware", - "firmware_updated_successfully": "Firmware updated successfully", + "firmware_update_needed": "Instrument firmware update needed. Start the update on the robot's touchscreen.", "firmware_update_occurring": "Firmware update in progress...", + "firmware_updated_successfully": "Firmware updated successfully", "fixture": "Fixture", - "have_not_run_description": "After you run some protocols, they will appear here.", "have_not_run": "No recent runs", + "have_not_run_description": "After you run some protocols, they will appear here.", "heater": "Heater", "height_ranges": "{{gen}} Height Ranges", "hot_to_the_touch": "Module is hot to the touch", @@ -74,12 +74,12 @@ "instruments_and_modules": "Instruments and Modules", "labware_bottom": "Labware Bottom", "last_run_time": "last run {{number}}", - "left_right": "Left + Right Mounts", "left": "left", + "left_right": "Left + Right Mounts", "lights": "Lights", "link_firmware_update": "View Firmware Update", - "location_conflicts": "Location conflicts", "location": "Location", + "location_conflicts": "Location conflicts", "magdeck_gen1_height": "Height: {{height}}", "magdeck_gen2_height": "Height: {{height}} mm", "max_engage_height": "Max Engage Height", @@ -88,13 +88,13 @@ "missing_hardware": "missing hardware", "missing_instrument": "missing {{num}} instrument", "missing_instruments_plural": "missing {{count}} instruments", - "missing_module_plural": "missing {{count}} modules", "missing_module": "missing {{num}} module", + "missing_module_plural": "missing {{count}} modules", "module_actions_unavailable": "Module actions unavailable while protocol is running", + "module_calibration_required": "Module calibration required.", "module_calibration_required_no_pipette_attached": "Module calibration required. Attach a pipette before running module calibration.", "module_calibration_required_no_pipette_calibrated": "Module calibration required. Calibrate pipette before running module calibration. ", "module_calibration_required_update_pipette_FW": "Update pipette firmware before proceeding with required module calibration.", - "module_calibration_required": "Module calibration required.", "module_controls": "Module Controls", "module_error": "Module error", "module_name_error": "{{moduleName}} error", @@ -105,8 +105,8 @@ "no_deck_fixtures": "No deck fixtures", "no_protocol_runs": "No protocol runs yet!", "no_protocols_found": "No protocols found", - "no_recent_runs_description": "After you run some protocols, they will appear here.", "no_recent_runs": "No recent runs", + "no_recent_runs_description": "After you run some protocols, they will appear here.", "num_units": "{{num}} mm", "offline_deck_configuration": "Robot must be on the network to see deck configuration", "offline_instruments_and_modules": "Robot must be on the network to see connected instruments and modules", @@ -132,32 +132,32 @@ "protocol_analysis_failed": "Protocol failed in-app analysis. ", "protocol_analysis_stale": "Protocol analysis out of date. ", "protocol_details_page_reanalyze": "Go to the protocol details screen to reanalyze.", - "ready_to_run": "ready to run", "ready": "Ready", + "ready_to_run": "ready to run", "recalibrate_gripper": "Recalibrate gripper", "recalibrate_now": "Recalibrate now", - "recalibrate_pipette_offset": "Recalibrate pipette offset", "recalibrate_pipette": "Recalibrate pipette", + "recalibrate_pipette_offset": "Recalibrate pipette offset", "recent_protocol_runs": "Recent Protocol Runs", - "rerun_now": "Rerun protocol now", "rerun_loading": "Protocol re-run is disabled until data connection fully loads", + "rerun_now": "Rerun protocol now", "reset_all": "Reset all", "reset_estop": "Reset E-stop", "resume_operation": "Resume operation", "right": "right", "robot_control_not_available": "Some robot controls are not available when run is in progress", "robot_initializing": "Initializing...", + "run": "Run", "run_a_protocol": "Run a protocol", "run_again": "Run again", "run_duration": "Run duration", - "run": "Run", "select_options": "Select options", "serial_number": "Serial Number", "set_block_temp": "Set temperature", "set_block_temperature": "Set block temperature", + "set_engage_height": "Set Engage Height", "set_engage_height_and_enter_integer": "Set the engage height for this Magnetic Module. Enter an integer between {{lower}} and {{higher}}.", "set_engage_height_for_module": "Set Engage Height for {{name}}", - "set_engage_height": "Set Engage Height", "set_lid_temperature": "Set lid temperature", "set_shake_of_hs": "Set rpm for this module.", "set_shake_speed": "Set shake speed", @@ -174,8 +174,8 @@ "target_temp": "Target: {{temp}} °C", "tc_block": "Block", "tc_lid": "Lid", - "tc_set_temperature_body": "Pre heat or cool your Thermocycler {{part}}. Enter a whole number between {{min}} °C and {{max}} °C.", "tc_set_temperature": "Set {{part}} Temperature for {{name}}", + "tc_set_temperature_body": "Pre heat or cool your Thermocycler {{part}}. Enter a whole number between {{min}} °C and {{max}} °C.", "tempdeck_slideout_body": "Pre heat or cool your {{model}}. Enter a whole number between 4 °C and 96 °C.", "tempdeck_slideout_title": "Set Temperature for {{name}}", "temperature": "Temperature", @@ -185,12 +185,12 @@ "trash": "Trash", "update_now": "Update now", "updating_firmware": "Updating firmware...", - "usb_port_not_connected": "usb not connected", "usb_port": "usb-{{port}}", + "usb_port_not_connected": "usb not connected", "version": "Version {{version}}", + "view": "View", "view_pipette_setting": "Pipette Settings", "view_run_record": "View protocol run record", - "view": "View", "waste_chute": "Waste chute", "welcome_modal_description": "A place to run protocols, manage your instruments, and view robot status.", "welcome_to_your_dashboard": "Welcome to your dashboard!", diff --git a/app/src/assets/localization/en/device_settings.json b/app/src/assets/localization/en/device_settings.json index 06a67d39d35..e0a199fbee4 100644 --- a/app/src/assets/localization/en/device_settings.json +++ b/app/src/assets/localization/en/device_settings.json @@ -318,8 +318,8 @@ "unable_to_commit_update": "Unable to commit update", "unable_to_connect": "Unable to connect to Wi-Fi", "unable_to_disconnect": "Unable to disconnect from Wi-Fi", - "unable_to_find_system_file": "Unable to find system file for update", "unable_to_find_robot_with_name": "Unable to find online robot with name", + "unable_to_find_system_file": "Unable to find system file for update", "unable_to_restart": "Unable to restart robot", "unable_to_start_update_session": "Unable to start update session", "up_to_date": "up to date", diff --git a/app/src/assets/localization/en/gripper_wizard_flows.json b/app/src/assets/localization/en/gripper_wizard_flows.json index 70df5688820..929627bf064 100644 --- a/app/src/assets/localization/en/gripper_wizard_flows.json +++ b/app/src/assets/localization/en/gripper_wizard_flows.json @@ -10,8 +10,8 @@ "continue": "Continue", "continue_calibration": "Continue calibration", "detach_gripper": "Detach Gripper", - "firmware_updating": "A firmware update is required, instrument is updating...", "firmware_up_to_date": "Firmware is up to date.", + "firmware_updating": "A firmware update is required, instrument is updating...", "get_started": "Get started", "gripper_calibration": "Gripper Calibration", "gripper_recalibration": "Gripper Recalibration", diff --git a/app/src/assets/localization/en/heater_shaker.json b/app/src/assets/localization/en/heater_shaker.json index 12ac83a4123..0eec55e6a11 100644 --- a/app/src/assets/localization/en/heater_shaker.json +++ b/app/src/assets/localization/en/heater_shaker.json @@ -4,43 +4,43 @@ "cannot_shake": "Cannot shake when labware latch is open", "close_labware_latch": "Close labware latch", "close_latch": "Close latch", - "closed_and_locked": "Closed and Locked", "closed": "Closed", + "closed_and_locked": "Closed and Locked", "closing": "Closing...", "complete": "Complete", "confirm_attachment": "Confirm attachment", "confirm_heater_shaker_modal_attachment": "Confirm Heater-Shaker Module attachment", "continue_shaking_protocol_start_prompt": "Continue shaking while the protocol starts?", + "deactivate": "Deactivate", "deactivate_heater": "Deactivate heater", "deactivate_shaker": "Deactivate shaker", - "deactivate": "Deactivate", "heater_shaker_in_slot": "Attach {{moduleName}} in Slot {{slotName}} before proceeding", "heater_shaker_is_shaking": "Heater-Shaker Module is currently shaking", "keep_shaking_start_run": "Keep shaking and start run", - "labware_latch": "Labware Latch", "labware": "Labware", + "labware_latch": "Labware Latch", "min_max_rpm": "{{min}} - {{max}} rpm", "module_anchors_extended": "Before the run begins, module should have both anchors fully extended for a firm attachment to the deck.", "module_in_slot": "{{moduleName}} in Slot {{slotName}}", "module_should_have_anchors": "Module should have both anchors fully extended for a firm attachment to the deck.", + "open": "Open", "open_labware_latch": "Open labware latch", "open_latch": "Open latch", - "open": "Open", "opening": "Opening...", "proceed_to_run": "Proceed to run", "set_shake_speed": "Set shake speed", "set_temperature": "Set module temperature", "shake_speed": "Shake speed", "show_attachment_instructions": "Show attachment instructions", - "stop_shaking_start_run": "Stop shaking and start run", "stop_shaking": "Stop Shaking", + "stop_shaking_start_run": "Stop shaking and start run", "t10_torx_screwdriver": "{{name}} Screwdriver", "t10_torx_screwdriver_subtitle": "Provided with the Heater-Shaker. Using another size can strip the module's screws.", + "test_shake": "Test shake", "test_shake_banner_information": "If you want to add labware to the module before doing a test shake, you can use the labware latch controls to hold the latches open.", "test_shake_banner_labware_information": "If you want to add the {{labware}} to the module before doing a test shake, you can use the labware latch controls.", "test_shake_slideout_banner_info": "If you want to add labware to the module before doing a test shake, you can use the labware latch controls to hold the latches open.", "test_shake_troubleshooting_slideout_description": "Revisit instructions for attaching the module to the deck as well as attaching the thermal adapter.", - "test_shake": "Test shake", "thermal_adapter_attached_to_module": "The thermal adapter should be attached to the module.", "troubleshoot_step_1": "Return to Step 1 to see instructions for securing the module to the deck.", "troubleshoot_step_3": "Return to Step 3 to see instructions for securing the thermal adapter to the module.", diff --git a/app/src/assets/localization/en/incompatible_modules.json b/app/src/assets/localization/en/incompatible_modules.json index d9b1a231f0c..6829c971d24 100644 --- a/app/src/assets/localization/en/incompatible_modules.json +++ b/app/src/assets/localization/en/incompatible_modules.json @@ -1,7 +1,7 @@ { "incompatible_modules_attached": "incompatible module detected", - "remove_before_running_protocol": "Remove the following hardware before running a protocol:", + "is_not_compatible": "{{module_name}} is not compatible with the {{robot_type}}", "needs_your_assistance": "{{robot_name}} needs your assistance", - "remove_before_using": "You must remove incompatible modules before using this robot.", - "is_not_compatible": "{{module_name}} is not compatible with the {{robot_type}}" + "remove_before_running_protocol": "Remove the following hardware before running a protocol:", + "remove_before_using": "You must remove incompatible modules before using this robot." } diff --git a/app/src/assets/localization/en/labware_details.json b/app/src/assets/localization/en/labware_details.json index 3b25beffefc..ef1b786d666 100644 --- a/app/src/assets/localization/en/labware_details.json +++ b/app/src/assets/localization/en/labware_details.json @@ -8,8 +8,8 @@ "generic": "generic", "height": "height", "length": "length", - "manufacturer_number": "manufacturer / catalog #", "manufacturer": "manufacturer", + "manufacturer_number": "manufacturer / catalog #", "max_volume": "max volume", "measurements": "Measurements (mm)", "na": "n/a", @@ -21,8 +21,8 @@ "u": "U_Bottom", "v": "V_Bottom", "various": "various", - "well_count": "Well Count", "well": "Well", + "well_count": "Well Count", "width": "width", "x_offset": "x-offset", "x_size": "x-size", diff --git a/app/src/assets/localization/en/labware_landing.json b/app/src/assets/localization/en/labware_landing.json index 17eebda979d..3780788b4ee 100644 --- a/app/src/assets/localization/en/labware_landing.json +++ b/app/src/assets/localization/en/labware_landing.json @@ -3,20 +3,20 @@ "cancel": "cancel", "cannot-run-python-missing-labware": "Robots cannot run Python protocols with missing labware definitions.", "category": "Category", - "choose_file_to_upload": "Or choose a file from your computer to upload.", "choose_file": "Choose file", + "choose_file_to_upload": "Or choose a file from your computer to upload.", "copied": "Copied!", "create_new_def": "Create a new labware definition", "custom_def": "Custom Definition", "date_added": "Added", "def_moved_to_trash": "This labware definition will be moved to this computer’s trash and may be unrecoverable.", - "delete_this_labware": "Delete this labware definition?", "delete": "Delete", + "delete_this_labware": "Delete this labware definition?", "duplicate_labware_def": "Duplicate labware definition", "error_importing_file": "Error importing {{filename}}.", "go_to_def": "Go to labware definition", - "import_custom_def": "Import a Custom Labware Definition", "import": "Import", + "import_custom_def": "Import a Custom Labware Definition", "imported": "{{filename}} imported.", "invalid_labware_def": "Invalid labware definition", "labware": "labware", diff --git a/app/src/assets/localization/en/labware_position_check.json b/app/src/assets/localization/en/labware_position_check.json index 4072826650a..3d4e83fe706 100644 --- a/app/src/assets/localization/en/labware_position_check.json +++ b/app/src/assets/localization/en/labware_position_check.json @@ -25,8 +25,8 @@ "confirm_position_and_pick_up_tip": "Confirm position, pick up tip", "confirm_position_and_return_tip": "Confirm position, return tip to Slot {{next_slot}} and home", "detach_probe": "Remove calibration probe", - "ensure_nozzle_position_odd": "Ensure that the {{tip_type}} is centered above and level with {{item_location}}. If it isn't, tap Move pipette and then jog the pipette until it is properly aligned.", "ensure_nozzle_position_desktop": "Ensure that the {{tip_type}} is centered above and level with {{item_location}}. If it isn't, use the controls below or your keyboard to jog the pipette until it is properly aligned.", + "ensure_nozzle_position_odd": "Ensure that the {{tip_type}} is centered above and level with {{item_location}}. If it isn't, tap Move pipette and then jog the pipette until it is properly aligned.", "exit_screen_confirm_exit": "Exit and discard all labware offsets", "exit_screen_go_back": "Go back to labware position check", "exit_screen_subtitle": "If you exit now, all labware offsets will be discarded. This cannot be undone.", @@ -35,9 +35,10 @@ "install_probe": "Take the calibration probe from its storage location. Ensure its collar is fully unlocked. Push the pipette ejector up and press the probe firmly onto the {{location}} pipette nozzle as far as it can go. Twist the collar to lock the probe. Test that the probe is secure by gently pulling it back and forth.", "jog_controls_adjustment": "Need to make an adjustment?", "jupyter_notebook": "Jupyter Notebook", + "labware": "labware", "labware_display_location_text": "Deck Slot {{slot}}", - "labware_offset_data": "labware offset data", "labware_offset": "Labware Offset", + "labware_offset_data": "labware offset data", "labware_offsets_deleted_warning": "Once you begin Labware Position Check, previously created Labware Offsets will be discarded.", "labware_offsets_summary_labware": "Labware", "labware_offsets_summary_location": "Location", @@ -46,22 +47,21 @@ "labware_position_check_description": "Labware Position Check is a guided workflow that checks every labware on the deck for an added degree of precision in your protocol.Labware Position Check first checks tip racks, and then checks all other labware used in your protocol.", "labware_position_check_overview": "Labware Position Check Overview", "labware_position_check_title": "Labware Position Check", - "labware_step_detail_labware_plural": "The tips should be centered above column 1 in {{labware_name}} and level with the top of the labware.", "labware_step_detail_labware": "The tip should be centered above A1 in {{labware_name}} and level with the top of the labware.", + "labware_step_detail_labware_plural": "The tips should be centered above column 1 in {{labware_name}} and level with the top of the labware.", "labware_step_detail_link": "See how to tell if the pipette is centered", "labware_step_detail_modal_heading": "How to tell if the pipette is centered and level", + "labware_step_detail_modal_nozzle": "To ensure that the nozzle is centered, check from a second side of your OT-2.", "labware_step_detail_modal_nozzle_image_1_text": "Viewed from front, it appears centered...", "labware_step_detail_modal_nozzle_image_2_nozzle_text": "Nozzle is not centered", "labware_step_detail_modal_nozzle_image_2_text": "...but viewed from side, it requires adjustment", + "labware_step_detail_modal_nozzle_or_tip": "To ensure the nozzle or tip is level with the top of the labware, position yourself at eye-level and/or slide a sheet of paper between the nozzle and tip.", "labware_step_detail_modal_nozzle_or_tip_image_1_text": "Viewed from standing height, it appears level...", "labware_step_detail_modal_nozzle_or_tip_image_2_nozzle_text": "Nozzle is not level", "labware_step_detail_modal_nozzle_or_tip_image_2_text": "... but viewed from eye-level, it requires adjustment", "labware_step_detail_modal_nozzle_or_tip_image_3_text": "If you’re having trouble, slide 1 sheet of printer paper between the nozzle and the tip. A single piece of paper should barely pass between them.", - "labware_step_detail_modal_nozzle_or_tip": "To ensure the nozzle or tip is level with the top of the labware, position yourself at eye-level and/or slide a sheet of paper between the nozzle and tip.", - "labware_step_detail_modal_nozzle": "To ensure that the nozzle is centered, check from a second side of your OT-2.", - "labware_step_detail_tiprack_plural": "The pipette nozzles should be centered above column 1 in {{tiprack_name}} and level with the top of the tips.", "labware_step_detail_tiprack": "The pipette nozzle should be centered above A1 in {{tiprack_name}} and level with the top of the tip.", - "labware": "labware", + "labware_step_detail_tiprack_plural": "The pipette nozzles should be centered above column 1 in {{tiprack_name}} and level with the top of the tips.", "learn_more": "Learn more", "location": "location", "lpc_complete_summary_screen_heading": "Labware Position Check Complete", @@ -73,9 +73,9 @@ "new_labware_offset_data": "New labware offset data", "ninety_six_probe_location": "A1 (back left corner)", "no_labware_offsets": "No Labware Offset", + "no_offset_data": "No offset data available", "no_offset_data_available": "No labware offset data available", "no_offset_data_on_robot": "This robot has no useable labware offset data for this run.", - "no_offset_data": "No offset data available", "offsets": "offsets", "pick_up_tip_from_rack_in_location": "Pick up tip from tip rack in {{location}}", "picking_up_tip_title": "Picking up tip in slot {{slot}}", @@ -98,13 +98,13 @@ "robot_has_no_offsets_from_previous_runs": "Labware offset data references previous protocol run labware locations to save you time. If all the labware in this protocol have been checked in previous runs, that data will be applied to this run. You can add new offsets with Labware Position Check in later steps.", "robot_has_offsets_from_previous_runs": "This robot has offsets for labware used in this protocol. If you apply these offsets, you can still adjust them with Labware Position Check.", "robot_in_motion": "Stand back, robot is in motion.", - "run_labware_position_check": "run labware position check", "run": "Run", + "run_labware_position_check": "run labware position check", "secondary_pipette_tipracks_section": "Check tip racks with {{secondary_mount}} Pipette", "see_how_offsets_work": "See how labware offsets work", + "slot": "Slot {{slotName}}", "slot_location": "slot location", "slot_name": "slot {{slotName}}", - "slot": "Slot {{slotName}}", "start_position_check": "begin labware position check, move to Slot {{initial_labware_slot}}", "stored_offset_data": "Apply Stored Labware Offset Data?", "stored_offsets_for_this_protocol": "Stored Labware Offset data that applies to this protocol", diff --git a/app/src/assets/localization/en/module_wizard_flows.json b/app/src/assets/localization/en/module_wizard_flows.json index 34e14017162..2ca733e2725 100644 --- a/app/src/assets/localization/en/module_wizard_flows.json +++ b/app/src/assets/localization/en/module_wizard_flows.json @@ -1,21 +1,21 @@ { "attach_probe": "Attach probe to pipette", "begin_calibration": "Begin calibration", - "calibrate_pipette": "Calibrate pipettes before proceeding to module calibration", "calibrate": "Calibrate", + "calibrate_pipette": "Calibrate pipettes before proceeding to module calibration", + "calibration": "{{module}} Calibration", "calibration_adapter_heatershaker": "Calibration Adapter", "calibration_adapter_temperature": "Calibration Adapter", "calibration_adapter_thermocycler": "Calibration Adapter", - "calibration_probe_touching_thermocycler": "The calibration probe will touch the sides of the calibration square in Thermocycler to determine its exact position", - "calibration_probe_touching": "The calibration probe will touch the sides of the calibration square in {{module}} in slot {{slotNumber}} to determine its exact position", "calibration_probe": "Take the calibration probe from its storage location. Ensure its collar is unlocked. Push the pipette ejector up and press the probe firmly onto the pipette nozzle. Twist the collar to lock the probe. Test that the probe is secure by gently pulling it back and forth.", - "calibration": "{{module}} Calibration", + "calibration_probe_touching": "The calibration probe will touch the sides of the calibration square in {{module}} in slot {{slotNumber}} to determine its exact position", + "calibration_probe_touching_thermocycler": "The calibration probe will touch the sides of the calibration square in Thermocycler to determine its exact position", "checking_firmware": "Checking {{module}} firmware", "complete_calibration": "Complete calibration", "confirm_location": "Confirm location", "confirm_placement": "Confirm placement", - "detach_probe_description": "Unlock the pipette calibration probe, remove it from the nozzle, and return it to its storage location.", "detach_probe": "Remove pipette probe", + "detach_probe_description": "Unlock the pipette calibration probe, remove it from the nozzle, and return it to its storage location.", "error_during_calibration": "Error during calibration", "error_prepping_module": "Error prepping module for calibration", "exit": "Exit", @@ -32,16 +32,16 @@ "move_gantry_to_front": "Move gantry to front", "next": "Next", "pipette_probe": "Pipette probe", + "place_flush": "Place the adapter flush on top of the module.", "place_flush_heater_shaker": "Place the adapter flush on the top of the module. Secure the adapter to the module with a thermal adapter screw and T10 Torx screwdriver.", "place_flush_thermocycler": "Ensure the Thermocycler lid is open and place the adapter flush on top of the module where the labware would normally go. ", - "place_flush": "Place the adapter flush on top of the module.", "prepping_module": "Prepping {{module}} for module calibration", "recalibrate": "Recalibrate", "select_location": "Select module location", "select_the_slot": "Select the slot where you installed the {{module}} on the deck map to the right. The location must be correct for successful calibration.", "slot_unavailable": "Slot unavailable", - "stand_back_robot_in_motion": "Stand back, robot is in motion", "stand_back": "Stand back, calibration in progress", + "stand_back_robot_in_motion": "Stand back, robot is in motion", "start_setup": "Start setup", "successfully_calibrated": "{{module}} successfully calibrated" } diff --git a/app/src/assets/localization/en/pipette_wizard_flows.json b/app/src/assets/localization/en/pipette_wizard_flows.json index 1154d6f9659..02b186d4026 100644 --- a/app/src/assets/localization/en/pipette_wizard_flows.json +++ b/app/src/assets/localization/en/pipette_wizard_flows.json @@ -2,14 +2,14 @@ "align_the_connector": "Attach the pipette to the robot by aligning the connector and pressing to ensure a secure connection. Hold the pipette in place and use the hex screwdriver to tighten the pipette screws. Then test that the pipette is securely attached by gently pulling it side to side.", "all_pipette_detached": "All pipettes successfully detached", "are_you_sure_exit": "Are you sure you want to exit before completing {{flow}}?", - "attach_96_channel_plus_detach": "Detach {{pipetteName}} and Attach 96-Channel Pipette", + "attach": "Attaching Pipette", "attach_96_channel": "Attach 96-Channel Pipette", - "attach_mounting_plate_instructions": "Attach the mounting plate by aligning the pins on the plate to the slots on the gantry carriage. You may need to adjust the position of the right pipette mount to achieve proper alignment.", + "attach_96_channel_plus_detach": "Detach {{pipetteName}} and Attach 96-Channel Pipette", "attach_mounting_plate": "Attach Mounting Plate", + "attach_mounting_plate_instructions": "Attach the mounting plate by aligning the pins on the plate to the slots on the gantry carriage. You may need to adjust the position of the right pipette mount to achieve proper alignment.", "attach_pip": "attach pipette", "attach_pipette": "attach {{mount}} pipette", "attach_probe": "attach calibration probe", - "attach": "Attaching Pipette", "backmost": "backmost", "before_you_begin": "Before you begin", "begin_calibration": "Begin calibration", @@ -25,6 +25,7 @@ "connect_and_secure_pipette": "connect and secure pipette", "continue": "Continue", "critical_unskippable_step": "this is a critical step that should not be skipped", + "detach": "Detaching Pipette", "detach_96_attach_mount": "Detach 96-Channel Pipette and Attach {{mount}} Pipette", "detach_96_channel": "Detach 96-Channel Pipette", "detach_and_reattach": "Detach and reattach pipette", @@ -32,14 +33,13 @@ "detach_mount_attach_96": "Detach {{mount}} Pipette and Attach 96-Channel Pipette", "detach_mounting_plate_instructions": "Hold onto the plate so it does not fall. Then remove the pins on the plate from the slots on the gantry carriage.", "detach_next_pipette": "Detach next pipette", - "detach_pipette_to_attach_96": "Detach {{pipetteName}} and Attach 96-Channel pipette", "detach_pipette": "detach {{mount}} pipette", + "detach_pipette_to_attach_96": "Detach {{pipetteName}} and Attach 96-Channel pipette", "detach_pipettes_attach_96": "Detach Pipettes and Attach 96-Channel Pipette", "detach_z_axis_screw_again": "detach the z-axis screw before attaching the 96-Channel Pipette.", - "detach": "Detaching Pipette", "exit_cal": "Exit calibration", - "firmware_updating": "A firmware update is required, instrument is updating...", "firmware_up_to_date": "No firmware update found.", + "firmware_updating": "A firmware update is required, instrument is updating...", "gantry_empty_for_96_channel_success": "Now that both mounts are empty, you can begin the 96-Channel Pipette attachment process.", "get_started_detach": "To get started, remove labware from the deck and clean up the working area to make detachment easier. Also gather the needed equipment shown to the right.", "grab_screwdriver": "While continuing to hold in place, grab your 2.5mm driver and tighten screws as shown in the animation. Test the pipette attachment by giving it a wiggle before pressing continue", @@ -71,8 +71,8 @@ "reattach_carriage": "reattach z-axis carriage", "recalibrate_pipette": "recalibrate {{mount}} pipette", "remove_cal_probe": "remove calibration probe", - "remove_labware_to_get_started": "To get started, remove labware from the deck and clean up the working area to make calibration easier. Also gather the needed equipment shown to the right.The calibration probe is included with the robot and should be stored on the front pillar of the robot.", "remove_labware": "To get started, remove labware from the deck and clean up the working area to make attachment and calibration easier. Also gather the needed equipment shown to the right.The calibration probe is included with the robot and should be stored on the front pillar of the robot.", + "remove_labware_to_get_started": "To get started, remove labware from the deck and clean up the working area to make calibration easier. Also gather the needed equipment shown to the right.The calibration probe is included with the robot and should be stored on the front pillar of the robot.", "remove_probe": "unlock the calibration probe, remove it from the nozzle, and return it to its storage location.", "replace_pipette": "replace {{mount}} pipette", "return_probe_error": "Return the calibration probe to its storage location before exiting. {{error}}", diff --git a/app/src/assets/localization/en/protocol_command_text.json b/app/src/assets/localization/en/protocol_command_text.json index 8037b8f2778..c3620eac904 100644 --- a/app/src/assets/localization/en/protocol_command_text.json +++ b/app/src/assets/localization/en/protocol_command_text.json @@ -59,9 +59,9 @@ "offdeck": "offdeck", "on_location": "on {{location}}", "opening_tc_lid": "Opening Thermocycler lid", + "partial_layout": "partial layout", "pause": "Pause", "pause_on": "Pause on {{robot_name}}", - "partial_layout": "partial layout", "pickup_tip": "Picking up tip(s) from {{well_range}} of {{labware}} in {{labware_location}}", "prepare_to_aspirate": "Preparing {{pipette}} to aspirate", "reloading_labware": "Reloading {{labware}}", diff --git a/app/src/assets/localization/en/protocol_details.json b/app/src/assets/localization/en/protocol_details.json index b93e675a1c5..e13d929b663 100644 --- a/app/src/assets/localization/en/protocol_details.json +++ b/app/src/assets/localization/en/protocol_details.json @@ -10,31 +10,31 @@ "connected": "connected", "connection_status": "connection status", "creation_method": "creation method", - "csv_file_type_required": "CSV file type required", "csv_file": "CSV file", + "csv_file_type_required": "CSV file type required", "deck_view": "Deck View", "default_value": "Default Value", - "delete_protocol_perm": "{{name}} and its run history will be permanently deleted.", "delete_protocol": "Delete Protocol", + "delete_protocol_perm": "{{name}} and its run history will be permanently deleted.", "delete_this_protocol": "Delete this protocol?", "description": "description", "extension_mount": "extension mount", "file_required": "File required", "go_to_labware_definition": "Go to labware definition", "go_to_timeline": "Go to timeline", - "gripper_pick_up_count_description": "individual move labware commands that use the gripper.", "gripper_pick_up_count": "Grip Count", + "gripper_pick_up_count_description": "individual move labware commands that use the gripper.", "hardware": "hardware", - "labware_name": "Labware name", "labware": "labware", + "labware_name": "Labware name", "last_analyzed": "last analyzed", "last_updated": "last updated", "left_and_right_mounts": "left + right mounts", "left_mount": "left mount", "left_right": "Left, Right", "liquid_name": "liquid name", - "liquids_not_in_protocol": "no liquids are specified for this protocol", "liquids": "liquids", + "liquids_not_in_protocol": "no liquids are specified for this protocol", "listed_values_are_view_only": "Listed values are view-only", "location": "location", "modules": "modules", @@ -50,16 +50,16 @@ "num_choices": "{{num}} choices", "num_options": "{{num}} options", "off": "Off", - "on_off": "On, off", "on": "On", + "on_off": "On, off", "org_or_author": "org/author", "parameters": "Parameters", - "pipette_aspirate_count_description": "individual aspirate commands per pipette.", "pipette_aspirate_count": "{{pipette}} aspirate count", - "pipette_dispense_count_description": "individual dispense commands per pipette.", + "pipette_aspirate_count_description": "individual aspirate commands per pipette.", "pipette_dispense_count": "{{pipette}} dispense count", - "pipette_pick_up_count_description": "individual pick up tip commands per pipette.", + "pipette_dispense_count_description": "individual dispense commands per pipette.", "pipette_pick_up_count": "{{pipette}} pick up tip count", + "pipette_pick_up_count_description": "individual pick up tip commands per pipette.", "proceed_to_setup": "Proceed to setup", "protocol_designer_version": "Protocol Designer {{version}}", "protocol_failed_app_analysis": "This protocol failed in-app analysis. It may be unusable on robots without custom software configurations.", @@ -73,24 +73,24 @@ "requires_upload": "Requires upload", "restore_defaults": "Restore default values", "right_mount": "right mount", + "robot": "robot", "robot_configuration": "robot configuration", - "robot_is_busy_with_protocol": "{{robotName}} is busy with {{protocolName}} in {{runStatus}} state. Do you want to clear it and proceed?", "robot_is_busy": "{{robotName}} is busy", - "robot": "robot", + "robot_is_busy_with_protocol": "{{robotName}} is busy with {{protocolName}} in {{runStatus}} state. Do you want to clear it and proceed?", "run_protocol": "Run protocol", "select_parameters_for_robot": "Select parameters for {{robot_name}}", "send": "Send", "sending": "Sending", "show_in_folder": "Show in folder", "slot": "Slot {{slotName}}", - "start_setup_customize_values": "Start setup to customize values", "start_setup": "Start setup", + "start_setup_customize_values": "Start setup to customize values", "successfully_sent": "Successfully sent", "total_volume": "total volume", - "unavailable_or_busy_robot_not_listed_plural": "{{count}} unavailable or busy robots are not listed.", "unavailable_or_busy_robot_not_listed": "{{count}} unavailable or busy robot is not listed.", - "unavailable_robot_not_listed_plural": "{{count}} unavailable robots are not listed.", + "unavailable_or_busy_robot_not_listed_plural": "{{count}} unavailable or busy robots are not listed.", "unavailable_robot_not_listed": "{{count}} unavailable robot is not listed.", + "unavailable_robot_not_listed_plural": "{{count}} unavailable robots are not listed.", "unsuccessfully_sent": "Unsuccessfully sent", "value_out_of_range": "Value must be between {{min}}-{{max}}", "view_run_details": "View run details", diff --git a/app/src/assets/localization/en/protocol_info.json b/app/src/assets/localization/en/protocol_info.json index 66c2fc9aa89..9278d55361e 100644 --- a/app/src/assets/localization/en/protocol_info.json +++ b/app/src/assets/localization/en/protocol_info.json @@ -23,9 +23,9 @@ "exit_modal_heading": "Confirm Close Protocol", "failed_analysis": "failed analysis", "get_labware_offset_data": "Get Labware Offset Data", + "import": "Import", "import_a_file": "Import a protocol to get started", "import_new_protocol": "Import a Protocol", - "import": "Import", "incompatible_file_type": "Incompatible file type", "instrument_cal_data_title": "Calibration data", "instrument_not_attached": "Not attached", @@ -38,8 +38,8 @@ "labware_offset_data_title": "Labware Offset data", "labware_offsets_info": "{{number}} Labware Offsets", "labware_position_check_complete_toast_no_offsets": "Labware Position Check complete. No Labware Offsets created.", - "labware_position_check_complete_toast_with_offsets_plural": "Labware Position Check complete. {{count}} Labware Offsets created.", "labware_position_check_complete_toast_with_offsets": "Labware Position Check complete. {{count}} Labware Offset created.", + "labware_position_check_complete_toast_with_offsets_plural": "Labware Position Check complete. {{count}} Labware Offsets created.", "labware_title": "Required Labware", "last_run": "Last Run", "last_run_time": "Last run {{time}}", @@ -83,7 +83,7 @@ "unpin_protocol": "Unpin protocol", "unpinned_protocol": "Unpinned protocol", "update_robot_for_custom_labware": "You have custom labware definitions saved to your app, but this robot needs to be updated before you can use these definitions with Python protocols", - "upload_and_simulate": "Open a protocol to run on {{robot_name}}", "upload": "Upload", + "upload_and_simulate": "Open a protocol to run on {{robot_name}}", "valid_file_types": "Valid file types: Python files (.py) or Protocol Designer files (.json)" } diff --git a/app/src/assets/localization/en/protocol_list.json b/app/src/assets/localization/en/protocol_list.json index d70d8e6e7b7..bfc177829c5 100644 --- a/app/src/assets/localization/en/protocol_list.json +++ b/app/src/assets/localization/en/protocol_list.json @@ -16,8 +16,8 @@ "reanalyze_to_view": "Reanalyze protocol", "right_mount": "right mount", "robot": "robot", - "send_to_robot_overflow": "Send to {{robot_display_name}}", "send_to_robot": "Send protocol to {{robot_display_name}}", + "send_to_robot_overflow": "Send to {{robot_display_name}}", "show_in_folder": "Show in folder", "start_setup": "Start setup", "this_protocol_will_be_trashed": "This protocol will be moved to this computer’s trash and may be unrecoverable.", diff --git a/app/src/assets/localization/en/protocol_setup.json b/app/src/assets/localization/en/protocol_setup.json index 17f60958d55..d740eec25a1 100644 --- a/app/src/assets/localization/en/protocol_setup.json +++ b/app/src/assets/localization/en/protocol_setup.json @@ -263,8 +263,8 @@ "restore_defaults": "Restore default values", "robot_cal_description": "Robot calibration establishes how the robot knows where it is in relation to the deck. Accurate Robot calibration is essential to run protocols successfully. Robot calibration has 3 parts: Deck calibration, Tip Length calibration and Pipette Offset calibration.", "robot_cal_help_title": "How Robot Calibration Works", - "robot_calibration_step_description_pipettes_only": "Review required instruments and calibrations for this protocol.", "robot_calibration_step_description": "Review required pipettes and tip length calibrations for this protocol.", + "robot_calibration_step_description_pipettes_only": "Review required instruments and calibrations for this protocol.", "robot_calibration_step_ready": "Calibration ready", "robot_calibration_step_title": "Instruments", "run": "Run", diff --git a/app/src/assets/localization/en/quick_transfer.json b/app/src/assets/localization/en/quick_transfer.json index 2ebdb5699b8..42717e3a1b6 100644 --- a/app/src/assets/localization/en/quick_transfer.json +++ b/app/src/assets/localization/en/quick_transfer.json @@ -37,6 +37,7 @@ "consolidate_volume_error": "The selected destination well is too small to consolidate into. Try consolidating from fewer wells.", "create_new_to_edit": "Create a new quick transfer to edit", "create_new_transfer": "Create new quick transfer", + "create_to_get_started": "Create a new quick transfer to get started.", "create_transfer": "Create transfer", "delay": "Delay", "delay_after_aspirating": "Delay after aspirating", @@ -44,7 +45,6 @@ "delay_duration_s": "Delay duration (seconds)", "delay_position_mm": "Delay position from bottom of well (mm)", "delay_value": "{{delay}}s, {{position}} mm from bottom", - "create_to_get_started": "Create a new quick transfer to get started.", "delete_this_transfer": "Delete this quick transfer?", "delete_transfer": "Delete quick transfer", "deleted_transfer": "Deleted quick transfer", @@ -63,8 +63,8 @@ "enter_characters": "Enter up to 60 characters", "error_analyzing": "An error occurred while attempting to analyze {{transferName}}.", "exit_quick_transfer": "Exit quick transfer?", - "flow_rate_value": "{{flow_rate}} µL/s", "failed_analysis": "failed analysis", + "flow_rate_value": "{{flow_rate}} µL/s", "got_it": "Got it", "grid": "grid", "grids": "grids", @@ -104,8 +104,8 @@ "reservoir": "Reservoirs", "right_mount": "Right Mount", "run_now": "Run now", - "run_transfer": "Run quick transfer", "run_quick_transfer_now": "Do you want to run your quick transfer now?", + "run_transfer": "Run quick transfer", "save": "Save", "save_for_later": "Save for later", "save_to_run_later": "Save your quick transfer to run it in the future.", @@ -129,15 +129,13 @@ "tip_position": "Tip position", "tip_position_value": "{{position}} mm from the bottom", "tip_rack": "Tip rack", + "too_many_pins_body": "Remove a quick transfer in order to add more transfers to your pinned list.", + "too_many_pins_header": "You've hit your max!", "touch_tip": "Touch tip", "touch_tip_after_aspirating": "Touch tip after aspirating", "touch_tip_before_dispensing": "Touch tip before dispensing", "touch_tip_position_mm": "Touch tip position from bottom of well (mm)", "touch_tip_value": "{{position}} mm from bottom", - "use_deck_slots": "Quick transfers use deck slots B2-D2. These slots hold a tip rack, a source labware, and a destination labware.Make sure that your deck configuration is up to date to avoid collisions.", - "value_out_of_range": "Value must be between {{min}}-{{max}}", - "too_many_pins_body": "Remove a quick transfer in order to add more transfers to your pinned list.", - "too_many_pins_header": "You've hit your max!", "transfer_analysis_failed": "quick transfer analysis failed", "transfer_name": "Transfer Name", "trashBin": "Trash bin", @@ -145,6 +143,8 @@ "tubeRack": "Tube racks", "unpin_transfer": "Unpin quick transfer", "unpinned_transfer": "Unpinned quick transfer", + "use_deck_slots": "Quick transfers use deck slots B2-D2. These slots hold a tip rack, a source labware, and a destination labware.Make sure that your deck configuration is up to date to avoid collisions.", + "value_out_of_range": "Value must be between {{min}}-{{max}}", "volume_per_well": "Volume per well", "volume_per_well_µL": "Volume per well (µL)", "wasteChute": "Waste chute", diff --git a/app/src/assets/localization/en/shared.json b/app/src/assets/localization/en/shared.json index f4e542e761b..6ea0f44ab7a 100644 --- a/app/src/assets/localization/en/shared.json +++ b/app/src/assets/localization/en/shared.json @@ -11,8 +11,8 @@ "change_robot": "Change robot", "clear_data": "clear data", "close": "close", - "closed": "closed", "close_robot_door": "Close the robot door before starting the run.", + "closed": "closed", "confirm": "Confirm", "confirm_placement": "Confirm placement", "confirm_position": "Confirm position", diff --git a/app/src/assets/localization/en/top_navigation.json b/app/src/assets/localization/en/top_navigation.json index 16d5e2d011d..c3391804a59 100644 --- a/app/src/assets/localization/en/top_navigation.json +++ b/app/src/assets/localization/en/top_navigation.json @@ -9,8 +9,8 @@ "instruments": "Instruments", "labware": "Labware", "modules": "modules", - "pipettes_not_calibrated": "Please calibrate all pipettes specified in loaded protocol to proceed", "pipettes": "pipettes", + "pipettes_not_calibrated": "Please calibrate all pipettes specified in loaded protocol to proceed", "please_connect_to_a_robot": "Please connect to a robot to proceed", "please_load_a_protocol": "Please load a protocol to proceed", "protocol_details": "Protocol Details", diff --git a/app/src/assets/localization/zh/anonymous.json b/app/src/assets/localization/zh/anonymous.json index 045245c84f7..7abd8f08615 100644 --- a/app/src/assets/localization/zh/anonymous.json +++ b/app/src/assets/localization/zh/anonymous.json @@ -1,9 +1,9 @@ { - "a_robot_software_update_is_available": "需要更新工作站软件版本才能使用该版本的桌面应用程序运行协议。转到工作站转到工作站", "about_flex_gripper": "关于转板抓手", "alternative_security_types_description": "工作站支持连接到各种企业接入点。通过USB连接并在桌面应用程序中完成设置。", - "attach_a_pipette_for_quick_transfer": "为创建快速移液,您需要在工作站上安装移液器。", "attach_a_pipette": "将移液器连接到工作站", + "attach_a_pipette_for_quick_transfer": "为创建快速移液,您需要在工作站上安装移液器。", "calibration_block_description": "这个金属块是一个特制的工具,完美适配您的甲板,有助于校准。如果您没有校准块,请发送电子邮件给支持团队,以便我们寄送一个给您。在您提供的信息中,请确保包括您的姓名、公司或机构名称和寄送地址。在等待校准块到达过程中,您可以暂时利用工作站里垃圾桶上的平面进行校准。", "calibration_on_opentrons_tips_is_important": "使用上述吸头和吸头盒进行校准非常重要,因为工作站的准确性是基于这些吸头的已知尺寸来确定的。", "choose_what_data_to_share": "选择要共享的工作站数据。", @@ -23,13 +23,14 @@ "find_your_robot": "在应用程序的“设备”栏找到您的工作站,以安装软件更新。", "firmware_update_download_logs": "请与支持人员联系以获得帮助。", "general_error_message": "如果该消息反复出现,请尝试重新启动您的应用程序和工作站。如果这不能解决问题,请与支持人员联系。", + "gripper": "转板抓手", "gripper_still_attached": "转板抓手仍处于连接状态", "gripper_successfully_attached_and_calibrated": "转板抓手已成功连接并校准", "gripper_successfully_calibrated": "转板抓手已成功校准", "gripper_successfully_detached": "转板抓手已成功卸下", - "gripper": "转板抓手", "help_us_improve_send_error_report": "通过向支持团队发送错误报告,帮助我们改进您的使用体验", "ip_description_second": "请联系网络管理员,为工作站分配静态IP地址。", + "language_preference_description": "除非您在下面选择其他语言,否则应用将与您的系统语言匹配。您可以稍后在应用设置中更改语言。", "learn_uninstalling": "了解更多有关卸载应用程序的信息", "loosen_screws_and_detach": "松开螺丝并卸下转板抓手", "modal_instructions": "有关设置模块的分步说明,请参阅随包装附带的快速指引。", @@ -48,8 +49,8 @@ "opentrons_def": "已验证的数据", "opentrons_flex_quickstart_guide": "快速入门指南", "opentrons_labware_def": "已验证的实验耗材数据", - "opentrons_tip_racks_recommended": "建议使用Opentrons吸头盒。其他吸头盒无法保证精度。", "opentrons_tip_rack_name": "opentrons", + "opentrons_tip_racks_recommended": "建议使用Opentrons吸头盒。其他吸头盒无法保证精度。", "previous_releases": "查看以前的版本", "receive_alert": "当软件更新可用时接收提醒。", "restore_description": "不建议恢复到过往的软件版本,但您可以访问下方的过往版本。为了获得最佳效果,请在安装过往版本之前卸载现有应用程序并删除其配置文件。", @@ -68,7 +69,10 @@ "show_labware_offset_snippets_description": "仅适用于需要在应用程序之外应用耗材校准数据的用户。启用后,在设置协议过程中可访问Jupyter Notebook和SSH的代码片段。", "something_seems_wrong": "您的移液器可能有问题。退出设置并联系支持人员以获取帮助。", "storage_limit_reached_description": "您的工作站已达到可存储的快速移液数量上限。在创建新的快速移液之前,您必须删除一个现有的快速移液。", + "system_language_preferences_update_description": "您系统的语言最近已更新。您想使用更新后的语言作为应用的默认语言吗?", "these_are_advanced_settings": "这些是高级设置。请勿在没有支持团队帮助的情况下尝试调整这些设置。更改这些设置可能会影响您的移液器寿命。这些设置不会覆盖协议中定义的任何移液器设置。", + "u2e_driver_description": "OT-2 通过此适配器,使用 USB 连接 Opentrons APP。", + "unexpected_error": "发生意外错误。", "update_requires_restarting_app": "更新需要重新启动应用程序。", "update_robot_software_description": "绕过自动更新过程并手动更新工作站软件", "update_robot_software_link": "启动软件更新页面", diff --git a/app/src/assets/localization/zh/app_settings.json b/app/src/assets/localization/zh/app_settings.json index ace4ca5fb4f..035963eacaa 100644 --- a/app/src/assets/localization/zh/app_settings.json +++ b/app/src/assets/localization/zh/app_settings.json @@ -1,7 +1,7 @@ { "__dev_internal__enableLabwareCreator": "启用应用实验耗材创建器", - "__dev_internal__forceHttpPolling": "强制轮询所有网络请求,而不是使用MQTT", "__dev_internal__enableRunNotes": "在协议运行期间显示备注", + "__dev_internal__forceHttpPolling": "强制轮询所有网络请求,而不是使用MQTT", "__dev_internal__protocolStats": "协议统计", "__dev_internal__protocolTimeline": "协议时间线", "add_folder_button": "添加实验耗材源文件夹", diff --git a/app/src/assets/localization/zh/branded.json b/app/src/assets/localization/zh/branded.json index c38888398f1..b7cbc41d684 100644 --- a/app/src/assets/localization/zh/branded.json +++ b/app/src/assets/localization/zh/branded.json @@ -2,8 +2,8 @@ "a_robot_software_update_is_available": "需要更新工作站软件才能使用此版本的Opentrons应用程序运行协议。转到工作站", "about_flex_gripper": "关于Flex转板抓手", "alternative_security_types_description": "Opentrons应用程序支持将Flex连接到各种企业接入点。通过USB连接并在应用程序中完成设置。", - "attach_a_pipette_for_quick_transfer": "要创建快速移液,您需要将移液器安装到您的Opentrons Flex上。", "attach_a_pipette": "将移液器连接到Flex", + "attach_a_pipette_for_quick_transfer": "要创建快速移液,您需要将移液器安装到您的Opentrons Flex上。", "calibration_block_description": "这个金属块是一个特制的工具,完美适配您的甲板,有助于校准。如果您没有校准块,请发送电子邮件至support@opentrons.com,以便我们寄送一个给您。在您提供的信息中,请确保包括您的姓名、公司或机构名称和寄送地址。在等待校准块到达过程中,您可以暂时利用工作站里垃圾桶上的平面进行校准。", "calibration_on_opentrons_tips_is_important": "使用上述Opentrons吸头和吸头盒进行校准非常重要,因为工作站的准确性是基于这些吸头的已知尺寸来确定的。", "choose_what_data_to_share": "选择要与Opentrons共享的数据。", @@ -23,13 +23,14 @@ "find_your_robot": "在Opentrons应用程序中找到您的工作站以安装软件更新。", "firmware_update_download_logs": "从Opentrons应用程序下载工作站日志并将其发送到support@opentrons.com寻求帮助。", "general_error_message": "如果您一直收到此消息,请尝试重新启动您的应用程序和工作站。如果这不能解决问题,请与Opentrons支持人员联系。", + "gripper": "Flex转板抓手", "gripper_still_attached": "Flex转板抓手仍处于连接状态", "gripper_successfully_attached_and_calibrated": "Flex转板抓手已成功连接并校准", "gripper_successfully_calibrated": "Flex转板抓手已成功校准", "gripper_successfully_detached": "Flex转板抓手已成功卸下", - "gripper": "Flex转板抓手", "help_us_improve_send_error_report": "通过向{{support_email}}发送错误报告,帮助我们改进您的使用体验", "ip_description_second": "Opentrons建议您联系网络管理员,为工作站分配静态IP地址。", + "language_preference_description": "Opentrons APP默认匹配与您的系统语言,您也可以选择使用下方其他语言。当然,后续您也可以在APP设置中进行语言更改。", "learn_uninstalling": "了解更多有关卸载Opentrons应用程序的信息", "loosen_screws_and_detach": "松开螺丝并卸下Flex转板抓手", "modal_instructions": "有关设置模块的分步说明,请参阅随包装附带的快速指引。您也可以单击下面的链接或扫描二维码访问Opentrons帮助中心的模块部分。", @@ -68,7 +69,10 @@ "show_labware_offset_snippets_description": "仅适用于需要在Opentrons应用程序之外应用耗材校准数据的用户。启用后,在设置协议过程中可访问Jupyter Notebook和SSH的代码片段。", "something_seems_wrong": "您的移液器可能有问题。退出设置并联系Opentrons支持人员以获取帮助。", "storage_limit_reached_description": "您的 Opentrons Flex 已达到可存储的快速移液数量上限。在创建新的快速移液之前,您必须删除一个现有的快速移液。", + "system_language_preferences_update_description": "您的系统语言最近已更新。您想将更新后的语言用作 Opentrons APP的默认语言吗?", "these_are_advanced_settings": "这些是高级设置。请勿在没有Opentrons支持团队帮助的情况下尝试调整这些设置。更改这些设置可能会影响您的移液器寿命。这些设置不会覆盖协议中定义的任何移液器设置。", + "u2e_driver_description": "OT-2 通过此适配器,使用 USB 连接 Opentrons APP。", + "unexpected_error": "发生意外错误。如果问题仍然存在,请联系 Opentrons 支持团队寻求帮助。", "update_requires_restarting_app": "更新需要重新启动Opentrons应用程序。", "update_robot_software_description": "绕过Opentrons应用程序自动更新过程并手动更新工作站软件", "update_robot_software_link": "启动Opentrons软件更新页面", diff --git a/app/src/assets/localization/zh/change_pipette.json b/app/src/assets/localization/zh/change_pipette.json index 9818fd56f85..3a7f16bb724 100644 --- a/app/src/assets/localization/zh/change_pipette.json +++ b/app/src/assets/localization/zh/change_pipette.json @@ -1,8 +1,8 @@ { "are_you_sure_exit": "您确定要在{{direction}}移液器之前退出吗?", "attach_name_pipette": "安装一个{{pipette}}移液器", - "attach_pipette_type": "安装一个{{pipetteName}}移液器", "attach_pipette": "安装一个移液器", + "attach_pipette_type": "安装一个{{pipetteName}}移液器", "attach_the_pipette": "

连接移液器

推入白色连接器,直到感觉它插入移液器。", "attached_pipette_does_not_match": "连接的{{name}}与您最初选择的{{pipette}}不匹配。", "attaching": "正在连接", @@ -16,10 +16,10 @@ "confirming_attachment": "正在确认连接", "confirming_detachment": "正在确认拆卸", "continue": "继续", - "detach_pipette_from_mount": "从{{mount}}安装支架上卸下移液器", + "detach": "卸下移液器", "detach_pipette": "从{{mount}}安装支架上卸下{{pipette}}", + "detach_pipette_from_mount": "从{{mount}}安装支架上卸下移液器", "detach_try_again": "卸下并重试", - "detach": "卸下移液器", "detaching": "正在卸下", "get_started": "开始", "go_back": "返回", diff --git a/app/src/assets/localization/zh/device_details.json b/app/src/assets/localization/zh/device_details.json index a19e61a365b..fdcab146c28 100644 --- a/app/src/assets/localization/zh/device_details.json +++ b/app/src/assets/localization/zh/device_details.json @@ -1,15 +1,16 @@ { "about_gripper": "关于转板抓手", "about_module": "关于{{name}}", - "about_pipette_name": "关于{{name}}移液器", "about_pipette": "关于移液器", + "about_pipette_name": "关于{{name}}移液器", + "abs_reader_lid_status": "上盖状态: {{status}}", "abs_reader_status": "吸光度读板器状态", + "add": "添加", "add_fixture_description": "将此硬件添加至甲板配置。它在协议分析期间将会被引用。", "add_to_slot": "添加到板位{{slotName}}", - "add": "添加", + "an_error_occurred_while_updating": "更新移液器设置时发生错误。", "an_error_occurred_while_updating_module": "更新{{moduleName}}时出现错误,请重试。", "an_error_occurred_while_updating_please_try_again": "更新移液器设置时出错,请重试。", - "an_error_occurred_while_updating": "更新移液器设置时发生错误。", "attach_gripper": "安装转板抓手", "attach_pipette": "安装移液器", "bad_run": "无法加载运行", @@ -17,13 +18,13 @@ "bundle_firmware_file_not_found": "未找到类型为{{module}}的模块固件包文件。", "calibrate_gripper": "校准转板抓手", "calibrate_now": "立即校准", - "calibrate_pipette_offset": "校准移液器数据", "calibrate_pipette": "校准移液器", - "calibration_needed_without_link": "需要校准。", + "calibrate_pipette_offset": "校准移液器数据", "calibration_needed": "需要校准。 立即校准", + "calibration_needed_without_link": "需要校准。", "canceled": "已取消", - "changes_will_be_lost_description": "确定不保存甲板配置直接退出而吗?", "changes_will_be_lost": "更改将丢失", + "changes_will_be_lost_description": "确定不保存甲板配置直接退出而吗?", "choose_protocol_to_run": "选择在{{name}}上运行的协议", "close_lid": "关闭上盖", "completed": "已完成", @@ -35,9 +36,9 @@ "current_temp": "当前:{{temp}}°C", "current_version": "当前版本", "deck_cal_missing": "缺少移液器校准数据,请先校准甲板。", + "deck_configuration": "甲板配置", "deck_configuration_is_not_available_when_robot_is_busy": "工作站忙碌时,甲板配置不可用", "deck_configuration_is_not_available_when_run_is_in_progress": "工作站运行时,甲板配置不可用", - "deck_configuration": "甲板配置", "deck_fixture_setup_instructions": "甲板配置安装说明", "deck_fixture_setup_modal_bottom_description_desktop": "针对不同类型的配置,扫描二维码或访问下方链接获取详细说明。", "deck_fixture_setup_modal_top_description": "首先,拧松并移除计划安装模组的甲板。然后放置模组,并进行固定。", @@ -57,14 +58,14 @@ "estop_pressed": "急停按钮被按下。工作站运动已停止。", "failed": "失败", "files": "文件", - "firmware_update_needed": "需要更新工作站固件。请在工作站的触摸屏上开始更新。", "firmware_update_available": "固件更新可用。", "firmware_update_failed": "未能更新模块固件", - "firmware_updated_successfully": "固件更新成功", + "firmware_update_needed": "需要更新工作站固件。请在工作站的触摸屏上开始更新。", "firmware_update_occurring": "固件更新正在进行中...", + "firmware_updated_successfully": "固件更新成功", "fixture": "配置模组", - "have_not_run_description": "运行一些协议后,它们会在这里显示。", "have_not_run": "无最近运行记录", + "have_not_run_description": "运行一些协议后,它们会在这里显示。", "heater": "加热器", "height_ranges": "{{gen}}高度范围", "hot_to_the_touch": "模块接触时很热", @@ -73,12 +74,12 @@ "instruments_and_modules": "设备与模块", "labware_bottom": "耗材底部", "last_run_time": "最后一次运行{{number}}", - "left_right": "左右支架", "left": "左侧", + "left_right": "左右支架", "lights": "灯光", "link_firmware_update": "查看固件更新", - "location_conflicts": "位置冲突", "location": "位置", + "location_conflicts": "位置冲突", "magdeck_gen1_height": "高度:{{height}}", "magdeck_gen2_height": "高度:{{height}}毫米", "max_engage_height": "最大可用高度", @@ -87,13 +88,13 @@ "missing_hardware": "缺少硬件", "missing_instrument": "缺少{{num}}个设备", "missing_instruments_plural": "缺少{{count}}个设备", - "missing_module_plural": "缺少{{count}}个模块", "missing_module": "缺少{{num}}个模块", + "missing_module_plural": "缺少{{count}}个模块", "module_actions_unavailable": "协议运行时模块操作不可用", + "module_calibration_required": "需要模块校准。", "module_calibration_required_no_pipette_attached": "需要模块校准。在运行模块校准前,请连接移液器。", "module_calibration_required_no_pipette_calibrated": "需要模块校准。在校准模块前,请先校准移液器。", "module_calibration_required_update_pipette_FW": "在进行必要的模块校准前,请先更新移液器固件。", - "module_calibration_required": "需要模块校准。", "module_controls": "模块控制", "module_error": "模块错误", "module_name_error": "{{moduleName}}错误", @@ -104,8 +105,8 @@ "no_deck_fixtures": "无甲板配置", "no_protocol_runs": "暂无协议运行记录!", "no_protocols_found": "未找到协议", - "no_recent_runs_description": "运行一些协议后,它们将显示在此处。", "no_recent_runs": "无最近运行记录", + "no_recent_runs_description": "运行一些协议后,它们将显示在此处。", "num_units": "{{num}}毫米", "offline_deck_configuration": "工作站必须连接网络才能查看甲板配置", "offline_instruments_and_modules": "工作站必须连接网络才能查看已连接的设备和模块", @@ -131,12 +132,12 @@ "protocol_analysis_failed": "协议APP分析失败。", "protocol_analysis_stale": "协议分析已过期。", "protocol_details_page_reanalyze": "前往协议详情页面重新分析。", - "ready_to_run": "运行工作准备完成", "ready": "准备就绪", + "ready_to_run": "运行工作准备完成", "recalibrate_gripper": "重新校准转板抓手", "recalibrate_now": "立即重新校准", - "recalibrate_pipette_offset": "重新校准移液器偏移", "recalibrate_pipette": "重新校准移液器", + "recalibrate_pipette_offset": "重新校准移液器偏移", "recent_protocol_runs": "最近的协议运行", "rerun_loading": "数据完全加载前,禁止协议重新运行", "rerun_now": "立即重新运行协议", @@ -146,17 +147,17 @@ "right": "右侧", "robot_control_not_available": "运行过程中某些工作站控制功能不可用", "robot_initializing": "初始化中...", + "run": "运行", "run_a_protocol": "运行协议", "run_again": "再次运行", "run_duration": "运行时长", - "run": "运行", "select_options": "选择选项", "serial_number": "序列号", "set_block_temp": "设置温度", "set_block_temperature": "设置模块温度", + "set_engage_height": "设置启用高度", "set_engage_height_and_enter_integer": "为此磁力模块设置启用高度。请输入一个介于{{lower}}和{{higher}}之间的整数。", "set_engage_height_for_module": "为{{name}}设置启用高度", - "set_engage_height": "设置启用高度", "set_lid_temperature": "设置上盖温度", "set_shake_of_hs": "为此模块设置转速。", "set_shake_speed": "设置震荡速度", @@ -173,8 +174,8 @@ "target_temp": "目标温度:{{temp}}°C", "tc_block": "模块", "tc_lid": "上盖", - "tc_set_temperature_body": "预热或预冷您的热循环模块的{{part}}。请输入介于{{min}}°C 和{{max}}°C之间的一个整数。", "tc_set_temperature": "为{{name}}设置温度{{part}}", + "tc_set_temperature_body": "预热或预冷您的热循环模块的{{part}}。请输入介于{{min}}°C 和{{max}}°C之间的一个整数。", "tempdeck_slideout_body": "预热或冷却您的{{model}}。输入4°C至96°C之间的一个整数。", "tempdeck_slideout_title": "为{{name}}设置温度", "temperature": "温度", @@ -184,12 +185,12 @@ "trash": "垃圾桶", "update_now": "立即更新", "updating_firmware": "正在更新固件...", - "usb_port_not_connected": "USB未连接", "usb_port": "USB端口-{{port}}", + "usb_port_not_connected": "USB未连接", "version": "版本{{version}}", + "view": "查看", "view_pipette_setting": "移液器设置", "view_run_record": "查看协议运行记录", - "view": "查看", "waste_chute": "外置垃圾槽", "welcome_modal_description": "运行协议、管理设备及查看工作站状态的地方。", "welcome_to_your_dashboard": "欢迎来到您的控制面板!", diff --git a/app/src/assets/localization/zh/device_settings.json b/app/src/assets/localization/zh/device_settings.json index ecd81c941dd..40e59b5c354 100644 --- a/app/src/assets/localization/zh/device_settings.json +++ b/app/src/assets/localization/zh/device_settings.json @@ -3,6 +3,7 @@ "about_calibration_description": "为了让工作站精确移动,您需要对其进行校准。位置校准分为三部分:甲板校准、移液器偏移校准和吸头长度校准。", "about_calibration_description_ot3": "为了让工作站精确移动,您需要对其进行校准。移液器和转板抓手校准是一个自动化过程,使用校准探头或销钉。校准完成后,您可以将校准数据以JSON文件的形式保存到计算机中。", "about_calibration_title": "关于校准", + "add_new": "添加新的...", "advanced": "高级", "alpha_description": "警告:alpha版本功能完整,但可能包含重大错误。", "alternative_security_types": "可选的安全类型", @@ -10,10 +11,12 @@ "apply_historic_offsets": "应用耗材偏移校准数据", "are_you_sure_you_want_to_disconnect": "您确定要断开与{{ssid}}的连接吗?", "attach_a_pipette_before_calibrating": "在执行校准之前,请安装移液器", + "authentication": "验证", "boot_scripts": "启动脚本", "both": "两者", "browse_file_system": "浏览文件系统", "bug_fixes": "错误修复", + "but_we_expected": "但我们预计", "calibrate_deck": "校准甲板", "calibrate_deck_description": "适用于没有在甲板上蚀刻十字的2019年之前的工作站。", "calibrate_deck_to_dots": "根据校准点校准甲板", @@ -24,11 +27,14 @@ "calibration": "校准", "calibration_health_check_description": "检查关键校准点的精度,无需重新校准工作站。", "calibration_health_check_title": "校准运行状况检查", + "cancel_software_update": "取消软件更新", "change_network": "更改网络", "characters_max": "最多17个字符", "check_for_updates": "检查更新", + "check_to_verify_update": "检查设备的设置页面以验证更新是否成功", "checking_for_updates": "正在检查更新", "choose": "选择...", + "choose_a_network": "选择网络...", "choose_file": "选择文件", "choose_network_type": "选择网络类型", "choose_reset_settings": "选择重置设置", @@ -50,13 +56,14 @@ "clear_option_runs_history": "清除协议运行历史", "clear_option_runs_history_subtext": "清除所有协议的过往运行信息。点击并应用", "clear_option_tip_length_calibrations": "清除吸头长度校准", - "cancel_software_update": "取消软件更新", "complete_and_restart_robot": "完成并重新启动工作站", "confirm_device_reset_description": "这将永久删除所有协议、校准和其他数据。您需要重新进行初始设置才能再次使用工作站。", "confirm_device_reset_heading": "您确定要重置您的设备吗?", "connect": "连接", "connect_the_estop_to_continue": "连接紧急停止按钮以继续", + "connect_to_ssid": "连接到 {{ssid}}", "connect_to_wifi_network": "连接到Wi-Fi网络", + "connect_to_wifi_network_failure": "您的设备无法连接到 Wi-Fi 网络 {{ssid}}", "connect_via": "通过{{type}}连接", "connect_via_usb_description_1": "1. 将 USB A-to-B 连接线连接到工作站的 USB-B 端口。", "connect_via_usb_description_2": "2. 将电缆连接到计算机上的一个空闲USB端口。", @@ -65,6 +72,7 @@ "connected_to_ssid": "已连接到{{ssid}}", "connected_via": "通过{{networkInterface}}连接", "connecting_to": "正在连接到{{ssid}}...", + "connecting_to_wifi_network": "连接到 Wi-Fi 网络 {{ssid}}", "connection_description_ethernet": "连接到您实验室的有线网络。", "connection_description_wifi": "在您的实验室中找到一个网络,或者输入您自己的网络。", "connection_to_robot_lost": "与工作站的连接中断", @@ -81,7 +89,6 @@ "device_reset_description": "将耗材校准、启动脚本和/或工作站校准重置为出厂设置。", "device_reset_slideout_description": "选择单独的设置以仅清除特定的数据类型。", "device_resets_cannot_be_undone": "重置无法撤销", - "release_notes": "发行说明", "directly_connected_to_this_computer": "直接连接到这台计算机。", "disconnect": "断开连接", "disconnect_from_ssid": "断开与{{ssid}}的连接", @@ -97,6 +104,7 @@ "display_sleep_settings": "屏幕睡眠设置", "do_not_turn_off": "这可能需要最多{{minutes}}分钟。请不要关闭工作站。", "done": "完成", + "downgrade": "降级", "download": "下载", "download_calibration_data": "下载校准日志", "download_error": "下载错误日志", @@ -110,6 +118,7 @@ "enable_status_light_description": "打开或关闭工作站前部的指示LED灯条。", "engaged": "已连接", "enter_factory_password": "输入工厂密码", + "enter_name_security_type": "输入网络名称和安全类型。", "enter_network_name": "输入网络名称", "enter_password": "输入密码", "estop": "紧急停止按钮", @@ -128,6 +137,8 @@ "factory_resets_cannot_be_undone": "工厂重置无法撤销。", "failed_to_connect_to_ssid": "无法连接到{{ssid}}", "feature_flags": "功能标志", + "field_is_required": "需要{{field}} ", + "find_and_join_network": "查找并加入 Wi-Fi 网络", "finish_setup": "完成设置", "firmware_version": "固件版本", "fully_calibrate_before_checking_health": "在检查校准健康之前,请完全校准您的工作站", @@ -155,6 +166,7 @@ "last_calibrated_label": "最后校准", "launch_jupyter_notebook": "启动Jupyter Notebook", "legacy_settings": "遗留设置", + "likely_incorrect_password": "可能网络密码不正确。", "mac_address": "MAC地址", "manage_oem_settings": "管理OEM设置", "minutes": "{{minute}}分钟", @@ -172,17 +184,22 @@ "name_your_robot": "给您的工作站起个名字", "name_your_robot_description": "别担心,您可以在设置中随时更改这个名称。", "need_another_security_type": "需要另一种安全类型吗?", + "network_is_unsecured": "Wi-Fi 网络 {{ssid}} 不安全", "network_name": "网络名称", + "network_requires_auth": "Wi-Fi 网络 {{ssid}} 需要 802.1X 身份验证", + "network_requires_wpa_password": "Wi-Fi 网络 {{ssid}} 需要 WPA2 密码", "network_settings": "网络设置", "networking": "网络连接", "never": "从不", "new_features": "新功能", "next_step": "下一步", + "no_calibration_required": "无需校准", "no_connection_found": "未找到连接", "no_gripper_attached": "未连接转板抓手", "no_modules_attached": "未连接模块", "no_network_found": "未找到网络", "no_pipette_attached": "未连接移液器", + "no_update_files": "无法检索此设备的更新状态。请确保您的计算机已连接到互联网,然后稍后重试。", "none_description": "不推荐", "not_calibrated": "尚未校准", "not_calibrated_short": "未校准", @@ -194,11 +211,13 @@ "not_now": "不是现在", "oem_mode": "OEM模式", "off": "关闭", - "one_hour": "1小时", "on": "开启", + "one_hour": "1小时", "other_networks": "其他网络", + "other_robot_updating": "无法更新,因为该APP目前正在更新其他设备。", "password": "密码", "password_error_message": "至少需要8个字符", + "password_not_long_enough": "密码必须至少为 {{minLength}} 字符", "pause_protocol": "当工作站前门打开时暂停协议", "pause_protocol_description": "启用后,在运行过程中打开工作站前门,工作站会在完成当前动作后暂停。", "pipette_calibrations_description": "使用校准探头来确定移液器相对于甲板槽上的精密切割方格的确切位置。", @@ -208,6 +227,7 @@ "pipette_offset_calibration_recommended": "建议进行移液器偏移校准", "pipette_offset_calibrations_history": "查看所有移液器偏移校准历史", "pipette_offset_calibrations_title": "移液器偏移校准", + "please_check_credentials": "请仔细检查你的网络凭证", "privacy": "隐私", "problem_during_update": "此次更新耗时比平常要长。", "proceed_without_updating": "跳过更新以继续", @@ -220,6 +240,7 @@ "recalibrate_tip_and_pipette": "重新校准吸头长度和移液器偏移量", "recalibration_recommended": "建议重新校准", "reinstall": "重新安装", + "release_notes": "发行说明", "remind_me_later": "稍后提醒我", "rename_robot": "重命名工作站", "rename_robot_input_error": "哎呀!工作站名称必须遵循字符计数和限制。", @@ -237,9 +258,12 @@ "returns_your_device_to_new_state": "这将使您的设备恢复到新的状态。", "robot_busy_protocol": "当协议正在运行时,此工作站无法更新", "robot_calibration_data": "工作站校准数据", + "robot_has_bad_capabilities": "设备配置不正确", "robot_initializing": "正在初始化工作站...", "robot_name": "工作站名称", "robot_operating_update_available": "工作站操作系统更新可用", + "robot_reconnected_with version": "设备重新获取版本", + "robot_requires_premigration": "系统必须先更新此设备,然后才能进行自定义更新", "robot_serial_number": "工作站序列号", "robot_server_version": "工作站服务器版本", "robot_settings": "工作站设置", @@ -258,7 +282,9 @@ "select_a_network": "选择一个网络", "select_a_security_type": "选择一个安全类型", "select_all_settings": "选择所有设置", + "select_auth_method_short": "选择身份验证方法", "select_authentication_method": "为您所选的网络选择身份验证方法。", + "select_file": "选择文件", "sending_software": "正在发送软件...", "serial": "序列号", "setup_mode": "设置模式", @@ -274,6 +300,9 @@ "subnet_mask": "子网掩码", "successfully_connected": "成功连接!", "successfully_connected_to_network": "已成功连接到{{ssid}}!", + "successfully_connected_to_ssid": "您的设备已成功连接至 Wi-Fi 网络 {{ssid}}", + "successfully_connected_to_wifi": "成功连接 Wi-Fi", + "successfully_disconnected_from_wifi": "已成功断开 Wi-Fi 连接", "supported_protocol_api_versions": "支持的协议API版本", "text_size": "文本大小", "text_size_description": "所有屏幕上的文本都会根据您在下方选择的大小进行调整。", @@ -285,18 +314,29 @@ "troubleshooting": "故障排查", "try_again": "再试一次", "try_restarting_the_update": "尝试重新启动更新。", + "unable_to_cancel_update": "无法取消正在进行的更新", + "unable_to_commit_update": "无法提交更新", + "unable_to_connect": "无法连接到 Wi-Fi", + "unable_to_disconnect": "无法断开 Wi-Fi 连接", + "unable_to_find_robot_with_name": "无法找到在线设备", + "unable_to_find_system_file": "无法找到要更新的系统文件", + "unable_to_restart": "无法重启设备", + "unable_to_start_update_session": "无法启动更新", "up_to_date": "最新的", "update_available": "有可用更新", "update_channel_description": "稳定版接收最新的稳定版发布。Beta 版允许您在新功能在稳定版发布前先行试用,但这些新功能尚未完成测试。", "update_complete": "更新完成!", "update_found": "发现更新!", + "update_requires_restarting_robot": "更新工作站软件需要重启工作站", "update_robot_now": "现在更新工作站", "update_robot_software": "使用本地文件(.zip)手动更新工作站软件", + "update_server_unavailable": "无法更新,因为您设备的更新服务器没有响应。", + "update_unavailable": "无法更新", "updating": "正在更新", - "update_requires_restarting_robot": "更新工作站软件需要重启工作站", + "upgrade": "升级", + "upload_custom_logo": "上传自定义Logo", "upload_custom_logo_description": "上传一个Logo,用于工作站启动时显示。", "upload_custom_logo_dimensions": "Logo必须符合 1024 x 600 的尺寸,且是 PNG 文件(.png)。", - "upload_custom_logo": "上传自定义Logo", "usage_settings": "使用设置", "usb": "USB", "usb_to_ethernet_description": "正在查找 USB-to-Ethernet 适配器信息?", diff --git a/app/src/assets/localization/zh/devices_landing.json b/app/src/assets/localization/zh/devices_landing.json index 8e6af9d5ba9..4c649c41b02 100644 --- a/app/src/assets/localization/zh/devices_landing.json +++ b/app/src/assets/localization/zh/devices_landing.json @@ -23,9 +23,9 @@ "lights_on": "开启灯光", "loading": "加载中", "looking_for_robots": "寻找工作站", - "ninety_six_mount": "左侧+右侧安装支架", "make_sure_robot_is_connected": "确保工作站已连接到此计算机", "modules": "模块", + "ninety_six_mount": "左侧+右侧安装支架", "no_robots_found": "未找到工作站", "not_available": "不可用({{count}})", "ot2_quickstart_guide": "OT-2 快速入门指南", diff --git a/app/src/assets/localization/zh/drop_tip_wizard.json b/app/src/assets/localization/zh/drop_tip_wizard.json index a5ae8faebfc..307c2aa7e72 100644 --- a/app/src/assets/localization/zh/drop_tip_wizard.json +++ b/app/src/assets/localization/zh/drop_tip_wizard.json @@ -16,9 +16,9 @@ "drop_tip_failed": "丢弃吸头操作未能完成,请联系技术支持获取帮助。", "drop_tips": "丢弃吸头", "error_dropping_tips": "丢弃吸头时发生错误", - "exit_and_home_pipette": "退出并归位移液器", - "exit_screen_title": "在完成吸头丢弃前退出?", "exit": "退出", + "exit_and_home_pipette": "退出并归位移液器", + "fixed_trash_in_12": "固定垃圾存放位置为12", "getting_ready": "正在准备…", "go_back": "返回", "jog_too_far": "移动过远?", @@ -30,7 +30,6 @@ "position_and_drop_tip": "确保移液器吸头尖端位于指定位置的正上方并保持水平。如果不是,请使用下面的控制键或键盘微调移液器直到正确位置。", "position_the_pipette": "调整移液器位置", "remove_any_attached_tips": "移除任何已安装的吸头", - "remove_the_tips": "在协议中再次使用前,您可能需要从{{mount}}移液器上移除吸头。", "remove_the_tips_from_pipette": "在协议中再次使用前,您可能需要从移液器上移除吸头。", "remove_the_tips_manually": "手动移除吸头,然后使龙门架回原点。在拾取吸头的状态下归位可能导致移液器吸入液体并损坏。", "remove_tips": "移除吸头", @@ -38,8 +37,8 @@ "select_blowout_slot_odd": "您可以将液体吹入耗材中。
龙门架移动到选定的板位后,使用位置控制按键将移液器移动到吹出液体的确切位置。", "select_drop_tip_slot": "您可以将吸头返回吸头架或丢弃它们。在右侧的甲板图上选择您想丢弃吸头的板位。确认后龙门架将移动到选定的板位。", "select_drop_tip_slot_odd": "您可以将吸头放回吸头架或丢弃它们。
龙门架移动到选定的板位后,使用位置控制按键将移液器移动到丢弃吸头的确切位置。", - "skip_and_home_pipette": "跳过并归位移液器", "skip": "跳过", + "skip_and_home_pipette": "跳过并归位移液器", "stand_back_blowing_out": "请远离,工作站正在吹出液体", "stand_back_dropping_tips": "请远离,工作站正在丢弃吸头", "stand_back_robot_in_motion": "请远离,工作站正在移动", diff --git a/app/src/assets/localization/zh/error_recovery.json b/app/src/assets/localization/zh/error_recovery.json index dddf7923d4b..a740eac779d 100644 --- a/app/src/assets/localization/zh/error_recovery.json +++ b/app/src/assets/localization/zh/error_recovery.json @@ -6,9 +6,9 @@ "before_you_begin": "开始前", "begin_removal": "开始移除", "blowout_failed": "吹出液体失败", - "overpressure_is_usually_caused": "探测器感应到压力过大通常是由吸头碰撞到实验用品、吸头堵塞或吸取/排出粘稠液体速度过快引起。如果问题持续存在,请取消运行并对协议进行必要的修改。", "cancel_run": "取消运行", "canceling_run": "正在取消运行", + "carefully_move_labware": "小心地移开放错位置的实验用品并清理溢出的液体。继续操作之前请关闭设备前门。", "change_location": "更改位置", "change_tip_pickup_location": "更换拾取吸头的位置", "choose_a_recovery_action": "选择恢复操作", @@ -19,10 +19,12 @@ "continue": "继续", "continue_run_now": "现在继续运行", "continue_to_drop_tip": "继续丢弃吸头", + "do_you_need_to_blowout": "首先,请问需要排出枪头内的液体吗?", + "door_open_robot_home": "在手动移动实验用品前,设备需要安全归位。", "ensure_lw_is_accurately_placed": "确保实验耗材已准确放置在甲板槽中,防止进一步出现错误", + "error": "错误", "error_details": "错误详情", "error_on_robot": "{{robot}}上的错误", - "error": "错误", "failed_dispense_step_not_completed": "中断运行的最后一步液体排出失败,恢复程序将不会继续运行这一步骤,请手动完成这一步的移液操作。运行将继续从下一步开始。继续之前,请关闭工作站门。", "failed_step": "失败步骤", "first_is_gripper_holding_labware": "首先,抓扳手是否夹着实验耗材?", @@ -31,6 +33,9 @@ "gripper_errors_occur_when": "当抓扳手停滞或与甲板上另一物体碰撞时,会发生抓扳手错误,这通常是由于实验耗材放置不当或实验耗材偏移不准确所致", "gripper_releasing_labware": "抓扳手正在释放实验耗材", "gripper_will_release_in_s": "抓扳手将在{{seconds}}秒后释放实验耗材", + "home_and_retry": "归位并重试该步骤", + "home_gantry": "归位", + "home_now": "现在归位", "homing_pipette_dangerous": "如果移液器中有液体,将{{mount}}移液器归位可能会损坏它。您必须在使用移液器之前取下所有吸头。", "if_issue_persists_gripper_error": "如果问题持续存在,请取消运行并重新运行抓扳手校准", "if_issue_persists_overpressure": "如果问题持续存在,请取消运行并对协议进行必要的更改", @@ -40,6 +45,7 @@ "ignore_error_and_skip": "忽略错误并跳到下一步", "ignore_only_this_error": "仅忽略此错误", "ignore_similar_errors_later_in_run": "要在后续的运行中忽略类似错误吗?", + "inspect_the_robot": "首先,检查设备以确保它已准备好从下一步继续运行。然后,关闭设备前门,再继续操作。", "labware_released_from_current_height": "将从当前高度释放实验耗材", "launch_recovery_mode": "启动恢复模式", "manually_fill_liquid_in_well": "手动填充孔位{{well}}中的液体", @@ -48,29 +54,36 @@ "manually_move_lw_on_deck": "手动移动实验耗材", "manually_replace_lw_and_retry": "手动更换实验耗材并重试此步骤", "manually_replace_lw_on_deck": "手动更换实验耗材", + "na": "N/A", "next_step": "下一步", "next_try_another_action": "接下来,您可以尝试另一个恢复操作或取消运行。", "no_liquid_detected": "未检测到液体", + "overpressure_is_usually_caused": "探测器感应到压力过大通常是由吸头碰撞到实验用品、吸头堵塞或吸取/排出粘稠液体速度过快引起。如果问题持续存在,请取消运行并对协议进行必要的修改。", "pick_up_tips": "取吸头", "pipette_overpressure": "移液器超压", - "preserve_aspirated_liquid": "首先,您需要保留已吸取的液体吗?", + "prepare_deck_for_homing": "整理甲板,准备归位", "proceed_to_cancel": "继续取消", + "proceed_to_home": "归位中", "proceed_to_tip_selection": "继续选择吸头", "recovery_action_failed": "{{action}}失败", "recovery_mode": "恢复模式", "recovery_mode_explanation": "恢复模式为您提供运行错误后的手动处理引导。
您可以进行调整以确保发生错误时正在进行的步骤可以完成,或者选择取消协议。当做出调整且未检测到后续错误时,该模式操作完成。根据导致错误的条件,系统将提供相应的调整选项。", - "release_labware_from_gripper": "从抓板手中释放实验耗材", "release": "释放", + "release_labware_from_gripper": "从抓板手中释放实验耗材", "remove_any_attached_tips": "移除任何已安装的吸头", + "replace_tips_and_select_loc_partial_tip": "更换吸头并选择最后用于偏转移液吸头拾取的位置。", "replace_tips_and_select_location": "建议更换吸头并选择最后一次取吸头的位置。", "replace_used_tips_in_rack_location": "在吸头板位{{location}}更换已使用的吸头", "replace_with_new_tip_rack": "更换新的吸头盒", "resume": "继续", - "retrying_step_succeeded": "重试步骤{{step}}成功", + "retry_dropping_tip": "重试弹出吸头", "retry_now": "现在重试", + "retry_picking_up_tip": "重试拾取吸头", "retry_step": "重试步骤", "retry_with_new_tips": "使用新吸头重试", "retry_with_same_tips": "使用相同吸头重试", + "retrying_step_succeeded": "重试步骤{{step}}成功", + "retrying_step_succeeded_na": "重试当前步骤成功。", "return_to_menu": "返回菜单", "robot_door_is_open": "工作站前门已打开", "robot_is_canceling_run": "工作站正在取消运行", @@ -83,25 +96,30 @@ "robot_will_retry_with_tips": "工作站将使用新吸头重试失败的步骤。", "run_paused": "运行暂停", "select_tip_pickup_location": "选择取吸头位置", - "skipping_to_step_succeeded": "跳转到步骤{{step}}成功", "skip_and_home_pipette": "跳过并归位移液器", "skip_to_next_step": "跳到下一步", "skip_to_next_step_new_tips": "使用新吸头跳到下一步", "skip_to_next_step_same_tips": "使用相同吸头跳到下一步", + "skipping_to_step_succeeded": "跳转到步骤{{step}}成功", + "skipping_to_step_succeeded_na": "跳至下一步成功。", + "stall_or_collision_detected_when": "当设备电机堵塞时,检测到失速或碰撞", + "stall_or_collision_error": "失速或碰撞", "stand_back": "请远离,工作站正在运行", "stand_back_picking_up_tips": "请远离,正在拾取吸头", "stand_back_resuming": "请远离,正在恢复当前步骤", "stand_back_retrying": "请远离,正在重试失败步骤", "stand_back_skipping_to_next_step": "请远离,正在跳到下一步骤", "take_any_necessary_precautions": "在接住实验耗材之前,请采取必要的预防措施。确认后,夹爪将开始倒计时再释放。", - "take_necessary_actions_failed_pickup": "首先,采取任何必要的行动,让工作站重新尝试移液器拾取。然后,在继续之前关闭工作站门。", "take_necessary_actions": "首先,采取任何必要的行动,让工作站重新尝试失败的步骤。然后,在继续之前关闭工作站门。", + "take_necessary_actions_failed_pickup": "首先,采取任何必要的行动,让工作站重新尝试移液器拾取。然后,在继续之前关闭工作站门。", + "take_necessary_actions_failed_tip_drop": "首先,采取一切必要的措施,让设备准备好重试弹出吸头。然后,关闭设备前门,再继续操作。", + "take_necessary_actions_home": "采取一切必要的措施,准备让设备归位。继续操作之前请关闭设备前门。", "terminate_remote_activity": "终止远程活动", + "the_robot_must_return_to_home_position": "设备必须归位才能继续", "tip_drop_failed": "丢弃吸头失败", "tip_not_detected": "未检测到吸头", "tip_presence_errors_are_caused": "吸头识别错误通常是由实验器皿放置不当或器皿偏移不准确引起的。", "view_error_details": "查看错误详情", "view_recovery_options": "查看恢复选项", - "you_can_still_drop_tips": "在继续选择吸头之前,您仍然可以丢弃移液器上现存的吸头。", - "you_may_want_to_remove": "在协议中再次使用之前,您可能需要从{{mount}}移液器上移除吸头。" + "you_can_still_drop_tips": "在继续选择吸头之前,您仍然可以丢弃移液器上现存的吸头。" } diff --git a/app/src/assets/localization/zh/gripper_wizard_flows.json b/app/src/assets/localization/zh/gripper_wizard_flows.json index 6617e15d83a..00319f11f6d 100644 --- a/app/src/assets/localization/zh/gripper_wizard_flows.json +++ b/app/src/assets/localization/zh/gripper_wizard_flows.json @@ -5,19 +5,17 @@ "before_you_begin": "开始之前", "begin_calibration": "开始校准", "calibrate_gripper": "校准转板抓手", - "calibration_pin": "校准钉", "calibration_pin_touching": "校准钉将触碰甲板{{slot}}中的校准块,以确定其精确位置。", "complete_calibration": "完成校准", "continue": "继续", "continue_calibration": "继续校准", "detach_gripper": "卸下转板抓手", - "firmware_updating": "需要固件更新,设备正在更新中...", "firmware_up_to_date": "固件已为最新版本。", + "firmware_updating": "需要固件更新,设备正在更新中...", "get_started": "开始操作", "gripper_calibration": "转板抓手校准", "gripper_recalibration": "转板抓手重新校准", "gripper_successfully_attached": "转板抓手已成功安装", - "hex_screwdriver": "2.5mm 六角螺丝刀", "hold_gripper_and_loosen_screws": "用手扶住转板抓手,首先松开上方螺丝,再松开下方螺丝。(螺丝固定于抓手上,不会脱落。)之后小心卸下抓手。", "insert_pin_into_front_jaw": "将校准钉插入前夹爪", "insert_pin_into_rear_jaw": "将校准钉插入后夹爪", diff --git a/app/src/assets/localization/zh/heater_shaker.json b/app/src/assets/localization/zh/heater_shaker.json index 249f1cc6138..efc48439868 100644 --- a/app/src/assets/localization/zh/heater_shaker.json +++ b/app/src/assets/localization/zh/heater_shaker.json @@ -4,43 +4,43 @@ "cannot_shake": "模块闩锁打开时无法执行震荡混匀命令", "close_labware_latch": "关闭耗材闩锁", "close_latch": "关闭闩锁", - "closed_and_locked": "关闭并锁定", "closed": "已关闭", + "closed_and_locked": "关闭并锁定", "closing": "正在关闭", "complete": "完成", "confirm_attachment": "确认已连接", "confirm_heater_shaker_modal_attachment": "确认热震荡模块已连接", "continue_shaking_protocol_start_prompt": "协议启动时是否继续执行震荡混匀命令?", + "deactivate": "停用", "deactivate_heater": "停止加热", "deactivate_shaker": "停止震荡混匀", - "deactivate": "停用", "heater_shaker_in_slot": "在继续前,请在板位{{slotName}}中安装{{moduleName}}", "heater_shaker_is_shaking": "热震荡模块当前正在震荡混匀", "keep_shaking_start_run": "继续震荡混匀并开始运行", - "labware_latch": "耗材闩锁", "labware": "耗材", + "labware_latch": "耗材闩锁", "min_max_rpm": "{{min}}-{{max}}rpm", "module_anchors_extended": "运行开始前,应将模块下方的固定位的漏丝拧紧,确保模块稳固跟甲板结合", "module_in_slot": "{{moduleName}}位于板位{{slotName}}槽中", "module_should_have_anchors": "模块应将两个固定锚完全伸出,以确保稳固地连接到甲板上", + "open": "打开", "open_labware_latch": "打开耗材闩锁", "open_latch": "打开闩锁", - "open": "打开", "opening": "正在打开", "proceed_to_run": "继续运行", "set_shake_speed": "设置震荡混匀速度", "set_temperature": "设置模块温度", "shake_speed": "震荡混匀速度", "show_attachment_instructions": "显示固定操作安装说明", - "stop_shaking_start_run": "停止震荡混匀并开始运行", "stop_shaking": "停止震荡混匀", + "stop_shaking_start_run": "停止震荡混匀并开始运行", "t10_torx_screwdriver": "{{name}}型螺丝刀", "t10_torx_screwdriver_subtitle": "热震荡模块附带。使用其他尺寸可能会损坏模块螺丝", + "test_shake": "测试震荡混匀", "test_shake_banner_information": "测试震荡混匀功能前,如果想往热震荡模块转移耗材,需要在控制页面控制模块开启闩锁", "test_shake_banner_labware_information": "测试震荡混匀功能前,如果想往热震荡模块转移{{labware}},需要控制模块闩锁", "test_shake_slideout_banner_info": "测试震荡混匀功能前,如果想往热震荡模块转移耗材,需要在控制页面控制模块开启闩锁", "test_shake_troubleshooting_slideout_description": "请重新查看模块固定安装及其适配器安装相关说明", - "test_shake": "测试震荡混匀", "thermal_adapter_attached_to_module": "适配器应已连接到模块上", "troubleshoot_step_1": "返回步骤1查看模块固定安装相关说明", "troubleshoot_step_3": "返回步骤3查看模块适配器安装相关说明", diff --git a/app/src/assets/localization/zh/incompatible_modules.json b/app/src/assets/localization/zh/incompatible_modules.json index 7e6da2f253e..0ff716c1326 100644 --- a/app/src/assets/localization/zh/incompatible_modules.json +++ b/app/src/assets/localization/zh/incompatible_modules.json @@ -1,7 +1,7 @@ { "incompatible_modules_attached": "检测到不适用模块,", - "remove_before_running_protocol": "运行协议前请移除以下硬件:", + "is_not_compatible": "{{module_name}}不适用于{{robot_type}},", "needs_your_assistance": "{{robot_name}}需要您的协助", - "remove_before_using": "使用此工作站前,请移除不适用模块.", - "is_not_compatible": "{{module_name}}不适用于{{robot_type}}," + "remove_before_running_protocol": "运行协议前请移除以下硬件:", + "remove_before_using": "使用此工作站前,请移除不适用模块." } diff --git a/app/src/assets/localization/zh/labware_details.json b/app/src/assets/localization/zh/labware_details.json index ba1183c2ea4..76ade48d727 100644 --- a/app/src/assets/localization/zh/labware_details.json +++ b/app/src/assets/localization/zh/labware_details.json @@ -8,8 +8,8 @@ "generic": "通用型", "height": "高度", "length": "长度", - "manufacturer_number": "制造商/目录编号", "manufacturer": "制造商", + "manufacturer_number": "制造商/目录编号", "max_volume": "最大容量", "measurements": "尺寸 (mm)", "na": "不适用", @@ -21,8 +21,8 @@ "u": "U型底", "v": "V型底", "various": "多种", - "well_count": "孔数", "well": "孔", + "well_count": "孔数", "width": "宽度", "x_offset": "X-初始位置", "x_size": "X-尺寸", diff --git a/app/src/assets/localization/zh/labware_landing.json b/app/src/assets/localization/zh/labware_landing.json index 386114541f3..f209e48c3e5 100644 --- a/app/src/assets/localization/zh/labware_landing.json +++ b/app/src/assets/localization/zh/labware_landing.json @@ -3,20 +3,20 @@ "cancel": "取消", "cannot-run-python-missing-labware": "工作站缺少耗材定义,无法运行Python协议。", "category": "类别", - "choose_file_to_upload": "或从您的计算机中选择文件上传。", "choose_file": "选择文件", + "choose_file_to_upload": "或从您的计算机中选择文件上传。", "copied": "已复制!", "create_new_def": "创建新的自定义耗材", "custom_def": "自定义耗材", "date_added": "添加日期", "def_moved_to_trash": "该耗材将被转移到这台电脑的回收站,可能无法恢复。", - "delete_this_labware": "删除此耗材?", "delete": "删除", + "delete_this_labware": "删除此耗材?", "duplicate_labware_def": "复制耗材", "error_importing_file": "{{filename}}导入错误。", "go_to_def": "前往耗材页面", - "import_custom_def": "导入自定义耗材", "import": "导入", + "import_custom_def": "导入自定义耗材", "imported": "{{filename}}已导入。", "invalid_labware_def": "无效耗材", "labware": "耗材", diff --git a/app/src/assets/localization/zh/labware_position_check.json b/app/src/assets/localization/zh/labware_position_check.json index cb27f78e66c..57fd1552a65 100644 --- a/app/src/assets/localization/zh/labware_position_check.json +++ b/app/src/assets/localization/zh/labware_position_check.json @@ -25,8 +25,8 @@ "confirm_position_and_pick_up_tip": "确认位置,取吸头", "confirm_position_and_return_tip": "确认位置,将吸头返回至板位{{next_slot}}并复位", "detach_probe": "移除校准探头", - "ensure_nozzle_position_odd": "请检查并确认{{tip_type}}位于{{item_location}}正上方并水平对齐。如果位置不正确,请点击移动移液器,然后微调移液器直至完全对齐。", "ensure_nozzle_position_desktop": "请检查并确认{{tip_type}}位于{{item_location}}正上方并水平对齐。如果位置不正确,请使用下方的控制按键或键盘微调移液器直至完全对齐。", + "ensure_nozzle_position_odd": "请检查并确认{{tip_type}}位于{{item_location}}正上方并水平对齐。如果位置不正确,请点击移动移液器,然后微调移液器直至完全对齐。", "exit_screen_confirm_exit": "不保存耗材校准数据并退出", "exit_screen_go_back": "返回耗材位置校准", "exit_screen_subtitle": "如果您现在退出,所有耗材校准数据都将不保留,且无法恢复。", @@ -35,9 +35,10 @@ "install_probe": "从存储位置取出校准探头,将探头的锁套旋钮按顺时针方向拧松。对准图示位置,将校准探头向上轻推并压到顶部,使探头在{{location}}移液器吸嘴上压紧。随后将锁套旋钮按逆时针方向拧紧,并轻拉确认是否固定稳妥。", "jog_controls_adjustment": "需要进行调整吗?", "jupyter_notebook": "Jupyter Notebook", + "labware": "耗材", "labware_display_location_text": "甲板板位{{slot}}", - "labware_offset_data": "耗材校准数据", "labware_offset": "耗材校准数据", + "labware_offset_data": "耗材校准数据", "labware_offsets_deleted_warning": "一旦开始耗材位置校准,之前创建的耗材校准数据将会丢失。", "labware_offsets_summary_labware": "耗材", "labware_offsets_summary_location": "位置", @@ -46,22 +47,21 @@ "labware_position_check_description": "耗材位置校准是一个引导式工作流程,为了提高实验中移液器的位置精确度,它会检查甲板上的每一个耗材位置。首先检查吸头盒,然后检查协议中使用到的其它所有耗材。", "labware_position_check_overview": "耗材位置校准概览", "labware_position_check_title": "耗材位置校准", - "labware_step_detail_labware_plural": "吸头应位于 {{labware_name}} 第一列正上方,居中对齐,并且与耗材顶部水平对齐。", "labware_step_detail_labware": "吸头应位于 {{labware_name}} 的A1孔正上方,居中对齐,并且与耗材顶部水平对齐。", + "labware_step_detail_labware_plural": "吸头应位于 {{labware_name}} 第一列正上方,居中对齐,并且与耗材顶部水平对齐。", "labware_step_detail_link": "查看如何判断移液器是否居中", "labware_step_detail_modal_heading": "如何判断移液器是否居中且水平对齐", + "labware_step_detail_modal_nozzle": "为确保移液器吸嘴完全居中,请额外从OT-2的另一侧进行检查。", "labware_step_detail_modal_nozzle_image_1_text": "从正前方看,似乎已经居中...", "labware_step_detail_modal_nozzle_image_2_nozzle_text": "移液器吸嘴未居中", "labware_step_detail_modal_nozzle_image_2_text": "...但从侧面看,需要调整", + "labware_step_detail_modal_nozzle_or_tip": "为确保吸嘴或吸头与耗材顶部水平对齐,请水平直视进行判断,或在吸嘴与吸头间插入一张纸片辅助判断。", "labware_step_detail_modal_nozzle_or_tip_image_1_text": "从俯视角度看,似乎是水平的...", "labware_step_detail_modal_nozzle_or_tip_image_2_nozzle_text": "移液器吸嘴不水平", "labware_step_detail_modal_nozzle_or_tip_image_2_text": "...但从水平高度看,需要调整", "labware_step_detail_modal_nozzle_or_tip_image_3_text": "如遇觉得难以判断,请在吸嘴与吸头之间放入一张常规纸张。当这张纸能刚好卡在两者之间时,可确认高度位置。", - "labware_step_detail_modal_nozzle_or_tip": "为确保吸嘴或吸头与耗材顶部水平对齐,请水平直视进行判断,或在吸嘴与吸头间插入一张纸片辅助判断。", - "labware_step_detail_modal_nozzle": "为确保移液器吸嘴完全居中,请额外从OT-2的另一侧进行检查。", - "labware_step_detail_tiprack_plural": "移液器吸嘴应位于{{tiprack_name}}第一列正上方并居中对齐,并且与吸头顶部水平对齐。", "labware_step_detail_tiprack": "移液器吸嘴应居中于{{tiprack_name}}的A1位置上方,并且与吸头顶部水平对齐。", - "labware": "耗材", + "labware_step_detail_tiprack_plural": "移液器吸嘴应位于{{tiprack_name}}第一列正上方并居中对齐,并且与吸头顶部水平对齐。", "learn_more": "了解更多", "location": "位置", "lpc_complete_summary_screen_heading": "耗材位置校准完成", @@ -73,9 +73,9 @@ "new_labware_offset_data": "新的耗材校准数据", "ninety_six_probe_location": "A1(左上角)", "no_labware_offsets": "无耗材校准数据", + "no_offset_data": "没有可用的校准数据", "no_offset_data_available": "没有可用的耗材校准数据", "no_offset_data_on_robot": "这轮运行中此工作站没有可用的耗材校准数据。", - "no_offset_data": "没有可用的校准数据", "offsets": "校准数据", "pick_up_tip_from_rack_in_location": "从位于{{location}}的吸头盒上拾取吸头", "picking_up_tip_title": "在板位{{slot}}拾取吸头", @@ -98,13 +98,13 @@ "robot_has_no_offsets_from_previous_runs": "耗材校准数据引用自之前运行的协议,以节省您的时间。如果本协议中的所有耗材已在之前的运行中检查过,这些数据将应用于本次运行。 您可以在后面的步骤中使用耗材位置校准添加新的偏移量。", "robot_has_offsets_from_previous_runs": "此工作站具有本协议中所用耗材的校准数据。如果您应用了这些校准数据,仍可通过耗材位置校准程序进行调整。", "robot_in_motion": "工作站正在运行,请远离。", - "run_labware_position_check": "运行耗材位置校准程序", "run": "运行", + "run_labware_position_check": "运行耗材位置校准程序", "secondary_pipette_tipracks_section": "使用{{secondary_mount}}移液器检查吸头盒", "see_how_offsets_work": "了解耗材校准的工作原理", + "slot": "板位{{slotName}}", "slot_location": "板位位置", "slot_name": "板位{{slotName}}", - "slot": "板位{{slotName}}", "start_position_check": "开始耗材位置校准程序,移至板位{{initial_labware_slot}}", "stored_offset_data": "应用已存储的耗材校准数据?", "stored_offsets_for_this_protocol": "适用于本协议的已存储耗材校准数据", diff --git a/app/src/assets/localization/zh/module_wizard_flows.json b/app/src/assets/localization/zh/module_wizard_flows.json index b1cd0b086d6..c2d6af09862 100644 --- a/app/src/assets/localization/zh/module_wizard_flows.json +++ b/app/src/assets/localization/zh/module_wizard_flows.json @@ -1,21 +1,21 @@ { "attach_probe": "将校准探头安装到移液器", "begin_calibration": "开始校准", - "calibrate_pipette": "在进行模块校准之前,请先校准移液器", "calibrate": "校准", + "calibrate_pipette": "在进行模块校准之前,请先校准移液器", + "calibration": "{{module}}校准", "calibration_adapter_heatershaker": "校准适配器", "calibration_adapter_temperature": "校准适配器", "calibration_adapter_thermocycler": "校准适配器", - "calibration_probe_touching_thermocycler": "校准探头将接触探测热循环仪的校准方块,以确定其确切位置", - "calibration_probe_touching": "校准探头将接触探测{{slotNumber}}板位中{{module}}的校准方块,以确定其确切位置", "calibration_probe": "从存储位置取出校准探头,将探头的锁套旋钮按顺时针方向拧松。对准图示位置,将校准探头向上轻推并压到顶部。随后将锁套旋钮按逆时针方向拧紧,并轻拉确认是否固定稳妥。", - "calibration": "{{module}}校准", + "calibration_probe_touching": "校准探头将接触探测{{slotNumber}}板位中{{module}}的校准方块,以确定其确切位置", + "calibration_probe_touching_thermocycler": "校准探头将接触探测热循环仪的校准方块,以确定其确切位置", "checking_firmware": "检查{{module}}固件", "complete_calibration": "完成校准", "confirm_location": "确认位置", "confirm_placement": "确认已放置", - "detach_probe_description": "解锁校准探头,将其从吸嘴上卸下并放回原储存位置。", "detach_probe": "卸下移液器校准探头", + "detach_probe_description": "解锁校准探头,将其从吸嘴上卸下并放回原储存位置。", "error_during_calibration": "校准过程中出现错误", "error_prepping_module": "模块校准出错", "exit": "退出", @@ -32,16 +32,16 @@ "move_gantry_to_front": "将龙门架移至前端", "next": "下一步", "pipette_probe": "移液器校准探头", + "place_flush": "将适配器水平放到模块上。", "place_flush_heater_shaker": "将适配器水平放到模块上。使用热震荡模块专用螺丝和 T10 Torx 螺丝刀将适配器固定到模块上。", "place_flush_thermocycler": "确保热循环仪盖子已打开,并将适配器水平放置到模块上,即通常放置pcr板的位置。", - "place_flush": "将适配器水平放到模块上。", "prepping_module": "正在准备{{module}}进行模块校准", "recalibrate": "重新校准", "select_location": "选择模块放置位置", "select_the_slot": "请在右侧的甲板图中选择放置了{{module}}的板位。请确认所选择位置的正确性以确保顺利完成校准。", "slot_unavailable": "板位不可用", - "stand_back_robot_in_motion": "工作站正在运行,请远离", "stand_back": "正在进行校准,请远离", + "stand_back_robot_in_motion": "工作站正在运行,请远离", "start_setup": "开始设置", "successfully_calibrated": "{{module}}已成功校准" } diff --git a/app/src/assets/localization/zh/pipette_wizard_flows.json b/app/src/assets/localization/zh/pipette_wizard_flows.json index 1e75fe6223d..a1bec2143bb 100644 --- a/app/src/assets/localization/zh/pipette_wizard_flows.json +++ b/app/src/assets/localization/zh/pipette_wizard_flows.json @@ -2,14 +2,14 @@ "align_the_connector": "对准对接孔,将移液器安装到工作站上。使用六角螺丝刀拧紧螺丝以固定移液器。然后手动检查其是否已完全固定。", "all_pipette_detached": "所有移液器已成功卸下", "are_you_sure_exit": "您确定要在完成{{flow}}之前退出吗?", - "attach_96_channel_plus_detach": "卸下{{pipetteName}}并安装96通道移液器", + "attach": "正在安装移液器", "attach_96_channel": "安装96通道移液器", - "attach_mounting_plate_instructions": "对准对接孔,将移液器安装到工作站上。为了准确对齐,您可能需要调整右侧移液器支架的位置。", + "attach_96_channel_plus_detach": "卸下{{pipetteName}}并安装96通道移液器", "attach_mounting_plate": "安装固定板", + "attach_mounting_plate_instructions": "对准对接孔,将移液器安装到工作站上。为了准确对齐,您可能需要调整右侧移液器支架的位置。", "attach_pip": "安装移液器", "attach_pipette": "安装{{mount}}移液器", "attach_probe": "安装校准探头", - "attach": "正在安装移液器", "backmost": "最后面的", "before_you_begin": "开始之前", "begin_calibration": "开始校准", @@ -25,6 +25,7 @@ "connect_and_secure_pipette": "连接并固定移液器", "continue": "继续", "critical_unskippable_step": "这是关键步骤,不应跳过", + "detach": "正在卸下移液器", "detach_96_attach_mount": "卸下96通道移液器并安装{{mount}}移液器", "detach_96_channel": "卸下96通道移液器", "detach_and_reattach": "卸下并重新安装移液器", @@ -32,14 +33,13 @@ "detach_mount_attach_96": "卸下{{mount}}移液器并安装96通道移液器", "detach_mounting_plate_instructions": "抓住板子,防止其掉落。拧开移液器固定板的销钉。", "detach_next_pipette": "卸下下一个移液器", - "detach_pipette_to_attach_96": "卸下{{pipetteName}}并安装96通道移液器", "detach_pipette": "卸下{{mount}}移液器", + "detach_pipette_to_attach_96": "卸下{{pipetteName}}并安装96通道移液器", "detach_pipettes_attach_96": "卸下移液器并安装96通道移液器", "detach_z_axis_screw_again": "在安装96通道移液器前,先拧开Z轴螺丝。", - "detach": "正在卸下移液器", "exit_cal": "退出校准", - "firmware_updating": "需要固件更新,仪器正在更新中...", "firmware_up_to_date": "已是最新版本。", + "firmware_updating": "需要固件更新,仪器正在更新中...", "gantry_empty_for_96_channel_success": "现在两个移液器支架都为空,您可以开始进行96通道移液器的安装。", "get_started_detach": "开始前,请移除甲板上的实验耗材,清理工作区以便卸载。同时准备好屏幕所示的所需设备。", "grab_screwdriver": "保持原位不动,用2.5毫米螺丝刀,按照引导动画所示拧紧螺丝。在继续操作前,手动测试移液器安装和固定情况。", @@ -67,11 +67,12 @@ "pipette_heavy": "96通道移液器较重({{weight}})。如有需要,可以请其他人员帮忙。", "please_install_correct_pip": "请改用{{pipetteName}}", "progress_will_be_lost": "{{flow}}的进度将会丢失", + "provided_with_robot": "随工作站提供。使用其他尺寸的工具可能会损坏机器的螺丝。", "reattach_carriage": "重新连接Z轴板", "recalibrate_pipette": "重新校准{{mount}}移液器", "remove_cal_probe": "移除校准探头", - "remove_labware_to_get_started": "开始前,请清除甲板上的实验耗材,清理工作区,以便校准。同时收集屏幕显示的所需设备。校准探头随工作站提供,应存放在工作站的右前方支柱上。", "remove_labware": "开始前,请清除甲板上的实验耗材,清理工作区,以便校准。同时收集屏幕显示的所需设备。校准探头随工作站提供,应存放在工作站的右前方支柱上。", + "remove_labware_to_get_started": "开始前,请清除甲板上的实验耗材,清理工作区,以便校准。同时收集屏幕显示的所需设备。校准探头随工作站提供,应存放在工作站的右前方支柱上。", "remove_probe": "拧松校准探头,将其从喷嘴上拆下,并放回存储位置。", "replace_pipette": "更换{{mount}}移液器", "return_probe_error": "退出前,请将校准探头放回其存放位置。 {{error}}", diff --git a/app/src/assets/localization/zh/protocol_command_text.json b/app/src/assets/localization/zh/protocol_command_text.json index 9d976c2bc88..fd5373b3183 100644 --- a/app/src/assets/localization/zh/protocol_command_text.json +++ b/app/src/assets/localization/zh/protocol_command_text.json @@ -1,11 +1,18 @@ { + "absorbance_reader_close_lid": "正在关闭吸光度读数器盖子", + "absorbance_reader_initialize": "正在初始化吸光度读数器,以便在{{wavelengths}}波长下执行{{mode}}测量", + "absorbance_reader_open_lid": "正在打开吸光度读数器盖子", + "absorbance_reader_read": "正在吸光度读数器中读取微孔板", "adapter_in_mod_in_slot": "{{adapter}}在{{slot}}的{{module}}上", "adapter_in_slot": "{{adapter}}在{{slot}}上", + "air_gap_in_place": "正在形成 {{volume}} µL 的空气间隙", + "all_nozzles": "所有移液喷嘴", "aspirate": "从{{labware_location}}的{{labware}}的{{well_name}}孔中以{{flow_rate}}µL/秒的速度吸液{{volume}}µL", "aspirate_in_place": "在原位以{{flow_rate}}µL/秒的速度吸液{{volume}}µL", "blowout": "在{{labware_location}}的{{labware}}的{{well_name}}孔中以{{flow_rate}}µL/秒的速度排空", "blowout_in_place": "在原位以{{flow_rate}}µL/秒的速度排空", "closing_tc_lid": "关闭热循环仪热盖", + "column_layout": "列布局", "comment": "解释", "configure_for_volume": "配置{{pipette}}以吸液{{volume}}µL", "configure_nozzle_layout": "配置{{pipette}}以使用{{amount}}个通道", @@ -18,55 +25,67 @@ "degrees_c": "{{temp}}°C", "detect_liquid_presence": "正在检测{{labware}}在{{labware_location}}中的{{well_name}}孔中的液体存在", "disengaging_magnetic_module": "下降磁力架模块", - "dispense_push_out": "以{{flow_rate}}µL/秒的速度将{{volume}}µL 排液至{{labware_location}}的{{labware}}的{{well_name}}孔中,并推出{{push_out_volume}}µL", "dispense": "以{{flow_rate}}µL/秒的速度将{{volume}}µL 排液至{{labware_location}}的{{labware}}的{{well_name}}孔中", "dispense_in_place": "在原位以{{flow_rate}}µL/秒的速度排液{{volume}}µL", + "dispense_push_out": "以{{flow_rate}}µL/秒的速度将{{volume}}µL 排液至{{labware_location}}的{{labware}}的{{well_name}}孔中,并推出{{push_out_volume}}µL", "drop_tip": "将吸头丢入{{labware}}的{{well_name}}孔中", "drop_tip_in_place": "在原位丢弃吸头", + "dropping_tip_in_trash": "将吸头丢入{{trash}}", "engaging_magnetic_module": "抬升磁力架模块", "fixed_trash": "垃圾桶", "home_gantry": "复位所有龙门架、移液器和柱塞轴", + "in_location": "在{{location}}", "latching_hs_latch": "在热震荡模块上锁定实验耗材", "left": "左", + "load_labware_to_display_location": "在{{display_location}}加载{{labware}}", "load_liquids_info_protocol_setup": "将{{liquid}}加载到{{labware}}中", "load_module_protocol_setup": "在甲板槽{{slot_name}}中加载模块{{module}}", "load_pipette_protocol_setup": "在{{mount_name}}支架上加载{{pipette_name}}", - "module_in_slot_plural": "{{module}}", "module_in_slot": "{{module}}在{{slot_name}}号板位", + "module_in_slot_plural": "{{module}}", + "move_labware": "移动实验耗材", "move_labware_manually": "手动将{{labware}}从{{old_location}}移动到{{new_location}}", "move_labware_on": "在{{robot_name}}上移动实验耗材", "move_labware_using_gripper": "使用转板抓手将{{labware}}从{{old_location}}移动到{{new_location}}", - "move_labware": "移动实验耗材", "move_relative": "沿{{axis}}轴移动{{distance}}毫米", + "move_to_addressable_area": "移动到{{addressable_area}}", + "move_to_addressable_area_drop_tip": "移动到{{addressable_area}}", "move_to_coordinates": "移动到 (X:{{x}}, Y:{{y}}, Z:{{z}})", "move_to_slot": "移动到{{slot_name}}号板位", "move_to_well": "移动到{{labware_location}}的{{labware}}的{{well_name}}孔", - "move_to_addressable_area": "移动到{{addressable_area}}", - "move_to_addressable_area_drop_tip": "移动到{{addressable_area}}", + "multiple": "多个", "notes": "备注", "off_deck": "甲板外", "offdeck": "甲板外", + "on_location": "在{{location}}", "opening_tc_lid": "打开热循环仪热盖", - "pause_on": "在{{robot_name}}上暂停", + "partial_layout": "部分布局", "pause": "暂停", + "pause_on": "在{{robot_name}}上暂停", "pickup_tip": "从{{labware_location}}的{{labware}}的{{well_range}}孔中拾取吸头", "prepare_to_aspirate": "准备使用{{pipette}}吸液", "reloading_labware": "正在重新加载{{labware}}", "return_tip": "将吸头返回到{{labware_location}}的{{labware}}的{{well_name}}孔中", "right": "右", + "row_layout": "行布局", "save_position": "保存位置", "set_and_await_hs_shake": "设置热震荡模块以{{rpm}}rpm 震动并等待达到该转速", "setting_hs_temp": "将热震荡模块的目标温度设置为{{temp}}", "setting_temperature_module_temp": "将温控模块设置为{{temp}}(四舍五入到最接近的整数)", "setting_thermocycler_block_temp": "将热循环仪加热块温度设置为{{temp}},并在达到目标后保持{{hold_time_seconds}}秒", "setting_thermocycler_lid_temp": "将热循环仪热盖温度设置为{{temp}}", + "single": "单个", + "single_nozzle_layout": "单个移液喷嘴布局", "slot": "板位{{slot_name}}", "target_temperature": "目标温度", "tc_awaiting_for_duration": "等待热循环仪程序完成", "tc_run_profile_steps": "温度:{{celsius}}°C,时间:{{seconds}}秒", + "tc_starting_extended_profile": "运行热循环仪程序,共有{{elementCount}}个步骤和循环:", + "tc_starting_extended_profile_cycle": "以下步骤重复{{repetitions}}次:", "tc_starting_profile": "热循环仪开始进行由以下步骤组成的{{repetitions}}次循环:", - "trash_bin_in_slot": "垃圾桶在{{slot_name}}", "touch_tip": "吸头接触内壁", + "trash_bin": "垃圾桶", + "trash_bin_in_slot": "垃圾桶在{{slot_name}}", "turning_rail_lights_off": "正在关闭导轨灯", "turning_rail_lights_on": "正在打开导轨灯", "unlatching_hs_latch": "解锁热震荡模块上的实验耗材", @@ -76,5 +95,6 @@ "waiting_for_tc_block_to_reach": "等待热循环仪加热块达到目标温度并保持指定时间", "waiting_for_tc_lid_to_reach": "等待热循环仪热盖达到目标温度", "waiting_to_reach_temp_module": "等待温控模块达到{{temp}}", - "waste_chute": "外置垃圾槽" + "waste_chute": "外置垃圾槽", + "with_reference_of": "以{{wavelength}} nm为基准" } diff --git a/app/src/assets/localization/zh/protocol_details.json b/app/src/assets/localization/zh/protocol_details.json index 22f4c0566fc..3bb53fe43c5 100644 --- a/app/src/assets/localization/zh/protocol_details.json +++ b/app/src/assets/localization/zh/protocol_details.json @@ -10,32 +10,31 @@ "connected": "已连接", "connection_status": "连接状态", "creation_method": "创建方法", - "csv_file_type_required": "需要CSV文件类型", "csv_file": "CSV文件", - "csv_required": "该协议需要CSV文件才能继续。", + "csv_file_type_required": "需要CSV文件类型", "deck_view": "甲板视图", "default_value": "默认值", - "delete_protocol_perm": "{{name}}及其运行历史将被永久删除。", "delete_protocol": "删除协议", + "delete_protocol_perm": "{{name}}及其运行历史将被永久删除。", "delete_this_protocol": "删除此协议?", "description": "描述", "extension_mount": "扩展安装支架", "file_required": "需要文件", "go_to_labware_definition": "转到实验耗材定义", "go_to_timeline": "转到时间线", - "gripper_pick_up_count_description": "使用转板抓手移动单个耗材的指令。", "gripper_pick_up_count": "转板次数", + "gripper_pick_up_count_description": "使用转板抓手移动单个耗材的指令。", "hardware": "硬件", - "labware_name": "耗材名称", "labware": "耗材", + "labware_name": "耗材名称", "last_analyzed": "上一次分析", "last_updated": "上一次更新", "left_and_right_mounts": "左+右安装架", "left_mount": "左移液器安装位", "left_right": "左,右", "liquid_name": "液体名称", - "liquids_not_in_protocol": "此协议未指定任何液体", "liquids": "液体", + "liquids_not_in_protocol": "此协议未指定任何液体", "listed_values_are_view_only": "列出的值仅供查看", "location": "位置", "modules": "模块", @@ -51,16 +50,16 @@ "num_choices": "{{num}}个选择", "num_options": "{{num}}个选项", "off": "关闭", - "on_off": "开,关", "on": "开启", + "on_off": "开,关", "org_or_author": "组织/作者", "parameters": "参数", - "pipette_aspirate_count_description": "每个移液器的单个吸液指令。", "pipette_aspirate_count": "{{pipette}}吸液次数", - "pipette_dispense_count_description": "每个移液器的单个排液指令。", + "pipette_aspirate_count_description": "每个移液器的单个吸液指令。", "pipette_dispense_count": "{{pipette}}分液次数", - "pipette_pick_up_count_description": "每个移液器的单个拾取吸头指令。", + "pipette_dispense_count_description": "每个移液器的单个排液指令。", "pipette_pick_up_count": "{{pipette}}拾取吸头次数", + "pipette_pick_up_count_description": "每个移液器的单个拾取吸头指令。", "proceed_to_setup": "继续进行设置", "protocol_designer_version": "在线协议编辑器{{version}}", "protocol_failed_app_analysis": "该协议在应用程序内分析失败。它可能在没有自定义软件配置的工作站上无法使用。", @@ -74,24 +73,24 @@ "requires_upload": "需要上传", "restore_defaults": "恢复默认值", "right_mount": "右移液器安装位", + "robot": "工作站", "robot_configuration": "工作站配置", - "robot_is_busy_with_protocol": "{{robotName}}正在运行{{protocolName}},状态为{{runStatus}}。是否要清除并继续?", "robot_is_busy": "{{robotName}}正在工作", - "robot": "工作站", + "robot_is_busy_with_protocol": "{{robotName}}正在运行{{protocolName}},状态为{{runStatus}}。是否要清除并继续?", "run_protocol": "运行协议", "select_parameters_for_robot": "选择{{robot_name}}的参数", "send": "发送", "sending": "发送中", "show_in_folder": "在文件夹中显示", "slot": "{{slotName}}号板位", - "start_setup_customize_values": "开始设置以自定义值", "start_setup": "开始设置", + "start_setup_customize_values": "开始设置以自定义值", "successfully_sent": "发送成功", "total_volume": "总体积", - "unavailable_or_busy_robot_not_listed_plural": "{{count}}台不可用或工作中的工作站未列出。", "unavailable_or_busy_robot_not_listed": "{{count}}台不可用或工作中的工作站未列出。", - "unavailable_robot_not_listed_plural": "{{count}}台不可用的工作站未列出。", + "unavailable_or_busy_robot_not_listed_plural": "{{count}}台不可用或工作中的工作站未列出。", "unavailable_robot_not_listed": "{{count}}台不可用的工作站未列出。.", + "unavailable_robot_not_listed_plural": "{{count}}台不可用的工作站未列出。", "unsuccessfully_sent": "发送失败", "value_out_of_range": "值必须在{{min}}-{{max}}之间", "view_run_details": "查看运行详情", diff --git a/app/src/assets/localization/zh/protocol_info.json b/app/src/assets/localization/zh/protocol_info.json index 073b4fd6319..0654a1134cd 100644 --- a/app/src/assets/localization/zh/protocol_info.json +++ b/app/src/assets/localization/zh/protocol_info.json @@ -10,6 +10,7 @@ "creation_method": "创建方法", "custom_labware_not_supported": "工作站不支持自定义耗材", "date_added": "添加日期", + "date_added_date": "添加日期:{{date}}", "delete_protocol": "删除协议", "description": "描述", "drag_file_here": "将协议文件拖放到此处", @@ -22,9 +23,9 @@ "exit_modal_heading": "确认关闭协议", "failed_analysis": "分析失败", "get_labware_offset_data": "获取耗材校准数据", + "import": "导入", "import_a_file": "导入协议以开始", "import_new_protocol": "导入协议", - "import": "导入", "incompatible_file_type": "不兼容的文件类型", "instrument_cal_data_title": "校准数据", "instrument_not_attached": "未连接", @@ -37,10 +38,11 @@ "labware_offset_data_title": "耗材校准数据", "labware_offsets_info": "{{number}}组耗材校准数据", "labware_position_check_complete_toast_no_offsets": "耗材位置校准完成。无新建的耗材校准数据。", - "labware_position_check_complete_toast_with_offsets_plural": "耗材位置校准完成。新建了{{count}}组耗材校准数据。", "labware_position_check_complete_toast_with_offsets": "耗材位置校准完成。创建了{{count}}组耗材校准数据。", + "labware_position_check_complete_toast_with_offsets_plural": "耗材位置校准完成。新建了{{count}}组耗材校准数据。", "labware_title": "所需耗材", "last_run": "上次运行", + "last_run_time": "上次运行时间:{{time}}", "last_updated": "最近更新", "launch_protocol_designer": "打开在线协议编辑器", "manual_steps_learn_more": "了解更多关于手动步骤的信息", diff --git a/app/src/assets/localization/zh/protocol_list.json b/app/src/assets/localization/zh/protocol_list.json index 9c2b3be0f59..bb931b9e39d 100644 --- a/app/src/assets/localization/zh/protocol_list.json +++ b/app/src/assets/localization/zh/protocol_list.json @@ -16,8 +16,8 @@ "reanalyze_to_view": " 重新分析 协议", "right_mount": "右移液器安装位", "robot": "工作站", - "send_to_robot_overflow": "发送到{{robot_display_name}}", "send_to_robot": "将协议发送到{{robot_display_name}}", + "send_to_robot_overflow": "发送到{{robot_display_name}}", "show_in_folder": "在文件夹中显示", "start_setup": "开始设置", "this_protocol_will_be_trashed": "该协议将被移至此计算机的回收站,可能无法恢复。", diff --git a/app/src/assets/localization/zh/protocol_setup.json b/app/src/assets/localization/zh/protocol_setup.json index 40a5c8c00f9..990fe911f5f 100644 --- a/app/src/assets/localization/zh/protocol_setup.json +++ b/app/src/assets/localization/zh/protocol_setup.json @@ -1,8 +1,8 @@ { "96_mount": "左+右移液器安装位", "action_needed": "需要操作", - "adapter_slot_location_module": "{{slotName}}号板位,{{adapterName}}在{{moduleName}}上", "adapter_slot_location": "{{slotName}}号板位,{{adapterName}}", + "adapter_slot_location_module": "{{slotName}}号板位,{{adapterName}}在{{moduleName}}上", "add_fixture": "将{{fixtureName}}添加到{{locationName}}", "add_this_deck_hardware": "将此硬件添加到您的甲板配置中。它将在协议分析期间被引用。", "add_to_slot": "添加到{{slotName}}号板位", @@ -12,17 +12,18 @@ "applied_labware_offset_data": "已应用的实验耗材偏移数据", "applied_labware_offsets": "已应用的实验耗材偏移", "are_you_sure_you_want_to_proceed": "您确定要继续运行吗?", - "attach_gripper_failure_reason": "连接所需的转板抓手以继续", + "attach": "连接", "attach_gripper": "连接转板抓手", + "attach_gripper_failure_reason": "连接所需的转板抓手以继续", "attach_module": "校准前连接模块", "attach_pipette_before_module_calibration": "在进行模块校准前连接移液器", "attach_pipette_calibration": "连接移液器以查看校准信息", "attach_pipette_cta": "连接移液器", "attach_pipette_failure_reason": "连接所需的移液器以继续", "attach_pipette_tip_length_calibration": "连接移液器以查看吸头长度校准信息", - "attach": "连接", "back_to_top": "回到顶部", "cal_all_pip": "首先校准移液器", + "calibrate": "校准", "calibrate_deck_failure_reason": "校准甲板以继续", "calibrate_deck_to_proceed_to_pipette_calibration": "校准甲板以继续进行移液器校准", "calibrate_deck_to_proceed_to_tip_length_calibration": "校准甲板以继续进行吸头长度校准", @@ -32,16 +33,15 @@ "calibrate_pipette_before_module_calibration": "在进行模块校准前校准移液器", "calibrate_pipette_failure_reason": "校准所需的移液器以继续", "calibrate_tiprack_failure_reason": "校准所需的吸头长度以继续", - "calibrate": "校准", "calibrated": "已校准", + "calibration": "校准", "calibration_data_not_available": "一旦运行开始,校准数据不可用", "calibration_needed": "需要校准", "calibration_ready": "校准就绪", + "calibration_required": "需要校准", "calibration_required_attach_pipette_first": "需要校准,请先连接移液器", "calibration_required_calibrate_pipette_first": "需要校准,请先校准移液器", - "calibration_required": "需要校准", "calibration_status": "校准状态", - "calibration": "校准", "cancel_and_restart_to_edit": "取消运行并重新启动设置以进行编辑", "choose_csv_file": "选择CSV文件", "choose_enum": "选择{{displayName}}", @@ -62,21 +62,21 @@ "connect_modules_for_controls": "连接模块以查看控制", "connection_info_not_available": "一旦运行开始,连接信息不可用", "connection_status": "连接状态", + "csv_file": "CSV 文件", "csv_files_on_robot": "工作站上的CSV文件", "csv_files_on_usb": "USB上的CSV文件", - "csv_file": "CSV 文件", "currently_configured": "当前已配置", "currently_unavailable": "当前不可用", "custom_values": "自定义值", + "deck_cal_description": "这测量了甲板的 X 和 Y 值相对于门架的值。甲板校准是吸头长度校准和移液器偏移校准的基础。", "deck_cal_description_bullet_1": "在新工作站设置期间执行甲板校准。", "deck_cal_description_bullet_2": "如果您搬迁了工作站,请重新进行甲板校准。", - "deck_cal_description": "这测量了甲板的 X 和 Y 值相对于门架的值。甲板校准是吸头长度校准和移液器偏移校准的基础。", "deck_calibration_title": "甲板校准(Deck Calibration)", - "deck_conflict_info_thermocycler": "通过移除位置 A1 和 B1 中的固定装置来更新甲板配置。从甲板配置中移除对应装置或更新协议。", - "deck_conflict_info": "通过移除位置 {{cutout}} 中的 {{currentFixture}} 来更新甲板配置。从甲板配置中移除对应装置或更新协议。", "deck_conflict": "甲板位置冲突", - "deck_hardware_ready": "甲板硬件准备", + "deck_conflict_info": "通过移除位置 {{cutout}} 中的 {{currentFixture}} 来更新甲板配置。从甲板配置中移除对应装置或更新协议。", + "deck_conflict_info_thermocycler": "通过移除位置 A1 和 B1 中的固定装置来更新甲板配置。从甲板配置中移除对应装置或更新协议。", "deck_hardware": "甲板硬件", + "deck_hardware_ready": "甲板硬件准备", "deck_map": "甲板布局图", "default_values": "默认值", "download_files": "下载文件", @@ -86,62 +86,63 @@ "extra_attention_warning_title": "在继续运行前固定耗材和模块", "extra_module_attached": "附加额外模块", "feedback_form_link": "请告诉我们", - "fixture_name": "装置", "fixture": "装置", - "fixtures_connected_plural": "已连接{{count}}个装置", + "fixture_name": "装置", "fixtures_connected": "已连接{{count}}个装置", + "fixtures_connected_plural": "已连接{{count}}个装置", "get_labware_offset_data": "获取耗材校准数据", "hardware_missing": "缺少硬件", "heater_shaker_extra_attention": "使用闩锁控制,便于放置耗材。", "heater_shaker_labware_list_view": "要添加耗材,请使用切换键来控制闩锁", "how_offset_data_works": "耗材校准数据如何工作", "individiual_well_volume": "单个孔体积", - "initial_liquids_num_plural": "{{count}}种初始液体", "initial_liquids_num": "{{count}}种初始液体", + "initial_liquids_num_plural": "{{count}}种初始液体", "initial_location": "初始位置", + "install_modules": "安装所需的模块。", "install_modules_and_fixtures": "安装并校准所需的模块。安装所需的装置。", "install_modules_plural": "安装所需的模块。", - "install_modules": "安装所需的模块。", - "instrument_calibrations_missing_plural": "缺少{{count}}个校准", "instrument_calibrations_missing": "缺少{{count}}个校准", - "instruments_connected_plural": "已连接{{count}}个硬件", - "instruments_connected": "已连接{{count}}个硬件", + "instrument_calibrations_missing_plural": "缺少{{count}}个校准", "instruments": "硬件", - "labware_latch_instructions": "使用闩锁控制,便于放置耗材。", + "instruments_connected": "已连接{{count}}个硬件", + "instruments_connected_plural": "已连接{{count}}个硬件", + "labware": "耗材", "labware_latch": "耗材闩锁", + "labware_latch_instructions": "使用闩锁控制,便于放置耗材。", "labware_location": "耗材位置", "labware_name": "耗材名称", "labware_placement": "实验耗材放置", + "labware_position_check": "耗材位置校准", + "labware_position_check_not_available": "运行开始后,耗材位置校准不可用", "labware_position_check_not_available_analyzing_on_robot": "在工作站上分析协议时,耗材位置校准不可用", "labware_position_check_not_available_empty_protocol": "耗材位置校准需要协议加载耗材和移液器", - "labware_position_check_not_available": "运行开始后,耗材位置校准不可用", "labware_position_check_step_description": "建议的工作流程可帮助您验证每个耗材在甲板上的位置。", "labware_position_check_step_title": "耗材位置校准", "labware_position_check_text": "耗材位置校准流程可帮助您验证甲板上每个耗材的位置。在此位置校准过程中,您可以创建耗材校准数据,以调整工作站在 X、Y 和 Z 方向上的移动。", - "labware_position_check": "耗材位置校准", + "labware_quantity": "数量:{{quantity}}", "labware_setup_step_description": "准备好以下耗材和完整的吸头盒。若不进行耗材位置校准直接运行协议,请将耗材放置在其初始位置并固定。", "labware_setup_step_title": "耗材", - "labware": "耗材", "last_calibrated": "最后校准:{{date}}", "learn_how_it_works": "了解它的工作原理", + "learn_more": "了解更多", "learn_more_about_offset_data": "了解更多关于耗材校准数据的信息", "learn_more_about_robot_cal_link": "了解更多关于工作站校准的信息", - "learn_more": "了解更多", "liquid_information": "液体信息", "liquid_name": "液体名称", "liquid_setup_step_description": "查看液体的起始位置和体积", "liquid_setup_step_title": "液体", + "liquids": "液体", "liquids_confirmed": "液体已确认", "liquids_not_in_setup": "此协议未使用液体", "liquids_not_in_the_protocol": "此协议未指定液体。", "liquids_ready": "液体准备", - "liquids": "液体", "list_view": "列表视图", "loading_data": "加载数据...", "loading_labware_offsets": "加载耗材校准数据", "loading_protocol_details": "加载详情...", - "location_conflict": "位置冲突", "location": "位置", + "location_conflict": "位置冲突", "lpc_and_offset_data_title": "耗材位置校准和耗材校准数据", "lpc_disabled_calibration_not_complete": "确保工作站校准完成后再运行耗材位置校准", "lpc_disabled_modules_and_calibration_not_complete": "确保工作站校准完成并且所有模块已连接后再运行耗材位置校准", @@ -149,36 +150,37 @@ "lpc_disabled_no_tipracks_loaded": "耗材位置校准需要在协议中加载一个吸头盒", "lpc_disabled_no_tipracks_used": "耗材位置校准要求协议中至少有一个吸头可供使用", "map_view": "布局视图", + "missing": "缺少", "missing_gripper": "缺少转板抓手", "missing_instruments": "缺少{{count}}个", - "missing_pipettes_plural": "缺少{{count}}个移液器", "missing_pipettes": "缺少{{count}}个移液器", - "missing": "缺少", + "missing_pipettes_plural": "缺少{{count}}个移液器", "modal_instructions_title": "{{moduleName}}设置说明", + "module": "模块", "module_connected": "已连接", "module_disconnected": "未连接", "module_instructions_link": "{{moduleName}}设置说明", + "module_instructions_manual": "要了解有关设置模块的分步说明,请查阅包装盒内的快速入门指南。您也可以点击下面的链接或扫描二维码,查看模块使用说明书。", "module_mismatch_body": "检查连接到该工作站的模块型号是否正确", "module_name": "模块", "module_not_connected": "未连接", "module_setup_step_ready": "校准准备", "module_setup_step_title": "甲板硬件", "module_slot_location": "{{slotName}}号板位,{{moduleName}}", - "module": "模块", - "modules_connected_plural": "连接了{{count}}个模块", + "modules": "模块", "modules_connected": "连接了{{count}}个模块", + "modules_connected_plural": "连接了{{count}}个模块", "modules_setup_step_title": "模块设置", - "modules": "模块", - "mount_title": "{{mount}}安装支架:", "mount": "{{mount}}安装支架", + "mount_title": "{{mount}}安装支架:", "multiple_fixtures_missing": "缺少{{count}}个装置", + "multiple_modules": "相同类型的多个模块", "multiple_modules_example": "您的协议包含两个温控模块。连接到左侧第一个端口的温控模块对应协议中的第一个温控模块,连接到下一个端口的温控模块对应协议中的第二个温控模块。如果使用集线器,遵循相同的端口排序逻辑。", "multiple_modules_explanation": "在协议中使用多个相同类型的模块时,首先需要将协议中第一个模块连接到工作站编号最小的USB端口,然后以相同方式连接其他模块。", "multiple_modules_help_link_title": "查看如何设置相同类型的多个模块", "multiple_modules_learn_more": "了解更多关于使用相同类型的多个模块的信息", "multiple_modules_missing_plural": "缺少{{count}}个模块", "multiple_modules_modal": "设置相同类型的多个模块", - "multiple_modules": "相同类型的多个模块", "multiple_of_most_modules": "通过以特定顺序连接和加载模块,可以在单个Python协议中使用多种模块类型。无论模块占用哪个甲板板位,工作站都将首先初始化连接到最小编号端口的匹配模块,。", "must_have_labware_and_pip": "协议中必须加载耗材和移液器", "n_a": "不可用", @@ -191,8 +193,8 @@ "no_modules_or_fixtures": "该协议中未指定任何模块或装置。", "no_modules_specified": "该协议中未指定任何模块。", "no_modules_used_in_this_protocol": "该协议中未使用硬件", - "no_parameters_specified_in_protocol": "协议中未指定任何参数", "no_parameters_specified": "未指定参数", + "no_parameters_specified_in_protocol": "协议中未指定任何参数", "no_tiprack_loaded": "协议中必须加载一个吸头盒", "no_tiprack_used": "协议中必须拾取一个吸头", "no_usb_connection_required": "无需USB连接", @@ -200,33 +202,32 @@ "no_usb_required": "无需USB", "not_calibrated": "尚未校准", "not_configured": "未配置", - "off_deck": "甲板外", "off": "关闭", + "off_deck": "甲板外", "offset_data": "偏移校准数据", - "offsets_applied_plural": "应用了{{count}}个偏移校准数据", "offsets_applied": "应用了{{count}}个偏移校准数据", "offsets_confirmed": "偏移校准数据已确认", "offsets_ready": "偏移校准数据准备", - "on_adapter_in_mod": "在{{moduleName}}中的{{adapterName}}上", + "on": "开启", + "on-deck_labware": "{{count}}个在甲板上的耗材", "on_adapter": "在{{adapterName}}上", + "on_adapter_in_mod": "在{{moduleName}}中的{{adapterName}}上", "on_deck": "在甲板上", - "on-deck_labware": "{{count}}个在甲板上的耗材", - "on": "开启", "opening": "打开中...", "parameters": "参数", "pipette_mismatch": "移液器型号不匹配。", "pipette_missing": "移液器缺失", + "pipette_offset_cal": "移液器偏移校准", + "pipette_offset_cal_description": "这会测量移液器相对于移液器安装支架和甲板的X、Y和Z值。移液器偏移校准依赖于甲板校准和吸头长度校准。 ", "pipette_offset_cal_description_bullet_1": "首次将移液器连接到新安装支架时执行移液器偏移校准。", "pipette_offset_cal_description_bullet_2": "在执行甲板校准后重新进行移液器偏移校准。", "pipette_offset_cal_description_bullet_3": "对用于校准移液器的吸头执行吸头长度校准后,重新进行移液器偏移校准。", - "pipette_offset_cal_description": "这会测量移液器相对于移液器安装支架和甲板的X、Y和Z值。移液器偏移校准依赖于甲板校准和吸头长度校准。 ", - "pipette_offset_cal": "移液器偏移校准", + "placement": "放置", "placements_confirmed": "位置已确认", "placements_ready": "位置准备", - "placement": "放置", "plug_in_module_to_configure": "插入{{module}}以将其添加到板位", - "plug_in_required_module_plural": "插入并启动所需模块以继续", "plug_in_required_module": "插入并启动所需模块以继续", + "plug_in_required_module_plural": "插入并启动所需模块以继续", "prepare_to_run": "准备运行", "proceed_to_labware_position_check": "继续进行耗材位置校准", "proceed_to_labware_setup_step": "继续进行耗材设置", @@ -248,34 +249,34 @@ "recalibrating_not_available": "无法重新进行吸头长度校准和耗材位置校准。", "recalibrating_tip_length_not_available": "运行开始后无法重新校准吸头长度", "recommended": "推荐", - "required_instrument_calibrations": "所需的硬件校准", "required": "必需", + "required_instrument_calibrations": "所需的硬件校准", "required_tip_racks_title": "所需的吸头长度校准", - "reset_parameter_values_body": "这将丢弃您所做的任何更改。所有参数将恢复默认值。", "reset_parameter_values": "重置参数值?", + "reset_parameter_values_body": "这将丢弃您所做的任何更改。所有参数将恢复默认值。", "reset_setup": "重新开始设置以进行编辑", "reset_values": "重置值", "resolve": "解决", - "restart_setup_and_try": "重新开始设置并尝试使用不同的参数值。", "restart_setup": "重新开始设置", + "restart_setup_and_try": "重新开始设置并尝试使用不同的参数值。", "restore_default": "恢复默认值", "restore_defaults": "恢复默认值", "robot_cal_description": "工作站校准用于确定其相对于甲板的位置。良好的工作站校准对于成功运行协议至关重要。工作站校准包括3个部分:甲板校准、吸头长度校准和移液器偏移校准。", "robot_cal_help_title": "工作站校准的工作原理", - "robot_calibration_step_description_pipettes_only": "查看该协议所需的硬件和校准。", "robot_calibration_step_description": "查看该协议所需的移液器和吸头长度校准。", + "robot_calibration_step_description_pipettes_only": "查看该协议所需的硬件和校准。", "robot_calibration_step_ready": "校准准备", "robot_calibration_step_title": "硬件", + "run": "运行", "run_disabled_calibration_not_complete": "确保工作站校准完成后再继续运行", "run_disabled_modules_and_calibration_not_complete": "确保工作站校准完成并且所有模块已连接后再继续运行", "run_disabled_modules_not_connected": "确保所有模块已连接后再继续运行", - "run_labware_position_check_to_get_offsets": "运行实验室位置检查以获取实验室偏移数据。", "run_labware_position_check": "运行耗材位置校准", + "run_labware_position_check_to_get_offsets": "运行实验室位置检查以获取实验室偏移数据。", "run_never_started": "运行未开始", - "run": "运行", + "secure": "固定", "secure_labware_instructions": "固定耗材说明", "secure_labware_modal": "将耗材固定到{{name}}", - "secure": "固定", "setup_for_run": "运行设置", "setup_instructions": "设置说明", "setup_is_view_only": "运行开始后设置仅供查看", @@ -287,22 +288,22 @@ "step": "步骤{{index}}", "there_are_no_unconfigured_modules": "没有连接{{module}}。请连接一个模块并放置在{{slot}}号板位中。", "there_are_other_configured_modules": "已有一个{{module}}配置在不同的板位中。退出运行设置,并更新甲板配置以转到已连接的模块。或连接另一个{{module}}继续设置。", - "tip_length_cal_description_bullet": "对移液器上将会用到的每种类型的吸头执行吸头长度校准。", "tip_length_cal_description": "这将测量吸头底部与移液器喷嘴之间的Z轴距离。如果对用于校准移液器的吸头重新进行吸头长度校准,也需要重新进行移液器偏移校准。", + "tip_length_cal_description_bullet": "对移液器上将会用到的每种类型的吸头执行吸头长度校准。", "tip_length_cal_title": "吸头长度校准", "tip_length_calibration": "吸头长度校准", "total_liquid_volume": "总体积", - "update_deck_config": "更新甲板配置", "update_deck": "更新甲板", + "update_deck_config": "更新甲板配置", "update_offsets": "更新偏移校准数据", "updated": "已更新", "usb_connected_no_port_info": "USB端口已连接", "usb_drive_notification": "在运行开始前,请保持USB处于连接状态", "usb_port_connected": "USB端口{{port}}", "usb_port_number": "USB-{{port}}", - "value_out_of_range_generic": "值必须在范围内", - "value_out_of_range": "值必须在{{min}}-{{max}}之间", "value": "值", + "value_out_of_range": "值必须在{{min}}-{{max}}之间", + "value_out_of_range_generic": "值必须在范围内", "values_are_view_only": "值仅供查看", "variable_well_amount": "可变孔数", "view_current_offsets": "查看当前偏移量", diff --git a/app/src/assets/localization/zh/quick_transfer.json b/app/src/assets/localization/zh/quick_transfer.json index 5ecce11bb9c..159b627daf4 100644 --- a/app/src/assets/localization/zh/quick_transfer.json +++ b/app/src/assets/localization/zh/quick_transfer.json @@ -1,23 +1,25 @@ { "a_way_to_move_liquid": "一种将单一液体从一个实验耗材移动到另一个实验耗材的方法。", - "add_or_remove_columns": "添加或移除列", "add_or_remove": "添加或移除", + "add_or_remove_columns": "添加或移除列", "advanced_setting_disabled": "此移液的高级设置已禁用", "advanced_settings": "高级设置", + "air_gap": "空气间隙", + "air_gap_after_aspirating": "吸液后形成空气间隙", "air_gap_before_dispensing": "在分液前设置空气间隙", "air_gap_capacity_error": "移液器空间已满,无法添加空气间隙。", "air_gap_value": "{{volume}} µL", "air_gap_volume_µL": "空气间隙体积(µL)", - "air_gap": "空气间隙", "all": "所有实验耗材", "always": "每次吸液前", - "aspirate_flow_rate_µL": "吸取流速(µL/s)", "aspirate_flow_rate": "吸取流速", + "aspirate_flow_rate_µL": "吸取流速(µL/s)", "aspirate_settings": "吸取设置", "aspirate_tip_position": "吸取移液器位置", "aspirate_volume": "每孔吸液体积", "aspirate_volume_µL": "每孔吸液体积(µL)", "attach_pipette": "连接移液器", + "blow_out": "吹出", "blow_out_after_dispensing": "分液后吹出", "blow_out_destination_well": "目标孔", "blow_out_into_destination_well": "到目标孔", @@ -27,7 +29,6 @@ "blow_out_source_well": "源孔", "blow_out_trash_bin": "垃圾桶", "blow_out_waste_chute": "外置垃圾槽", - "blow_out": "吹出", "both_mounts": "左侧+右侧支架", "change_tip": "更换吸头", "character_limit_error": "字数超出限制", @@ -38,23 +39,24 @@ "create_new_transfer": "创建新的快速移液命令", "create_to_get_started": "创建新的快速移液以开始操作。", "create_transfer": "创建移液命令", + "delay": "延迟", + "delay_after_aspirating": "吸液后延迟", "delay_before_dispensing": "分液前的延迟", "delay_duration_s": "延迟时长(秒)", "delay_position_mm": "距孔底延迟时的位置(mm)", "delay_value": "{{delay}}秒,距离孔底{{position}}mm", - "delay": "延迟", "delete_this_transfer": "确定删除此这个快速移液?", "delete_transfer": "删除快速移液", "deleted_transfer": "已删除快速移液", "destination": "目标", "destination_labware": "目标实验耗材", "disabled": "已禁用", - "dispense_flow_rate_µL": "分液流速(µL/s)", "dispense_flow_rate": "分液流速", + "dispense_flow_rate_µL": "分液流速(µL/s)", "dispense_settings": "分液设置", "dispense_tip_position": "分液吸头位置", - "dispense_volume_µL": "每孔排液体积(µL)", "dispense_volume": "每孔排液体积", + "dispense_volume_µL": "每孔排液体积(µL)", "disposal_volume_µL": "废液量(µL)", "distance_bottom_of_well_mm": "距离孔底的高度(mm)", "distribute_volume_error": "所选源孔太小,无法从中分液。请尝试向更少的孔中分液。", @@ -70,12 +72,12 @@ "learn_more": "了解更多", "left_mount": "左侧支架", "lose_all_progress": "您将失去所有此快速移液流程进度.", + "mix": "混匀", "mix_before_aspirating": "在吸液前混匀", "mix_before_dispensing": "在分液前混匀", "mix_repetitions": "混匀重复次数", "mix_value": "{{volume}} µL,混匀{{reps}}次", "mix_volume_µL": "混匀体积(µL)", - "mix": "混匀", "name_your_transfer": "为您的快速移液流程命名", "none_to_show": "没有快速移液可显示!", "number_wells_selected_error_learn_more": "具有多个源孔{{selectionUnits}}的快速移液是可以进行一对一或者多对多移液的(为此移液流程同样选择{{wellCount}}个目标孔位{{selectionUnits}})或进行多对一移液,即合并为单个孔位(选择1个目标孔{{selectionUnit}})。", @@ -89,24 +91,24 @@ "pin_transfer": "快速移液", "pinned_transfer": "固定快速移液", "pinned_transfers": "固定快速移液", + "pipette": "移液器", + "pipette_currently_attached": "快速移液移液器选项取决于当前您工作站上安装的移液器.", + "pipette_path": "移液器路径", "pipette_path_multi_aspirate": "多次吸取", - "pipette_path_multi_dispense_volume_blowout": "多次分液,{{volume}} 微升废弃量,在{{blowOutLocation}}吹出", "pipette_path_multi_dispense": "多次分液", + "pipette_path_multi_dispense_volume_blowout": "多次分液,{{volume}} 微升废弃量,在{{blowOutLocation}}吹出", "pipette_path_single": "单次转移", - "pipette_path": "移液器路径", - "pipette_currently_attached": "快速移液移液器选项取决于当前您工作站上安装的移液器.", - "pipette": "移液器", "pre_wet_tip": "润湿吸头", - "quick_transfer_volume": "快速移液{{volume}}µL", "quick_transfer": "快速移液", - "right_mount": "右侧支架", + "quick_transfer_volume": "快速移液{{volume}}µL", "reservoir": "储液槽", + "right_mount": "右侧支架", "run_now": "立即运行", "run_quick_transfer_now": "您想立即运行快速移液流程吗?", "run_transfer": "运行快速移液", "save": "保存", - "save_to_run_later": "保存您的快速移液流程以备后续运行.", "save_for_later": "保存备用", + "save_to_run_later": "保存您的快速移液流程以备后续运行.", "select_attached_pipette": "选择已连接的移液器", "select_by": "按...选择", "select_dest_labware": "选择目标实验耗材", @@ -117,23 +119,23 @@ "set_aspirate_volume": "设置吸液体积", "set_dispense_volume": "设置排液体积", "set_transfer_volume": "设置移液体积", + "source": "源", "source_labware": "源实验耗材", "source_labware_c2": "C2 中的源实验耗材", - "source": "源", "starting_well": "起始孔", "storage_limit_reached": "已达到存储限制", - "use_deck_slots": "快速移液将使用板位B2-D2。这些板位将用于放置吸头盒、源实验耗材和目标实验耗材。请确保使用最新的甲板配置,避免碰撞。", "tip_drop_location": "吸头丢弃位置", "tip_management": "吸头管理", - "tip_position_value": "距底部 {{position}} mm", "tip_position": "移液器位置", + "tip_position_value": "距底部 {{position}} mm", "tip_rack": "吸头盒", "too_many_pins_body": "删除一个快速移液,以便向您的固定列表中添加更多传输。", "too_many_pins_header": "您已达到上限!", + "touch_tip": "碰壁动作", + "touch_tip_after_aspirating": "吸液后触碰吸头", "touch_tip_before_dispensing": "在分液前做碰壁动作", "touch_tip_position_mm": "在孔底部做碰壁动作的高度(mm)", "touch_tip_value": "距底部 {{position}} mm", - "touch_tip": "碰壁动作", "transfer_analysis_failed": "快速移液分析失败", "transfer_name": "移液名称", "trashBin": "垃圾桶", @@ -141,16 +143,17 @@ "tubeRack": "试管架", "unpin_transfer": "取消固定的快速移液", "unpinned_transfer": "已取消固定的快速移液", + "use_deck_slots": "快速移液将使用板位B2-D2。这些板位将用于放置吸头盒、源实验耗材和目标实验耗材。请确保使用最新的甲板配置,避免碰撞。", + "value_out_of_range": "值必须在{{min}}-{{max}}之间", "volume_per_well": "每孔体积", "volume_per_well_µL": "每孔体积(µL)", - "value_out_of_range": "值必须在{{min}}-{{max}}之间", "wasteChute": "外置垃圾槽", "wasteChute_location": "位于{{slotName}}的外置垃圾槽", "welcome_to_quick_transfer": "欢迎使用快速移液!", + "well": "孔", "wellPlate": "孔板", - "well_selection": "孔位选择", "well_ratio": "快速移液可以一对一或者多对多进行移液的(为此移液操作选择同样数量的{{wells}})或可以多对一,也就是合并为单孔(选择1个目标孔位)。", - "well": "孔", + "well_selection": "孔位选择", "wells": "孔", "will_be_deleted": "{{transferName}} 将被永久删除。" } diff --git a/app/src/assets/localization/zh/run_details.json b/app/src/assets/localization/zh/run_details.json index 2bfa9c1a5e1..b6fabcfe08c 100644 --- a/app/src/assets/localization/zh/run_details.json +++ b/app/src/assets/localization/zh/run_details.json @@ -1,10 +1,11 @@ { "analysis_failure_on_robot": "尝试在{{robotName}}上分析{{protocolName}}时发生错误。请修复以下错误,然后再次尝试运行此协议。", "analyzing_on_robot": "移液工作站分析中", - "anticipated_step": "预期步骤", "anticipated": "预期步骤", + "anticipated_step": "预期步骤", "apply_stored_data": "应用存储的数据", "apply_stored_labware_offset_data": "应用已储存的耗材校准数据?", + "cancel_run": "取消运行", "cancel_run_alert_info_flex": "该动作将终止本次运行并使移液器归位。", "cancel_run_alert_info_ot2": "该动作将终止本次运行,已拾取的吸头将被丢弃,移液器将归位。", "cancel_run_and_restart": "取消运行,重新进行设置以进行编辑", @@ -12,56 +13,56 @@ "cancel_run_modal_confirm": "是,取消运行", "cancel_run_modal_heading": "确定要取消吗?", "cancel_run_module_info": "此外,协议中使用的模块将保持激活状态,直到被禁用。", - "cancel_run": "取消运行", - "canceling_run_dot": "正在取消运行...", "canceling_run": "正在取消运行", - "clear_protocol_to_make_available": "清除工作站的协议以使其可用", + "canceling_run_dot": "正在取消运行...", "clear_protocol": "清除协议", - "close_door_to_resume_run": "关闭工作站门以继续运行", - "close_door_to_resume": "关闭移液工作站的前门以继续运行", + "clear_protocol_to_make_available": "清除工作站的协议以使其可用", "close_door": "关闭移液工作站前门", + "close_door_to_resume": "关闭移液工作站的前门以继续运行", + "close_door_to_resume_run": "关闭工作站门以继续运行", "closing_protocol": "正在关闭协议", - "comment_step": "注释", "comment": "注释", + "comment_step": "注释", "complete_protocol_to_download": "完成协议以下载运行日志", - "current_step_pause_timer": "计时器", - "current_step_pause": "当前步骤 - 用户暂停", "current_step": "当前步骤", + "current_step_pause": "当前步骤 - 用户暂停", + "current_step_pause_timer": "计时器", "current_temperature": "当前:{{temperature}}°C", "custom_values": "自定义值", "data_out_of_date": "此数据可能已过期", "date": "日期", + "device_details": "设备详细信息", "door_is_open": "工作站前门已打开", "door_open_pause": "当前步骤 - 暂停 - 前门已打开", - "download_files": "下载文件", "download": "下载", + "download_files": "下载文件", "download_run_log": "下载运行日志", "downloading_run_log": "正在下载运行日志", "drop_tip": "在{{labware_location}}内的{{labware}}中的{{well_name}}中丢弃吸头", "duration": "持续时间", + "end": "结束", "end_of_protocol": "协议结束", "end_step_time": "结束", - "end": "结束", "error_details": "错误详情", "error_info": "错误{{errorCode}}:{{errorType}}", "error_type": "错误:{{errorType}}", "failed_step": "步骤失败", + "files_available_robot_details": "与协议运行相关的所有文件均可在工作站详情页面查看。", "final_step": "最后一步", "ignore_stored_data": "忽略已存储的数据", - "labware_offset_data": "耗材校准数据", "labware": "耗材", + "labware_offset_data": "耗材校准数据", "left": "左", "listed_values": "列出的值仅供查看", - "load_liquids_info_protocol_setup": "将{{liquid}}加载到{{labware}}中", + "load_labware_info_protocol_setup_plural": "在{{module_name}}中加载{{labware}}", "load_module_protocol_setup_plural": "加载{{module}}", - "load_module_protocol_setup": "在{{slot_name}}号板位中加载{{module}}", - "load_pipette_protocol_setup": "在{{mount_name}}安装位上加载{{pipette_name}}", - "loading_protocol": "正在加载协议", "loading_data": "正在加载数据...", + "loading_protocol": "正在加载协议", "location": "位置", "module_controls": "模块控制", "module_slot_number": "板位{{slot_number}}", "move_labware": "移动耗材", + "na": "不适用", "name": "名称", "no_files_included": "未包含协议文件", "no_of_error": "{{count}}个错误", @@ -74,9 +75,9 @@ "not_started_yet": "未开始", "off_deck": "甲板外", "parameters": "参数", + "pause": "暂停", "pause_protocol": "暂停协议", "pause_run": "暂停运行", - "pause": "暂停", "paused_for": "暂停原因", "pickup_tip": "从{{labware_location}}内的{{labware}}中的{{well_name}}孔位拾取吸头", "plus_more": "+{{count}}更多", @@ -100,39 +101,39 @@ "right": "右", "robot_has_previous_offsets": "该移液工作站已存储了之前运行协议的耗材校准数据。您想将这些数据应用于此协议的运行吗?您仍然可以通过实验器具位置检查调整校准数据。", "robot_was_recalibrated": "在储存此耗材校准数据后,移液工作站已重新校准", + "run": "运行", "run_again": "再次运行", + "run_canceled": "运行已取消。", "run_canceled_splash": "运行已取消", - "run_canceled_with_errors_splash": "因错误取消运行。", "run_canceled_with_errors": "因错误取消运行。", - "run_canceled": "运行已取消。", + "run_canceled_with_errors_splash": "因错误取消运行。", + "run_complete": "运行已完成", + "run_completed": "运行已完成。", "run_completed_splash": "运行完成", - "run_completed_with_warnings_splash": "运行完成,并伴有警告。", "run_completed_with_warnings": "运行完成,并伴有警告。", - "run_completed": "运行已完成。", - "run_complete_splash": "运行已完成", - "run_complete": "运行已完成", + "run_completed_with_warnings_splash": "运行完成,并伴有警告。", "run_cta_disabled": "在开始运行之前,请完成协议选项卡上的所有必要步骤。", + "run_failed": "运行失败。", "run_failed_modal_body": "在协议执行{{command}}时发生错误。", "run_failed_modal_header": "{{errorName}}:{{errorCode}}协议步骤{{count}}", "run_failed_modal_title": "运行失败", "run_failed_splash": "运行失败", - "run_failed": "运行失败。", "run_has_diverged_from_predicted": "运行已偏离预期状态。无法执行新的预期步骤。", "run_preview": "运行预览", "run_protocol": "运行协议", "run_status": "状态:{{status}}", "run_time": "运行时间", - "run": "运行", - "setup_incomplete": "完成“设置”选项卡中所需的步骤", "setup": "设置", + "setup_incomplete": "完成“设置”选项卡中所需的步骤", "slot": "板位{{slotName}}", + "start": "开始", "start_run": "开始运行", "start_step_time": "开始", "start_time": "开始时间", - "start": "开始", + "status": "状态", + "status_awaiting-recovery": "等待恢复", "status_awaiting-recovery-blocked-by-open-door": "暂停 - 门已打开", "status_awaiting-recovery-paused": "暂停", - "status_awaiting-recovery": "等待恢复", "status_blocked-by-open-door": "暂停 - 前门打开", "status_failed": "失败", "status_finishing": "结束中", @@ -142,9 +143,9 @@ "status_stop-requested": "请求停止", "status_stopped": "已取消", "status_succeeded": "已完成", - "status": "状态", "step": "步骤", "step_failed": "步骤失败", + "step_na": "步骤:不适用", "step_number": "步骤{{step_number}}:", "steps_total": "总计{{count}}步", "stored_labware_offset_data": "已储存适用于此协议的耗材校准数据", @@ -152,13 +153,13 @@ "temperature_not_available": "{{temperature_type}}: n/a", "thermocycler_error_tooltip": "模块遇到异常,请联系技术支持。", "total_elapsed_time": "总耗时", - "total_step_count_plural": "总计{{count}}步", "total_step_count": "总计{{count}}步", + "total_step_count_plural": "总计{{count}}步", "unable_to_determine_steps": "无法确定步骤", "view_analysis_error_details": "查看 错误详情", "view_current_step": "查看当前步骤", - "view_error_details": "查看错误详情", "view_error": "查看错误", + "view_error_details": "查看错误详情", "view_warning_details": "查看警告详情", "warning_details": "警告详情" } diff --git a/app/src/assets/localization/zh/shared.json b/app/src/assets/localization/zh/shared.json index 90b597b2820..694e7b80037 100644 --- a/app/src/assets/localization/zh/shared.json +++ b/app/src/assets/localization/zh/shared.json @@ -10,15 +10,16 @@ "change_protocol": "更改协议", "change_robot": "更换工作站", "clear_data": "清除数据", - "close_robot_door": "开始运行前请关闭工作站前门。", "close": "关闭", + "close_robot_door": "开始运行前请关闭工作站前门。", + "closed": "已关闭", + "confirm": "确认", "confirm_placement": "确认放置", "confirm_position": "确认位置", "confirm_values": "确认这些值", - "confirm": "确认", + "continue": "继续", "continue_activity": "继续活动", "continue_to_param": "继续设置参数", - "continue": "继续", "delete": "删除", "did_pipette_pick_up_tip": "移液器是否成功拾取吸头?", "disabled_cannot_connect": "无法连接到工作站", @@ -29,8 +30,8 @@ "drag_and_drop": "拖放或 浏览 您的文件", "empty": "空闲", "ending": "结束中", - "error_encountered": "遇到错误", "error": "错误", + "error_encountered": "遇到错误", "exit": "退出", "extension_mount": "扩展安装支架", "flow_complete": "{{flowName}}完成!", @@ -40,8 +41,8 @@ "instruments": "硬件", "loading": "加载中...", "next": "下一步", - "no_data": "无数据", "no": "否", + "no_data": "无数据", "none": "无", "not_used": "未使用", "off": "关闭", @@ -51,18 +52,18 @@ "proceed_to_setup": "继续设置", "protocol_run_general_error_msg": "无法在工作站上创建协议运行。", "reanalyze": "重新分析", - "refresh_list": "刷新列表", "refresh": "刷新", + "refresh_list": "刷新列表", "remember_my_selection_and_do_not_ask_again": "记住我的选择,不再询问", - "reset_all": "全部重置", "reset": "重置", + "reset_all": "全部重置", "restart": "重新启动", "resume": "继续", "return": "返回", "reverse": "按字母倒序排序", "robot_is_analyzing": "工作站正在分析", - "robot_is_busy_no_protocol_run_allowed": "此工作站正忙,无法运行此协议。转到工作站", "robot_is_busy": "工作站正忙", + "robot_is_busy_no_protocol_run_allowed": "此工作站正忙,无法运行此协议。转到工作站", "robot_is_reachable_but_not_responding": "此工作站的API服务器未能正确响应IP地址{{hostname}}处的请求", "robot_was_seen_but_is_unreachable": "最近看到此工作站,但当前无法访问IP地址{{hostname}}", "save": "保存", @@ -73,11 +74,11 @@ "starting": "启动中", "step": "步骤{{current}}/{{max}}", "stop": "停止", - "terminate_activity": "终止活动", "terminate": "终止远程活动", + "terminate_activity": "终止活动", "try_again": "重试", - "unknown_error": "发生未知错误", "unknown": "未知", + "unknown_error": "发生未知错误", "update": "更新", "view_latest_release_notes": "查看最新发布说明:", "yes": "是", diff --git a/app/src/assets/localization/zh/top_navigation.json b/app/src/assets/localization/zh/top_navigation.json index cb831731be9..79de9180bb8 100644 --- a/app/src/assets/localization/zh/top_navigation.json +++ b/app/src/assets/localization/zh/top_navigation.json @@ -1,20 +1,25 @@ { - "all_protocols": "全部协议", + "app_settings": "APP设置", "attached_pipettes_do_not_match": "安装的移液器与加载的协议中指定的移液器不匹配", "calibrate_deck_to_proceed": "校准甲板以继续", + "calibration_dashboard": "校准面板", "deck_setup": "甲板设置", + "device": "设备", "devices": "设备", "instruments": "硬件", "labware": "耗材", "modules": "模块", - "pipettes_not_calibrated": "请校准加载的协议中指定的所有移液器以继续", "pipettes": "移液器", + "pipettes_not_calibrated": "请校准加载的协议中指定的所有移液器以继续", "please_connect_to_a_robot": "请连接到工作站以继续", "please_load_a_protocol": "请加载协议以继续", + "protocol_details": "协议详细信息", "protocol_runs": "协议运行", + "protocol_timeline": "协议时间线", "protocols": "协议", "quick_transfer": "快速移液", "robot_settings": "工作站设置", "run": "运行", + "run_details": "运行详细信息", "settings": "设置" } From 18690a646aa9ffdb8c750967dc5aa7bd16845df1 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Thu, 9 Jan 2025 15:10:42 -0500 Subject: [PATCH 12/81] chore(build): update to actions/*-artifact v4 (#17231) Came up for PD ( #17229 ), probably will come up here too. Let's get ahead of it. If the build passes this should be fine. --- .github/workflows/app-test-build-deploy.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/app-test-build-deploy.yaml b/.github/workflows/app-test-build-deploy.yaml index da43d601115..873bfe65c07 100644 --- a/.github/workflows/app-test-build-deploy.yaml +++ b/.github/workflows/app-test-build-deploy.yaml @@ -370,7 +370,7 @@ jobs: - name: 'upload github artifact' if: matrix.target == 'desktop' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: 'opentrons-${{matrix.variant}}-${{ matrix.os }}' path: app-shell/dist/publish @@ -392,7 +392,7 @@ jobs: if: contains(fromJSON(needs.determine-build-type.outputs.variants), 'release') || contains(fromJSON(needs.determine-build-type.outputs.variants), 'internal-release') steps: - name: 'download run app builds' - uses: 'actions/download-artifact@v3' + uses: 'actions/download-artifact@v4' with: path: ./artifacts - name: 'separate release and internal-release artifacts' From cf940fe03745d73e3883ae0e5278574b8c004a14 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 10 Jan 2025 08:35:14 -0700 Subject: [PATCH 13/81] fix(app): fix terminal banner render state (#17240) Closes RQA-3840 --- .../RunHeaderBannerContainer/TerminalRunBannerContainer.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx index c6428c2f385..ec70dcdf189 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx @@ -40,12 +40,15 @@ export function useTerminalRunBannerContainer({ const completedWithErrors = (commandErrorList != null && commandErrorList.length > 0) || highestPriorityError != null + // TODO(jh, 01-10-25): Adding /commandErrors to notifications accomplishes the below with reduced latency. + const completedWithNoErrors = + commandErrorList != null && commandErrorList.length === 0 const showSuccessBanner = runStatus === RUN_STATUS_SUCCEEDED && isRunCurrent && !isResetRunLoading && - !completedWithErrors + completedWithNoErrors // TODO(jh, 08-14-24): Ideally, the backend never returns the "user cancelled a run" error and // cancelledWithoutRecovery becomes unnecessary. From b13cd27329c8f70a72bbc616a9cd70b451c6302b Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 10 Jan 2025 09:11:35 -0700 Subject: [PATCH 14/81] fix(app): Fix gripper recovery loop (#17241) Closes RQA-3841 --- .../ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx | 2 +- .../shared/__tests__/GripperIsHoldingLabware.test.tsx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx index 6f4157bc909..d198dcc8dac 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx @@ -55,6 +55,7 @@ export function GripperIsHoldingLabware({ // after the user has extricated the labware from the gripper jaws. void handleMotionRouting(true) .then(() => homeExceptPlungers()) + .finally(() => handleMotionRouting(false)) .then(() => { switch (selectedRecoveryOption) { case MANUAL_MOVE_AND_SKIP.ROUTE: @@ -73,7 +74,6 @@ export function GripperIsHoldingLabware({ } } }) - .finally(() => handleMotionRouting(false)) } const primaryOnClick = (): void => { diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx index 3279bdfea7c..875c79fe09c 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/GripperIsHoldingLabware.test.tsx @@ -96,16 +96,16 @@ describe('GripperIsHoldingLabware', () => { expect(mockHomeExceptPlungers).toHaveBeenCalled() }) + await waitFor(() => { + expect(mockHandleMotionRouting).toHaveBeenCalledWith(false) + }) + await waitFor(() => { expect(mockProceedToRouteAndStep).toHaveBeenCalledWith( RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE ) }) - - await waitFor(() => { - expect(mockHandleMotionRouting).toHaveBeenCalledWith(false) - }) }) it(`proceeds to the correct step when the no option is clicked for ${RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE}`, async () => { From 02b6a422e6fd89e9bb6280142e758dad9c342605 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Fri, 10 Jan 2025 12:05:18 -0500 Subject: [PATCH 15/81] chore(hardware): Add some logging around what I think is causing some can errors (#17117) # Overview We occasionally get some ABR issues where the can bus says it's not receiving ACKs or that a move group says it didn't get all expected nodes, but reports [] as the missing nodes. I think the second bug is because we're checking with `if not self._moves[group_id]` instead of checking `if len(self._moves[group_id]) == 0:` Which should be equivalent but I think there may be some python cleanup bug that reports the list as true due to a remnant that hasn't been garbage collected yet. ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../opentrons_hardware/drivers/can_bus/can_messenger.py | 6 ++++-- .../hardware_control/move_group_runner.py | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hardware/opentrons_hardware/drivers/can_bus/can_messenger.py b/hardware/opentrons_hardware/drivers/can_bus/can_messenger.py index c0b49e376bb..0184c5e5c1f 100644 --- a/hardware/opentrons_hardware/drivers/can_bus/can_messenger.py +++ b/hardware/opentrons_hardware/drivers/can_bus/can_messenger.py @@ -152,7 +152,7 @@ async def send_and_verify_recieved(self) -> ErrorCode: ) except asyncio.TimeoutError: log.error( - f"Message did not receive ack for message index {self._message.payload.message_index}" + f"Message did not receive ack for message index {self._message.payload.message_index} Missing node(s) {self._expected_nodes}" ) return ErrorCode.timeout finally: @@ -278,12 +278,14 @@ async def _ensure_send( exclusive: bool = False, ) -> ErrorCode: if len(expected_nodes) == 0: - log.warning("Expected Nodes should have been specified") if node_id == NodeId.broadcast: if not expected_nodes: expected_nodes = list(self._known_nodes) else: expected_nodes = [node_id] + log.warning( + f"Expected Nodes should have been specified, Setting expected nodes to {expected_nodes}" + ) listener = AcknowledgeListener( can_messenger=self, diff --git a/hardware/opentrons_hardware/hardware_control/move_group_runner.py b/hardware/opentrons_hardware/hardware_control/move_group_runner.py index 1b7baf61d6d..9d9ff583ec7 100644 --- a/hardware/opentrons_hardware/hardware_control/move_group_runner.py +++ b/hardware/opentrons_hardware/hardware_control/move_group_runner.py @@ -469,6 +469,10 @@ def _remove_move_group( f"Received completion for {node_id} group {group_id} seq {seq_id}" f", which {'is' if in_group else 'isn''t'} in group" ) + if self._moves[group_id] and len(self._moves[group_id]) == 0: + log.error( + f"Python bug proven if check {bool(not self._moves[group_id])} len check {len(self._moves[group_id]) == 0}" + ) if not self._moves[group_id]: log.debug(f"Move group {group_id+self._start_at_index} has completed.") self._event.set() From 3a46ebe7dd219dff386f980255283d2db0ecb59c Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 10 Jan 2025 10:15:52 -0700 Subject: [PATCH 16/81] fix(app): Fix persistent "run in progress" settings banner after run cancel (#17235) Closes RQA-3838 --- .../local-resources/commands/utils/index.ts | 1 - .../lastRunCommandPromptedErrorRecovery.ts | 13 -------- .../TerminalRunBannerContainer.tsx | 8 ++--- .../hooks/useRunHeaderDropTip.ts | 32 +++---------------- .../ProtocolRunHeader/hooks/useRunErrors.ts | 6 +--- app/src/pages/ODD/RunSummary/index.tsx | 18 ++--------- 6 files changed, 9 insertions(+), 69 deletions(-) delete mode 100644 app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts diff --git a/app/src/local-resources/commands/utils/index.ts b/app/src/local-resources/commands/utils/index.ts index cc4e9c2579a..7aa84d14de5 100644 --- a/app/src/local-resources/commands/utils/index.ts +++ b/app/src/local-resources/commands/utils/index.ts @@ -1,2 +1 @@ export * from './getCommandTextData' -export * from './lastRunCommandPromptedErrorRecovery' diff --git a/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts b/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts deleted file mode 100644 index dd07756ef43..00000000000 --- a/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { RunCommandSummary } from '@opentrons/api-client' - -// Whether the last run protocol command prompted Error Recovery. -export function lastRunCommandPromptedErrorRecovery( - summary: RunCommandSummary[] -): boolean { - const lastProtocolCommand = summary.findLast( - command => command.intent !== 'fixit' && command.error != null - ) - - // All recoverable protocol commands have defined errors. - return lastProtocolCommand?.error?.isDefined ?? false -} diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx index ec70dcdf189..4148a791611 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/TerminalRunBannerContainer.tsx @@ -121,14 +121,10 @@ function ProtocolRunErrorBanner({ const { closeCurrentRun } = useCloseCurrentRun() - const { highestPriorityError, commandErrorList } = runErrors + const { highestPriorityError } = runErrors const handleFailedRunClick = (): void => { - // TODO(jh, 08-15-24): Revisit the control flow here here after - // commandErrorList may be fetched for a non-current run. - if (commandErrorList == null) { - closeCurrentRun() - } + closeCurrentRun() runHeaderModalContainerUtils.runFailedModalUtils.toggleModal() } diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index 82d9c30c84b..0ff96a562df 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -5,13 +5,8 @@ import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { useDropTipWizardFlows } from '/app/organisms/DropTipWizardFlows' import { useProtocolDropTipModal } from '../modals' -import { - useCloseCurrentRun, - useCurrentRunCommands, - useIsRunCurrent, -} from '/app/resources/runs' +import { useCloseCurrentRun, useIsRunCurrent } from '/app/resources/runs' import { isTerminalRunStatus } from '../../utils' -import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import { useTipAttachmentStatus } from '/app/resources/instruments' import type { RobotType } from '@opentrons/shared-data' @@ -104,35 +99,17 @@ export function useRunHeaderDropTip({ : { showDTWiz: false, dtWizProps: null } } - const runSummaryNoFixit = useCurrentRunCommands( - { - includeFixitCommands: false, - pageLength: 1, - }, - { enabled: isTerminalRunStatus(runStatus) } - ) // Manage tip checking useEffect(() => { // If a user begins a new run without navigating away from the run page, reset tip status. if (robotType === FLEX_ROBOT_TYPE) { if (runStatus === RUN_STATUS_IDLE) { resetTipStatus() - } - // Only determine tip status when necessary as this can be an expensive operation. Error Recovery handles tips, so don't - // have to do it here if done during Error Recovery. - else if ( - runSummaryNoFixit != null && - runSummaryNoFixit.length > 0 && - !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) && - isTerminalRunStatus(runStatus) - ) { + } else if (isRunCurrent && isTerminalRunStatus(runStatus)) { void determineTipStatus() } } - }, [runStatus, robotType, runSummaryNoFixit]) - - // TODO(jh, 08-15-24): The enteredER condition is a hack, because errorCommands are only returned when a run is current. - // Ideally the run should not need to be current to view errorCommands. + }, [runStatus, robotType, isRunCurrent]) // If the run terminates with a "stopped" status, close the run if no tips are attached after running tip check at least once. // This marks the robot as "not busy" if drop tip CTAs are unnecessary. @@ -140,8 +117,7 @@ export function useRunHeaderDropTip({ if ( runStatus === RUN_STATUS_STOPPED && isRunCurrent && - (initialPipettesWithTipsCount === 0 || robotType === OT2_ROBOT_TYPE) && - !enteredER + (initialPipettesWithTipsCount === 0 || robotType === OT2_ROBOT_TYPE) ) { closeCurrentRun() } diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/hooks/useRunErrors.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/hooks/useRunErrors.ts index 4d66b367a0e..593c435029b 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/hooks/useRunErrors.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/hooks/useRunErrors.ts @@ -1,7 +1,6 @@ import { useRunCommandErrors } from '@opentrons/react-api-client' import { isTerminalRunStatus } from '../utils' -import { useMostRecentRunId } from '/app/resources/runs' import { getHighestPriorityError } from '/app/transformations/runs' import type { RunStatus, Run } from '@opentrons/api-client' @@ -27,14 +26,11 @@ export function useRunErrors({ runRecord, runStatus, }: UseRunErrorsProps): UseRunErrorsResult { - const mostRecentRunId = useMostRecentRunId() - const isMostRecentRun = mostRecentRunId === runId - const { data: commandErrorList } = useRunCommandErrors( runId, { cursor: 0, pageLength: ALL_COMMANDS_PAGE_LENGTH }, { - enabled: isTerminalRunStatus(runStatus) && isMostRecentRun, + enabled: isTerminalRunStatus(runStatus), } ) diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index 86aec6aaf87..9d1f73d7e3b 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -65,10 +65,8 @@ import { useRunCreatedAtTimestamp, useCloseCurrentRun, EMPTY_TIMESTAMP, - useCurrentRunCommands, } from '/app/resources/runs' import { handleTipsAttachedModal } from '/app/organisms/DropTipWizardFlows' -import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import { useTipAttachmentStatus } from '/app/resources/instruments' import type { IconName } from '@opentrons/components' @@ -236,21 +234,9 @@ export function RunSummary(): JSX.Element { runRecord: runRecord ?? null, }) - // Determine tip status on initial render only. Error Recovery always handles tip status, so don't show it twice. - const runSummaryNoFixit = useCurrentRunCommands({ - includeFixitCommands: false, - pageLength: 1, - }) useEffect(() => { - if ( - isRunCurrent && - runSummaryNoFixit != null && - runSummaryNoFixit.length > 0 && - !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) - ) { - void determineTipStatus() - } - }, [runSummaryNoFixit, isRunCurrent]) + void determineTipStatus() + }, []) const returnToQuickTransfer = (): void => { closeCurrentRunIfValid(() => { From ec494101a6aff31784a0cdbbab082d43d0962bcc Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 10 Jan 2025 13:37:56 -0700 Subject: [PATCH 17/81] fix(app): Inject labware definitions into Error Recovery (#17248) Closes RQA-3814 --- .../RunHeaderModalContainer.tsx | 1 + .../ErrorRecoveryFlows/__fixtures__/index.ts | 1 + .../__tests__/ErrorRecoveryFlows.test.tsx | 25 ++++++++- .../hooks/__tests__/useDeckMapUtils.test.ts | 24 +++------ .../hooks/useDeckMapUtils.ts | 52 ++++++++---------- .../ErrorRecoveryFlows/hooks/useERUtils.ts | 11 ++-- .../organisms/ErrorRecoveryFlows/index.tsx | 53 +++++++++++++------ .../__tests__/RunningProtocol.test.tsx | 2 + app/src/pages/ODD/RunningProtocol/index.tsx | 6 ++- .../useRunLoadedLabwareDefinitionsByUri.ts | 24 +++++---- 10 files changed, 116 insertions(+), 83 deletions(-) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/RunHeaderModalContainer.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/RunHeaderModalContainer.tsx index 0c306339f69..8486296122b 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/RunHeaderModalContainer.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/RunHeaderModalContainer.tsx @@ -52,6 +52,7 @@ export function RunHeaderModalContainer( runStatus={runStatus} runId={runId} unvalidatedFailedCommand={recoveryModalUtils.failedCommand} + runLwDefsByUri={recoveryModalUtils.runLwDefsByUri} protocolAnalysis={robotProtocolAnalysis} /> ) : null} diff --git a/app/src/organisms/ErrorRecoveryFlows/__fixtures__/index.ts b/app/src/organisms/ErrorRecoveryFlows/__fixtures__/index.ts index 1a815b99c1e..aaf0b89e062 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__fixtures__/index.ts +++ b/app/src/organisms/ErrorRecoveryFlows/__fixtures__/index.ts @@ -58,6 +58,7 @@ export const mockRecoveryContentProps: RecoveryContentProps = { byRunRecord: mockFailedCommand, byAnalysis: mockFailedCommand, }, + runLwDefsByUri: {} as any, errorKind: 'GENERAL_ERROR', robotType: FLEX_ROBOT_TYPE, runId: 'MOCK_RUN_ID', diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx index 53bc8c15a8b..47f1668af87 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx @@ -45,6 +45,7 @@ vi.mock('react-redux', async () => { describe('useErrorRecoveryFlows', () => { beforeEach(() => { vi.mocked(useCurrentlyRecoveringFrom).mockReturnValue('mockCommand' as any) + vi.mocked(useRunLoadedLabwareDefinitionsByUri).mockReturnValue({}) }) it('should have initial state of isERActive as false', () => { @@ -89,12 +90,32 @@ describe('useErrorRecoveryFlows', () => { expect(result.current.failedCommand).toEqual('mockCommand') }) + it("should return the run's labware definitions", () => { + const { result } = renderHook(() => + useErrorRecoveryFlows('MOCK_ID', RUN_STATUS_RUNNING) + ) + + expect(result.current.failedCommand).toEqual('mockCommand') + }) + it(`should return isERActive false if the run status is ${RUN_STATUS_STOP_REQUESTED} before seeing ${RUN_STATUS_AWAITING_RECOVERY}`, () => { const { result } = renderHook(() => useErrorRecoveryFlows('MOCK_ID', RUN_STATUS_STOP_REQUESTED) ) - expect(result.current.isERActive).toEqual(false) + expect(result.current.runLwDefsByUri).toEqual({}) + }) + + it('should not return isERActive if the run labware defintions is null', () => { + vi.mocked(useRunLoadedLabwareDefinitionsByUri).mockReturnValue(null) + + const { result } = renderHook( + runStatus => useErrorRecoveryFlows('MOCK_ID', runStatus), + { + initialProps: RUN_STATUS_AWAITING_RECOVERY, + } + ) + expect(result.current.isERActive).toBe(false) }) it('should set hasSeenAwaitingRecovery to true when runStatus is RUN_STATUS_AWAITING_RECOVERY', () => { @@ -143,6 +164,7 @@ describe('ErrorRecoveryFlows', () => { unvalidatedFailedCommand: mockFailedCommand, runId: 'MOCK_RUN_ID', protocolAnalysis: null, + runLwDefsByUri: {}, } vi.mocked(ErrorRecoveryWizard).mockReturnValue(
MOCK WIZARD
) vi.mocked(RecoverySplash).mockReturnValue(
MOCK RUN PAUSED SPLASH
) @@ -167,7 +189,6 @@ describe('ErrorRecoveryFlows', () => { intent: 'recovering', showTakeover: false, }) - vi.mocked(useRunLoadedLabwareDefinitionsByUri).mockReturnValue({}) }) it('renders the wizard when showERWizard is true', () => { diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useDeckMapUtils.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useDeckMapUtils.test.ts index 1a6d07ba634..5b6855a9e7d 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useDeckMapUtils.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useDeckMapUtils.test.ts @@ -198,17 +198,7 @@ describe('getRunCurrentModulesInfo', () => { const result = getRunCurrentModulesInfo({ runRecord: null as any, deckDef: mockDeckDef, - labwareDefinitionsByUri: {}, - }) - - expect(result).toEqual([]) - }) - - it('should return an empty array if protocolAnalysis is null', () => { - const result = getRunCurrentModulesInfo({ - runRecord: mockRunRecord, - deckDef: mockDeckDef, - labwareDefinitionsByUri: null, + runLwDefsByUri: {}, }) expect(result).toEqual([]) @@ -219,7 +209,7 @@ describe('getRunCurrentModulesInfo', () => { const result = getRunCurrentModulesInfo({ runRecord: mockRunRecord, deckDef: mockDeckDef, - labwareDefinitionsByUri: { + runLwDefsByUri: { 'opentrons/opentrons_96_pcr_adapter/1': 'MOCK_LW_DEF', } as any, }) @@ -242,7 +232,7 @@ describe('getRunCurrentModulesInfo', () => { data: { modules: [mockModule], labware: [] }, }, deckDef: mockDeckDef, - labwareDefinitionsByUri: {}, + runLwDefsByUri: {}, }) expect(result).toEqual([ { @@ -261,7 +251,7 @@ describe('getRunCurrentModulesInfo', () => { const result = getRunCurrentModulesInfo({ runRecord: mockRunRecord, deckDef: mockDeckDef, - labwareDefinitionsByUri: null, + runLwDefsByUri: {}, }) expect(result).toEqual([]) }) @@ -286,7 +276,7 @@ describe('getRunCurrentLabwareInfo', () => { it('should return an empty array if runRecord is null', () => { const result = getRunCurrentLabwareInfo({ runRecord: undefined, - labwareDefinitionsByUri: {} as any, + runLwDefsByUri: {} as any, }) expect(result).toEqual([]) @@ -295,7 +285,7 @@ describe('getRunCurrentLabwareInfo', () => { it('should return an empty array if protocolAnalysis is null', () => { const result = getRunCurrentLabwareInfo({ runRecord: { data: { labware: [] } } as any, - labwareDefinitionsByUri: null, + runLwDefsByUri: {}, }) expect(result).toEqual([]) @@ -309,7 +299,7 @@ describe('getRunCurrentLabwareInfo', () => { const result = getRunCurrentLabwareInfo({ runRecord: { data: { labware: [mockPickUpTipLwSlotName] } } as any, - labwareDefinitionsByUri: { + runLwDefsByUri: { [mockPickUpTipLabware.definitionUri]: mockLabwareDef, }, }) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useDeckMapUtils.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useDeckMapUtils.ts index 458747f5b07..22dd645835a 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useDeckMapUtils.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useDeckMapUtils.ts @@ -42,7 +42,7 @@ interface UseDeckMapUtilsProps { runId: ErrorRecoveryFlowsProps['runId'] protocolAnalysis: ErrorRecoveryFlowsProps['protocolAnalysis'] failedLabwareUtils: UseFailedLabwareUtilsResult - labwareDefinitionsByUri: ERUtilsProps['labwareDefinitionsByUri'] + runLwDefsByUri: ERUtilsProps['runLwDefsByUri'] runRecord: Run | undefined } @@ -65,7 +65,7 @@ export function useDeckMapUtils({ runRecord, runId, failedLabwareUtils, - labwareDefinitionsByUri, + runLwDefsByUri, }: UseDeckMapUtilsProps): UseDeckMapUtilsResult { const robotType = protocolAnalysis?.robotType ?? OT2_ROBOT_TYPE const deckConfig = getSimplestDeckConfigForProtocol(protocolAnalysis) @@ -78,9 +78,9 @@ export function useDeckMapUtils({ getRunCurrentModulesInfo({ runRecord, deckDef, - labwareDefinitionsByUri, + runLwDefsByUri, }), - [runRecord, deckDef, labwareDefinitionsByUri] + [runRecord, deckDef, runLwDefsByUri] ) const runCurrentModules = useMemo( @@ -94,8 +94,8 @@ export function useDeckMapUtils({ ) const currentLabwareInfo = useMemo( - () => getRunCurrentLabwareInfo({ runRecord, labwareDefinitionsByUri }), - [runRecord, labwareDefinitionsByUri] + () => getRunCurrentLabwareInfo({ runRecord, runLwDefsByUri }), + [runRecord, runLwDefsByUri] ) const { updatedModules, remainingLabware } = useMemo( @@ -114,32 +114,24 @@ export function useDeckMapUtils({ ) const movedLabwareDef = - labwareDefinitionsByUri != null && failedLabwareUtils.failedLabware != null - ? labwareDefinitionsByUri[failedLabwareUtils.failedLabware.definitionUri] + runLwDefsByUri != null && failedLabwareUtils.failedLabware != null + ? runLwDefsByUri[failedLabwareUtils.failedLabware.definitionUri] : null const moduleRenderInfo = useMemo( () => - runRecord != null && labwareDefinitionsByUri != null - ? getRunModuleRenderInfo( - runRecord.data, - deckDef, - labwareDefinitionsByUri - ) + runRecord != null && runLwDefsByUri != null + ? getRunModuleRenderInfo(runRecord.data, deckDef, runLwDefsByUri) : [], - [deckDef, labwareDefinitionsByUri, runRecord] + [deckDef, runLwDefsByUri, runRecord] ) const labwareRenderInfo = useMemo( () => - runRecord != null && labwareDefinitionsByUri != null - ? getRunLabwareRenderInfo( - runRecord.data, - labwareDefinitionsByUri, - deckDef - ) + runRecord != null && runLwDefsByUri != null + ? getRunLabwareRenderInfo(runRecord.data, runLwDefsByUri, deckDef) : [], - [deckDef, labwareDefinitionsByUri, runRecord] + [deckDef, runLwDefsByUri, runRecord] ) return { @@ -258,13 +250,13 @@ interface RunCurrentModuleInfo { export const getRunCurrentModulesInfo = ({ runRecord, deckDef, - labwareDefinitionsByUri, + runLwDefsByUri, }: { runRecord: UseDeckMapUtilsProps['runRecord'] deckDef: DeckDefinition - labwareDefinitionsByUri?: LabwareDefinitionsByUri | null + runLwDefsByUri: UseDeckMapUtilsProps['runLwDefsByUri'] }): RunCurrentModuleInfo[] => { - if (runRecord == null || labwareDefinitionsByUri == null) { + if (runRecord == null) { return [] } else { return runRecord.data.modules.reduce( @@ -281,7 +273,7 @@ export const getRunCurrentModulesInfo = ({ const nestedLabwareDef = nestedLabware != null - ? labwareDefinitionsByUri[nestedLabware.definitionUri] + ? runLwDefsByUri[nestedLabware.definitionUri] : null const slotPosition = getPositionFromSlotId( @@ -325,12 +317,12 @@ interface RunCurrentLabwareInfo { // Derive the labware info necessary to render labware on the deck. export function getRunCurrentLabwareInfo({ runRecord, - labwareDefinitionsByUri, + runLwDefsByUri, }: { runRecord: UseDeckMapUtilsProps['runRecord'] - labwareDefinitionsByUri?: LabwareDefinitionsByUri | null + runLwDefsByUri: UseDeckMapUtilsProps['runLwDefsByUri'] }): RunCurrentLabwareInfo[] { - if (runRecord == null || labwareDefinitionsByUri == null) { + if (runRecord == null) { return [] } else { const allLabware = runRecord.data.labware.reduce( @@ -341,7 +333,7 @@ export function getRunCurrentLabwareInfo({ runRecord, true ) // Exclude modules since handled separately. - const labwareDef = getLabwareDefinition(lw, labwareDefinitionsByUri) + const labwareDef = getLabwareDefinition(lw, runLwDefsByUri) if (slotName == null || labwareLocation == null) { return acc diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts index 72e9bb481bc..4bd4a93643f 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts @@ -22,11 +22,7 @@ import { useCleanupRecoveryState } from './useCleanupRecoveryState' import { useFailedPipetteUtils } from './useFailedPipetteUtils' import { getRunningStepCountsFrom } from '/app/resources/protocols' -import type { - LabwareDefinition2, - LabwareDefinitionsByUri, - RobotType, -} from '@opentrons/shared-data' +import type { LabwareDefinition2, RobotType } from '@opentrons/shared-data' import type { IRecoveryMap, RouteStep, RecoveryRoute } from '../types' import type { ErrorRecoveryFlowsProps } from '..' import type { UseRouteUpdateActionsResult } from './useRouteUpdateActions' @@ -54,7 +50,6 @@ export type ERUtilsProps = Omit & { failedCommand: ReturnType isActiveUser: UseRecoveryTakeoverResult['isActiveUser'] allRunDefs: LabwareDefinition2[] - labwareDefinitionsByUri: LabwareDefinitionsByUri | null } export interface ERUtilsResults { @@ -90,7 +85,7 @@ export function useERUtils({ isActiveUser, allRunDefs, unvalidatedFailedCommand, - labwareDefinitionsByUri, + runLwDefsByUri, }: ERUtilsProps): ERUtilsResults { const { data: attachedInstruments } = useInstrumentsQuery() const { data: runRecord } = useNotifyRunQuery(runId) @@ -185,7 +180,7 @@ export function useERUtils({ runRecord, protocolAnalysis, failedLabwareUtils, - labwareDefinitionsByUri, + runLwDefsByUri, }) const recoveryActionMutationUtils = useRecoveryActionMutation( diff --git a/app/src/organisms/ErrorRecoveryFlows/index.tsx b/app/src/organisms/ErrorRecoveryFlows/index.tsx index 84938e2db77..24834c86305 100644 --- a/app/src/organisms/ErrorRecoveryFlows/index.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/index.tsx @@ -28,11 +28,12 @@ import { useRecoveryTakeover, useRetainedFailedCommandBySource, } from './hooks' +import { useRunLoadedLabwareDefinitionsByUri } from '/app/resources/runs' import type { RunStatus } from '@opentrons/api-client' import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' import type { FailedCommand } from './types' -import { useRunLoadedLabwareDefinitionsByUri } from '/app/resources/runs' +import type { RunLoadedLabwareDefinitionsByUri } from '/app/resources/runs' const VALID_ER_RUN_STATUSES: RunStatus[] = [ RUN_STATUS_AWAITING_RECOVERY, @@ -53,10 +54,24 @@ const INVALID_ER_RUN_STATUSES: RunStatus[] = [ RUN_STATUS_IDLE, ] -export interface UseErrorRecoveryResult { +interface UseErrorRecoveryResultBase { isERActive: boolean failedCommand: FailedCommand | null + runLwDefsByUri: ReturnType +} +export interface UseErrorRecoveryActiveResult + extends UseErrorRecoveryResultBase { + isERActive: true + failedCommand: FailedCommand + runLwDefsByUri: RunLoadedLabwareDefinitionsByUri +} +export interface UseErrorRecoveryInactiveResult + extends UseErrorRecoveryResultBase { + isERActive: false } +export type UseErrorRecoveryResult = + | UseErrorRecoveryInactiveResult + | UseErrorRecoveryActiveResult export function useErrorRecoveryFlows( runId: string, @@ -64,6 +79,7 @@ export function useErrorRecoveryFlows( ): UseErrorRecoveryResult { const [isERActive, setIsERActive] = useState(false) const failedCommand = useCurrentlyRecoveringFrom(runId, runStatus) + const runLwDefsByUri = useRunLoadedLabwareDefinitionsByUri(runId) // The complexity of this logic exists to persist Error Recovery screens past the server's definition of Error Recovery. // Ex, show a "cancelling run" modal in Error Recovery flows despite the robot no longer being in a recoverable state. @@ -85,8 +101,7 @@ export function useErrorRecoveryFlows( if (runStatus != null) { const isAwaitingRecovery = VALID_ER_RUN_STATUSES.includes(runStatus) && - runStatus !== RUN_STATUS_STOP_REQUESTED && - failedCommand != null // Prevents one render cycle of an unknown failed command. + runStatus !== RUN_STATUS_STOP_REQUESTED if (isAwaitingRecovery) { setIsERActive(isValidERStatus(runStatus, true)) @@ -96,10 +111,14 @@ export function useErrorRecoveryFlows( } }, [runStatus, failedCommand]) - return { - isERActive, - failedCommand, - } + // Gate ER rendering on data derived from key network requests. + return isERActive && failedCommand != null && runLwDefsByUri != null + ? { + isERActive: true, + failedCommand, + runLwDefsByUri, + } + : { isERActive: false, failedCommand, runLwDefsByUri } } export interface ErrorRecoveryFlowsProps { @@ -109,14 +128,20 @@ export interface ErrorRecoveryFlowsProps { * information derived from the failed command from the run record even if there is no matching command in protocol analysis. * Using a failed command that is not matched to a protocol analysis command is unsafe in most circumstances (ie, in * non-generic recovery flows. Prefer using failedCommandBySource in most circumstances. */ - unvalidatedFailedCommand: FailedCommand | null + unvalidatedFailedCommand: UseErrorRecoveryActiveResult['failedCommand'] + runLwDefsByUri: UseErrorRecoveryActiveResult['runLwDefsByUri'] protocolAnalysis: CompletedProtocolAnalysis | null } export function ErrorRecoveryFlows( props: ErrorRecoveryFlowsProps ): JSX.Element | null { - const { protocolAnalysis, runStatus, unvalidatedFailedCommand, runId } = props + const { + protocolAnalysis, + runStatus, + unvalidatedFailedCommand, + runLwDefsByUri, + } = props const failedCommandBySource = useRetainedFailedCommandBySource( unvalidatedFailedCommand, @@ -128,11 +153,7 @@ export function ErrorRecoveryFlows( const robotType = protocolAnalysis?.robotType ?? OT2_ROBOT_TYPE const robotName = useHost()?.robotName ?? 'robot' - const labwareDefinitionsByUri = useRunLoadedLabwareDefinitionsByUri(runId) - const allRunDefs = - labwareDefinitionsByUri != null - ? Object.values(labwareDefinitionsByUri) - : [] + const allRunDefs = runLwDefsByUri != null ? Object.values(runLwDefsByUri) : [] const { showTakeover, @@ -150,7 +171,7 @@ export function ErrorRecoveryFlows( isActiveUser, failedCommand: failedCommandBySource, allRunDefs, - labwareDefinitionsByUri, + runLwDefsByUri, }) const renderWizard = diff --git a/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx b/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx index 33d6f79e9a7..cbb45387a5a 100644 --- a/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx +++ b/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx @@ -161,6 +161,7 @@ describe('RunningProtocol', () => { vi.mocked(useErrorRecoveryFlows).mockReturnValue({ isERActive: false, failedCommand: {} as any, + runLwDefsByUri: {} as any, }) vi.mocked(useInterventionModal).mockReturnValue({ showModal: false, @@ -224,6 +225,7 @@ describe('RunningProtocol', () => { vi.mocked(useErrorRecoveryFlows).mockReturnValue({ isERActive: true, failedCommand: {} as any, + runLwDefsByUri: {} as any, }) render(`/runs/${RUN_ID}/run`) screen.getByText('MOCK ERROR RECOVERY') diff --git a/app/src/pages/ODD/RunningProtocol/index.tsx b/app/src/pages/ODD/RunningProtocol/index.tsx index 33d9d515930..eee50894ebb 100644 --- a/app/src/pages/ODD/RunningProtocol/index.tsx +++ b/app/src/pages/ODD/RunningProtocol/index.tsx @@ -122,7 +122,10 @@ export function RunningProtocol(): JSX.Element { const { trackProtocolRunEvent } = useTrackProtocolRunEvent(runId, robotName) const robotAnalyticsData = useRobotAnalyticsData(robotName) const robotType = useRobotType(robotName) - const { isERActive, failedCommand } = useErrorRecoveryFlows(runId, runStatus) + const { isERActive, failedCommand, runLwDefsByUri } = useErrorRecoveryFlows( + runId, + runStatus + ) const { showModal: showIntervention, modalProps: interventionProps, @@ -169,6 +172,7 @@ export function RunningProtocol(): JSX.Element { runStatus={runStatus} runId={runId} unvalidatedFailedCommand={failedCommand} + runLwDefsByUri={runLwDefsByUri} protocolAnalysis={robotSideAnalysis} /> ) : null} diff --git a/app/src/resources/runs/useRunLoadedLabwareDefinitionsByUri.ts b/app/src/resources/runs/useRunLoadedLabwareDefinitionsByUri.ts index d7ffb086d10..9a785cb99df 100644 --- a/app/src/resources/runs/useRunLoadedLabwareDefinitionsByUri.ts +++ b/app/src/resources/runs/useRunLoadedLabwareDefinitionsByUri.ts @@ -18,23 +18,29 @@ export type RunLoadedLabwareDefinitionsByUri = Record< // Returns a record of labware definitions keyed by URI for the labware that // has been loaded with a "loadLabware" command. Errors if the run is not the current run. +// Returns null if the network request is pending. export function useRunLoadedLabwareDefinitionsByUri( runId: string | null, options: UseQueryOptions = {}, hostOverride?: HostConfig -): RunLoadedLabwareDefinitionsByUri { +): RunLoadedLabwareDefinitionsByUri | null { const { data } = useRunLoadedLabwareDefinitions(runId, options, hostOverride) return useMemo(() => { const result: Record = {} - // @ts-expect-error TODO(jh, 10-12-24): Update the app's typing to support LabwareDefinition3. - data?.data.forEach((def: LabwareDefinition2) => { - if ('schemaVersion' in def) { - const lwUri = getLabwareDefURI(def) - result[lwUri] = def - } - }) - return result + if (data == null) { + return null + } else { + // @ts-expect-error TODO(jh, 10-12-24): Update the app's typing to support LabwareDefinition3. + data?.data.forEach((def: LabwareDefinition2) => { + if ('schemaVersion' in def) { + const lwUri = getLabwareDefURI(def) + result[lwUri] = def + } + }) + + return result + } }, [data]) } From 871aa94696da8ad6c4975c6db8a7fdb5f77f0360 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Tue, 14 Jan 2025 13:05:47 -0500 Subject: [PATCH 18/81] feat(app): Block evotips labware from appearing in labware tab (#17251) fix EXEC-1085 --- .../local-resources/labware/hooks/useAllLabware.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/local-resources/labware/hooks/useAllLabware.ts b/app/src/local-resources/labware/hooks/useAllLabware.ts index 28d4325b2eb..b118113ad55 100644 --- a/app/src/local-resources/labware/hooks/useAllLabware.ts +++ b/app/src/local-resources/labware/hooks/useAllLabware.ts @@ -3,12 +3,21 @@ import { getValidCustomLabware } from '/app/redux/custom-labware' import { getAllDefinitions } from '../utils' import type { LabwareSort, LabwareFilter, LabwareDefAndDate } from '../types' +// labware to filter out from the labware tab of the desktop app +// TODO (sb:1/14/25) remove evotips from blocklist before public launch +const LABWARE_LOADNAME_BLOCKLIST = [ + 'evotips_flex_96_tiprack_adapter', + 'evotips_opentrons_96_labware', +] + export function useAllLabware( sortBy: LabwareSort, filterBy: LabwareFilter ): LabwareDefAndDate[] { const fullLabwareList: LabwareDefAndDate[] = [] - const labwareDefinitions = getAllDefinitions() + const labwareDefinitions = getAllDefinitions().filter( + def => !LABWARE_LOADNAME_BLOCKLIST.includes(def.parameters.loadName) + ) labwareDefinitions.forEach(def => fullLabwareList.push({ definition: def })) const customLabwareList = useSelector(getValidCustomLabware) customLabwareList.forEach(customLabware => From 271ad5872a2376e4f52500b992952032e5010dae Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Tue, 14 Jan 2025 15:04:00 -0500 Subject: [PATCH 19/81] fix(api): Fix Pydantic error when parsing commands that did not succeed (#17264) robot-server sometimes stores, in its database, run commands that do not have a `result`. For example, if a command failed, it has an `error` instead of a `result`. After the recent Pydantic v1->v2 upgrade, parsing these commands was broken for about 1/3rd of our command types. The server would raise a 500 error. Their Pydantic models were defined like: ``` result: Optional[FooResult] ``` In Pydantic v1, that parses JSON where `result` is `null` or omitted, but in Pydantic v2, it only parses JSON where `result` is `null`. We need to change it to: ``` result: Optional[FooResult] = None ``` --- .../protocol_engine/commands/absorbance_reader/close_lid.py | 2 +- .../protocol_engine/commands/absorbance_reader/initialize.py | 2 +- .../protocol_engine/commands/absorbance_reader/open_lid.py | 2 +- .../protocol_engine/commands/absorbance_reader/read.py | 2 +- .../opentrons/protocol_engine/commands/air_gap_in_place.py | 2 +- api/src/opentrons/protocol_engine/commands/get_next_tip.py | 2 +- api/src/opentrons/protocol_engine/commands/liquid_probe.py | 4 ++-- api/src/opentrons/protocol_engine/commands/load_lid.py | 2 +- api/src/opentrons/protocol_engine/commands/load_lid_stack.py | 2 +- .../opentrons/protocol_engine/commands/load_liquid_class.py | 2 +- .../protocol_engine/commands/robot/close_gripper_jaw.py | 2 +- .../protocol_engine/commands/robot/move_axes_relative.py | 2 +- .../opentrons/protocol_engine/commands/robot/move_axes_to.py | 2 +- api/src/opentrons/protocol_engine/commands/robot/move_to.py | 2 +- .../protocol_engine/commands/robot/open_gripper_jaw.py | 2 +- .../commands/thermocycler/run_extended_profile.py | 2 +- .../commands/unsafe/unsafe_blow_out_in_place.py | 2 +- .../commands/unsafe/unsafe_drop_tip_in_place.py | 2 +- .../protocol_engine/commands/unsafe/unsafe_engage_axes.py | 2 +- .../protocol_engine/commands/unsafe/unsafe_place_labware.py | 2 +- .../protocol_engine/commands/unsafe/unsafe_ungrip_labware.py | 2 +- .../commands/unsafe/update_position_estimators.py | 2 +- 22 files changed, 23 insertions(+), 23 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py index 41c1e65bce9..fd6e279d659 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/close_lid.py @@ -132,7 +132,7 @@ class CloseLid(BaseCommand[CloseLidParams, CloseLidResult, ErrorOccurrence]): commandType: CloseLidCommandType = "absorbanceReader/closeLid" params: CloseLidParams - result: Optional[CloseLidResult] + result: Optional[CloseLidResult] = None _ImplementationCls: Type[CloseLidImpl] = CloseLidImpl diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py index bcb2639d0a5..5fa810455ec 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py @@ -137,7 +137,7 @@ class Initialize(BaseCommand[InitializeParams, InitializeResult, ErrorOccurrence commandType: InitializeCommandType = "absorbanceReader/initialize" params: InitializeParams - result: Optional[InitializeResult] + result: Optional[InitializeResult] = None _ImplementationCls: Type[InitializeImpl] = InitializeImpl diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py index 96495a2bcde..3fa965e33b3 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/open_lid.py @@ -133,7 +133,7 @@ class OpenLid(BaseCommand[OpenLidParams, OpenLidResult, ErrorOccurrence]): commandType: OpenLidCommandType = "absorbanceReader/openLid" params: OpenLidParams - result: Optional[OpenLidResult] + result: Optional[OpenLidResult] = None _ImplementationCls: Type[OpenLidImpl] = OpenLidImpl diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py index c8f7dca8706..fc230d1dee9 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py @@ -209,7 +209,7 @@ class ReadAbsorbance( commandType: ReadAbsorbanceCommandType = "absorbanceReader/read" params: ReadAbsorbanceParams - result: Optional[ReadAbsorbanceResult] + result: Optional[ReadAbsorbanceResult] = None _ImplementationCls: Type[ReadAbsorbanceImpl] = ReadAbsorbanceImpl diff --git a/api/src/opentrons/protocol_engine/commands/air_gap_in_place.py b/api/src/opentrons/protocol_engine/commands/air_gap_in_place.py index 461a446f3e4..f8c6bcf859b 100644 --- a/api/src/opentrons/protocol_engine/commands/air_gap_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/air_gap_in_place.py @@ -146,7 +146,7 @@ class AirGapInPlace( commandType: AirGapInPlaceCommandType = "airGapInPlace" params: AirGapInPlaceParams - result: Optional[AirGapInPlaceResult] + result: Optional[AirGapInPlaceResult] = None _ImplementationCls: Type[AirGapInPlaceImplementation] = AirGapInPlaceImplementation diff --git a/api/src/opentrons/protocol_engine/commands/get_next_tip.py b/api/src/opentrons/protocol_engine/commands/get_next_tip.py index f9f2cb8ba61..9e0cf3b50cf 100644 --- a/api/src/opentrons/protocol_engine/commands/get_next_tip.py +++ b/api/src/opentrons/protocol_engine/commands/get_next_tip.py @@ -120,7 +120,7 @@ class GetNextTip(BaseCommand[GetNextTipParams, GetNextTipResult, ErrorOccurrence commandType: GetNextTipCommandType = "getNextTip" params: GetNextTipParams - result: Optional[GetNextTipResult] + result: Optional[GetNextTipResult] = None _ImplementationCls: Type[GetNextTipImplementation] = GetNextTipImplementation diff --git a/api/src/opentrons/protocol_engine/commands/liquid_probe.py b/api/src/opentrons/protocol_engine/commands/liquid_probe.py index a0418d53c9a..419dca03b40 100644 --- a/api/src/opentrons/protocol_engine/commands/liquid_probe.py +++ b/api/src/opentrons/protocol_engine/commands/liquid_probe.py @@ -361,7 +361,7 @@ class LiquidProbe( commandType: LiquidProbeCommandType = "liquidProbe" params: LiquidProbeParams - result: Optional[LiquidProbeResult] + result: Optional[LiquidProbeResult] = None _ImplementationCls: Type[LiquidProbeImplementation] = LiquidProbeImplementation @@ -373,7 +373,7 @@ class TryLiquidProbe( commandType: TryLiquidProbeCommandType = "tryLiquidProbe" params: TryLiquidProbeParams - result: Optional[TryLiquidProbeResult] + result: Optional[TryLiquidProbeResult] = None _ImplementationCls: Type[ TryLiquidProbeImplementation diff --git a/api/src/opentrons/protocol_engine/commands/load_lid.py b/api/src/opentrons/protocol_engine/commands/load_lid.py index 4f2e49c7447..c348ffbc3ea 100644 --- a/api/src/opentrons/protocol_engine/commands/load_lid.py +++ b/api/src/opentrons/protocol_engine/commands/load_lid.py @@ -132,7 +132,7 @@ class LoadLid(BaseCommand[LoadLidParams, LoadLidResult, ErrorOccurrence]): commandType: LoadLidCommandType = "loadLid" params: LoadLidParams - result: Optional[LoadLidResult] + result: Optional[LoadLidResult] = None _ImplementationCls: Type[LoadLidImplementation] = LoadLidImplementation diff --git a/api/src/opentrons/protocol_engine/commands/load_lid_stack.py b/api/src/opentrons/protocol_engine/commands/load_lid_stack.py index 7b430dfaf45..1a19831b1f9 100644 --- a/api/src/opentrons/protocol_engine/commands/load_lid_stack.py +++ b/api/src/opentrons/protocol_engine/commands/load_lid_stack.py @@ -175,7 +175,7 @@ class LoadLidStack( commandType: LoadLidStackCommandType = "loadLidStack" params: LoadLidStackParams - result: Optional[LoadLidStackResult] + result: Optional[LoadLidStackResult] = None _ImplementationCls: Type[LoadLidStackImplementation] = LoadLidStackImplementation diff --git a/api/src/opentrons/protocol_engine/commands/load_liquid_class.py b/api/src/opentrons/protocol_engine/commands/load_liquid_class.py index 8cb3d4a06fb..2dfcb089414 100644 --- a/api/src/opentrons/protocol_engine/commands/load_liquid_class.py +++ b/api/src/opentrons/protocol_engine/commands/load_liquid_class.py @@ -128,7 +128,7 @@ class LoadLiquidClass( commandType: LoadLiquidClassCommandType = "loadLiquidClass" params: LoadLiquidClassParams - result: Optional[LoadLiquidClassResult] + result: Optional[LoadLiquidClassResult] = None _ImplementationCls: Type[ LoadLiquidClassImplementation diff --git a/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py b/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py index 36b027c351a..5ff11891a1b 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +++ b/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py @@ -70,7 +70,7 @@ class closeGripperJaw( commandType: closeGripperJawCommandType = "robot/closeGripperJaw" params: closeGripperJawParams - result: Optional[closeGripperJawResult] + result: Optional[closeGripperJawResult] = None _ImplementationCls: Type[ closeGripperJawImplementation diff --git a/api/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py b/api/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py index 99b30e9595a..c334e4017ce 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py +++ b/api/src/opentrons/protocol_engine/commands/robot/move_axes_relative.py @@ -85,7 +85,7 @@ class MoveAxesRelative( commandType: MoveAxesRelativeCommandType = "robot/moveAxesRelative" params: MoveAxesRelativeParams - result: Optional[MoveAxesRelativeResult] + result: Optional[MoveAxesRelativeResult] = None _ImplementationCls: Type[ MoveAxesRelativeImplementation diff --git a/api/src/opentrons/protocol_engine/commands/robot/move_axes_to.py b/api/src/opentrons/protocol_engine/commands/robot/move_axes_to.py index 93fc2746c84..81c4462af57 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/move_axes_to.py +++ b/api/src/opentrons/protocol_engine/commands/robot/move_axes_to.py @@ -86,7 +86,7 @@ class MoveAxesTo(BaseCommand[MoveAxesToParams, MoveAxesToResult, ErrorOccurrence commandType: MoveAxesToCommandType = "robot/moveAxesTo" params: MoveAxesToParams - result: Optional[MoveAxesToResult] + result: Optional[MoveAxesToResult] = None _ImplementationCls: Type[MoveAxesToImplementation] = MoveAxesToImplementation diff --git a/api/src/opentrons/protocol_engine/commands/robot/move_to.py b/api/src/opentrons/protocol_engine/commands/robot/move_to.py index e2a3af07767..e0b5365c048 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/move_to.py +++ b/api/src/opentrons/protocol_engine/commands/robot/move_to.py @@ -80,7 +80,7 @@ class MoveTo(BaseCommand[MoveToParams, MoveToResult, ErrorOccurrence]): commandType: MoveToCommandType = "robot/moveTo" params: MoveToParams - result: Optional[MoveToResult] + result: Optional[MoveToResult] = None _ImplementationCls: Type[MoveToImplementation] = MoveToImplementation diff --git a/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py b/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py index 22aa1debd42..83b58647394 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +++ b/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py @@ -61,7 +61,7 @@ class openGripperJaw( commandType: openGripperJawCommandType = "robot/openGripperJaw" params: openGripperJawParams - result: Optional[openGripperJawResult] + result: Optional[openGripperJawResult] = None _ImplementationCls: Type[ openGripperJawImplementation diff --git a/api/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py b/api/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py index 40f87af7772..ec294d5965c 100644 --- a/api/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +++ b/api/src/opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py @@ -157,7 +157,7 @@ class RunExtendedProfile( commandType: RunExtendedProfileCommandType = "thermocycler/runExtendedProfile" params: RunExtendedProfileParams - result: Optional[RunExtendedProfileResult] + result: Optional[RunExtendedProfileResult] = None _ImplementationCls: Type[RunExtendedProfileImpl] = RunExtendedProfileImpl diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py index 4c767625782..bd48c3c1c8b 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py @@ -82,7 +82,7 @@ class UnsafeBlowOutInPlace( commandType: UnsafeBlowOutInPlaceCommandType = "unsafe/blowOutInPlace" params: UnsafeBlowOutInPlaceParams - result: Optional[UnsafeBlowOutInPlaceResult] + result: Optional[UnsafeBlowOutInPlaceResult] = None _ImplementationCls: Type[ UnsafeBlowOutInPlaceImplementation diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py index 56a87a468dd..d6b0652a4c0 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py @@ -99,7 +99,7 @@ class UnsafeDropTipInPlace( commandType: UnsafeDropTipInPlaceCommandType = "unsafe/dropTipInPlace" params: UnsafeDropTipInPlaceParams - result: Optional[UnsafeDropTipInPlaceResult] + result: Optional[UnsafeDropTipInPlaceResult] = None _ImplementationCls: Type[ UnsafeDropTipInPlaceImplementation diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py index 4f80db24f42..c38bc1ed481 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py @@ -66,7 +66,7 @@ class UnsafeEngageAxes( commandType: UnsafeEngageAxesCommandType = "unsafe/engageAxes" params: UnsafeEngageAxesParams - result: Optional[UnsafeEngageAxesResult] + result: Optional[UnsafeEngageAxesResult] = None _ImplementationCls: Type[ UnsafeEngageAxesImplementation diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py index c69cea29243..cd105867524 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py @@ -192,7 +192,7 @@ class UnsafePlaceLabware( commandType: UnsafePlaceLabwareCommandType = "unsafe/placeLabware" params: UnsafePlaceLabwareParams - result: Optional[UnsafePlaceLabwareResult] + result: Optional[UnsafePlaceLabwareResult] = None _ImplementationCls: Type[ UnsafePlaceLabwareImplementation diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py index 6f8f5b71fce..dd7248a1932 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py @@ -61,7 +61,7 @@ class UnsafeUngripLabware( commandType: UnsafeUngripLabwareCommandType = "unsafe/ungripLabware" params: UnsafeUngripLabwareParams - result: Optional[UnsafeUngripLabwareResult] + result: Optional[UnsafeUngripLabwareResult] = None _ImplementationCls: Type[ UnsafeUngripLabwareImplementation diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py index 6b050d6472f..0f6e4c5d7eb 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py @@ -74,7 +74,7 @@ class UpdatePositionEstimators( commandType: UpdatePositionEstimatorsCommandType = "unsafe/updatePositionEstimators" params: UpdatePositionEstimatorsParams - result: Optional[UpdatePositionEstimatorsResult] + result: Optional[UpdatePositionEstimatorsResult] = None _ImplementationCls: Type[ UpdatePositionEstimatorsImplementation From 061ab89b8b971698f1d5b7a1995ce24416a4f84e Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Tue, 14 Jan 2025 15:40:39 -0600 Subject: [PATCH 20/81] test(analyses): add refactored 8.2 smoke test (#17214) --- .../automation/data/protocols.py | 7 + ...S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py | 458 + ...2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 15120 ++++++++++++++++ 3 files changed, 15585 insertions(+) create mode 100644 analyses-snapshot-testing/files/protocols/Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py create mode 100644 analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json diff --git a/analyses-snapshot-testing/automation/data/protocols.py b/analyses-snapshot-testing/automation/data/protocols.py index ada74a736e0..4acad3c0702 100644 --- a/analyses-snapshot-testing/automation/data/protocols.py +++ b/analyses-snapshot-testing/automation/data/protocols.py @@ -709,6 +709,13 @@ class Protocols: robot="Flex", ) + # analyses-snapshot-testing/files/protocols/Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py + Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke: Protocol = Protocol( + file_stem="Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke", + file_extension="py", + robot="Flex", + ) + OT2_X_v2_18_None_None_duplicateRTPVariableName: Protocol = Protocol( file_stem="OT2_X_v2_18_None_None_duplicateRTPVariableName", file_extension="py", diff --git a/analyses-snapshot-testing/files/protocols/Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py b/analyses-snapshot-testing/files/protocols/Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py new file mode 100644 index 00000000000..20d77fd560f --- /dev/null +++ b/analyses-snapshot-testing/files/protocols/Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py @@ -0,0 +1,458 @@ +############# +# CHANGELOG # +############# + +# ---- +# 2.21 +# ---- + +# - - Run protocols that use the Absorbance Plate Reader and check the status of the module on the robot details screen for your Flex. +# - - Run protocols that use the new Opentrons Tough PCR Auto-Sealing Lid with the Thermocycler Module GEN2. Stacks of these lids appear in a consolidated view when setting up labware. +# - - Error recovery now works in more situations and has more options - Gripper Errors, Drop Tip Errors, additional recovery options for tip errors, disable error recovery entirely (8.2.0) + +# ---- +# 2.20 +# ---- + +# - configure_nozzle_layout() now accepts row, single, and partial column layout constants. See Partial Tip Pickup. +# - You can now call ProtocolContext.define_liquid() without supplying a description or display_color. +# - You can now call ProtocolContext.liquid_presence_detection() or ProtocolContext.require_liquid_presence() to use LLD on instrument context or on well +# - You now have the option to set RTP using CSV files +# - Error Recovery will now initiate for miss tip pick up, overpressure on aspirate and dispense, and if liquid presence isn't detected (8.0.0) + +# ---- +# 2.19 +# ---- + +# - NO FEATURES OR API CHANGES +# - New values for how much a tip overlaps with the pipette nozzle when the pipette picks up tips + +# ---- +# 2.18 +# ---- + +# - labware.set_offset +# - Runtime Parameters added +# - TrashContainer.top() and Well.top() now return objects of the same type +# - pipette.drop_tip() if location argument not specified the tips will be dropped at different locations in the bin +# - pipette.drop_tip() if location is specified, the tips will be dropped in the same place every time + +# ---- +# 2.17 +# ---- + +# NOTHING NEW +# This protocol is exactly the same as 2.16 Smoke Test V3 +# The only difference is the API version in the metadata +# There were no new positive test cases for 2.17 +# The negative test cases are captured in the 2.17 dispense changes protocol + +# ---- +# 2.16 +# ---- + +# - prepare_to_aspirate added +# - fixed_trash property changed +# - instrument_context.trash_container property changed + +# ---- +# 2.15 +# ---- + +# - move_labware added - Manual Deck State Modification +# - ProtocolContext.load_adapter added +# - OFF_DECK location added + +from typing import List +from opentrons import protocol_api, types +from opentrons.protocol_api import Labware + + +metadata = { + "protocolName": "Flex Smoke Test - v2.21", + "author": "QA team", +} + +requirements = { + "robotType": "Flex", + "apiLevel": "2.21", +} + + +################# +### CONSTANTS ### +################# + +DeckSlots = [ + "A1", + "A2", + "A3", + "A4", + "B1", + "B2", + "B3", + "B4", + "C1", + "C2", + "C3", + "C4", + "D1", + "D2", + "D3", + "D4", +] + +HEATER_SHAKER_ADAPTER_NAME = "opentrons_96_pcr_adapter" +HEATER_SHAKER_NAME = "heaterShakerModuleV1" +MAGNETIC_BLOCK_NAME = "magneticBlockV1" +TEMPERATURE_MODULE_ADAPTER_NAME = "opentrons_96_well_aluminum_block" +TEMPERATURE_MODULE_NAME = "temperature module gen2" +THERMOCYCLER_NAME = "thermocycler module gen2" +ABSORBANCE_READER = "absorbanceReaderV1" +DECK_RISER_NAME = "opentrons_flex_deck_riser" +TC_LID = "opentrons_tough_pcr_auto_sealing_lid" +LID_COUNT = 5 +TIPRACK_96_ADAPTER_NAME = "opentrons_flex_96_tiprack_adapter" +TIPRACK_96_NAME = "opentrons_flex_96_tiprack_1000ul" +PIPETTE_96_CHANNEL_NAME = "flex_96channel_1000" +WELL_PLATE_STARTING_POSITION = "C2" +RESERVOIR_STARTING_POSITION = "D2" + + +def comment_tip_rack_status(ctx, tip_rack): + """ + Print out the tip status for each row in a tip rack. + Each row (A-H) will print the well statuses for columns 1-12 in a single comment, + with a '🟢' for present tips and a '❌' for missing tips. + """ + range_A_to_H = [chr(i) for i in range(ord("A"), ord("H") + 1)] + range_1_to_12 = range(1, 13) + + ctx.comment(f"Tip rack in {tip_rack.parent}") + + for row in range_A_to_H: + status_line = f"{row}: " + for col in range_1_to_12: + well = f"{row}{col}" + has_tip = tip_rack.wells_by_name()[well].has_tip + status_emoji = "🟢" if has_tip else "❌" + status_line += f"{well} {status_emoji} " + + # Print the full status line for the row + ctx.comment(status_line) + + +############################## +# Runtime Parameters Support # +############################## + +# -------------------------- # +# Added in API version: 2.18 # +# -------------------------- # + + +def add_parameters(parameters: protocol_api.Parameters): + """This is the standard use of parameters""" + + # We are using the defaults for every case. + # Other tests cover regression testing for + # other types of parameters and UI appearance + # there are many tests in Analyses Battery that cover errors and edge cases + + parameters.add_str( + variable_name="test_configuration", + display_name="Test Configuration", + description="Configuration of QA test to perform", + default="full", + choices=[{"display_name": "Full Smoke Test", "value": "full"}], + ) + + parameters.add_str( + variable_name="reservoir_name", + display_name="Reservoir Name", + description="Name of the reservoir", + default="nest_1_reservoir_290ml", + choices=[{"display_name": "Nest 1 Well 290 mL", "value": "nest_1_reservoir_290ml"}], + ) + + parameters.add_str( + variable_name="well_plate_name", + display_name="Well Plate Name", + description="Name of the well plate", + default="opentrons_96_wellplate_200ul_pcr_full_skirt", + choices=[{"display_name": "Opentrons Tough 96 Well 200 µL", "value": "opentrons_96_wellplate_200ul_pcr_full_skirt"}], + ) + + +def log_position(ctx, item): + ctx.comment(f"Item {item.load_name} is at {item.parent}") + + +def run(ctx: protocol_api.ProtocolContext) -> None: + + ################ + ### FIXTURES ### + ################ + + waste_chute = ctx.load_waste_chute() + + ############### + ### MODULES ### + ############### + deck_riser_adapter = ctx.load_adapter(DECK_RISER_NAME, "A4") + thermocycler = ctx.load_module(THERMOCYCLER_NAME) # A1 & B1 + magnetic_block = ctx.load_module(MAGNETIC_BLOCK_NAME, "A3") + heater_shaker = ctx.load_module(HEATER_SHAKER_NAME, "C1") + temperature_module = ctx.load_module(TEMPERATURE_MODULE_NAME, "D1") + absorbance_module = ctx.load_module(ABSORBANCE_READER, "B3") + + lids: List[Labware] = [deck_riser_adapter.load_labware(TC_LID)] + for i in range(LID_COUNT - 1): + lids.append(lids[-1].load_labware(TC_LID)) + lids.reverse() + + thermocycler.open_lid() + heater_shaker.open_labware_latch() + absorbance_module.close_lid() + absorbance_module.initialize("single", [600], 450) + absorbance_module.open_lid() + + ####################### + ### MODULE ADAPTERS ### + ####################### + + temperature_module_adapter = temperature_module.load_adapter(TEMPERATURE_MODULE_ADAPTER_NAME) + heater_shaker_adapter = heater_shaker.load_adapter(HEATER_SHAKER_ADAPTER_NAME) + adapters = [temperature_module_adapter, heater_shaker_adapter] + + ############### + ### LABWARE ### + ############### + + # Load these directly with the RTP + source_reservoir = ctx.load_labware(ctx.params.reservoir_name, RESERVOIR_STARTING_POSITION) + dest_pcr_plate = ctx.load_labware(ctx.params.well_plate_name, WELL_PLATE_STARTING_POSITION) + + tip_rack_1 = ctx.load_labware(TIPRACK_96_NAME, "A2", adapter=TIPRACK_96_ADAPTER_NAME) + tip_rack_adapter = tip_rack_1.parent + + tip_rack_2 = ctx.load_labware(TIPRACK_96_NAME, "C3") + tip_rack_3 = ctx.load_labware(TIPRACK_96_NAME, "C4") + tip_rack_5 = ctx.load_labware(TIPRACK_96_NAME, protocol_api.OFF_DECK) + + tip_racks = [tip_rack_1, tip_rack_2, tip_rack_3] + + ########################## + ### PIPETTE DEFINITION ### + ########################## + + pipette_96_channel = ctx.load_instrument(PIPETTE_96_CHANNEL_NAME, mount="left", tip_racks=tip_racks, liquid_presence_detection=True) + pipette_96_channel.trash_container = waste_chute + + assert isinstance(pipette_96_channel.trash_container, protocol_api.WasteChute) + + ######################## + ### LOAD SOME LIQUID ### + ######################## + + water = ctx.define_liquid(name="water", description="High Quality H₂O", display_color="#42AB2D") + source_reservoir.wells_by_name()["A1"].load_liquid(liquid=water, volume=29000) + + ################################ + ### GRIPPER LABWARE MOVEMENT ### + ################################ + + log_position(ctx, dest_pcr_plate) + ctx.move_labware(dest_pcr_plate, thermocycler, use_gripper=True) + log_position(ctx, dest_pcr_plate) + # Move it back to the deck + ctx.move_labware(dest_pcr_plate, "C2", use_gripper=True) + log_position(ctx, dest_pcr_plate) + + # Other important moves? + + # manual move + log_position(ctx, source_reservoir) + ctx.move_labware(source_reservoir, "D4", use_gripper=False) + log_position(ctx, source_reservoir) + ctx.move_labware(source_reservoir, RESERVOIR_STARTING_POSITION, use_gripper=True) + log_position(ctx, source_reservoir) + + # Other important manual moves? + + # 96 channel column pickup + pipette_96_channel.configure_nozzle_layout(style=protocol_api.COLUMN, start="A12") + pipette_96_channel.pick_up_tip(tip_rack_2["A1"]) + comment_tip_rack_status(ctx, tip_rack_2) + pipette_96_channel.aspirate(5, source_reservoir["A1"]) + pipette_96_channel.touch_tip() + pipette_96_channel.dispense(5, dest_pcr_plate[f"A1"]) + pipette_96_channel.drop_tip(waste_chute) + + # 96 channel single pickup + pipette_96_channel.configure_nozzle_layout(style=protocol_api.SINGLE, start="H12") + pipette_96_channel.pick_up_tip(tip_rack_2) + pipette_96_channel.aspirate(5, source_reservoir["A1"]) + pipette_96_channel.touch_tip() + pipette_96_channel.dispense(5, source_reservoir["A1"]) + pipette_96_channel.aspirate(500, source_reservoir["A1"]) + pipette_96_channel.dispense(500, source_reservoir["A1"]) + pipette_96_channel.drop_tip(waste_chute) + comment_tip_rack_status(ctx, tip_rack_2) + + # put the tip rack in the trash + # since it cannot have a row pickup + ctx.move_labware(tip_rack_2, waste_chute, use_gripper=True) + ctx.move_labware(tip_rack_3, "C3", use_gripper=True) + + # 96 channel row pickup + pipette_96_channel.configure_nozzle_layout(style=protocol_api.ROW, start="H1") + pipette_96_channel.pick_up_tip(tip_rack_3) + pipette_96_channel.mix(3, 500, source_reservoir["A1"]) + pipette_96_channel.drop_tip(waste_chute) + comment_tip_rack_status(ctx, tip_rack_3) + + # 96 channel full rack pickup + pipette_96_channel.configure_nozzle_layout(style=protocol_api.ALL, start="A1") + pipette_96_channel.pick_up_tip(tip_rack_1["A1"]) + comment_tip_rack_status(ctx, tip_rack_1) + pipette_96_channel.aspirate(5, source_reservoir["A1"]) + pipette_96_channel.touch_tip() + pipette_96_channel.air_gap(height=30) + pipette_96_channel.blow_out(waste_chute) + pipette_96_channel.prepare_to_aspirate() + pipette_96_channel.aspirate(5, source_reservoir["A1"]) + pipette_96_channel.touch_tip() + pipette_96_channel.air_gap(height=30) + pipette_96_channel.blow_out(waste_chute) + pipette_96_channel.prepare_to_aspirate() + pipette_96_channel.aspirate(10, source_reservoir["A1"]) + pipette_96_channel.touch_tip() + pipette_96_channel.dispense(10, dest_pcr_plate["A1"]) + pipette_96_channel.mix(repetitions=5, volume=15) + pipette_96_channel.return_tip() + comment_tip_rack_status(ctx, tip_rack_1) + pipette_96_channel.pick_up_tip(tip_rack_1["A1"]) + pipette_96_channel.transfer( + volume=10, + source=source_reservoir["A1"], + dest=dest_pcr_plate["A1"], + new_tip="never", + touch_tip=True, + blow_out=True, + blowout_location="trash", + mix_before=(3, 5), + mix_after=(1, 5), + ) + comment_tip_rack_status(ctx, tip_rack_1) + pipette_96_channel.return_tip(home_after=False) + comment_tip_rack_status(ctx, tip_rack_1) + ctx.comment("I think the above should not be empty?") + # Thermocycler lid moves + ctx.move_labware(dest_pcr_plate, thermocycler, use_gripper=True) + ctx.move_labware(lids[0], dest_pcr_plate, use_gripper=True) # we reversed this list earlier + thermocycler.close_lid() + thermocycler.set_block_temperature(38, hold_time_seconds=5.0) + thermocycler.set_lid_temperature(38) + thermocycler.open_lid() + ctx.move_labware(lids[0], waste_chute, use_gripper=True) + thermocycler.deactivate() + + heater_shaker.open_labware_latch() + ctx.move_labware(dest_pcr_plate, heater_shaker_adapter, use_gripper=True) + heater_shaker.close_labware_latch() + + heater_shaker.set_target_temperature(38) + heater_shaker.set_and_wait_for_shake_speed(777) + heater_shaker.wait_for_temperature() + + heater_shaker.deactivate_heater() + heater_shaker.deactivate_shaker() + heater_shaker.open_labware_latch() + + ctx.move_labware(dest_pcr_plate, temperature_module_adapter, use_gripper=True) + temperature_module.set_temperature(38) + temperature_module.deactivate() + + ctx.move_labware(dest_pcr_plate, absorbance_module, use_gripper=True) + absorbance_module.close_lid() + + result = absorbance_module.read(export_filename="smoke_APR_data.csv") + msg = f"single: {result}" + ctx.comment(msg=msg) + ctx.pause(msg=msg) + absorbance_module.open_lid() + ctx.move_labware(dest_pcr_plate, "C2", use_gripper=True) + + # ###################### + # # labware.set_offset # + # ###################### + + # # -------------------------- # + # # Added in API version: 2.18 # + # # -------------------------- # + + SET_OFFSET_AMOUNT = 10.0 + ctx.move_labware(labware=source_reservoir, new_location=protocol_api.OFF_DECK, use_gripper=False) + pipette_96_channel.pick_up_tip(tip_rack_1["A1"]) + pipette_96_channel.move_to(dest_pcr_plate.wells_by_name()["A1"].top()) + + ctx.pause("Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be at the LPC calibrated height.") + + dest_pcr_plate.set_offset( + x=0.0, + y=0.0, + z=SET_OFFSET_AMOUNT, + ) + + pipette_96_channel.move_to(dest_pcr_plate.wells_by_name()["A1"].top()) + ctx.pause( + "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." + ) + + ctx.move_labware(labware=dest_pcr_plate, new_location="D2", use_gripper=False) + pipette_96_channel.move_to(dest_pcr_plate.wells_by_name()["A1"].top()) + + ctx.pause("Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be at the LPC calibrated height.") + + dest_pcr_plate.set_offset( + x=0.0, + y=0.0, + z=SET_OFFSET_AMOUNT, + ) + + pipette_96_channel.move_to(dest_pcr_plate.wells_by_name()["A1"].top()) + ctx.pause( + "Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be 10mm higher than the LPC calibrated height." + ) + + ctx.move_labware(labware=dest_pcr_plate, new_location="C2", use_gripper=False) + pipette_96_channel.move_to(dest_pcr_plate.wells_by_name()["A1"].top()) + + ctx.pause( + "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." + ) + + ctx.move_labware(labware=source_reservoir, new_location="D2", use_gripper=False) + pipette_96_channel.move_to(source_reservoir.wells_by_name()["A1"].top()) + + ctx.pause("Is the pipette tip in the middle of the reservoir , well A1, in slot D2? It should be at the LPC calibrated height.") + + pipette_96_channel.return_tip() + ctx.move_labware(tip_rack_3, waste_chute, use_gripper=True) + + ctx.pause("!!!!!!!!!!YOU NEED TO REDO LPC!!!!!!!!!!") + + # Test the unique top() methods for TrashBin and WasteChute. + # Well objects should remain the same + + ######################## + # unique top() methods # + ######################## + + # ---------------------------- # + # Changed in API version: 2.18 # + # ---------------------------- # + + assert isinstance(waste_chute.top(), protocol_api.WasteChute) + assert isinstance(source_reservoir.wells_by_name()["A1"].top(), types.Location) diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json new file mode 100644 index 00000000000..0454e8ec9c9 --- /dev/null +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -0,0 +1,15120 @@ +{ + "commandAnnotations": [], + "commands": [ + { + "commandType": "home", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "50c7ae73a4e3f7129874f39dfb514803", + "notes": [], + "params": {}, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "73d9d4d55ae8466f3a793ceb70545fa5", + "notes": [], + "params": { + "loadName": "opentrons_flex_deck_riser", + "location": { + "addressableAreaName": "A4" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "adapter" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": -6.125, + "y": -6.125, + "z": 0 + }, + "dimensions": { + "xDimension": 140, + "yDimension": 98, + "zDimension": 55 + }, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "adapter", + "displayName": "Opentrons Flex Deck Riser", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_flex_deck_riser", + "quirks": [] + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": {}, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadModule", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a3a7eed460d8d94a91747f23820a180d", + "notes": [], + "params": { + "location": { + "slotName": "B1" + }, + "model": "thermocyclerModuleV2" + }, + "result": { + "definition": { + "calibrationPoint": { + "x": 14.4, + "y": 64.93, + "z": 97.8 + }, + "compatibleWith": [], + "dimensions": { + "bareOverallHeight": 108.96, + "lidHeight": 61.7, + "overLabwareHeight": 0.0 + }, + "displayName": "Thermocycler Module GEN2", + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0.0, + "y": 0.0, + "z": 5.6 + }, + "pickUpOffset": { + "x": 0.0, + "y": 0.0, + "z": 4.6 + } + } + }, + "labwareOffset": { + "x": 0.0, + "y": 68.8, + "z": 108.96 + }, + "model": "thermocyclerModuleV2", + "moduleType": "thermocyclerModuleType", + "otSharedSchema": "module/schemas/2", + "quirks": [], + "slotTransforms": { + "ot3_standard": { + "B1": { + "cornerOffsetFromSlot": [ + [ + -98, + 0, + 0, + 1 + ], + [ + -20.005, + 0, + 0, + 1 + ], + [ + -0.84, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ], + "labwareOffset": [ + [ + -98, + 0, + 0, + 1 + ], + [ + -20.005, + 0, + 0, + 1 + ], + [ + -0.84, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + } + } + } + }, + "model": "thermocyclerModuleV2", + "moduleId": "UUID", + "serialNumber": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadModule", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d023a31e37dd4dd97dbd40857a7508ed", + "notes": [], + "params": { + "location": { + "slotName": "A3" + }, + "model": "magneticBlockV1" + }, + "result": { + "definition": { + "calibrationPoint": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "compatibleWith": [], + "dimensions": { + "bareOverallHeight": 45.0, + "overLabwareHeight": 0.0 + }, + "displayName": "Magnetic Block GEN1", + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "pickUpOffset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + } + }, + "labwareOffset": { + "x": 0.0, + "y": 0.0, + "z": 38.0 + }, + "model": "magneticBlockV1", + "moduleType": "magneticBlockType", + "otSharedSchema": "module/schemas/2", + "quirks": [], + "slotTransforms": { + "ot2_short_trash": {}, + "ot2_standard": {}, + "ot3_standard": {} + } + }, + "model": "magneticBlockV1", + "moduleId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadModule", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "82d736bcccf3c45130f7959c3031b04c", + "notes": [], + "params": { + "location": { + "slotName": "C1" + }, + "model": "heaterShakerModuleV1" + }, + "result": { + "definition": { + "calibrationPoint": { + "x": 12.0, + "y": 8.75, + "z": 68.275 + }, + "compatibleWith": [], + "dimensions": { + "bareOverallHeight": 82.0, + "overLabwareHeight": 0.0 + }, + "displayName": "Heater-Shaker Module GEN1", + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "pickUpOffset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + } + }, + "labwareOffset": { + "x": -0.125, + "y": 1.125, + "z": 68.275 + }, + "model": "heaterShakerModuleV1", + "moduleType": "heaterShakerModuleType", + "otSharedSchema": "module/schemas/2", + "quirks": [], + "slotTransforms": { + "ot2_short_trash": { + "3": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "6": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "9": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + } + }, + "ot2_standard": { + "3": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "6": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "9": { + "labwareOffset": [ + [ + -1, + 0, + 0, + 0 + ], + [ + -1, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + } + }, + "ot3_standard": { + "A1": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "A3": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "B1": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "B3": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "C1": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "C3": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "D1": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + }, + "D3": { + "labwareOffset": [ + [ + -49.325, + 0, + 0, + 1 + ], + [ + -1.125, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.125, + 1 + ] + ] + } + } + } + }, + "model": "heaterShakerModuleV1", + "moduleId": "UUID", + "serialNumber": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadModule", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1cef18851df21f75ea1c1d79e34dfdaf", + "notes": [], + "params": { + "location": { + "slotName": "D1" + }, + "model": "temperatureModuleV2" + }, + "result": { + "definition": { + "calibrationPoint": { + "x": 11.7, + "y": 8.75, + "z": 80.09 + }, + "compatibleWith": [ + "temperatureModuleV1" + ], + "dimensions": { + "bareOverallHeight": 84.0, + "overLabwareHeight": 0.0 + }, + "displayName": "Temperature Module GEN2", + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "pickUpOffset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + } + }, + "labwareOffset": { + "x": -1.45, + "y": -0.15, + "z": 80.09 + }, + "model": "temperatureModuleV2", + "moduleType": "temperatureModuleType", + "otSharedSchema": "module/schemas/2", + "quirks": [], + "slotTransforms": { + "ot2_short_trash": { + "3": { + "labwareOffset": [ + [ + -1, + -0.15, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "6": { + "labwareOffset": [ + [ + -1, + -0.15, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "9": { + "labwareOffset": [ + [ + -1, + -0.15, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + } + }, + "ot2_standard": { + "3": { + "labwareOffset": [ + [ + -1, + -0.3, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "6": { + "labwareOffset": [ + [ + -1, + -0.3, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + }, + "9": { + "labwareOffset": [ + [ + -1, + -0.3, + 0, + 0 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ] + ] + } + }, + "ot3_standard": { + "A1": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "A3": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "B1": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "B3": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "C1": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "C3": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "D1": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + }, + "D3": { + "labwareOffset": [ + [ + -71.09, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0, + 1 + ], + [ + 0, + 0, + 0.15, + 1 + ], + [ + 0, + 0, + 1, + 1.45 + ] + ] + } + } + } + }, + "model": "temperatureModuleV2", + "moduleId": "UUID", + "serialNumber": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadModule", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "0f830ddf4178d19d8afc9d9b7fbfb9e8", + "notes": [], + "params": { + "location": { + "slotName": "B3" + }, + "model": "absorbanceReaderV1" + }, + "result": { + "definition": { + "calibrationPoint": { + "x": 14.4, + "y": 64.93, + "z": 97.8 + }, + "compatibleWith": [], + "dimensions": { + "bareOverallHeight": 18.5, + "lidHeight": 60.0, + "overLabwareHeight": 0.0 + }, + "displayName": "Absorbance Plate Reader Module GEN1", + "gripperOffsets": {}, + "labwareOffset": { + "x": 0.0, + "y": 0.0, + "z": 0.65 + }, + "model": "absorbanceReaderV1", + "moduleType": "absorbanceReaderType", + "otSharedSchema": "module/schemas/2", + "quirks": [], + "slotTransforms": { + "ot2_short_trash": {}, + "ot2_standard": {}, + "ot3_standard": {} + } + }, + "model": "absorbanceReaderV1", + "moduleId": "UUID", + "serialNumber": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "4c98abe700f8e8b07fba59c9e44932aa", + "notes": [], + "params": { + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "labware", + "lid" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "compatibleParentLabware": [ + "armadillo_96_wellplate_200ul_pcr_full_skirt", + "biorad_96_wellplate_200ul_pcr", + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "opentrons_flex_deck_riser", + "opentrons_tough_pcr_auto_sealing_lid" + ], + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": -0.71 + }, + "dimensions": { + "xDimension": 127.7, + "yDimension": 85.48, + "zDimension": 12.8 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 7.91, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0.52, + "z": -6 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 1.5 + } + }, + "lidDisposalOffsets": { + "dropOffset": { + "x": 0, + "y": 5.0, + "z": 50.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "lidOffsets": { + "dropOffset": { + "x": 0.5, + "y": 0, + "z": -1 + }, + "pickUpOffset": { + "x": 0.5, + "y": 0, + "z": -5 + } + } + }, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "lid", + "displayName": "Opentrons Tough PCR Auto-Sealing Lid", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "quirks": [] + }, + "schemaVersion": 3, + "stackLimit": 5, + "stackingOffsetWithLabware": { + "armadillo_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, + "default": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_flex_deck_riser": { + "x": 0, + "y": 0, + "z": 34 + }, + "opentrons_tough_pcr_auto_sealing_lid": { + "x": 0, + "y": 0, + "z": 6.492 + } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "61052a1834817792ac57ca3c95f8906a", + "notes": [], + "params": { + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "labware", + "lid" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "compatibleParentLabware": [ + "armadillo_96_wellplate_200ul_pcr_full_skirt", + "biorad_96_wellplate_200ul_pcr", + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "opentrons_flex_deck_riser", + "opentrons_tough_pcr_auto_sealing_lid" + ], + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": -0.71 + }, + "dimensions": { + "xDimension": 127.7, + "yDimension": 85.48, + "zDimension": 12.8 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 7.91, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0.52, + "z": -6 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 1.5 + } + }, + "lidDisposalOffsets": { + "dropOffset": { + "x": 0, + "y": 5.0, + "z": 50.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "lidOffsets": { + "dropOffset": { + "x": 0.5, + "y": 0, + "z": -1 + }, + "pickUpOffset": { + "x": 0.5, + "y": 0, + "z": -5 + } + } + }, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "lid", + "displayName": "Opentrons Tough PCR Auto-Sealing Lid", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "quirks": [] + }, + "schemaVersion": 3, + "stackLimit": 5, + "stackingOffsetWithLabware": { + "armadillo_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, + "default": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_flex_deck_riser": { + "x": 0, + "y": 0, + "z": 34 + }, + "opentrons_tough_pcr_auto_sealing_lid": { + "x": 0, + "y": 0, + "z": 6.492 + } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5a0196883a2bd94fe59741103a03ca9f", + "notes": [], + "params": { + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "labware", + "lid" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "compatibleParentLabware": [ + "armadillo_96_wellplate_200ul_pcr_full_skirt", + "biorad_96_wellplate_200ul_pcr", + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "opentrons_flex_deck_riser", + "opentrons_tough_pcr_auto_sealing_lid" + ], + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": -0.71 + }, + "dimensions": { + "xDimension": 127.7, + "yDimension": 85.48, + "zDimension": 12.8 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 7.91, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0.52, + "z": -6 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 1.5 + } + }, + "lidDisposalOffsets": { + "dropOffset": { + "x": 0, + "y": 5.0, + "z": 50.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "lidOffsets": { + "dropOffset": { + "x": 0.5, + "y": 0, + "z": -1 + }, + "pickUpOffset": { + "x": 0.5, + "y": 0, + "z": -5 + } + } + }, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "lid", + "displayName": "Opentrons Tough PCR Auto-Sealing Lid", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "quirks": [] + }, + "schemaVersion": 3, + "stackLimit": 5, + "stackingOffsetWithLabware": { + "armadillo_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, + "default": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_flex_deck_riser": { + "x": 0, + "y": 0, + "z": 34 + }, + "opentrons_tough_pcr_auto_sealing_lid": { + "x": 0, + "y": 0, + "z": 6.492 + } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "cbf8207de879666929089ae9482deb18", + "notes": [], + "params": { + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "labware", + "lid" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "compatibleParentLabware": [ + "armadillo_96_wellplate_200ul_pcr_full_skirt", + "biorad_96_wellplate_200ul_pcr", + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "opentrons_flex_deck_riser", + "opentrons_tough_pcr_auto_sealing_lid" + ], + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": -0.71 + }, + "dimensions": { + "xDimension": 127.7, + "yDimension": 85.48, + "zDimension": 12.8 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 7.91, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0.52, + "z": -6 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 1.5 + } + }, + "lidDisposalOffsets": { + "dropOffset": { + "x": 0, + "y": 5.0, + "z": 50.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "lidOffsets": { + "dropOffset": { + "x": 0.5, + "y": 0, + "z": -1 + }, + "pickUpOffset": { + "x": 0.5, + "y": 0, + "z": -5 + } + } + }, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "lid", + "displayName": "Opentrons Tough PCR Auto-Sealing Lid", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "quirks": [] + }, + "schemaVersion": 3, + "stackLimit": 5, + "stackingOffsetWithLabware": { + "armadillo_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, + "default": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_flex_deck_riser": { + "x": 0, + "y": 0, + "z": 34 + }, + "opentrons_tough_pcr_auto_sealing_lid": { + "x": 0, + "y": 0, + "z": 6.492 + } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7708b9b51c3e7b6afd7abae3a8fe5a3d", + "notes": [], + "params": { + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "labware", + "lid" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "compatibleParentLabware": [ + "armadillo_96_wellplate_200ul_pcr_full_skirt", + "biorad_96_wellplate_200ul_pcr", + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "opentrons_flex_deck_riser", + "opentrons_tough_pcr_auto_sealing_lid" + ], + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": -0.71 + }, + "dimensions": { + "xDimension": 127.7, + "yDimension": 85.48, + "zDimension": 12.8 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 7.91, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0.52, + "z": -6 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 1.5 + } + }, + "lidDisposalOffsets": { + "dropOffset": { + "x": 0, + "y": 5.0, + "z": 50.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "lidOffsets": { + "dropOffset": { + "x": 0.5, + "y": 0, + "z": -1 + }, + "pickUpOffset": { + "x": 0.5, + "y": 0, + "z": -5 + } + } + }, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "lid", + "displayName": "Opentrons Tough PCR Auto-Sealing Lid", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "quirks": [] + }, + "schemaVersion": 3, + "stackLimit": 5, + "stackingOffsetWithLabware": { + "armadillo_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, + "default": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_96_wellplate_200ul_pcr_full_skirt": { + "x": 0, + "y": 0, + "z": 8.193 + }, + "opentrons_flex_deck_riser": { + "x": 0, + "y": 0, + "z": 34 + }, + "opentrons_tough_pcr_auto_sealing_lid": { + "x": 0, + "y": 0, + "z": 6.492 + } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 0 + } + }, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/openLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "16babbcf08868f1cd390f15f6382d439", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/openLabwareLatch", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1724a4af6ae0b4a1dd1d4a3bb979f2d9", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": { + "pipetteRetracted": true + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/closeLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1ca1ef496f94bdf2144e768ec088247a", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/initialize", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "457f0a0dfd866c188afdebdce5f2d1d2", + "notes": [], + "params": { + "measureMode": "single", + "moduleId": "UUID", + "referenceWavelength": 450, + "sampleWavelengths": [ + 600 + ] + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/openLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "cbedce386d6e0b1601924fe05f360e4a", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e234d87c59112fd9ea52cf83d3242171", + "notes": [], + "params": { + "loadName": "opentrons_96_well_aluminum_block", + "location": { + "moduleId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "adapter" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.76, + "yDimension": 85.48, + "zDimension": 18.16 + }, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0, + "z": 1.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + } + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "aluminumBlock", + "displayName": "Opentrons 96 Well Aluminum Block", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_96_well_aluminum_block", + "quirks": [] + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": {}, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 74.24, + "z": 3.38 + }, + "A10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 74.24, + "z": 3.38 + }, + "A11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 74.24, + "z": 3.38 + }, + "A12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 74.24, + "z": 3.38 + }, + "A2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 74.24, + "z": 3.38 + }, + "A3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 74.24, + "z": 3.38 + }, + "A4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 74.24, + "z": 3.38 + }, + "A5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 74.24, + "z": 3.38 + }, + "A6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 74.24, + "z": 3.38 + }, + "A7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 74.24, + "z": 3.38 + }, + "A8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 74.24, + "z": 3.38 + }, + "A9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 74.24, + "z": 3.38 + }, + "B1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 65.24, + "z": 3.38 + }, + "B10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 65.24, + "z": 3.38 + }, + "B11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 65.24, + "z": 3.38 + }, + "B12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 65.24, + "z": 3.38 + }, + "B2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 65.24, + "z": 3.38 + }, + "B3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 65.24, + "z": 3.38 + }, + "B4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 65.24, + "z": 3.38 + }, + "B5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 65.24, + "z": 3.38 + }, + "B6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 65.24, + "z": 3.38 + }, + "B7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 65.24, + "z": 3.38 + }, + "B8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 65.24, + "z": 3.38 + }, + "B9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 65.24, + "z": 3.38 + }, + "C1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 56.24, + "z": 3.38 + }, + "C10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 56.24, + "z": 3.38 + }, + "C11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 56.24, + "z": 3.38 + }, + "C12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 56.24, + "z": 3.38 + }, + "C2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 56.24, + "z": 3.38 + }, + "C3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 56.24, + "z": 3.38 + }, + "C4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 56.24, + "z": 3.38 + }, + "C5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 56.24, + "z": 3.38 + }, + "C6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 56.24, + "z": 3.38 + }, + "C7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 56.24, + "z": 3.38 + }, + "C8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 56.24, + "z": 3.38 + }, + "C9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 56.24, + "z": 3.38 + }, + "D1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 47.24, + "z": 3.38 + }, + "D10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 47.24, + "z": 3.38 + }, + "D11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 47.24, + "z": 3.38 + }, + "D12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 47.24, + "z": 3.38 + }, + "D2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 47.24, + "z": 3.38 + }, + "D3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 47.24, + "z": 3.38 + }, + "D4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 47.24, + "z": 3.38 + }, + "D5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 47.24, + "z": 3.38 + }, + "D6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 47.24, + "z": 3.38 + }, + "D7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 47.24, + "z": 3.38 + }, + "D8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 47.24, + "z": 3.38 + }, + "D9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 47.24, + "z": 3.38 + }, + "E1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 38.24, + "z": 3.38 + }, + "E10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 38.24, + "z": 3.38 + }, + "E11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 38.24, + "z": 3.38 + }, + "E12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 38.24, + "z": 3.38 + }, + "E2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 38.24, + "z": 3.38 + }, + "E3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 38.24, + "z": 3.38 + }, + "E4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 38.24, + "z": 3.38 + }, + "E5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 38.24, + "z": 3.38 + }, + "E6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 38.24, + "z": 3.38 + }, + "E7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 38.24, + "z": 3.38 + }, + "E8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 38.24, + "z": 3.38 + }, + "E9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 38.24, + "z": 3.38 + }, + "F1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 29.24, + "z": 3.38 + }, + "F10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 29.24, + "z": 3.38 + }, + "F11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 29.24, + "z": 3.38 + }, + "F12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 29.24, + "z": 3.38 + }, + "F2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 29.24, + "z": 3.38 + }, + "F3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 29.24, + "z": 3.38 + }, + "F4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 29.24, + "z": 3.38 + }, + "F5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 29.24, + "z": 3.38 + }, + "F6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 29.24, + "z": 3.38 + }, + "F7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 29.24, + "z": 3.38 + }, + "F8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 29.24, + "z": 3.38 + }, + "F9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 29.24, + "z": 3.38 + }, + "G1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 20.24, + "z": 3.38 + }, + "G10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 20.24, + "z": 3.38 + }, + "G11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 20.24, + "z": 3.38 + }, + "G12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 20.24, + "z": 3.38 + }, + "G2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 20.24, + "z": 3.38 + }, + "G3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 20.24, + "z": 3.38 + }, + "G4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 20.24, + "z": 3.38 + }, + "G5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 20.24, + "z": 3.38 + }, + "G6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 20.24, + "z": 3.38 + }, + "G7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 20.24, + "z": 3.38 + }, + "G8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 20.24, + "z": 3.38 + }, + "G9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 20.24, + "z": 3.38 + }, + "H1": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 14.38, + "y": 11.24, + "z": 3.38 + }, + "H10": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 95.38, + "y": 11.24, + "z": 3.38 + }, + "H11": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 104.38, + "y": 11.24, + "z": 3.38 + }, + "H12": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 113.38, + "y": 11.24, + "z": 3.38 + }, + "H2": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 23.38, + "y": 11.24, + "z": 3.38 + }, + "H3": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 32.38, + "y": 11.24, + "z": 3.38 + }, + "H4": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 41.38, + "y": 11.24, + "z": 3.38 + }, + "H5": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 50.38, + "y": 11.24, + "z": 3.38 + }, + "H6": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 59.38, + "y": 11.24, + "z": 3.38 + }, + "H7": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 68.38, + "y": 11.24, + "z": 3.38 + }, + "H8": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 77.38, + "y": 11.24, + "z": 3.38 + }, + "H9": { + "depth": 14.78, + "diameter": 5.34, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 86.38, + "y": 11.24, + "z": 3.38 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "2b9be36c72ca44069f3f7e9b4836f345", + "notes": [], + "params": { + "loadName": "opentrons_96_pcr_adapter", + "location": { + "moduleId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "adapter" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 8.5, + "y": 5.5, + "z": 0 + }, + "dimensions": { + "xDimension": 111, + "yDimension": 75, + "zDimension": 13.85 + }, + "gripperOffsets": { + "default": { + "dropOffset": { + "x": 0, + "y": 0, + "z": 1.0 + }, + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + } + } + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "adapter", + "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_96_pcr_adapter", + "quirks": [] + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": {}, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 69, + "z": 1.85 + }, + "A10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 69, + "z": 1.85 + }, + "A11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 69, + "z": 1.85 + }, + "A12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 69, + "z": 1.85 + }, + "A2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 69, + "z": 1.85 + }, + "A3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 69, + "z": 1.85 + }, + "A4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 69, + "z": 1.85 + }, + "A5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 69, + "z": 1.85 + }, + "A6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 69, + "z": 1.85 + }, + "A7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 69, + "z": 1.85 + }, + "A8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 69, + "z": 1.85 + }, + "A9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 69, + "z": 1.85 + }, + "B1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 60, + "z": 1.85 + }, + "B10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 60, + "z": 1.85 + }, + "B11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 60, + "z": 1.85 + }, + "B12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 60, + "z": 1.85 + }, + "B2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 60, + "z": 1.85 + }, + "B3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 60, + "z": 1.85 + }, + "B4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 60, + "z": 1.85 + }, + "B5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 60, + "z": 1.85 + }, + "B6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 60, + "z": 1.85 + }, + "B7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 60, + "z": 1.85 + }, + "B8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 60, + "z": 1.85 + }, + "B9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 60, + "z": 1.85 + }, + "C1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 51, + "z": 1.85 + }, + "C10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 51, + "z": 1.85 + }, + "C11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 51, + "z": 1.85 + }, + "C12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 51, + "z": 1.85 + }, + "C2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 51, + "z": 1.85 + }, + "C3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 51, + "z": 1.85 + }, + "C4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 51, + "z": 1.85 + }, + "C5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 51, + "z": 1.85 + }, + "C6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 51, + "z": 1.85 + }, + "C7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 51, + "z": 1.85 + }, + "C8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 51, + "z": 1.85 + }, + "C9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 51, + "z": 1.85 + }, + "D1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 42, + "z": 1.85 + }, + "D10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 42, + "z": 1.85 + }, + "D11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 42, + "z": 1.85 + }, + "D12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 42, + "z": 1.85 + }, + "D2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 42, + "z": 1.85 + }, + "D3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 42, + "z": 1.85 + }, + "D4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 42, + "z": 1.85 + }, + "D5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 42, + "z": 1.85 + }, + "D6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 42, + "z": 1.85 + }, + "D7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 42, + "z": 1.85 + }, + "D8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 42, + "z": 1.85 + }, + "D9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 42, + "z": 1.85 + }, + "E1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 33, + "z": 1.85 + }, + "E10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 33, + "z": 1.85 + }, + "E11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 33, + "z": 1.85 + }, + "E12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 33, + "z": 1.85 + }, + "E2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 33, + "z": 1.85 + }, + "E3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 33, + "z": 1.85 + }, + "E4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 33, + "z": 1.85 + }, + "E5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 33, + "z": 1.85 + }, + "E6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 33, + "z": 1.85 + }, + "E7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 33, + "z": 1.85 + }, + "E8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 33, + "z": 1.85 + }, + "E9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 33, + "z": 1.85 + }, + "F1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 24, + "z": 1.85 + }, + "F10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 24, + "z": 1.85 + }, + "F11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 24, + "z": 1.85 + }, + "F12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 24, + "z": 1.85 + }, + "F2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 24, + "z": 1.85 + }, + "F3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 24, + "z": 1.85 + }, + "F4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 24, + "z": 1.85 + }, + "F5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 24, + "z": 1.85 + }, + "F6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 24, + "z": 1.85 + }, + "F7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 24, + "z": 1.85 + }, + "F8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 24, + "z": 1.85 + }, + "F9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 24, + "z": 1.85 + }, + "G1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 15, + "z": 1.85 + }, + "G10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 15, + "z": 1.85 + }, + "G11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 15, + "z": 1.85 + }, + "G12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 15, + "z": 1.85 + }, + "G2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 15, + "z": 1.85 + }, + "G3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 15, + "z": 1.85 + }, + "G4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 15, + "z": 1.85 + }, + "G5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 15, + "z": 1.85 + }, + "G6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 15, + "z": 1.85 + }, + "G7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 15, + "z": 1.85 + }, + "G8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 15, + "z": 1.85 + }, + "G9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 15, + "z": 1.85 + }, + "H1": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 6, + "y": 6, + "z": 1.85 + }, + "H10": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 87, + "y": 6, + "z": 1.85 + }, + "H11": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 96, + "y": 6, + "z": 1.85 + }, + "H12": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 105, + "y": 6, + "z": 1.85 + }, + "H2": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 15, + "y": 6, + "z": 1.85 + }, + "H3": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 24, + "y": 6, + "z": 1.85 + }, + "H4": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 33, + "y": 6, + "z": 1.85 + }, + "H5": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 42, + "y": 6, + "z": 1.85 + }, + "H6": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 51, + "y": 6, + "z": 1.85 + }, + "H7": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 60, + "y": 6, + "z": 1.85 + }, + "H8": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 69, + "y": 6, + "z": 1.85 + }, + "H9": { + "depth": 12, + "diameter": 5.64, + "shape": "circular", + "totalLiquidVolume": 0, + "x": 78, + "y": 6, + "z": 1.85 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "507480a9ad4e135e7a7d36ffd6d2d8e6", + "notes": [], + "params": { + "loadName": "nest_1_reservoir_290ml", + "location": { + "slotName": "D2" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "NEST", + "brandId": [ + "360206", + "360266" + ], + "links": [ + "https://www.nest-biotech.com/reagent-reserviors" + ] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.76, + "yDimension": 85.47, + "zDimension": 44.4 + }, + "gripperOffsets": {}, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1" + ] + } + ], + "metadata": { + "displayCategory": "reservoir", + "displayName": "NEST 1 Well Reservoir 290 mL", + "displayVolumeUnits": "mL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1" + ] + ], + "parameters": { + "format": "trough", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "nest_1_reservoir_290ml", + "quirks": [ + "centerMultichannelOnWells", + "touchTipDisabled" + ] + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": {}, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 39.55, + "shape": "rectangular", + "totalLiquidVolume": 290000, + "x": 63.88, + "xDimension": 106.8, + "y": 42.74, + "yDimension": 71.2, + "z": 4.85 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8ae6e077abe5453762e935d116fca696", + "notes": [], + "params": { + "loadName": "opentrons_96_wellplate_200ul_pcr_full_skirt", + "location": { + "slotName": "C2" + }, + "namespace": "opentrons", + "version": 2 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "Opentrons", + "brandId": [ + "991-00076" + ], + "links": [ + "https://shop.opentrons.com/tough-0.2-ml-96-well-pcr-plate-full-skirt/" + ] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.76, + "yDimension": 85.48, + "zDimension": 16.0 + }, + "gripForce": 15.0, + "gripHeightFromLabwareBottom": 10.0, + "gripperOffsets": {}, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "wellPlate", + "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": true, + "isTiprack": false, + "loadName": "opentrons_96_wellplate_200ul_pcr_full_skirt" + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": { + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.95 + }, + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 11.91 + } + }, + "stackingOffsetWithModule": { + "magneticBlockV1": { + "x": 0, + "y": 0, + "z": 3.54 + }, + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.7 + } + }, + "version": 2, + "wells": { + "A1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 74.24, + "z": 1.05 + }, + "A10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 74.24, + "z": 1.05 + }, + "A11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 74.24, + "z": 1.05 + }, + "A12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 74.24, + "z": 1.05 + }, + "A2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 74.24, + "z": 1.05 + }, + "A3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 74.24, + "z": 1.05 + }, + "A4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 74.24, + "z": 1.05 + }, + "A5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 74.24, + "z": 1.05 + }, + "A6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 74.24, + "z": 1.05 + }, + "A7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 74.24, + "z": 1.05 + }, + "A8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 74.24, + "z": 1.05 + }, + "A9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 74.24, + "z": 1.05 + }, + "B1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 65.24, + "z": 1.05 + }, + "B10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 65.24, + "z": 1.05 + }, + "B11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 65.24, + "z": 1.05 + }, + "B12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 65.24, + "z": 1.05 + }, + "B2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 65.24, + "z": 1.05 + }, + "B3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 65.24, + "z": 1.05 + }, + "B4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 65.24, + "z": 1.05 + }, + "B5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 65.24, + "z": 1.05 + }, + "B6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 65.24, + "z": 1.05 + }, + "B7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 65.24, + "z": 1.05 + }, + "B8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 65.24, + "z": 1.05 + }, + "B9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 65.24, + "z": 1.05 + }, + "C1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 56.24, + "z": 1.05 + }, + "C10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 56.24, + "z": 1.05 + }, + "C11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 56.24, + "z": 1.05 + }, + "C12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 56.24, + "z": 1.05 + }, + "C2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 56.24, + "z": 1.05 + }, + "C3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 56.24, + "z": 1.05 + }, + "C4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 56.24, + "z": 1.05 + }, + "C5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 56.24, + "z": 1.05 + }, + "C6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 56.24, + "z": 1.05 + }, + "C7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 56.24, + "z": 1.05 + }, + "C8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 56.24, + "z": 1.05 + }, + "C9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 56.24, + "z": 1.05 + }, + "D1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 47.24, + "z": 1.05 + }, + "D10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 47.24, + "z": 1.05 + }, + "D11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 47.24, + "z": 1.05 + }, + "D12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 47.24, + "z": 1.05 + }, + "D2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 47.24, + "z": 1.05 + }, + "D3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 47.24, + "z": 1.05 + }, + "D4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 47.24, + "z": 1.05 + }, + "D5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 47.24, + "z": 1.05 + }, + "D6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 47.24, + "z": 1.05 + }, + "D7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 47.24, + "z": 1.05 + }, + "D8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 47.24, + "z": 1.05 + }, + "D9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 47.24, + "z": 1.05 + }, + "E1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 38.24, + "z": 1.05 + }, + "E10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 38.24, + "z": 1.05 + }, + "E11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 38.24, + "z": 1.05 + }, + "E12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 38.24, + "z": 1.05 + }, + "E2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 38.24, + "z": 1.05 + }, + "E3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 38.24, + "z": 1.05 + }, + "E4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 38.24, + "z": 1.05 + }, + "E5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 38.24, + "z": 1.05 + }, + "E6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 38.24, + "z": 1.05 + }, + "E7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 38.24, + "z": 1.05 + }, + "E8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 38.24, + "z": 1.05 + }, + "E9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 38.24, + "z": 1.05 + }, + "F1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 29.24, + "z": 1.05 + }, + "F10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 29.24, + "z": 1.05 + }, + "F11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 29.24, + "z": 1.05 + }, + "F12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 29.24, + "z": 1.05 + }, + "F2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 29.24, + "z": 1.05 + }, + "F3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 29.24, + "z": 1.05 + }, + "F4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 29.24, + "z": 1.05 + }, + "F5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 29.24, + "z": 1.05 + }, + "F6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 29.24, + "z": 1.05 + }, + "F7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 29.24, + "z": 1.05 + }, + "F8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 29.24, + "z": 1.05 + }, + "F9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 29.24, + "z": 1.05 + }, + "G1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 20.24, + "z": 1.05 + }, + "G10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 20.24, + "z": 1.05 + }, + "G11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 20.24, + "z": 1.05 + }, + "G12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 20.24, + "z": 1.05 + }, + "G2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 20.24, + "z": 1.05 + }, + "G3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 20.24, + "z": 1.05 + }, + "G4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 20.24, + "z": 1.05 + }, + "G5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 20.24, + "z": 1.05 + }, + "G6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 20.24, + "z": 1.05 + }, + "G7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 20.24, + "z": 1.05 + }, + "G8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 20.24, + "z": 1.05 + }, + "G9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 20.24, + "z": 1.05 + }, + "H1": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 14.38, + "y": 11.24, + "z": 1.05 + }, + "H10": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 95.38, + "y": 11.24, + "z": 1.05 + }, + "H11": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 104.38, + "y": 11.24, + "z": 1.05 + }, + "H12": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 113.38, + "y": 11.24, + "z": 1.05 + }, + "H2": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 23.38, + "y": 11.24, + "z": 1.05 + }, + "H3": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 32.38, + "y": 11.24, + "z": 1.05 + }, + "H4": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 41.38, + "y": 11.24, + "z": 1.05 + }, + "H5": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 50.38, + "y": 11.24, + "z": 1.05 + }, + "H6": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 59.38, + "y": 11.24, + "z": 1.05 + }, + "H7": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 68.38, + "y": 11.24, + "z": 1.05 + }, + "H8": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 77.38, + "y": 11.24, + "z": 1.05 + }, + "H9": { + "depth": 14.95, + "diameter": 5.5, + "shape": "circular", + "totalLiquidVolume": 200, + "x": 86.38, + "y": 11.24, + "z": 1.05 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8a9b3ed81e0357a321f879efe1c8bc00", + "notes": [], + "params": { + "loadName": "opentrons_flex_96_tiprack_adapter", + "location": { + "slotName": "A2" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [ + "adapter" + ], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": -14.25, + "y": -3.5, + "z": 0 + }, + "dimensions": { + "xDimension": 156.5, + "yDimension": 93, + "zDimension": 132 + }, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "metadata": { + "displayCategory": "adapter", + "displayName": "Opentrons Flex 96 Tip Rack Adapter", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "opentrons_flex_96_tiprack_adapter", + "quirks": [ + "tiprackAdapterFor96Channel" + ] + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": {}, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": {} + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a59c403d3ddb2ed94d8377fdf2d634b2", + "notes": [], + "params": { + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": { + "labwareId": "UUID" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.75, + "zDimension": 99 + }, + "gripForce": 16.0, + "gripHeightFromLabwareBottom": 23.9, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "tipRack", + "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": true, + "loadName": "opentrons_flex_96_tiprack_1000ul", + "quirks": [], + "tipLength": 95.6, + "tipOverlap": 10.5 + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": { + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } + }, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 74.38, + "z": 1.5 + }, + "A10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 74.38, + "z": 1.5 + }, + "A11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 74.38, + "z": 1.5 + }, + "A12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 74.38, + "z": 1.5 + }, + "A2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 74.38, + "z": 1.5 + }, + "A3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 74.38, + "z": 1.5 + }, + "A4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 74.38, + "z": 1.5 + }, + "A5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 74.38, + "z": 1.5 + }, + "A6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 74.38, + "z": 1.5 + }, + "A7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 74.38, + "z": 1.5 + }, + "A8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 74.38, + "z": 1.5 + }, + "A9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 74.38, + "z": 1.5 + }, + "B1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 65.38, + "z": 1.5 + }, + "B10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 65.38, + "z": 1.5 + }, + "B11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 65.38, + "z": 1.5 + }, + "B12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 65.38, + "z": 1.5 + }, + "B2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 65.38, + "z": 1.5 + }, + "B3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 65.38, + "z": 1.5 + }, + "B4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 65.38, + "z": 1.5 + }, + "B5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 65.38, + "z": 1.5 + }, + "B6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 65.38, + "z": 1.5 + }, + "B7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 65.38, + "z": 1.5 + }, + "B8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 65.38, + "z": 1.5 + }, + "B9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 65.38, + "z": 1.5 + }, + "C1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 56.38, + "z": 1.5 + }, + "C10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 56.38, + "z": 1.5 + }, + "C11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 56.38, + "z": 1.5 + }, + "C12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 56.38, + "z": 1.5 + }, + "C2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 56.38, + "z": 1.5 + }, + "C3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 56.38, + "z": 1.5 + }, + "C4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 56.38, + "z": 1.5 + }, + "C5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 56.38, + "z": 1.5 + }, + "C6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 56.38, + "z": 1.5 + }, + "C7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 56.38, + "z": 1.5 + }, + "C8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 56.38, + "z": 1.5 + }, + "C9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 56.38, + "z": 1.5 + }, + "D1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 47.38, + "z": 1.5 + }, + "D10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 47.38, + "z": 1.5 + }, + "D11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 47.38, + "z": 1.5 + }, + "D12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 47.38, + "z": 1.5 + }, + "D2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 47.38, + "z": 1.5 + }, + "D3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 47.38, + "z": 1.5 + }, + "D4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 47.38, + "z": 1.5 + }, + "D5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 47.38, + "z": 1.5 + }, + "D6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 47.38, + "z": 1.5 + }, + "D7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 47.38, + "z": 1.5 + }, + "D8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 47.38, + "z": 1.5 + }, + "D9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 47.38, + "z": 1.5 + }, + "E1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 38.38, + "z": 1.5 + }, + "E10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 38.38, + "z": 1.5 + }, + "E11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 38.38, + "z": 1.5 + }, + "E12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 38.38, + "z": 1.5 + }, + "E2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 38.38, + "z": 1.5 + }, + "E3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 38.38, + "z": 1.5 + }, + "E4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 38.38, + "z": 1.5 + }, + "E5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 38.38, + "z": 1.5 + }, + "E6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 38.38, + "z": 1.5 + }, + "E7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 38.38, + "z": 1.5 + }, + "E8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 38.38, + "z": 1.5 + }, + "E9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 38.38, + "z": 1.5 + }, + "F1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 29.38, + "z": 1.5 + }, + "F10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 29.38, + "z": 1.5 + }, + "F11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 29.38, + "z": 1.5 + }, + "F12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 29.38, + "z": 1.5 + }, + "F2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 29.38, + "z": 1.5 + }, + "F3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 29.38, + "z": 1.5 + }, + "F4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 29.38, + "z": 1.5 + }, + "F5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 29.38, + "z": 1.5 + }, + "F6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 29.38, + "z": 1.5 + }, + "F7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 29.38, + "z": 1.5 + }, + "F8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 29.38, + "z": 1.5 + }, + "F9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 29.38, + "z": 1.5 + }, + "G1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 20.38, + "z": 1.5 + }, + "G10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 20.38, + "z": 1.5 + }, + "G11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 20.38, + "z": 1.5 + }, + "G12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 20.38, + "z": 1.5 + }, + "G2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 20.38, + "z": 1.5 + }, + "G3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 20.38, + "z": 1.5 + }, + "G4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 20.38, + "z": 1.5 + }, + "G5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 20.38, + "z": 1.5 + }, + "G6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 20.38, + "z": 1.5 + }, + "G7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 20.38, + "z": 1.5 + }, + "G8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 20.38, + "z": 1.5 + }, + "G9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 20.38, + "z": 1.5 + }, + "H1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 11.38, + "z": 1.5 + }, + "H10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 11.38, + "z": 1.5 + }, + "H11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 11.38, + "z": 1.5 + }, + "H12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 11.38, + "z": 1.5 + }, + "H2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 11.38, + "z": 1.5 + }, + "H3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 11.38, + "z": 1.5 + }, + "H4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 11.38, + "z": 1.5 + }, + "H5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 11.38, + "z": 1.5 + }, + "H6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 11.38, + "z": 1.5 + }, + "H7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 11.38, + "z": 1.5 + }, + "H8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 11.38, + "z": 1.5 + }, + "H9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 11.38, + "z": 1.5 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "17ae05bacb1938a44ffcedba774adf48", + "notes": [], + "params": { + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": { + "slotName": "C3" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.75, + "zDimension": 99 + }, + "gripForce": 16.0, + "gripHeightFromLabwareBottom": 23.9, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "tipRack", + "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": true, + "loadName": "opentrons_flex_96_tiprack_1000ul", + "quirks": [], + "tipLength": 95.6, + "tipOverlap": 10.5 + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": { + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } + }, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 74.38, + "z": 1.5 + }, + "A10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 74.38, + "z": 1.5 + }, + "A11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 74.38, + "z": 1.5 + }, + "A12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 74.38, + "z": 1.5 + }, + "A2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 74.38, + "z": 1.5 + }, + "A3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 74.38, + "z": 1.5 + }, + "A4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 74.38, + "z": 1.5 + }, + "A5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 74.38, + "z": 1.5 + }, + "A6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 74.38, + "z": 1.5 + }, + "A7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 74.38, + "z": 1.5 + }, + "A8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 74.38, + "z": 1.5 + }, + "A9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 74.38, + "z": 1.5 + }, + "B1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 65.38, + "z": 1.5 + }, + "B10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 65.38, + "z": 1.5 + }, + "B11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 65.38, + "z": 1.5 + }, + "B12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 65.38, + "z": 1.5 + }, + "B2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 65.38, + "z": 1.5 + }, + "B3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 65.38, + "z": 1.5 + }, + "B4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 65.38, + "z": 1.5 + }, + "B5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 65.38, + "z": 1.5 + }, + "B6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 65.38, + "z": 1.5 + }, + "B7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 65.38, + "z": 1.5 + }, + "B8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 65.38, + "z": 1.5 + }, + "B9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 65.38, + "z": 1.5 + }, + "C1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 56.38, + "z": 1.5 + }, + "C10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 56.38, + "z": 1.5 + }, + "C11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 56.38, + "z": 1.5 + }, + "C12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 56.38, + "z": 1.5 + }, + "C2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 56.38, + "z": 1.5 + }, + "C3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 56.38, + "z": 1.5 + }, + "C4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 56.38, + "z": 1.5 + }, + "C5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 56.38, + "z": 1.5 + }, + "C6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 56.38, + "z": 1.5 + }, + "C7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 56.38, + "z": 1.5 + }, + "C8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 56.38, + "z": 1.5 + }, + "C9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 56.38, + "z": 1.5 + }, + "D1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 47.38, + "z": 1.5 + }, + "D10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 47.38, + "z": 1.5 + }, + "D11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 47.38, + "z": 1.5 + }, + "D12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 47.38, + "z": 1.5 + }, + "D2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 47.38, + "z": 1.5 + }, + "D3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 47.38, + "z": 1.5 + }, + "D4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 47.38, + "z": 1.5 + }, + "D5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 47.38, + "z": 1.5 + }, + "D6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 47.38, + "z": 1.5 + }, + "D7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 47.38, + "z": 1.5 + }, + "D8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 47.38, + "z": 1.5 + }, + "D9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 47.38, + "z": 1.5 + }, + "E1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 38.38, + "z": 1.5 + }, + "E10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 38.38, + "z": 1.5 + }, + "E11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 38.38, + "z": 1.5 + }, + "E12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 38.38, + "z": 1.5 + }, + "E2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 38.38, + "z": 1.5 + }, + "E3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 38.38, + "z": 1.5 + }, + "E4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 38.38, + "z": 1.5 + }, + "E5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 38.38, + "z": 1.5 + }, + "E6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 38.38, + "z": 1.5 + }, + "E7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 38.38, + "z": 1.5 + }, + "E8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 38.38, + "z": 1.5 + }, + "E9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 38.38, + "z": 1.5 + }, + "F1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 29.38, + "z": 1.5 + }, + "F10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 29.38, + "z": 1.5 + }, + "F11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 29.38, + "z": 1.5 + }, + "F12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 29.38, + "z": 1.5 + }, + "F2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 29.38, + "z": 1.5 + }, + "F3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 29.38, + "z": 1.5 + }, + "F4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 29.38, + "z": 1.5 + }, + "F5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 29.38, + "z": 1.5 + }, + "F6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 29.38, + "z": 1.5 + }, + "F7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 29.38, + "z": 1.5 + }, + "F8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 29.38, + "z": 1.5 + }, + "F9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 29.38, + "z": 1.5 + }, + "G1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 20.38, + "z": 1.5 + }, + "G10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 20.38, + "z": 1.5 + }, + "G11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 20.38, + "z": 1.5 + }, + "G12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 20.38, + "z": 1.5 + }, + "G2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 20.38, + "z": 1.5 + }, + "G3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 20.38, + "z": 1.5 + }, + "G4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 20.38, + "z": 1.5 + }, + "G5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 20.38, + "z": 1.5 + }, + "G6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 20.38, + "z": 1.5 + }, + "G7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 20.38, + "z": 1.5 + }, + "G8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 20.38, + "z": 1.5 + }, + "G9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 20.38, + "z": 1.5 + }, + "H1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 11.38, + "z": 1.5 + }, + "H10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 11.38, + "z": 1.5 + }, + "H11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 11.38, + "z": 1.5 + }, + "H12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 11.38, + "z": 1.5 + }, + "H2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 11.38, + "z": 1.5 + }, + "H3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 11.38, + "z": 1.5 + }, + "H4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 11.38, + "z": 1.5 + }, + "H5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 11.38, + "z": 1.5 + }, + "H6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 11.38, + "z": 1.5 + }, + "H7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 11.38, + "z": 1.5 + }, + "H8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 11.38, + "z": 1.5 + }, + "H9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 11.38, + "z": 1.5 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "26fd355fdb8b0c88fb550b0f1f1efd5d", + "notes": [], + "params": { + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": { + "addressableAreaName": "C4" + }, + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.75, + "zDimension": 99 + }, + "gripForce": 16.0, + "gripHeightFromLabwareBottom": 23.9, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "tipRack", + "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": true, + "loadName": "opentrons_flex_96_tiprack_1000ul", + "quirks": [], + "tipLength": 95.6, + "tipOverlap": 10.5 + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": { + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } + }, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 74.38, + "z": 1.5 + }, + "A10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 74.38, + "z": 1.5 + }, + "A11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 74.38, + "z": 1.5 + }, + "A12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 74.38, + "z": 1.5 + }, + "A2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 74.38, + "z": 1.5 + }, + "A3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 74.38, + "z": 1.5 + }, + "A4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 74.38, + "z": 1.5 + }, + "A5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 74.38, + "z": 1.5 + }, + "A6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 74.38, + "z": 1.5 + }, + "A7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 74.38, + "z": 1.5 + }, + "A8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 74.38, + "z": 1.5 + }, + "A9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 74.38, + "z": 1.5 + }, + "B1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 65.38, + "z": 1.5 + }, + "B10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 65.38, + "z": 1.5 + }, + "B11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 65.38, + "z": 1.5 + }, + "B12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 65.38, + "z": 1.5 + }, + "B2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 65.38, + "z": 1.5 + }, + "B3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 65.38, + "z": 1.5 + }, + "B4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 65.38, + "z": 1.5 + }, + "B5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 65.38, + "z": 1.5 + }, + "B6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 65.38, + "z": 1.5 + }, + "B7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 65.38, + "z": 1.5 + }, + "B8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 65.38, + "z": 1.5 + }, + "B9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 65.38, + "z": 1.5 + }, + "C1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 56.38, + "z": 1.5 + }, + "C10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 56.38, + "z": 1.5 + }, + "C11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 56.38, + "z": 1.5 + }, + "C12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 56.38, + "z": 1.5 + }, + "C2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 56.38, + "z": 1.5 + }, + "C3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 56.38, + "z": 1.5 + }, + "C4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 56.38, + "z": 1.5 + }, + "C5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 56.38, + "z": 1.5 + }, + "C6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 56.38, + "z": 1.5 + }, + "C7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 56.38, + "z": 1.5 + }, + "C8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 56.38, + "z": 1.5 + }, + "C9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 56.38, + "z": 1.5 + }, + "D1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 47.38, + "z": 1.5 + }, + "D10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 47.38, + "z": 1.5 + }, + "D11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 47.38, + "z": 1.5 + }, + "D12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 47.38, + "z": 1.5 + }, + "D2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 47.38, + "z": 1.5 + }, + "D3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 47.38, + "z": 1.5 + }, + "D4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 47.38, + "z": 1.5 + }, + "D5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 47.38, + "z": 1.5 + }, + "D6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 47.38, + "z": 1.5 + }, + "D7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 47.38, + "z": 1.5 + }, + "D8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 47.38, + "z": 1.5 + }, + "D9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 47.38, + "z": 1.5 + }, + "E1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 38.38, + "z": 1.5 + }, + "E10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 38.38, + "z": 1.5 + }, + "E11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 38.38, + "z": 1.5 + }, + "E12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 38.38, + "z": 1.5 + }, + "E2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 38.38, + "z": 1.5 + }, + "E3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 38.38, + "z": 1.5 + }, + "E4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 38.38, + "z": 1.5 + }, + "E5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 38.38, + "z": 1.5 + }, + "E6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 38.38, + "z": 1.5 + }, + "E7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 38.38, + "z": 1.5 + }, + "E8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 38.38, + "z": 1.5 + }, + "E9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 38.38, + "z": 1.5 + }, + "F1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 29.38, + "z": 1.5 + }, + "F10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 29.38, + "z": 1.5 + }, + "F11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 29.38, + "z": 1.5 + }, + "F12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 29.38, + "z": 1.5 + }, + "F2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 29.38, + "z": 1.5 + }, + "F3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 29.38, + "z": 1.5 + }, + "F4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 29.38, + "z": 1.5 + }, + "F5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 29.38, + "z": 1.5 + }, + "F6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 29.38, + "z": 1.5 + }, + "F7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 29.38, + "z": 1.5 + }, + "F8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 29.38, + "z": 1.5 + }, + "F9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 29.38, + "z": 1.5 + }, + "G1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 20.38, + "z": 1.5 + }, + "G10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 20.38, + "z": 1.5 + }, + "G11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 20.38, + "z": 1.5 + }, + "G12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 20.38, + "z": 1.5 + }, + "G2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 20.38, + "z": 1.5 + }, + "G3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 20.38, + "z": 1.5 + }, + "G4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 20.38, + "z": 1.5 + }, + "G5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 20.38, + "z": 1.5 + }, + "G6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 20.38, + "z": 1.5 + }, + "G7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 20.38, + "z": 1.5 + }, + "G8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 20.38, + "z": 1.5 + }, + "G9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 20.38, + "z": 1.5 + }, + "H1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 11.38, + "z": 1.5 + }, + "H10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 11.38, + "z": 1.5 + }, + "H11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 11.38, + "z": 1.5 + }, + "H12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 11.38, + "z": 1.5 + }, + "H2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 11.38, + "z": 1.5 + }, + "H3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 11.38, + "z": 1.5 + }, + "H4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 11.38, + "z": 1.5 + }, + "H5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 11.38, + "z": 1.5 + }, + "H6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 11.38, + "z": 1.5 + }, + "H7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 11.38, + "z": 1.5 + }, + "H8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 11.38, + "z": 1.5 + }, + "H9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 11.38, + "z": 1.5 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8536492bbcebe772a2f733df19c99c4f", + "notes": [], + "params": { + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": "offDeck", + "namespace": "opentrons", + "version": 1 + }, + "result": { + "definition": { + "allowedRoles": [], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.75, + "zDimension": 99 + }, + "gripForce": 16.0, + "gripHeightFromLabwareBottom": 23.9, + "gripperOffsets": {}, + "groups": [ + { + "metadata": {}, + "wells": [ + "A1", + "A10", + "A11", + "A12", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "B1", + "B10", + "B11", + "B12", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "C1", + "C10", + "C11", + "C12", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "D1", + "D10", + "D11", + "D12", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "E1", + "E10", + "E11", + "E12", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "F1", + "F10", + "F11", + "F12", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "G1", + "G10", + "G11", + "G12", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "H1", + "H10", + "H11", + "H12", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9" + ] + } + ], + "metadata": { + "displayCategory": "tipRack", + "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", + "displayVolumeUnits": "µL", + "tags": [] + }, + "namespace": "opentrons", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ] + ], + "parameters": { + "format": "96Standard", + "isMagneticModuleCompatible": false, + "isTiprack": true, + "loadName": "opentrons_flex_96_tiprack_1000ul", + "quirks": [], + "tipLength": 95.6, + "tipOverlap": 10.5 + }, + "schemaVersion": 2, + "stackingOffsetWithLabware": { + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } + }, + "stackingOffsetWithModule": {}, + "version": 1, + "wells": { + "A1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 74.38, + "z": 1.5 + }, + "A10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 74.38, + "z": 1.5 + }, + "A11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 74.38, + "z": 1.5 + }, + "A12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 74.38, + "z": 1.5 + }, + "A2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 74.38, + "z": 1.5 + }, + "A3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 74.38, + "z": 1.5 + }, + "A4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 74.38, + "z": 1.5 + }, + "A5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 74.38, + "z": 1.5 + }, + "A6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 74.38, + "z": 1.5 + }, + "A7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 74.38, + "z": 1.5 + }, + "A8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 74.38, + "z": 1.5 + }, + "A9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 74.38, + "z": 1.5 + }, + "B1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 65.38, + "z": 1.5 + }, + "B10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 65.38, + "z": 1.5 + }, + "B11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 65.38, + "z": 1.5 + }, + "B12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 65.38, + "z": 1.5 + }, + "B2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 65.38, + "z": 1.5 + }, + "B3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 65.38, + "z": 1.5 + }, + "B4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 65.38, + "z": 1.5 + }, + "B5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 65.38, + "z": 1.5 + }, + "B6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 65.38, + "z": 1.5 + }, + "B7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 65.38, + "z": 1.5 + }, + "B8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 65.38, + "z": 1.5 + }, + "B9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 65.38, + "z": 1.5 + }, + "C1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 56.38, + "z": 1.5 + }, + "C10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 56.38, + "z": 1.5 + }, + "C11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 56.38, + "z": 1.5 + }, + "C12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 56.38, + "z": 1.5 + }, + "C2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 56.38, + "z": 1.5 + }, + "C3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 56.38, + "z": 1.5 + }, + "C4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 56.38, + "z": 1.5 + }, + "C5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 56.38, + "z": 1.5 + }, + "C6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 56.38, + "z": 1.5 + }, + "C7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 56.38, + "z": 1.5 + }, + "C8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 56.38, + "z": 1.5 + }, + "C9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 56.38, + "z": 1.5 + }, + "D1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 47.38, + "z": 1.5 + }, + "D10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 47.38, + "z": 1.5 + }, + "D11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 47.38, + "z": 1.5 + }, + "D12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 47.38, + "z": 1.5 + }, + "D2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 47.38, + "z": 1.5 + }, + "D3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 47.38, + "z": 1.5 + }, + "D4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 47.38, + "z": 1.5 + }, + "D5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 47.38, + "z": 1.5 + }, + "D6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 47.38, + "z": 1.5 + }, + "D7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 47.38, + "z": 1.5 + }, + "D8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 47.38, + "z": 1.5 + }, + "D9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 47.38, + "z": 1.5 + }, + "E1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 38.38, + "z": 1.5 + }, + "E10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 38.38, + "z": 1.5 + }, + "E11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 38.38, + "z": 1.5 + }, + "E12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 38.38, + "z": 1.5 + }, + "E2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 38.38, + "z": 1.5 + }, + "E3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 38.38, + "z": 1.5 + }, + "E4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 38.38, + "z": 1.5 + }, + "E5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 38.38, + "z": 1.5 + }, + "E6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 38.38, + "z": 1.5 + }, + "E7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 38.38, + "z": 1.5 + }, + "E8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 38.38, + "z": 1.5 + }, + "E9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 38.38, + "z": 1.5 + }, + "F1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 29.38, + "z": 1.5 + }, + "F10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 29.38, + "z": 1.5 + }, + "F11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 29.38, + "z": 1.5 + }, + "F12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 29.38, + "z": 1.5 + }, + "F2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 29.38, + "z": 1.5 + }, + "F3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 29.38, + "z": 1.5 + }, + "F4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 29.38, + "z": 1.5 + }, + "F5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 29.38, + "z": 1.5 + }, + "F6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 29.38, + "z": 1.5 + }, + "F7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 29.38, + "z": 1.5 + }, + "F8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 29.38, + "z": 1.5 + }, + "F9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 29.38, + "z": 1.5 + }, + "G1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 20.38, + "z": 1.5 + }, + "G10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 20.38, + "z": 1.5 + }, + "G11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 20.38, + "z": 1.5 + }, + "G12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 20.38, + "z": 1.5 + }, + "G2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 20.38, + "z": 1.5 + }, + "G3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 20.38, + "z": 1.5 + }, + "G4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 20.38, + "z": 1.5 + }, + "G5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 20.38, + "z": 1.5 + }, + "G6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 20.38, + "z": 1.5 + }, + "G7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 20.38, + "z": 1.5 + }, + "G8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 20.38, + "z": 1.5 + }, + "G9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 20.38, + "z": 1.5 + }, + "H1": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 14.38, + "y": 11.38, + "z": 1.5 + }, + "H10": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 95.38, + "y": 11.38, + "z": 1.5 + }, + "H11": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 104.38, + "y": 11.38, + "z": 1.5 + }, + "H12": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 113.38, + "y": 11.38, + "z": 1.5 + }, + "H2": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 23.38, + "y": 11.38, + "z": 1.5 + }, + "H3": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 32.38, + "y": 11.38, + "z": 1.5 + }, + "H4": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 41.38, + "y": 11.38, + "z": 1.5 + }, + "H5": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 50.38, + "y": 11.38, + "z": 1.5 + }, + "H6": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 59.38, + "y": 11.38, + "z": 1.5 + }, + "H7": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 68.38, + "y": 11.38, + "z": 1.5 + }, + "H8": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 77.38, + "y": 11.38, + "z": 1.5 + }, + "H9": { + "depth": 97.5, + "diameter": 5.47, + "shape": "circular", + "totalLiquidVolume": 1000, + "x": 86.38, + "y": 11.38, + "z": 1.5 + } + } + }, + "labwareId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadPipette", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1da6a76a5f9ccc6dc5311b4dda81e70e", + "notes": [], + "params": { + "liquidPresenceDetection": true, + "mount": "left", + "pipetteName": "p1000_96", + "tipOverlapNotAfterVersion": "v3" + }, + "result": { + "pipetteId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "loadLiquid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "898a866117a32fd68820a6526bef6db3", + "notes": [], + "params": { + "labwareId": "UUID", + "liquidId": "UUID", + "volumeByWell": { + "A1": 29000.0 + } + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e225750b329b6840e7e27634e9e12b6f", + "notes": [], + "params": { + "message": "Item opentrons_96_wellplate_200ul_pcr_full_skirt is at C2" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d394c9aab9575b56edd3ad97b0355259", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "moduleId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1bb0adb1034d8481ac12eaa7f7c1c3ef", + "notes": [], + "params": { + "message": "Item opentrons_96_wellplate_200ul_pcr_full_skirt is at ThermocyclerContext at Thermocycler Module GEN2 on B1 lw Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "017ca5d99c90c0bba8904243fcd89832", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "C2" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8011dfe9e544689ec795e643c88ac270", + "notes": [], + "params": { + "message": "Item opentrons_96_wellplate_200ul_pcr_full_skirt is at C2" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "66b606966287f93e943cbe1c210953de", + "notes": [], + "params": { + "message": "Item nest_1_reservoir_290ml is at D2" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c63414793ccc12f468292d27a7c23bd0", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "addressableAreaName": "D4" + }, + "strategy": "manualMoveWithPause" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ddcaec056e1697e98605f81b27c3aab1", + "notes": [], + "params": { + "message": "Item nest_1_reservoir_290ml is at D4" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7a3df36a08d870099052afb8a0cda156", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "D2" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3f060abc43588bf1cb31c84334652741", + "notes": [], + "params": { + "message": "Item nest_1_reservoir_290ml is at D2" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "configureNozzleLayout", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "54f7126428b3d9ccbdfecf81650de609", + "notes": [], + "params": { + "configurationParams": { + "primaryNozzle": "A12", + "style": "COLUMN" + }, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "870404c9b72d6bd37634d8e6beca84c6", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 342.38, + "y": 181.38, + "z": 99.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "32e38e175b6506181d178153d765b0c7", + "notes": [], + "params": { + "message": "Tip rack in C3" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f2ed2d040deab45db33b562c016689b3", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 🟢 A3 🟢 A4 🟢 A5 🟢 A6 🟢 A7 🟢 A8 🟢 A9 🟢 A10 🟢 A11 🟢 A12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8f7ef35977c269c26521ac70ba964663", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 🟢 B3 🟢 B4 🟢 B5 🟢 B6 🟢 B7 🟢 B8 🟢 B9 🟢 B10 🟢 B11 🟢 B12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bf11e9838b6269c7fd170ae415a52ccf", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 🟢 C3 🟢 C4 🟢 C5 🟢 C6 🟢 C7 🟢 C8 🟢 C9 🟢 C10 🟢 C11 🟢 C12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "95db1fadf1b23523b5453e177b9c50da", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 🟢 D3 🟢 D4 🟢 D5 🟢 D6 🟢 D7 🟢 D8 🟢 D9 🟢 D10 🟢 D11 🟢 D12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f9800b33ba24bddcacb0db7eca628061", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 🟢 E3 🟢 E4 🟢 E5 🟢 E6 🟢 E7 🟢 E8 🟢 E9 🟢 E10 🟢 E11 🟢 E12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "107ef8bbe6742f96c6de7294af9a164c", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 🟢 F3 🟢 F4 🟢 F5 🟢 F6 🟢 F7 🟢 F8 🟢 F9 🟢 F10 🟢 F11 🟢 F12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ad4f7d4dcb71d186df59ccf1c9f1ca10", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 🟢 G3 🟢 G4 🟢 G5 🟢 G6 🟢 G7 🟢 G8 🟢 G9 🟢 G10 🟢 G11 🟢 G12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "91351b86cc3e4dc2177314888ecbc2be", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 🟢 H3 🟢 H4 🟢 H5 🟢 H6 🟢 H7 🟢 H8 🟢 H9 🟢 H10 🟢 H11 🟢 H12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "183da52c0f8f8b79d27c6b68d2b170e5", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7b296211cf41fa707f71d42cea453414", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "0b8dd26114eb32bc6eeae9ae5ade6ebc", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8fdbbc092fe6f9f712459d911a673c02", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTipInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1d391eb17896c2f0a7d8fc6b1b08abc7", + "notes": [], + "params": { + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "configureNozzleLayout", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "81780206640aa0fd5e89455de48819ca", + "notes": [], + "params": { + "configurationParams": { + "primaryNozzle": "H12", + "style": "SINGLE" + }, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8c4ee9b87303fb4539f304fa6130a437", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A2" + }, + "result": { + "position": { + "x": 351.38, + "y": 181.38, + "z": 99.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "4bbd30c3fb3bae996d2ad6a0f436b68c", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a7e370d997ef0a06985f630aff0b0509", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "271e94d4af04613ce7a83bb5a883de6d", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "37521a0b1c1a673a476797b337d89d16", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b30428396a416e3d22093cf4c773b47c", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "49d59ded6092111efa96d0567bad1a49", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e77f6719b8f3419aa0b9f02fc60b9aa9", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTipInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "478e3582f4eb2ed128a5daca61a4e9b6", + "notes": [], + "params": { + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d117b92df9213935f80289757890dfb1", + "notes": [], + "params": { + "message": "Tip rack in C3" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a08648d6082ed9ac8f0bbd06ad286f1a", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 🟢 A4 🟢 A5 🟢 A6 🟢 A7 🟢 A8 🟢 A9 🟢 A10 🟢 A11 🟢 A12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "786e445d77fb813503843582c1e0e240", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 🟢 B3 🟢 B4 🟢 B5 🟢 B6 🟢 B7 🟢 B8 🟢 B9 🟢 B10 🟢 B11 🟢 B12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5925cf7a20814afaf40e53aa8ae06558", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 🟢 C3 🟢 C4 🟢 C5 🟢 C6 🟢 C7 🟢 C8 🟢 C9 🟢 C10 🟢 C11 🟢 C12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "6db826519588f9431bb3af0e3fa706c9", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 🟢 D3 🟢 D4 🟢 D5 🟢 D6 🟢 D7 🟢 D8 🟢 D9 🟢 D10 🟢 D11 🟢 D12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8ebd61bc9e0a48c2ede74a548db4a60c", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 🟢 E3 🟢 E4 🟢 E5 🟢 E6 🟢 E7 🟢 E8 🟢 E9 🟢 E10 🟢 E11 🟢 E12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9f42eca386eaaf3630878c24096682fc", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 🟢 F3 🟢 F4 🟢 F5 🟢 F6 🟢 F7 🟢 F8 🟢 F9 🟢 F10 🟢 F11 🟢 F12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1b7a1f8eb4e410f40b730ada3973af21", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 🟢 G3 🟢 G4 🟢 G5 🟢 G6 🟢 G7 🟢 G8 🟢 G9 🟢 G10 🟢 G11 🟢 G12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b80f271858de256646cdf2682ac749bf", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 🟢 H3 🟢 H4 🟢 H5 🟢 H6 🟢 H7 🟢 H8 🟢 H9 🟢 H10 🟢 H11 🟢 H12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "58570b636ea0e4ab4e3dca83d9414cfc", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "addressableAreaName": "gripperWasteChute" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d0db82bcc9973012d30c92664d808e18", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "C3" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "configureNozzleLayout", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d42132b53600539d7ad1de002cb0e06e", + "notes": [], + "params": { + "configurationParams": { + "primaryNozzle": "H1", + "style": "ROW" + }, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7666f3511c92bd4c79c2f4796e187c6a", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 342.38, + "y": 181.38, + "z": 99.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e3c9e792dd81698a173ca216c297bf1c", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c760f293c7e422858709f934985e1a7d", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9ead8491882088b5d251c946e6338db4", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ce9a3b4288bf193a6e190156ac284977", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d9cd2dbdfc0197f336b169f58404a0fa", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "10498510a8ab571cad1b17f8cd0d38a2", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "289400847435f9ac40532b1f0d4ddb62", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 500.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 500.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "0d7d8f0b4cadfbe34a2e63b472ea515a", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTipInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5b98c2c25afe6ed45a9e5f7d53d10913", + "notes": [], + "params": { + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f6d9c7f90feafa27f614adc77e3e4a6c", + "notes": [], + "params": { + "message": "Tip rack in C3" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bd26801f990ee766417912053b5d1d85", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "6ce49ea6e7d7158920fe3037dd769a82", + "notes": [], + "params": { + "message": "B: B1 🟢 B2 🟢 B3 🟢 B4 🟢 B5 🟢 B6 🟢 B7 🟢 B8 🟢 B9 🟢 B10 🟢 B11 🟢 B12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1ea2709eca69d325bac93d5c12b61102", + "notes": [], + "params": { + "message": "C: C1 🟢 C2 🟢 C3 🟢 C4 🟢 C5 🟢 C6 🟢 C7 🟢 C8 🟢 C9 🟢 C10 🟢 C11 🟢 C12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e550f01cf1e380d18ddbcd7856a759a6", + "notes": [], + "params": { + "message": "D: D1 🟢 D2 🟢 D3 🟢 D4 🟢 D5 🟢 D6 🟢 D7 🟢 D8 🟢 D9 🟢 D10 🟢 D11 🟢 D12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ad2af3e14a3d8ffb7814798537726073", + "notes": [], + "params": { + "message": "E: E1 🟢 E2 🟢 E3 🟢 E4 🟢 E5 🟢 E6 🟢 E7 🟢 E8 🟢 E9 🟢 E10 🟢 E11 🟢 E12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "32e88a4d628686db346517f72eacb3e9", + "notes": [], + "params": { + "message": "F: F1 🟢 F2 🟢 F3 🟢 F4 🟢 F5 🟢 F6 🟢 F7 🟢 F8 🟢 F9 🟢 F10 🟢 F11 🟢 F12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "71ae76605b9b3f27159f619b4fd24d77", + "notes": [], + "params": { + "message": "G: G1 🟢 G2 🟢 G3 🟢 G4 🟢 G5 🟢 G6 🟢 G7 🟢 G8 🟢 G9 🟢 G10 🟢 G11 🟢 G12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a829ef01b67f8a6a5657384b811e8670", + "notes": [], + "params": { + "message": "H: H1 🟢 H2 🟢 H3 🟢 H4 🟢 H5 🟢 H6 🟢 H7 🟢 H8 🟢 H9 🟢 H10 🟢 H11 🟢 H12 🟢 " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "configureNozzleLayout", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5365e04fad40b79ec18d0f0ec67be6b4", + "notes": [], + "params": { + "configurationParams": { + "style": "ALL" + }, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ff11e465f62590cae83e688b10e2223f", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 110.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9ad8654c7993d6585b0cbc6476129ff5", + "notes": [], + "params": { + "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "73032c12c503d675d7394d98ebcaed59", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8ae1d2605e1a91cc1c318849bfdada67", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bae058c3acd2294054b74da2c83df5ba", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ef186548c415cad51bd2c1f5a5ca6709", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8654bf1423f4bc950cc979848c1922d5", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "fd972ba6efcfa6e2c423e748b769ae09", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "740c240306f144d6eb3f2f37b137ae1f", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ea105a8bc9ec6645a6d993b584bf8369", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5a0d372a3eae37ae4898fc29e7f3840e", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f39e598e806daf765313a303d0d157ee", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f909836a4d4875e5ccfeaa5f6c139666", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 29.999999999999993 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 74.39999999999998 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "92afd096c372098f64a9bfb0873b355b", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 995.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 29.999999999999993 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 74.39999999999998 + }, + "volume": 995.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ef0781edef6aca01d9879b1a09d9b3f2", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "blowOutInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "af716ae841d9585043867a431d539d55", + "notes": [], + "params": { + "flowRate": 80.0, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "prepareToAspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "349bb0bf929376ee5a1c92c7882fdacf", + "notes": [], + "params": { + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "66068d631b0410c78ec504b2efd9192f", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "72a351430efa97bacea8b8baa9e67d7a", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "75759431a0a6325eeaf70f09f1541b2f", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 29.999999999999993 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 74.39999999999998 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f40963e7ee5296cada36d22981b64865", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 995.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 29.999999999999993 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 74.39999999999998 + }, + "volume": 995.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ca81c96c5e6706521c28eeb429560dbb", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "blowOutInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e1d6d21093014d3715ff4f1e41d64add", + "notes": [], + "params": { + "flowRate": 80.0, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "prepareToAspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "0947370822b6af57af2a7acabdfb1c4d", + "notes": [], + "params": { + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "6f32130e79de0fab3b9694367d1df14d", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "375d7aacf8cfb56bd73ae3fe64eda953", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 10.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 10.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "188aead45e3881975f879a62331bf6d9", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 10.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 10.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3c58ecc0dd1bb01b8c561c1a5b8efc79", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 18.0 + }, + "z_position": 14.95 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d953a57ea73562ecbb1bb7c46fa516dc", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "802a4b04ebd2b303f50dd568f841dc2e", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ffcef1be9b48b826f0cc646961192d81", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "4fb4e8b75e18cb95da915141eb49b7d0", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1c6fe66b1d9cc8a50c94f2818e9bb0c0", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "05998ba40ade9c08ed03d97aebb538e8", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d0e081f09d5e7358497f152498b7ff67", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "39a94f9fe6a63daaaef83ccceee0e661", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "60db0e75d04bf60b1dde66ad4346214c", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "54213b7b2f9be52a52f64cf8841a5d83", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 15.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 15.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "56fe165d9f183c0829edd60e88bf9ada", + "notes": [], + "params": { + "alternateDropLocation": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "default" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 90.88 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9bba35ad84bf2275a6f3298fd03d5187", + "notes": [], + "params": { + "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "fbe3905bfb62be150cd42317a36f0e8f", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3cc7f1b0fe6b2a8d90591c32ac0c9cde", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a455eac2b6ad82f8c15fd9dda45d8882", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "2cd8818343ed0e921367bd42ef1112ee", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f92b8f56db51db3b60599e7b28445a36", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "44922a596363eb6844146a36fe3ac517", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3be4bbcb6d53e5eeffb1afa4e8d3a24a", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "69ffdab33828b93ec704bdbc413c1737", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "555305195a9fa7a6e42458e37a2934e3", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 110.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "889eee1bbba96644a80db22726b4a69a", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f72e9c3d813de4285e722ec87c596154", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ad48da5e9be4a5df85ddcf8d7184d0c8", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "fbdf4b8ac2749cb43d260e15c7b5bdc4", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "72f42105daee58b1475cf8ecf7a1beb4", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "pushOut": 0.0, + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b8d9b6e0d7f61b0fbf64506e479cab62", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1e09ac145c0efa97283b7cd9f049edf4", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8024e861cc4bf515fb9ca70c4ec8a74b", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 46.4 + }, + "z_position": 39.55 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9166539061095ad42ec58573fc8ebd04", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 10.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -38.55 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 5.85 + }, + "volume": 10.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "2c73b1942409fa2c78c7bae9b7a4fab1", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 10.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 10.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "liquidProbe", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "78c817792c844a6b3441b1b214f8add9", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 2.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 18.0 + }, + "z_position": 14.95 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "aspirate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "02130e935d2b1096c98f46562a5a4940", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dispense", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9b374953d929a83ceb00b787065f4749", + "notes": [], + "params": { + "flowRate": 160.0, + "labwareId": "UUID", + "pipetteId": "UUID", + "volume": 5.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -13.95 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 2.05 + }, + "volume": 5.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "touchTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f44c5b4dcf502560454b7c55f86ce207", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "radius": 1.0, + "speed": 60.0, + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": -1.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 15.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToAddressableArea", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "396dbf283e4856e439bf95b1464d6774", + "notes": [], + "params": { + "addressableAreaName": "96ChannelWasteChute", + "forceDirect": false, + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "pipetteId": "UUID", + "stayAtHighestPossibleZ": false + }, + "result": { + "position": { + "x": 391.945, + "y": 10.585, + "z": 114.5 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "blowOutInPlace", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "6bd9b67b490d5fcb1f6f2a5574813599", + "notes": [], + "params": { + "flowRate": 80.0, + "pipetteId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b12de52c4b99321ce3dd3ebef1ace986", + "notes": [], + "params": { + "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "e05ac7b430c14364b6f2fdf3dc2af27e", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3cf4c37d88b549ff7edb749d39b12893", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d9d646d906f12bb1c967be93839f7299", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "6f55ed54e09f89c01243bb2285cbbf48", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "19c19a260d4adfa0c89801870fb888af", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3b29221f75f3b684631085f5297945d7", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "04a79ca0387a44d148485363d8825314", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "51040551e5ab6544ed7df57e3d31af1c", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1237ae4e1a24ca35be4422f0f6ce94dd", + "notes": [], + "params": { + "alternateDropLocation": false, + "homeAfter": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "default" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 90.88 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "2807c440b5749ca58f964eea2b0173bd", + "notes": [], + "params": { + "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "49a6a126b3f1bd562b481b1ed0aa2076", + "notes": [], + "params": { + "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b28eaed62162a6cba37b2b2adbce3da7", + "notes": [], + "params": { + "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c23e5efd595af9bd86091d2d55ce4b9a", + "notes": [], + "params": { + "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "07b2576296bc2809caf537d7f7b23e32", + "notes": [], + "params": { + "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bf247b006b5c8ef36385e4ec56c417c3", + "notes": [], + "params": { + "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7792788aff047a2c81f5326af7d60612", + "notes": [], + "params": { + "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c924c03e02674de3e6cb386a3f2a3dd2", + "notes": [], + "params": { + "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1d51c2a28f6474ff8e1869e842e280ef", + "notes": [], + "params": { + "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5f76720ac31bec344907102b24db2587", + "notes": [], + "params": { + "message": "I think the above should not be empty?" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "f8aa7b28aea0b80b4fa83831e80ab7c0", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "moduleId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "ecca018448f3be0be1d42df4abe64d29", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "labwareId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/closeLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "0b8b0a843658fab0070a14b29383d4b6", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/setTargetBlockTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "5d5f3d5b64948ce5d0442c949b58580d", + "notes": [], + "params": { + "celsius": 38.0, + "holdTimeSeconds": 5.0, + "moduleId": "UUID" + }, + "result": { + "targetBlockTemperature": 38.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/waitForBlockTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "55f7eea09ff71c6b93b52d15f9b778ba", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/setTargetLidTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bd916b6b732fbfe8e2151cdf842d4d77", + "notes": [], + "params": { + "celsius": 38.0, + "moduleId": "UUID" + }, + "result": { + "targetLidTemperature": 38.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/waitForLidTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "61c47242119c089e39c2970fbb9c5a87", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/openLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "26d710513eb567d25ec6c7564178f2f6", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "328cffb6ec92cddfdf9b793822084af8", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "addressableAreaName": "gripperWasteChute" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/deactivateBlock", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a644d2f8960bb1f9ea36838d49796e86", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "thermocycler/deactivateLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "04bc1e2c660b9a49ff9b4ae75b2a7530", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/openLabwareLatch", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a2c406012e8e618eba18668129dc7210", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": { + "pipetteRetracted": true + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7e902c9531e52458c9c1e86eb4fb3bb6", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "labwareId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/closeLabwareLatch", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "76e684c73a4874bf4e8c3c80ee466258", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/setTargetTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "788cd6378d690bb4cb1a55713b109ff4", + "notes": [], + "params": { + "celsius": 38.0, + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/setAndWaitForShakeSpeed", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "866729c2f032edcbb976943d6afed1b8", + "notes": [], + "params": { + "moduleId": "UUID", + "rpm": 777.0 + }, + "result": { + "pipetteRetracted": true + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/waitForTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "12e4febccf2785fec55a7cea18901c34", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/deactivateHeater", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "91146a40c4e7497a9d69be9920689507", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/deactivateShaker", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "511c2d31b524be9c8c36fba36edf17b6", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "heaterShaker/openLabwareLatch", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "77b87b86baa82a0bdbbee3674ae3778f", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": { + "pipetteRetracted": true + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "dc518febf332036503375d529f643de2", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "labwareId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "temperatureModule/setTargetTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "452014b616f7c44e48ae0e0d8ba04d4d", + "notes": [], + "params": { + "celsius": 38.0, + "moduleId": "UUID" + }, + "result": { + "targetTemperature": 38.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "temperatureModule/waitForTemperature", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "4e0d56666b7e4686daedba5eaa6e3bd3", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "temperatureModule/deactivate", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c6b71690c162eb1d471add58f20491fe", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a9659e82d69a0cb7cb289ca5787195e9", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "moduleId": "UUID" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/closeLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "365ab2acd2036e30c2b4ba4422301d5f", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/read", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a80b3f4b976053ae6453bc8505b218ce", + "notes": [], + "params": { + "fileName": "smoke_APR_data.csv", + "moduleId": "UUID" + }, + "result": { + "data": { + "600": { + "A1": 0.0, + "A10": 0.0, + "A11": 0.0, + "A12": 0.0, + "A2": 0.0, + "A3": 0.0, + "A4": 0.0, + "A5": 0.0, + "A6": 0.0, + "A7": 0.0, + "A8": 0.0, + "A9": 0.0, + "B1": 0.0, + "B10": 0.0, + "B11": 0.0, + "B12": 0.0, + "B2": 0.0, + "B3": 0.0, + "B4": 0.0, + "B5": 0.0, + "B6": 0.0, + "B7": 0.0, + "B8": 0.0, + "B9": 0.0, + "C1": 0.0, + "C10": 0.0, + "C11": 0.0, + "C12": 0.0, + "C2": 0.0, + "C3": 0.0, + "C4": 0.0, + "C5": 0.0, + "C6": 0.0, + "C7": 0.0, + "C8": 0.0, + "C9": 0.0, + "D1": 0.0, + "D10": 0.0, + "D11": 0.0, + "D12": 0.0, + "D2": 0.0, + "D3": 0.0, + "D4": 0.0, + "D5": 0.0, + "D6": 0.0, + "D7": 0.0, + "D8": 0.0, + "D9": 0.0, + "E1": 0.0, + "E10": 0.0, + "E11": 0.0, + "E12": 0.0, + "E2": 0.0, + "E3": 0.0, + "E4": 0.0, + "E5": 0.0, + "E6": 0.0, + "E7": 0.0, + "E8": 0.0, + "E9": 0.0, + "F1": 0.0, + "F10": 0.0, + "F11": 0.0, + "F12": 0.0, + "F2": 0.0, + "F3": 0.0, + "F4": 0.0, + "F5": 0.0, + "F6": 0.0, + "F7": 0.0, + "F8": 0.0, + "F9": 0.0, + "G1": 0.0, + "G10": 0.0, + "G11": 0.0, + "G12": 0.0, + "G2": 0.0, + "G3": 0.0, + "G4": 0.0, + "G5": 0.0, + "G6": 0.0, + "G7": 0.0, + "G8": 0.0, + "G9": 0.0, + "H1": 0.0, + "H10": 0.0, + "H11": 0.0, + "H12": 0.0, + "H2": 0.0, + "H3": 0.0, + "H4": 0.0, + "H5": 0.0, + "H6": 0.0, + "H7": 0.0, + "H8": 0.0, + "H9": 0.0 + } + }, + "fileIds": [ + "" + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "comment", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "05cfadac7c9a474a7bafe928aee58bf6", + "notes": [], + "params": { + "message": "single: {600: {'A1': 0.0, 'A2': 0.0, 'A3': 0.0, 'A4': 0.0, 'A5': 0.0, 'A6': 0.0, 'A7': 0.0, 'A8': 0.0, 'A9': 0.0, 'A10': 0.0, 'A11': 0.0, 'A12': 0.0, 'B1': 0.0, 'B2': 0.0, 'B3': 0.0, 'B4': 0.0, 'B5': 0.0, 'B6': 0.0, 'B7': 0.0, 'B8': 0.0, 'B9': 0.0, 'B10': 0.0, 'B11': 0.0, 'B12': 0.0, 'C1': 0.0, 'C2': 0.0, 'C3': 0.0, 'C4': 0.0, 'C5': 0.0, 'C6': 0.0, 'C7': 0.0, 'C8': 0.0, 'C9': 0.0, 'C10': 0.0, 'C11': 0.0, 'C12': 0.0, 'D1': 0.0, 'D2': 0.0, 'D3': 0.0, 'D4': 0.0, 'D5': 0.0, 'D6': 0.0, 'D7': 0.0, 'D8': 0.0, 'D9': 0.0, 'D10': 0.0, 'D11': 0.0, 'D12': 0.0, 'E1': 0.0, 'E2': 0.0, 'E3': 0.0, 'E4': 0.0, 'E5': 0.0, 'E6': 0.0, 'E7': 0.0, 'E8': 0.0, 'E9': 0.0, 'E10': 0.0, 'E11': 0.0, 'E12': 0.0, 'F1': 0.0, 'F2': 0.0, 'F3': 0.0, 'F4': 0.0, 'F5': 0.0, 'F6': 0.0, 'F7': 0.0, 'F8': 0.0, 'F9': 0.0, 'F10': 0.0, 'F11': 0.0, 'F12': 0.0, 'G1': 0.0, 'G2': 0.0, 'G3': 0.0, 'G4': 0.0, 'G5': 0.0, 'G6': 0.0, 'G7': 0.0, 'G8': 0.0, 'G9': 0.0, 'G10': 0.0, 'G11': 0.0, 'G12': 0.0, 'H1': 0.0, 'H2': 0.0, 'H3': 0.0, 'H4': 0.0, 'H5': 0.0, 'H6': 0.0, 'H7': 0.0, 'H8': 0.0, 'H9': 0.0, 'H10': 0.0, 'H11': 0.0, 'H12': 0.0}}" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b042e24dd46699520cdedd3f0201ca91", + "notes": [], + "params": { + "message": "single: {600: {'A1': 0.0, 'A2': 0.0, 'A3': 0.0, 'A4': 0.0, 'A5': 0.0, 'A6': 0.0, 'A7': 0.0, 'A8': 0.0, 'A9': 0.0, 'A10': 0.0, 'A11': 0.0, 'A12': 0.0, 'B1': 0.0, 'B2': 0.0, 'B3': 0.0, 'B4': 0.0, 'B5': 0.0, 'B6': 0.0, 'B7': 0.0, 'B8': 0.0, 'B9': 0.0, 'B10': 0.0, 'B11': 0.0, 'B12': 0.0, 'C1': 0.0, 'C2': 0.0, 'C3': 0.0, 'C4': 0.0, 'C5': 0.0, 'C6': 0.0, 'C7': 0.0, 'C8': 0.0, 'C9': 0.0, 'C10': 0.0, 'C11': 0.0, 'C12': 0.0, 'D1': 0.0, 'D2': 0.0, 'D3': 0.0, 'D4': 0.0, 'D5': 0.0, 'D6': 0.0, 'D7': 0.0, 'D8': 0.0, 'D9': 0.0, 'D10': 0.0, 'D11': 0.0, 'D12': 0.0, 'E1': 0.0, 'E2': 0.0, 'E3': 0.0, 'E4': 0.0, 'E5': 0.0, 'E6': 0.0, 'E7': 0.0, 'E8': 0.0, 'E9': 0.0, 'E10': 0.0, 'E11': 0.0, 'E12': 0.0, 'F1': 0.0, 'F2': 0.0, 'F3': 0.0, 'F4': 0.0, 'F5': 0.0, 'F6': 0.0, 'F7': 0.0, 'F8': 0.0, 'F9': 0.0, 'F10': 0.0, 'F11': 0.0, 'F12': 0.0, 'G1': 0.0, 'G2': 0.0, 'G3': 0.0, 'G4': 0.0, 'G5': 0.0, 'G6': 0.0, 'G7': 0.0, 'G8': 0.0, 'G9': 0.0, 'G10': 0.0, 'G11': 0.0, 'G12': 0.0, 'H1': 0.0, 'H2': 0.0, 'H3': 0.0, 'H4': 0.0, 'H5': 0.0, 'H6': 0.0, 'H7': 0.0, 'H8': 0.0, 'H9': 0.0, 'H10': 0.0, 'H11': 0.0, 'H12': 0.0}}" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "absorbanceReader/openLid", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "09edafc3bb1819d89e21f50c773a8b1b", + "notes": [], + "params": { + "moduleId": "UUID" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "055de5adcc2476b33f12d303e2f7cd33", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "C2" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "55fb67ef834deb180669717bbf9bcd08", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": "offDeck", + "strategy": "manualMoveWithPause" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "pickUpTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1c42b3e678be0b97d217eda3ba27d0ff", + "notes": [], + "params": { + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 110.0 + }, + "tipDiameter": 5.47, + "tipLength": 85.38999999999999, + "tipVolume": 1000.0 + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "7a9ace3c6ffc32e339e9199029c6e542", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 16.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "084b51ab7765e9610bb25aad3c5b1420", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be at the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "reloadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "2df58176bd8560ade9f37f43564db735", + "notes": [], + "params": { + "labwareId": "UUID" + }, + "result": { + "labwareId": "UUID", + "offsetId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "bded418ba653fcd22e912654c04201ce", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 26.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d24f2277648c132f7aa5610e8afd4a16", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "77f86a46915f1f1983f21b7554d629a3", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "D2" + }, + "strategy": "manualMoveWithPause" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b95e1bdd513812eb0f58b6b868ff95ff", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 74.24, + "z": 16.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1fd12fd0b35e829620c353dfa08361b7", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be at the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "reloadLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "4b3b80805d46a3dda0c85c4bd3ac65f7", + "notes": [], + "params": { + "labwareId": "UUID" + }, + "result": { + "labwareId": "UUID", + "offsetId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "9283a054c84e7ebfbcafa37fb521bcbb", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 74.24, + "z": 26.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "8091e40fd9cd4ee7383042b2d7c05138", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be 10mm higher than the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "3f56958b0a32d667ef60cd9d31c04fd3", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "C2" + }, + "strategy": "manualMoveWithPause" + }, + "result": { + "offsetId": "UUID" + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "853869a39e88a9d5a4d957d55ba28677", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 181.24, + "z": 26.0 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "704a3d359b6a341879d4c2a6bee6e5d9", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "a0930229a45be6add3b6f59133da1de6", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "slotName": "D2" + }, + "strategy": "manualMoveWithPause" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveToWell", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "471a6fca269ae526432b1af3abd27b1a", + "notes": [], + "params": { + "forceDirect": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "top", + "volumeOffset": 0.0 + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 227.88, + "y": 42.74, + "z": 44.4 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "b8898277b6b61116b58e55e0dbb28563", + "notes": [], + "params": { + "message": "Is the pipette tip in the middle of the reservoir , well A1, in slot D2? It should be at the LPC calibrated height." + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "dropTip", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c92dcade8aedaf07ae1091b486804e95", + "notes": [], + "params": { + "alternateDropLocation": false, + "labwareId": "UUID", + "pipetteId": "UUID", + "wellLocation": { + "offset": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "origin": "default" + }, + "wellName": "A1" + }, + "result": { + "position": { + "x": 178.38, + "y": 395.38, + "z": 90.88 + } + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "aa312bc19fee7fed08946bfb02cafef4", + "notes": [], + "params": { + "labwareId": "UUID", + "newLocation": { + "addressableAreaName": "gripperWasteChute" + }, + "strategy": "usingGripper" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "waitForResume", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "c9392d146973b6fc471984b1ecea94df", + "notes": [], + "params": { + "message": "!!!!!!!!!!YOU NEED TO REDO LPC!!!!!!!!!!" + }, + "result": {}, + "startedAt": "TIMESTAMP", + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 21 + ], + "protocolType": "python" + }, + "createdAt": "TIMESTAMP", + "errors": [], + "files": [ + { + "name": "Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py", + "role": "main" + } + ], + "labware": [ + { + "definitionUri": "opentrons/opentrons_flex_deck_riser/1", + "id": "UUID", + "loadName": "opentrons_flex_deck_riser", + "location": { + "addressableAreaName": "A4" + } + }, + { + "definitionUri": "opentrons/opentrons_tough_pcr_auto_sealing_lid/1", + "id": "UUID", + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_tough_pcr_auto_sealing_lid/1", + "id": "UUID", + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_tough_pcr_auto_sealing_lid/1", + "id": "UUID", + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_tough_pcr_auto_sealing_lid/1", + "id": "UUID", + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": { + "labwareId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_tough_pcr_auto_sealing_lid/1", + "id": "UUID", + "loadName": "opentrons_tough_pcr_auto_sealing_lid", + "location": "offDeck" + }, + { + "definitionUri": "opentrons/opentrons_96_well_aluminum_block/1", + "id": "UUID", + "loadName": "opentrons_96_well_aluminum_block", + "location": { + "moduleId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_96_pcr_adapter/1", + "id": "UUID", + "loadName": "opentrons_96_pcr_adapter", + "location": { + "moduleId": "UUID" + } + }, + { + "definitionUri": "opentrons/nest_1_reservoir_290ml/1", + "id": "UUID", + "loadName": "nest_1_reservoir_290ml", + "location": { + "slotName": "D2" + } + }, + { + "definitionUri": "opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", + "id": "UUID", + "loadName": "opentrons_96_wellplate_200ul_pcr_full_skirt", + "location": { + "slotName": "C2" + }, + "offsetId": "UUID" + }, + { + "definitionUri": "opentrons/opentrons_flex_96_tiprack_adapter/1", + "id": "UUID", + "loadName": "opentrons_flex_96_tiprack_adapter", + "location": { + "slotName": "A2" + } + }, + { + "definitionUri": "opentrons/opentrons_flex_96_tiprack_1000ul/1", + "id": "UUID", + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": { + "labwareId": "UUID" + } + }, + { + "definitionUri": "opentrons/opentrons_flex_96_tiprack_1000ul/1", + "id": "UUID", + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": "offDeck" + }, + { + "definitionUri": "opentrons/opentrons_flex_96_tiprack_1000ul/1", + "id": "UUID", + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": "offDeck" + }, + { + "definitionUri": "opentrons/opentrons_flex_96_tiprack_1000ul/1", + "id": "UUID", + "loadName": "opentrons_flex_96_tiprack_1000ul", + "location": "offDeck" + } + ], + "liquidClasses": [], + "liquids": [ + { + "description": "High Quality H₂O", + "displayColor": "#42AB2D", + "displayName": "water", + "id": "UUID" + } + ], + "metadata": { + "author": "QA team", + "protocolName": "Flex Smoke Test - v2.21" + }, + "modules": [ + { + "id": "UUID", + "location": { + "slotName": "B1" + }, + "model": "thermocyclerModuleV2", + "serialNumber": "UUID" + }, + { + "id": "UUID", + "location": { + "slotName": "A3" + }, + "model": "magneticBlockV1" + }, + { + "id": "UUID", + "location": { + "slotName": "C1" + }, + "model": "heaterShakerModuleV1", + "serialNumber": "UUID" + }, + { + "id": "UUID", + "location": { + "slotName": "D1" + }, + "model": "temperatureModuleV2", + "serialNumber": "UUID" + }, + { + "id": "UUID", + "location": { + "slotName": "B3" + }, + "model": "absorbanceReaderV1", + "serialNumber": "UUID" + } + ], + "pipettes": [ + { + "id": "UUID", + "mount": "left", + "pipetteName": "p1000_96" + } + ], + "result": "ok", + "robotType": "OT-3 Standard", + "runTimeParameters": [ + { + "choices": [ + { + "displayName": "Full Smoke Test", + "value": "full" + } + ], + "default": "full", + "description": "Configuration of QA test to perform", + "displayName": "Test Configuration", + "type": "str", + "value": "full", + "variableName": "test_configuration" + }, + { + "choices": [ + { + "displayName": "Nest 1 Well 290 mL", + "value": "nest_1_reservoir_290ml" + } + ], + "default": "nest_1_reservoir_290ml", + "description": "Name of the reservoir", + "displayName": "Reservoir Name", + "type": "str", + "value": "nest_1_reservoir_290ml", + "variableName": "reservoir_name" + }, + { + "choices": [ + { + "displayName": "Opentrons Tough 96 Well 200 µL", + "value": "opentrons_96_wellplate_200ul_pcr_full_skirt" + } + ], + "default": "opentrons_96_wellplate_200ul_pcr_full_skirt", + "description": "Name of the well plate", + "displayName": "Well Plate Name", + "type": "str", + "value": "opentrons_96_wellplate_200ul_pcr_full_skirt", + "variableName": "well_plate_name" + } + ] +} From 453410e3afc7b897145dae0aaabf5c73b139f46c Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 15 Jan 2025 13:42:59 -0500 Subject: [PATCH 21/81] refactor(app): refactor ODD protocol card copy when run data is not "ok" (#17261) Closes RQA-3851 When protocol cards have not ok run data, we can't retrieve the completedAt timestamp, and the fallback has been the current date, which is confusing copy. After speaking with Design, the plan is to remove copy if we can't retrieve the completedAt timestamp. --- .../RobotDashboard/RecentRunProtocolCard.tsx | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx b/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx index e522fb1dae7..a91bb4fbda1 100644 --- a/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx +++ b/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx @@ -158,15 +158,22 @@ export function ProtocolWithLastRun({ [RUN_STATUS_SUCCEEDED]: t('completed'), [RUN_STATUS_FAILED]: t('failed'), } - // TODO(BC, 2023-06-05): see if addSuffix false allow can remove usage of .replace here - const formattedLastRunTime = formatDistance( - // Fallback to current date if completedAt is null, though this should never happen since runs must be completed to appear in dashboard - new Date(runData.completedAt ?? new Date()), - new Date(), - { - addSuffix: true, + const formattedLastRunTime = + runData.completedAt != null + ? formatDistance(new Date(runData.completedAt), new Date(), { + addSuffix: true, + }).replace('about ', '') + : null + const buildLastRunCopy = (): string => { + if (formattedLastRunTime != null) { + return i18n.format( + `${terminationTypeMap[runData.status] ?? ''} ${formattedLastRunTime}`, + 'capitalize' + ) + } else { + return '' } - ).replace('about ', '') + } return isProtocolFetching || isLookingForHardware ? ( - {i18n.format( - `${terminationTypeMap[runData.status] ?? ''} ${formattedLastRunTime}`, - 'capitalize' - )} + {buildLastRunCopy()} ) From 3778b659285eee71eb2ec2db4eb5a13ff63a6865 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Wed, 15 Jan 2025 16:48:01 -0500 Subject: [PATCH 22/81] fix(shared-data): flex a3 needs mating surface (#17281) This is used by the client to decide whether something is a lot when it's rendering destinations, and if this doesn't exist then intervention modals will show the labware moving off deck. Closes RQA-3839 --- api/src/opentrons/protocol_engine/state/commands.py | 8 ++++++-- shared-data/deck/definitions/5/ot3_standard.json | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/api/src/opentrons/protocol_engine/state/commands.py b/api/src/opentrons/protocol_engine/state/commands.py index e059212e73f..dd8ec108687 100644 --- a/api/src/opentrons/protocol_engine/state/commands.py +++ b/api/src/opentrons/protocol_engine/state/commands.py @@ -1,4 +1,5 @@ """Protocol engine commands sub-state.""" + from __future__ import annotations import enum @@ -304,7 +305,7 @@ def _handle_queue_command_action(self, action: QueueCommandAction) -> None: # TODO(mc, 2021-06-22): mypy has trouble with this automatic # request > command mapping, figure out how to type precisely # (or wait for a future mypy version that can figure it out). - queued_command = action.request._CommandCls.model_construct( # type: ignore[call-arg] + queued_command = action.request._CommandCls.model_construct( id=action.command_id, key=( action.request.key @@ -506,7 +507,10 @@ def _handle_door_change_action(self, action: DoorChangeAction) -> None: pass case QueueStatus.RUNNING | QueueStatus.PAUSED: self._state.queue_status = QueueStatus.PAUSED - case QueueStatus.AWAITING_RECOVERY | QueueStatus.AWAITING_RECOVERY_PAUSED: + case ( + QueueStatus.AWAITING_RECOVERY + | QueueStatus.AWAITING_RECOVERY_PAUSED + ): self._state.queue_status = QueueStatus.AWAITING_RECOVERY_PAUSED elif action.door_state == DoorState.CLOSED: self._state.is_door_blocking = False diff --git a/shared-data/deck/definitions/5/ot3_standard.json b/shared-data/deck/definitions/5/ot3_standard.json index fe47adc0a3c..55ed1fbe16b 100644 --- a/shared-data/deck/definitions/5/ot3_standard.json +++ b/shared-data/deck/definitions/5/ot3_standard.json @@ -149,6 +149,7 @@ "id": "A3", "areaType": "slot", "offsetFromCutoutFixture": [0.0, 0.0, 0.0], + "matingSurfaceUnitVector": [-1, 1, -1], "boundingBox": { "xDimension": 128.0, "yDimension": 86.0, From 7bc38f848811ffe7d141a28a89e27c39d9c89521 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 15 Jan 2025 17:46:55 -0500 Subject: [PATCH 23/81] fix(app): fix manual move to location with module (#17283) Closes RQA-3839 --- components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx | 2 +- shared-data/js/fixtures.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx b/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx index ff1cf8483b3..8a6ffc396e9 100644 --- a/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +++ b/components/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx @@ -38,7 +38,7 @@ const getModulePosition = ( ) if (modSlot == null) return null - const modPosition = getPositionFromSlotId(loadedModule.id, deckDef) + const modPosition = getPositionFromSlotId(modSlot.id, deckDef) if (modPosition == null) return null const [modX, modY] = modPosition diff --git a/shared-data/js/fixtures.ts b/shared-data/js/fixtures.ts index 51f46fdf433..9ab8e3a99ca 100644 --- a/shared-data/js/fixtures.ts +++ b/shared-data/js/fixtures.ts @@ -116,6 +116,7 @@ export const FLEX_SINGLE_SLOT_BY_CUTOUT_ID: { [CutoutId: string]: string } = { cutoutD3: 'D3', } +// TODO(jh 01-15-25): Instead of typing slotId as `string`, type it as `AddressableAreaName`. // returns the position associated with a slot id export function getPositionFromSlotId( slotId: string, From bb7804681ce80929de088193d277fc1a85c03738 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Thu, 16 Jan 2025 13:44:20 -0500 Subject: [PATCH 24/81] fix(api): Fix liquid getting homed into pipette after certain protocols end (#17285) Closes RESC-345. --- .../protocol_engine/execution/hardware_stopper.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/api/src/opentrons/protocol_engine/execution/hardware_stopper.py b/api/src/opentrons/protocol_engine/execution/hardware_stopper.py index 81d4f10d94d..0312f622ac9 100644 --- a/api/src/opentrons/protocol_engine/execution/hardware_stopper.py +++ b/api/src/opentrons/protocol_engine/execution/hardware_stopper.py @@ -65,7 +65,7 @@ async def _home_everything_except_plungers(self) -> None: axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] ) - async def _drop_tip(self) -> None: + async def _try_to_drop_tips(self) -> None: """Drop currently attached tip, if any, into trash after a run cancel.""" attached_tips = self._state_store.pipettes.get_all_attached_tips() @@ -134,9 +134,9 @@ async def do_stop_and_recover( PostRunHardwareState.HOME_THEN_DISENGAGE, ) if drop_tips_after_run: - await self._drop_tip() - await self._hardware_api.stop(home_after=home_after_stop) - else: - await self._hardware_api.stop(home_after=False) - if home_after_stop: - await self._home_everything_except_plungers() + await self._try_to_drop_tips() + + await self._hardware_api.stop(home_after=False) + + if home_after_stop: + await self._home_everything_except_plungers() From 27d2dc8839d69d5fcfdab5556bd1e318e700394b Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Fri, 17 Jan 2025 10:28:30 -0500 Subject: [PATCH 25/81] fix(shared-data): fix getPipetteSpecsV2 finding PEEK pipette specs (#17296) fix RQA-3852 --- shared-data/js/pipettes.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shared-data/js/pipettes.ts b/shared-data/js/pipettes.ts index 134f4efbd82..5b390617f43 100644 --- a/shared-data/js/pipettes.ts +++ b/shared-data/js/pipettes.ts @@ -161,6 +161,7 @@ const getHighestVersion = ( path: string, pipetteModel: string, channels: Channels | null, + oemString: string, majorVersion: number, highestVersion: string ): string => { @@ -174,10 +175,10 @@ const getHighestVersion = ( // and make sure the given model, channels, and major/minor versions // are found in the path if ( - minorPathVersion > minorHighestVersion && + minorPathVersion >= minorHighestVersion && path.includes(`${majorPathVersion}_${minorPathVersion}`) && path.includes(pipetteModel) && - path.includes(channels ?? '') + path.includes(channels != null ? `${channels}${oemString}` : '') ) { highestVersion = `${majorPathVersion}_${minorPathVersion}` } @@ -239,6 +240,7 @@ export const getPipetteSpecsV2 = ( path, pipetteModel, channels, + oemString, majorVersion, highestVersion ) From 9c70751ef891f10c5aee16e0b75aa73713e7434e Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 21 Jan 2025 12:53:28 -0500 Subject: [PATCH 26/81] refactor(app): Fix copy/CSS for stall/collision recovery DQA (#17298) Closes RQA-3870 and RQA-3871 Brings the stall/collision recovery flow in-line with designs. See the tickets for details and fixes. --- app/src/assets/localization/en/error_recovery.json | 2 +- .../ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx | 2 +- .../shared/__tests__/RetryStepInfo.test.tsx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/assets/localization/en/error_recovery.json b/app/src/assets/localization/en/error_recovery.json index e4e1b5164eb..3f22e2e63f9 100644 --- a/app/src/assets/localization/en/error_recovery.json +++ b/app/src/assets/localization/en/error_recovery.json @@ -110,7 +110,7 @@ "stand_back_retrying": "Stand back, retrying failed step", "stand_back_skipping_to_next_step": "Stand back, skipping to next step", "take_any_necessary_precautions": "Take any necessary precautions before positioning yourself to stabilize or catch the labware. Once confirmed, a countdown will begin before the gripper releases.", - "take_necessary_actions": "First, take any necessary actions to prepare the robot to retry the failed step.Then, close the robot door before proceeding.", + "take_necessary_actions": "Take any necessary additional actions to prepare the robot to retry the failed step.Close the robot door before proceeding.", "take_necessary_actions_failed_pickup": "First, take any necessary actions to prepare the robot to retry the failed tip pickup.Then, close the robot door before proceeding.", "take_necessary_actions_failed_tip_drop": "First, take any necessary actions to prepare the robot to retry the failed tip drop.Then, close the robot door before proceeding.", "take_necessary_actions_home": "Take any necessary actions to prepare the robot to move the gantry to its home position.Close the robot door before proceeding.", diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx index 73ac8497deb..cba8719e376 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx @@ -38,7 +38,7 @@ export function RecoveryInterventionModal({ } return createPortal( - + { render(props) screen.getByText( - 'First, take any necessary actions to prepare the robot to retry the failed step.' + 'Take any necessary additional actions to prepare the robot to retry the failed step.' ) - screen.getByText('Then, close the robot door before proceeding.') + screen.getByText('Close the robot door before proceeding.') }) }) From 0da7b99eed992c1108264187acb83a3f68de546c Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 21 Jan 2025 17:46:53 -0500 Subject: [PATCH 27/81] fix(app): Fix double drop tip prompting after Error Recovery cancel action (#17316) This commit brings the `lastRunCommandPromptedErrorRecovery` util back and adds the new and improved behavior to also check if Error Recovery is enabled (in settings). If it's not enabled, we need to run tip detection even if the last run command was recoverable. --- .../local-resources/commands/utils/index.ts | 1 + .../lastRunCommandPromptedErrorRecovery.ts | 12 ++++++++ .../hooks/useRunHeaderDropTip.ts | 28 +++++++++++++++++-- app/src/pages/ODD/RunSummary/index.tsx | 16 +++++++++-- 4 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts diff --git a/app/src/local-resources/commands/utils/index.ts b/app/src/local-resources/commands/utils/index.ts index 7aa84d14de5..cc4e9c2579a 100644 --- a/app/src/local-resources/commands/utils/index.ts +++ b/app/src/local-resources/commands/utils/index.ts @@ -1 +1,2 @@ export * from './getCommandTextData' +export * from './lastRunCommandPromptedErrorRecovery' diff --git a/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts b/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts new file mode 100644 index 00000000000..673ed431220 --- /dev/null +++ b/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts @@ -0,0 +1,12 @@ +import type { RunCommandSummary } from '@opentrons/api-client' +// Whether the last run protocol command prompted Error Recovery, if Error Recovery is enabled. +export function lastRunCommandPromptedErrorRecovery( + summary: RunCommandSummary[] | null, + isEREnabled: boolean +): boolean { + const lastProtocolCommand = summary?.findLast( + command => command.intent !== 'fixit' && command.error != null + ) + // All recoverable protocol commands have defined errors. + return isEREnabled ? lastProtocolCommand?.error?.isDefined ?? false : false +} diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index 0ff96a562df..3363a225ec7 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -2,12 +2,18 @@ import { useEffect } from 'react' import { RUN_STATUS_IDLE, RUN_STATUS_STOPPED } from '@opentrons/api-client' import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' +import { useErrorRecoverySettings } from '@opentrons/react-api-client' import { useDropTipWizardFlows } from '/app/organisms/DropTipWizardFlows' import { useProtocolDropTipModal } from '../modals' -import { useCloseCurrentRun, useIsRunCurrent } from '/app/resources/runs' +import { + useCloseCurrentRun, + useCurrentRunCommands, + useIsRunCurrent, +} from '/app/resources/runs' import { isTerminalRunStatus } from '../../utils' import { useTipAttachmentStatus } from '/app/resources/instruments' +import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import type { RobotType } from '@opentrons/shared-data' import type { Run, RunStatus } from '@opentrons/api-client' @@ -99,17 +105,33 @@ export function useRunHeaderDropTip({ : { showDTWiz: false, dtWizProps: null } } + const { data } = useErrorRecoverySettings() + const isEREnabled = data?.data.enabled ?? true + const runSummaryNoFixit = useCurrentRunCommands( + { + includeFixitCommands: false, + pageLength: 1, + }, + { enabled: isTerminalRunStatus(runStatus) } + ) + // Manage tip checking useEffect(() => { // If a user begins a new run without navigating away from the run page, reset tip status. if (robotType === FLEX_ROBOT_TYPE) { if (runStatus === RUN_STATUS_IDLE) { resetTipStatus() - } else if (isRunCurrent && isTerminalRunStatus(runStatus)) { + } + // Only run tip checking if it wasn't *just* handled during Error Recovery. + else if ( + !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit, isEREnabled) && + isRunCurrent && + isTerminalRunStatus(runStatus) + ) { void determineTipStatus() } } - }, [runStatus, robotType, isRunCurrent]) + }, [runStatus, robotType, isRunCurrent, runSummaryNoFixit, isEREnabled]) // If the run terminates with a "stopped" status, close the run if no tips are attached after running tip check at least once. // This marks the robot as "not busy" if drop tip CTAs are unnecessary. diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index 9d1f73d7e3b..57c6ffe96ee 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -39,6 +39,7 @@ import { useProtocolQuery, useDeleteRunMutation, useRunCommandErrors, + useErrorRecoverySettings, } from '@opentrons/react-api-client' import { useRunControls } from '/app/organisms/RunTimeControl/hooks' import { onDeviceDisplayFormatTimestamp } from '/app/transformations/runs' @@ -65,9 +66,11 @@ import { useRunCreatedAtTimestamp, useCloseCurrentRun, EMPTY_TIMESTAMP, + useCurrentRunCommands, } from '/app/resources/runs' import { handleTipsAttachedModal } from '/app/organisms/DropTipWizardFlows' import { useTipAttachmentStatus } from '/app/resources/instruments' +import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import type { IconName } from '@opentrons/components' import type { OnDeviceRouteParams } from '/app/App/types' @@ -233,10 +236,19 @@ export function RunSummary(): JSX.Element { runId, runRecord: runRecord ?? null, }) + const { data } = useErrorRecoverySettings() + const isEREnabled = data?.data.enabled ?? true + const runSummaryNoFixit = useCurrentRunCommands({ + includeFixitCommands: false, + pageLength: 1, + }) useEffect(() => { - void determineTipStatus() - }, []) + // Only run tip checking if it wasn't *just* handled during Error Recovery. + if (!lastRunCommandPromptedErrorRecovery(runSummaryNoFixit, isEREnabled)) { + void determineTipStatus() + } + }, [isRunCurrent, runSummaryNoFixit, isEREnabled]) const returnToQuickTransfer = (): void => { closeCurrentRunIfValid(() => { From 4940eb7deedf33a58d6cd30efd4ec1a453422d95 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Tue, 21 Jan 2025 20:13:26 -0600 Subject: [PATCH 28/81] chore(app): locize fuzzy tags removed (#17305) --- .../assets/localization/zh/app_settings.json | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/assets/localization/zh/app_settings.json b/app/src/assets/localization/zh/app_settings.json index 035963eacaa..d174021a3cf 100644 --- a/app/src/assets/localization/zh/app_settings.json +++ b/app/src/assets/localization/zh/app_settings.json @@ -2,8 +2,11 @@ "__dev_internal__enableLabwareCreator": "启用应用实验耗材创建器", "__dev_internal__enableRunNotes": "在协议运行期间显示备注", "__dev_internal__forceHttpPolling": "强制轮询所有网络请求,而不是使用MQTT", + "__dev_internal__lpcRedesign": "LPC 重新设计", "__dev_internal__protocolStats": "协议统计", "__dev_internal__protocolTimeline": "协议时间线", + "__dev_internal__reactQueryDevtools": "启用开发者工具", + "__dev_internal__reactScan": "启用 React 组件扫描", "add_folder_button": "添加实验耗材源文件夹", "add_ip_button": "添加", "add_ip_error": "输入IP地址或主机名", @@ -14,11 +17,14 @@ "additional_labware_folder_title": "其他定制实验耗材源文件夹", "advanced": "高级", "app_changes": "应用程序更改于", + "app_language_description": "应用的所有功能界面将使用所选语言显示,但协议和用户生成的内容(如文本或文件)将保持原有语言,不会随语言设置而改变。", + "app_language_preferences": "应用程序语言偏好设置", "app_settings": "应用设置", "bug_fixes": "错误修复", "cal_block": "始终使用校准块进行校准", "change_folder_button": "更改实验耗材源文件夹", "channel": "通道", + "choose_your_language": "选择语言", "clear_confirm": "清除不可用的工作站", "clear_robots_button": "清除不可用工作站列表", "clear_robots_description": "清除设备页面上不可用工作站的列表。此操作无法撤消。", @@ -30,19 +36,27 @@ "connect_ip_button": "完成", "connect_ip_link": "了解更多关于手动连接工作站的信息", "discovery_timeout": "发现超时。", + "dont_change": "不改变", + "dont_remind_me": "不需要再次提醒", "download_update": "正在下载更新...", + "driver_out_of_date": "网卡驱动程序更新可用", "enable_dev_tools": "开发者工具", "enable_dev_tools_description": "启用此设置将在应用启动时打开开发者工具,打开额外的日志记录并访问功能标志。", "error_boundary_desktop_app_description": "您需要重新加载应用程序。出现以下错误信息,请联系技术支持:", "error_boundary_title": "发生未知错误", + "error_recovery_mode": "恢复模式", + "error_recovery_mode_description": "出现协议错误时暂停,而不是取消运行。", "feature_flags": "功能标志", "general": "通用", + "get_update": "获取更新", "heater_shaker_attach_description": "在进行测试振荡功能或在协议中使用热震荡模块功能之前,显示正确连接热震荡模块的提醒。", "heater_shaker_attach_visible": "确认热震荡模块连接", "how_to_restore": "如何恢复过往的软件版本", "installing_update": "正在安装更新...", "ip_available": "可用", "ip_description_first": "输入IP地址或主机名以连接到工作站。", + "language": "语言", + "language_preference": "语言偏好", "manage_versions": "工作站版本和应用程序软件版本必须一致。通过工作站设置 > 高级查看工作站软件版本。", "new_features": "新功能", "no_folder": "未指定其他源文件夹", @@ -55,6 +69,7 @@ "ot2_advanced_settings": "OT-2高级设置", "override_path": "覆盖路径", "override_path_to_python": "覆盖Python路径", + "please_update_driver": "请更新您的计算机的驱动程序以确保与 OT-2 稳定连接。", "prevent_robot_caching": "阻止工作站进行缓存", "prevent_robot_caching_description": "启用此功能后,应用程序将立即清除不可用的工作站,并且不会记住它们。在网络上有许多工作站的情况下,防止缓存可能会提高网络性能,但代价是在应用程序启动时工作站发现的速度变慢且可靠性降低。", "privacy": "隐私", @@ -68,6 +83,8 @@ "restarting_app": "下载完成,正在重启应用程序...", "restore_previous": "查看如何恢复过往软件版本", "searching": "正在搜索30秒", + "select_a_language": "请选择使用语言。", + "select_language": "选择语言", "setup_connection": "设置连接", "share_display_usage": "分享屏幕使用情况", "share_robot_logs": "分享工作站日志", @@ -76,10 +93,12 @@ "software_update_available": "有可用的软件更新", "software_version": "应用程序软件版本", "successfully_deleted_unavail_robots": "成功删除不可用的工作站", + "system_language_preferences_update": "更新您的系统语言偏好设置", "tip_length_cal_method": "吸头长度校准方法", "trash_bin": "始终使用垃圾桶进行校准", "try_restarting_the_update": "尝试重新启动更新。", "turn_off_updates": "在应用程序设置中关闭软件更新通知。", + "u2e_driver_outdated_message": "您的计算机有可用的网卡驱动程序更新。", "up_to_date": "最新", "update_alerts": "软件更新提醒", "update_app_now": "立即更新应用程序", @@ -97,6 +116,8 @@ "usb_to_ethernet_not_connected": "没有连接USB-to-Ethernet适配器", "usb_to_ethernet_unknown_manufacturer": "未知制造商", "usb_to_ethernet_unknown_product": "未知适配器", + "use_system_language": "使用系统语言", + "view_adapter_info": "查看适配器信息", "view_software_update": "查看软件更新", "view_update": "查看更新" } From 1e47fe3136b198abfa57d2afa183fc02abfbb942 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Wed, 22 Jan 2025 09:44:00 -0500 Subject: [PATCH 29/81] fix(app): various odd modal width fixes under i18n (#17307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the takeover modal for maintenance runs (RQA-3868) - run start confirmation (not tagged yet) - run cancel confirmation (RQA-3869) Closes RQA-3868 Closes RQA-3869 Screenshot 2025-01-17 at 4 58 05 PM Screenshot 2025-01-17 at 4 58 40 PM Screenshot 2025-01-17 at 5 05 22 PM --- .../organisms/ODD/RunningProtocol/ConfirmCancelRunModal.tsx | 2 +- app/src/organisms/TakeoverModal/TakeoverModal.tsx | 4 +++- .../ODD/ProtocolSetup/ConfirmSetupStepsCompleteModal.tsx | 6 +++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/organisms/ODD/RunningProtocol/ConfirmCancelRunModal.tsx b/app/src/organisms/ODD/RunningProtocol/ConfirmCancelRunModal.tsx index 453e3152ad4..13e3e08885d 100644 --- a/app/src/organisms/ODD/RunningProtocol/ConfirmCancelRunModal.tsx +++ b/app/src/organisms/ODD/RunningProtocol/ConfirmCancelRunModal.tsx @@ -112,7 +112,7 @@ export function ConfirmCancelRunModal({ setShowConfirmCancelRunModal(false) }} > - + - + {t('branded:confirm_terminate')} @@ -79,6 +79,7 @@ export function TakeoverModal(props: TakeoverModalProps): JSX.Element { gridGap={SPACING.spacing40} alignItems={ALIGN_CENTER} justifyContent={ALIGN_CENTER} + width="100%" > - + {t('you_havent_confirmed', { missingSteps: new Intl.ListFormat('en', { From 8cea8e59c757c6f4faa9815937ace4bf85259737 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Wed, 22 Jan 2025 12:57:38 -0500 Subject: [PATCH 30/81] chore(api): fix tests after #17285 (#17313) That PR changed the stop behavior on OT-2 to fix some bugs but the tests didn't get changed. Fix the tests. --- .../execution/test_hardware_stopper.py | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/api/tests/opentrons/protocol_engine/execution/test_hardware_stopper.py b/api/tests/opentrons/protocol_engine/execution/test_hardware_stopper.py index 503d681bced..c3a1e38d490 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_hardware_stopper.py +++ b/api/tests/opentrons/protocol_engine/execution/test_hardware_stopper.py @@ -1,4 +1,5 @@ """Test hardware stopping execution and side effects.""" + from __future__ import annotations import pytest @@ -78,12 +79,12 @@ async def test_hardware_halt( @pytest.mark.parametrize( - argnames=["post_run_hardware_state", "expected_home_after"], - argvalues=[ - (PostRunHardwareState.STAY_ENGAGED_IN_PLACE, False), - (PostRunHardwareState.DISENGAGE_IN_PLACE, False), - (PostRunHardwareState.HOME_AND_STAY_ENGAGED, True), - (PostRunHardwareState.HOME_THEN_DISENGAGE, True), + "post_run_hardware_state", + [ + PostRunHardwareState.STAY_ENGAGED_IN_PLACE, + PostRunHardwareState.DISENGAGE_IN_PLACE, + PostRunHardwareState.HOME_AND_STAY_ENGAGED, + PostRunHardwareState.HOME_THEN_DISENGAGE, ], ) async def test_hardware_stopping_sequence( @@ -94,7 +95,6 @@ async def test_hardware_stopping_sequence( mock_tip_handler: TipHandler, subject: HardwareStopper, post_run_hardware_state: PostRunHardwareState, - expected_home_after: bool, ) -> None: """It should stop the hardware, and home the robot. Flex no longer performs automatic drop tip..""" decoy.when(state_store.pipettes.get_all_attached_tips()).then_return( @@ -113,7 +113,7 @@ async def test_hardware_stopping_sequence( await movement.home( axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] ), - await hardware_api.stop(home_after=expected_home_after), + await hardware_api.stop(home_after=False), ) @@ -122,6 +122,7 @@ async def test_hardware_stopping_sequence_without_pipette_tips( hardware_api: HardwareAPI, state_store: StateStore, subject: HardwareStopper, + movement: MovementHandler, ) -> None: """Don't drop tip when there aren't any tips attached to pipettes.""" decoy.when(state_store.pipettes.get_all_attached_tips()).then_return([]) @@ -132,7 +133,10 @@ async def test_hardware_stopping_sequence_without_pipette_tips( ) decoy.verify( - await hardware_api.stop(home_after=True), + await hardware_api.stop(home_after=False), + await movement.home( + [MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), ) @@ -171,6 +175,7 @@ async def test_hardware_stopping_sequence_no_pipette( state_store: StateStore, hardware_api: HardwareAPI, mock_tip_handler: TipHandler, + movement: MovementHandler, subject: HardwareStopper, ) -> None: """It should gracefully no-op if the HW API reports no attached pipette.""" @@ -193,8 +198,14 @@ async def test_hardware_stopping_sequence_no_pipette( ) decoy.verify( - await hardware_api.stop(home_after=True), - times=1, + await hardware_api.stop(home_after=False), + await movement.home( + [MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), + await hardware_api.stop(home_after=False), + await movement.home( + [MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), ) @@ -232,7 +243,11 @@ async def test_hardware_stopping_sequence_with_gripper( await movement.home( axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] ), - await ot3_hardware_api.stop(home_after=True), + await ot3_hardware_api.stop(home_after=False), + await ot3_hardware_api.home_z(mount=OT3Mount.GRIPPER), + await movement.home( + axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), ) @@ -284,7 +299,11 @@ async def test_hardware_stopping_sequence_with_fixed_trash( pipette_id="pipette-id", home_after=False, ), - await ot3_hardware_api.stop(home_after=True), + await ot3_hardware_api.stop(home_after=False), + await ot3_hardware_api.home_z(mount=OT3Mount.GRIPPER), + await movement.home( + axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), ) @@ -336,5 +355,8 @@ async def test_hardware_stopping_sequence_with_OT2_addressable_area( pipette_id="pipette-id", home_after=False, ), - await hardware_api.stop(home_after=True), + await hardware_api.stop(home_after=False), + await movement.home( + axes=[MotorAxis.X, MotorAxis.Y, MotorAxis.LEFT_Z, MotorAxis.RIGHT_Z] + ), ) From 25cc087cbbbc4fd4b6bfee5f23dfe842b22d6522 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Fri, 24 Jan 2025 17:02:04 -0500 Subject: [PATCH 31/81] fix(app): Localization DQA Fixes (#17341) fix RQA-3890, RQA-3891, RQA-3892, RQA-3864, RQA-3865, RQA-3866, --- .../src/config/__fixtures__/index.ts | 10 +++++ .../src/config/__tests__/migrate.test.ts | 14 +++++-- app-shell-odd/src/config/migrate.ts | 23 ++++++++++- app-shell/src/__fixtures__/config.ts | 6 +++ .../src/config/__tests__/migrate.test.ts | 14 +++++-- app-shell/src/config/migrate.ts | 16 +++++++- app/src/App/DesktopApp.tsx | 22 +++++------ app/src/App/Navbar.tsx | 5 ++- .../localization/en/protocol_details.json | 2 + .../assets/localization/zh/app_settings.json | 4 +- .../zh/protocol_command_text.json | 2 +- .../Desktop/AppSettings/GeneralSettings.tsx | 1 + app/src/pages/ODD/ProtocolDetails/index.tsx | 39 ++++++++++--------- .../pages/ODD/QuickTransferDetails/index.tsx | 21 +++++----- .../RobotSettingsList.tsx | 6 ++- .../redux/config/__tests__/selectors.test.ts | 4 +- app/src/redux/config/schema-types.ts | 6 ++- 17 files changed, 134 insertions(+), 61 deletions(-) diff --git a/app-shell-odd/src/config/__fixtures__/index.ts b/app-shell-odd/src/config/__fixtures__/index.ts index 7f9a48dc02c..1b05dfed7a6 100644 --- a/app-shell-odd/src/config/__fixtures__/index.ts +++ b/app-shell-odd/src/config/__fixtures__/index.ts @@ -13,6 +13,7 @@ import type { ConfigV23, ConfigV24, ConfigV25, + ConfigV26, } from '@opentrons/app/src/redux/config/types' const PKG_VERSION: string = _PKG_VERSION_ @@ -181,3 +182,12 @@ export const MOCK_CONFIG_V25: ConfigV25 = { systemLanguage: null, }, } + +export const MOCK_CONFIG_V26: ConfigV26 = { + ...MOCK_CONFIG_V25, + version: 26, + onDeviceDisplaySettings: { + ...MOCK_CONFIG_V25.onDeviceDisplaySettings, + unfinishedUnboxingFlowRoute: '/choose-language', + }, +} diff --git a/app-shell-odd/src/config/__tests__/migrate.test.ts b/app-shell-odd/src/config/__tests__/migrate.test.ts index 7ea91ee8d53..f1be25b5fe9 100644 --- a/app-shell-odd/src/config/__tests__/migrate.test.ts +++ b/app-shell-odd/src/config/__tests__/migrate.test.ts @@ -17,13 +17,14 @@ import { MOCK_CONFIG_V23, MOCK_CONFIG_V24, MOCK_CONFIG_V25, + MOCK_CONFIG_V26, } from '../__fixtures__' import { migrate } from '../migrate' vi.mock('uuid/v4') -const NEWEST_VERSION = 25 -const NEWEST_MOCK_CONFIG = MOCK_CONFIG_V25 +const NEWEST_VERSION = 26 +const NEWEST_MOCK_CONFIG = MOCK_CONFIG_V26 describe('config migration', () => { beforeEach(() => { @@ -129,10 +130,17 @@ describe('config migration', () => { expect(result.version).toBe(NEWEST_VERSION) expect(result).toEqual(NEWEST_MOCK_CONFIG) }) - it('should keep version 25', () => { + it('should migrate version 25 to latest', () => { const v25Config = MOCK_CONFIG_V25 const result = migrate(v25Config) + expect(result.version).toBe(NEWEST_VERSION) + expect(result).toEqual(NEWEST_MOCK_CONFIG) + }) + it('should keep version 26', () => { + const v26Config = MOCK_CONFIG_V26 + const result = migrate(v26Config) + expect(result.version).toBe(NEWEST_VERSION) expect(result).toEqual(NEWEST_MOCK_CONFIG) }) diff --git a/app-shell-odd/src/config/migrate.ts b/app-shell-odd/src/config/migrate.ts index b6977fbf489..48d30e1297a 100644 --- a/app-shell-odd/src/config/migrate.ts +++ b/app-shell-odd/src/config/migrate.ts @@ -18,13 +18,14 @@ import type { ConfigV23, ConfigV24, ConfigV25, + ConfigV26, } from '@opentrons/app/src/redux/config/types' // format // base config v12 defaults // any default values for later config versions are specified in the migration // functions for those version below -const CONFIG_VERSION_LATEST = 25 // update this after each config version bump +const CONFIG_VERSION_LATEST = 26 // update this after each config version bump const PKG_VERSION: string = _PKG_VERSION_ export const DEFAULTS_V12: ConfigV12 = { @@ -238,6 +239,21 @@ const toVersion25 = (prevConfig: ConfigV24): ConfigV25 => { } return nextConfig } +const toVersion26 = (prevConfig: ConfigV25): ConfigV26 => { + const nextConfig = { + ...prevConfig, + version: 26 as const, + onDeviceDisplaySettings: { + ...prevConfig.onDeviceDisplaySettings, + unfinishedUnboxingFlowRoute: + prevConfig.onDeviceDisplaySettings.unfinishedUnboxingFlowRoute === + '/welcome' + ? '/choose-language' + : prevConfig.onDeviceDisplaySettings.unfinishedUnboxingFlowRoute, + }, + } + return nextConfig +} const MIGRATIONS: [ (prevConfig: ConfigV12) => ConfigV13, @@ -252,7 +268,8 @@ const MIGRATIONS: [ (prevConfig: ConfigV21) => ConfigV22, (prevConfig: ConfigV22) => ConfigV23, (prevConfig: ConfigV23) => ConfigV24, - (prevConfig: ConfigV24) => ConfigV25 + (prevConfig: ConfigV24) => ConfigV25, + (prevConfig: ConfigV25) => ConfigV26 ] = [ toVersion13, toVersion14, @@ -267,6 +284,7 @@ const MIGRATIONS: [ toVersion23, toVersion24, toVersion25, + toVersion26, ] export const DEFAULTS: Config = migrate(DEFAULTS_V12) @@ -287,6 +305,7 @@ export function migrate( | ConfigV23 | ConfigV24 | ConfigV25 + | ConfigV26 ): Config { let result = prevConfig // loop through the migrations, skipping any migrations that are unnecessary diff --git a/app-shell/src/__fixtures__/config.ts b/app-shell/src/__fixtures__/config.ts index dd344c78532..197f594fcd3 100644 --- a/app-shell/src/__fixtures__/config.ts +++ b/app-shell/src/__fixtures__/config.ts @@ -25,6 +25,7 @@ import type { ConfigV23, ConfigV24, ConfigV25, + ConfigV26, } from '@opentrons/app/src/redux/config/types' export const MOCK_CONFIG_V0: ConfigV0 = { @@ -312,3 +313,8 @@ export const MOCK_CONFIG_V25: ConfigV25 = { systemLanguage: null, }, } + +export const MOCK_CONFIG_V26: ConfigV26 = { + ...MOCK_CONFIG_V25, + version: 26, +} diff --git a/app-shell/src/config/__tests__/migrate.test.ts b/app-shell/src/config/__tests__/migrate.test.ts index ddc151fc2cf..b61210561c5 100644 --- a/app-shell/src/config/__tests__/migrate.test.ts +++ b/app-shell/src/config/__tests__/migrate.test.ts @@ -29,13 +29,14 @@ import { MOCK_CONFIG_V23, MOCK_CONFIG_V24, MOCK_CONFIG_V25, + MOCK_CONFIG_V26, } from '../../__fixtures__' import { migrate } from '../migrate' vi.mock('uuid/v4') -const NEWEST_VERSION = 25 -const NEWEST_MOCK_CONFIG = MOCK_CONFIG_V25 +const NEWEST_VERSION = 26 +const NEWEST_MOCK_CONFIG = MOCK_CONFIG_V26 describe('config migration', () => { beforeEach(() => { @@ -234,10 +235,17 @@ describe('config migration', () => { expect(result.version).toBe(NEWEST_VERSION) expect(result).toEqual(NEWEST_MOCK_CONFIG) }) - it('should keep version 25', () => { + it('should migrate version 25 to latest', () => { const v25Config = MOCK_CONFIG_V25 const result = migrate(v25Config) + expect(result.version).toBe(NEWEST_VERSION) + expect(result).toEqual(NEWEST_MOCK_CONFIG) + }) + it('should keep version 26', () => { + const v26Config = MOCK_CONFIG_V26 + const result = migrate(v26Config) + expect(result.version).toBe(NEWEST_VERSION) expect(result).toEqual(NEWEST_MOCK_CONFIG) }) diff --git a/app-shell/src/config/migrate.ts b/app-shell/src/config/migrate.ts index 69c53ab2e72..1ad6f4900cb 100644 --- a/app-shell/src/config/migrate.ts +++ b/app-shell/src/config/migrate.ts @@ -29,13 +29,14 @@ import type { ConfigV23, ConfigV24, ConfigV25, + ConfigV26, } from '@opentrons/app/src/redux/config/types' // format // base config v0 defaults // any default values for later config versions are specified in the migration // functions for those version below -const CONFIG_VERSION_LATEST = 25 +const CONFIG_VERSION_LATEST = 26 export const DEFAULTS_V0: ConfigV0 = { version: 0, @@ -443,6 +444,14 @@ const toVersion25 = (prevConfig: ConfigV24): ConfigV25 => { return nextConfig } +const toVersion26 = (prevConfig: ConfigV25): ConfigV26 => { + const nextConfig = { + ...prevConfig, + version: 26 as const, + } + return nextConfig +} + const MIGRATIONS: [ (prevConfig: ConfigV0) => ConfigV1, (prevConfig: ConfigV1) => ConfigV2, @@ -468,7 +477,8 @@ const MIGRATIONS: [ (prevConfig: ConfigV21) => ConfigV22, (prevConfig: ConfigV22) => ConfigV23, (prevConfig: ConfigV23) => ConfigV24, - (prevConfig: ConfigV24) => ConfigV25 + (prevConfig: ConfigV24) => ConfigV25, + (prevConfig: ConfigV25) => ConfigV26 ] = [ toVersion1, toVersion2, @@ -495,6 +505,7 @@ const MIGRATIONS: [ toVersion23, toVersion24, toVersion25, + toVersion26, ] export const DEFAULTS: Config = migrate(DEFAULTS_V0) @@ -527,6 +538,7 @@ export function migrate( | ConfigV23 | ConfigV24 | ConfigV25 + | ConfigV26 ): Config { const prevVersion = prevConfig.version let result = prevConfig diff --git a/app/src/App/DesktopApp.tsx b/app/src/App/DesktopApp.tsx index 196a6cf547c..029ec99ee26 100644 --- a/app/src/App/DesktopApp.tsx +++ b/app/src/App/DesktopApp.tsx @@ -1,5 +1,4 @@ import { useState, Fragment } from 'react' -import { useTranslation } from 'react-i18next' import { Navigate, Route, Routes, useMatch } from 'react-router-dom' import { ErrorBoundary } from 'react-error-boundary' import { @@ -44,7 +43,6 @@ import { useFeatureFlag } from '../redux/config' import type { RouteProps } from './types' export const DesktopApp = (): JSX.Element => { - const { t } = useTranslation('top_navigation') useSoftwareUpdatePoll() const [ isEmergencyStopModalDismissed, @@ -70,55 +68,55 @@ export const DesktopApp = (): JSX.Element => { const desktopRoutes: RouteProps[] = [ { Component: ProtocolsLanding, - name: t('protocols'), + name: 'protocols', navLinkTo: '/protocols', path: '/protocols', }, { Component: ProtocolDetails, - name: t('protocol_details'), + name: 'Protocol Details', path: '/protocols/:protocolKey', }, { Component: ProtocolTimeline, - name: t('protocol_timeline'), + name: 'Protocol Timeline', path: '/protocols/:protocolKey/timeline', }, { Component: Labware, - name: t('labware'), + name: 'labware', navLinkTo: '/labware', path: '/labware', }, { Component: DevicesLanding, - name: t('devices'), + name: 'devices', navLinkTo: '/devices', path: '/devices', }, { Component: DeviceDetails, - name: t('device'), + name: 'Device', path: '/devices/:robotName', }, { Component: RobotSettings, - name: t('robot_settings'), + name: 'Robot Settings', path: '/devices/:robotName/robot-settings/:robotSettingsTab?', }, { Component: CalibrationDashboard, - name: t('calibration_dashboard'), + name: 'Calibration Dashboard', path: '/devices/:robotName/robot-settings/calibration/dashboard', }, { Component: ProtocolRunDetails, - name: t('run_details'), + name: 'Run Details', path: '/devices/:robotName/protocol-runs/:runId/:protocolRunDetailsTab?', }, { Component: AppSettings, - name: t('app_settings'), + name: 'App Settings', path: '/app-settings/:appSettingsTab?', }, ] diff --git a/app/src/App/Navbar.tsx b/app/src/App/Navbar.tsx index 90e62b608ae..ebef216e9f8 100644 --- a/app/src/App/Navbar.tsx +++ b/app/src/App/Navbar.tsx @@ -1,4 +1,5 @@ import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' import { NavLink, useNavigate } from 'react-router-dom' import styled from 'styled-components' import debounce from 'lodash/debounce' @@ -111,11 +112,11 @@ const LogoImg = styled('img')` ` export function Navbar({ routes }: { routes: RouteProps[] }): JSX.Element { + const { t } = useTranslation('top_navigation') const navigate = useNavigate() const navRoutes = routes.filter( ({ navLinkTo }: RouteProps) => navLinkTo != null ) - const debouncedNavigate = useCallback( debounce((path: string) => { navigate(path) @@ -149,7 +150,7 @@ export function Navbar({ routes }: { routes: RouteProps[] }): JSX.Element { as="h3" margin={`${SPACING.spacing8} 0 ${SPACING.spacing8} ${SPACING.spacing12}`} > - {name} + {t(name)} ))} diff --git a/app/src/assets/localization/en/protocol_details.json b/app/src/assets/localization/en/protocol_details.json index e13d929b663..53531f1e00a 100644 --- a/app/src/assets/localization/en/protocol_details.json +++ b/app/src/assets/localization/en/protocol_details.json @@ -12,6 +12,7 @@ "creation_method": "creation method", "csv_file": "CSV file", "csv_file_type_required": "CSV file type required", + "deck": "deck", "deck_view": "Deck View", "default_value": "Default Value", "delete_protocol": "Delete Protocol", @@ -86,6 +87,7 @@ "start_setup": "Start setup", "start_setup_customize_values": "Start setup to customize values", "successfully_sent": "Successfully sent", + "summary": "Summary", "total_volume": "total volume", "unavailable_or_busy_robot_not_listed": "{{count}} unavailable or busy robot is not listed.", "unavailable_or_busy_robot_not_listed_plural": "{{count}} unavailable or busy robots are not listed.", diff --git a/app/src/assets/localization/zh/app_settings.json b/app/src/assets/localization/zh/app_settings.json index d174021a3cf..b84f0c5b1e8 100644 --- a/app/src/assets/localization/zh/app_settings.json +++ b/app/src/assets/localization/zh/app_settings.json @@ -55,7 +55,7 @@ "installing_update": "正在安装更新...", "ip_available": "可用", "ip_description_first": "输入IP地址或主机名以连接到工作站。", - "language": "语言", + "language": "语言 (Language)", "language_preference": "语言偏好", "manage_versions": "工作站版本和应用程序软件版本必须一致。通过工作站设置 > 高级查看工作站软件版本。", "new_features": "新功能", @@ -84,7 +84,7 @@ "restore_previous": "查看如何恢复过往软件版本", "searching": "正在搜索30秒", "select_a_language": "请选择使用语言。", - "select_language": "选择语言", + "select_language": "选择语言 (Select language)", "setup_connection": "设置连接", "share_display_usage": "分享屏幕使用情况", "share_robot_logs": "分享工作站日志", diff --git a/app/src/assets/localization/zh/protocol_command_text.json b/app/src/assets/localization/zh/protocol_command_text.json index fd5373b3183..a32a79e70b5 100644 --- a/app/src/assets/localization/zh/protocol_command_text.json +++ b/app/src/assets/localization/zh/protocol_command_text.json @@ -37,7 +37,7 @@ "in_location": "在{{location}}", "latching_hs_latch": "在热震荡模块上锁定实验耗材", "left": "左", - "load_labware_to_display_location": "在{{display_location}}加载{{labware}}", + "load_labware_to_display_location": "{{display_location}}加载{{labware}}", "load_liquids_info_protocol_setup": "将{{liquid}}加载到{{labware}}中", "load_module_protocol_setup": "在甲板槽{{slot_name}}中加载模块{{module}}", "load_pipette_protocol_setup": "在{{mount_name}}支架上加载{{pipette_name}}", diff --git a/app/src/pages/Desktop/AppSettings/GeneralSettings.tsx b/app/src/pages/Desktop/AppSettings/GeneralSettings.tsx index eed4f5be96a..2c579ace421 100644 --- a/app/src/pages/Desktop/AppSettings/GeneralSettings.tsx +++ b/app/src/pages/Desktop/AppSettings/GeneralSettings.tsx @@ -290,6 +290,7 @@ export function GeneralSettings(): JSX.Element { { + const { t, i18n } = useTranslation('protocol_details') return ( ({ - text: option, + text: i18n.format(t(option), 'capitalize'), onClick: () => { setCurrentOption(option) }, @@ -266,7 +267,7 @@ const ProtocolSectionContent = ({ let protocolSection: JSX.Element | null = null switch (currentOption) { - case 'Summary': + case 'summary': protocolSection = ( ) break - case 'Parameters': + case 'parameters': protocolSection = break - case 'Hardware': + case 'hardware': protocolSection = break - case 'Labware': + case 'labware': protocolSection = break - case 'Liquids': + case 'liquids': protocolSection = break - case 'Deck': + case 'deck': protocolSection = break } return ( {protocolSection} diff --git a/app/src/pages/ODD/QuickTransferDetails/index.tsx b/app/src/pages/ODD/QuickTransferDetails/index.tsx index 37131176b3f..64b410e084d 100644 --- a/app/src/pages/ODD/QuickTransferDetails/index.tsx +++ b/app/src/pages/ODD/QuickTransferDetails/index.tsx @@ -180,10 +180,10 @@ const QuickTransferHeader = ({ } const transferSectionTabOptions = [ - 'Summary', - 'Hardware', - 'Labware', - 'Deck', + 'summary', + 'hardware', + 'labware', + 'deck', ] as const type TabOption = typeof transferSectionTabOptions[number] @@ -197,13 +197,14 @@ const TransferSectionTabs = ({ currentOption, setCurrentOption, }: TransferSectionTabsProps): JSX.Element => { + const { t, i18n } = useTranslation('protocol_details') const options = transferSectionTabOptions return ( ({ - text: option, + text: i18n.format(t(option), 'capitalize'), onClick: () => { setCurrentOption(option) }, @@ -263,7 +264,7 @@ const TransferSectionContent = ({ let protocolSection: JSX.Element | null = null switch (currentOption) { - case 'Summary': + case 'summary': protocolSection = ( ) break - case 'Hardware': + case 'hardware': protocolSection = break - case 'Labware': + case 'labware': protocolSection = break - case 'Deck': + case 'deck': protocolSection = break } return ( {protocolSection} diff --git a/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx b/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx index 6dd08c20823..54e25a65c1e 100644 --- a/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx +++ b/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx @@ -20,7 +20,7 @@ import { TYPOGRAPHY, } from '@opentrons/components' -import { LANGUAGES } from '/app/i18n' +import { LANGUAGES, US_ENGLISH_DISPLAY_NAME } from '/app/i18n' import { getLocalRobot, getRobotApiVersion } from '/app/redux/discovery' import { getRobotUpdateAvailable } from '/app/redux/robot-update' import { useErrorRecoverySettingsToggle } from '/app/resources/errorRecovery' @@ -146,7 +146,9 @@ export function RobotSettingsList(props: RobotSettingsListProps): JSX.Element { { setCurrentOption('LanguageSetting') diff --git a/app/src/redux/config/__tests__/selectors.test.ts b/app/src/redux/config/__tests__/selectors.test.ts index 18262108c0a..00ac8f42ed3 100644 --- a/app/src/redux/config/__tests__/selectors.test.ts +++ b/app/src/redux/config/__tests__/selectors.test.ts @@ -246,7 +246,7 @@ describe('shell selectors', () => { sleepMs: 25200000, brightness: 4, textSize: 1, - unfinishedUnboxingFlowRoute: '/welcome', + unfinishedUnboxingFlowRoute: '/choose-language', }, }, } as any @@ -254,7 +254,7 @@ describe('shell selectors', () => { sleepMs: 25200000, brightness: 4, textSize: 1, - unfinishedUnboxingFlowRoute: '/welcome', + unfinishedUnboxingFlowRoute: '/choose-language', }) }) }) diff --git a/app/src/redux/config/schema-types.ts b/app/src/redux/config/schema-types.ts index e50a01d78ef..a917bdbb3dd 100644 --- a/app/src/redux/config/schema-types.ts +++ b/app/src/redux/config/schema-types.ts @@ -285,4 +285,8 @@ export type ConfigV25 = Omit & { } } -export type Config = ConfigV25 +export type ConfigV26 = Omit & { + version: 26 +} + +export type Config = ConfigV26 From a2b35d5000b11beabdc7568b49b9be147ce1ea0d Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Mon, 27 Jan 2025 13:27:30 -0500 Subject: [PATCH 32/81] feat(api): inner well geometry unit tests (#17082) (#17311) # Overview This just copies the updated well geometry definitions from edge over to chore_release. ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment Co-authored-by: Caila Marashaj <98041399+caila-marashaj@users.noreply.github.com> --- .../protocol_engine/state/frustum_helpers.py | 57 +- .../protocol_engine/state/labware.py | 1 - .../state/inner_geometry_test_params.py | 150 ++ .../state/test_geometry_view.py | 155 +- .../geometry/test_frustum_helpers.py | 35 +- .../3/agilent_1_reservoir_290ml/2.json | 10 +- .../2.json | 2 +- .../3/biorad_96_wellplate_200ul_pcr/3.json | 390 ++--- .../3/corning_12_wellplate_6.9ml_flat/3.json | 24 +- .../3/corning_384_wellplate_112ul_flat/3.json | 1548 +++++++++-------- .../3/corning_48_wellplate_1.6ml_flat/3.json | 102 +- .../3/nest_1_reservoir_195ml/3.json | 8 +- .../3/nest_1_reservoir_290ml/2.json | 22 +- .../3.json | 192 +- .../2.json | 8 +- .../2.json | 83 +- .../2.json | 135 +- .../2.json | 24 +- .../2.json | 96 +- .../2.json | 69 +- .../2.json | 96 +- .../2.json | 59 +- .../3/usascientific_12_reservoir_22ml/2.json | 48 +- .../2.json | 21 +- .../labware/labware_definition.py | 24 + 25 files changed, 1922 insertions(+), 1437 deletions(-) create mode 100644 api/tests/opentrons/protocol_engine/state/inner_geometry_test_params.py diff --git a/api/src/opentrons/protocol_engine/state/frustum_helpers.py b/api/src/opentrons/protocol_engine/state/frustum_helpers.py index 83499fb2510..b28fb936be7 100644 --- a/api/src/opentrons/protocol_engine/state/frustum_helpers.py +++ b/api/src/opentrons/protocol_engine/state/frustum_helpers.py @@ -82,19 +82,12 @@ def _circular_frustum_polynomial_roots( def _volume_from_height_circular( - target_height: float, - total_frustum_height: float, - bottom_radius: float, - top_radius: float, + target_height: float, segment: ConicalFrustum ) -> float: """Find the volume given a height within a circular frustum.""" - a, b, c = _circular_frustum_polynomial_roots( - bottom_radius=bottom_radius, - top_radius=top_radius, - total_frustum_height=total_frustum_height, - ) - volume = a * (target_height**3) + b * (target_height**2) + c * target_height - return volume + heights = segment.height_to_volume_table.keys() + best_fit_height = min(heights, key=lambda x: abs(x - target_height)) + return segment.height_to_volume_table[best_fit_height] def _volume_from_height_rectangular( @@ -138,26 +131,12 @@ def _volume_from_height_squared_cone( def _height_from_volume_circular( - volume: float, - total_frustum_height: float, - bottom_radius: float, - top_radius: float, + target_volume: float, segment: ConicalFrustum ) -> float: - """Find the height given a volume within a circular frustum.""" - a, b, c = _circular_frustum_polynomial_roots( - bottom_radius=bottom_radius, - top_radius=top_radius, - total_frustum_height=total_frustum_height, - ) - d = volume * -1 - x_intercept_roots = (a, b, c, d) - - height_from_volume_roots = roots(x_intercept_roots) - height = _reject_unacceptable_heights( - potential_heights=list(height_from_volume_roots), - max_height=total_frustum_height, - ) - return height + """Find the height given a volume within a squared cone segment.""" + volumes = segment.volume_to_height_table.keys() + best_fit_volume = min(volumes, key=lambda x: abs(x - target_volume)) + return segment.volume_to_height_table[best_fit_volume] def _height_from_volume_rectangular( @@ -243,9 +222,7 @@ def _get_segment_capacity(segment: WellSegment) -> float: return ( _volume_from_height_circular( target_height=section_height, - total_frustum_height=section_height, - bottom_radius=(segment.bottomDiameter / 2), - top_radius=(segment.topDiameter / 2), + segment=segment, ) * segment.count ) @@ -293,12 +270,7 @@ def height_at_volume_within_section( radius_of_curvature=section.radiusOfCurvature, ) case ConicalFrustum(): - return _height_from_volume_circular( - volume=target_volume_relative, - top_radius=(section.bottomDiameter / 2), - bottom_radius=(section.topDiameter / 2), - total_frustum_height=section_height, - ) + return _height_from_volume_circular(target_volume_relative, section) case CuboidalFrustum(): return _height_from_volume_rectangular( volume=target_volume_relative, @@ -334,10 +306,7 @@ def volume_at_height_within_section( case ConicalFrustum(): return ( _volume_from_height_circular( - target_height=target_height_relative, - total_frustum_height=section_height, - bottom_radius=(section.bottomDiameter / 2), - top_radius=(section.topDiameter / 2), + target_height=target_height_relative, segment=section ) * section.count ) @@ -427,7 +396,7 @@ def _find_height_in_partial_frustum( if ( bottom_section_volume < target_volume - < (bottom_section_volume + section_volume) + <= (bottom_section_volume + section_volume) ): relative_target_volume = target_volume - bottom_section_volume section_height = section.topHeight - section.bottomHeight diff --git a/api/src/opentrons/protocol_engine/state/labware.py b/api/src/opentrons/protocol_engine/state/labware.py index 70cb43c8403..58909f5be9f 100644 --- a/api/src/opentrons/protocol_engine/state/labware.py +++ b/api/src/opentrons/protocol_engine/state/labware.py @@ -524,7 +524,6 @@ def get_well_definition( will be used. """ definition = self.get_definition(labware_id) - if well_name is None: well_name = definition.ordering[0][0] diff --git a/api/tests/opentrons/protocol_engine/state/inner_geometry_test_params.py b/api/tests/opentrons/protocol_engine/state/inner_geometry_test_params.py new file mode 100644 index 00000000000..0a60bf4206c --- /dev/null +++ b/api/tests/opentrons/protocol_engine/state/inner_geometry_test_params.py @@ -0,0 +1,150 @@ +"""Arguments needed to test inner geometry. + +Each labware has 2 nominal volumes calculated in solidworks. +- One is a nominal bottom volume, calculated some set distance from the bottom of the inside of the well. +- The other is a nominal top volume, calculated some set distance from the top of the inside of the well. +""" +INNER_WELL_GEOMETRY_TEST_PARAMS = [ + [ + "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", + "conicalWell15mL", + 16.7, + 15546.9, + 3.0, + 5.0, + ], + [ + "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", + "conicalWell50mL", + 111.2, + 56110.3, + 3.0, + 5.0, + ], + ["opentrons_24_tuberack_nest_2ml_screwcap", "conicalWell", 66.6, 2104.9, 3.0, 3.0], + [ + "opentrons_24_tuberack_nest_1.5ml_screwcap", + "conicalWell", + 19.5, + 1750.8, + 3.0, + 3.0, + ], + ["nest_1_reservoir_290ml", "cuboidalWell", 16570.380, 271690.520, 3.0, 3.0], + ["opentrons_24_tuberack_nest_2ml_snapcap", "conicalWell", 69.62, 2148.5, 3.0, 3.0], + ["nest_96_wellplate_2ml_deep", "cuboidalWell", 118.3, 2060.4, 3.0, 3.0], + ["opentrons_24_tuberack_nest_1.5ml_snapcap", "conicalWell", 27.8, 1682.3, 3.0, 3.0], + ["nest_12_reservoir_15ml", "cuboidalWell", 1219.0, 13236.1, 3.0, 3.0], + ["nest_1_reservoir_195ml", "cuboidalWell", 14034.2, 172301.9, 3.0, 3.0], + [ + "opentrons_24_tuberack_nest_0.5ml_screwcap", + "conicalWell", + 21.95, + 795.4, + 3.0, + 3.0, + ], + [ + "opentrons_96_wellplate_200ul_pcr_full_skirt", + "conicalWell", + 14.3, + 150.2, + 3.0, + 3.0, + ], + ["nest_96_wellplate_100ul_pcr_full_skirt", "conicalWell", 15.5, 150.8, 3.0, 3.0], + ["nest_96_wellplate_200ul_flat", "conicalWell", 96.3, 259.8, 3.0, 3.0], + [ + "opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical", + "50mlconicalWell", + 163.9, + 57720.5, + 3.0, + 3.0, + ], + [ + "opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical", + "15mlconicalWell", + 40.8, + 15956.6, + 3.0, + 3.0, + ], + ["usascientific_12_reservoir_22ml", "cuboidalWell", 529.36, 21111.5, 3.0, 3.0], + ["thermoscientificnunc_96_wellplate_2000ul", "conicalWell", 73.5, 1768.0, 3.0, 3.0], + [ + "usascientific_96_wellplate_2.4ml_deep", + "cuboidalWell", + 72.220, + 2241.360, + 3.0, + 3.0, + ], + ["agilent_1_reservoir_290ml", "cuboidalWell", 15652.9, 268813.8, 3.0, 3.0], + [ + "opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap", + "conicalWell", + 25.8, + 1576.1, + 3.0, + 3.0, + ], + ["thermoscientificnunc_96_wellplate_1300ul", "conicalWell", 73.5, 1155.1, 3.0, 3.0], + ["corning_12_wellplate_6.9ml_flat", "conicalWell", 1156.3, 5654.8, 3.0, 3.0], + ["corning_24_wellplate_3.4ml_flat", "conicalWell", 579.0, 2853.4, 3.0, 3.0], + ["corning_6_wellplate_16.8ml_flat", "conicalWell", 2862.1, 13901.9, 3.0, 3.0], + ["corning_48_wellplate_1.6ml_flat", "conicalWell", 268.9, 1327.0, 3.0, 3.0], + ["biorad_96_wellplate_200ul_pcr", "conicalWell", 17.9, 161.2, 3.0, 3.0], + ["axygen_1_reservoir_90ml", "cuboidalWell", 22373.4, 70450.6, 3.0, 3.0], + ["corning_384_wellplate_112ul_flat", "flatWell", 22.4, 77.4, 2.88, 3.0], + ["corning_96_wellplate_360ul_flat", "conicalWell", 97.2, 257.1, 3.0, 3.0], + ["biorad_384_wellplate_50ul", "conicalWell", 7.7, 27.8, 3.0, 3.0], + [ + "appliedbiosystemsmicroamp_384_wellplate_40ul", + "conicalWell", + 7.44, + 26.19, + 3.0, + 3.0, + ], + [ + "opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap", + "conicalWell", + 60.940, + 2163.980, + 3.0, + 3.0, + ], + [ + "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", + "conicalWell15mL", + 16.690, + 15546.930, + 3.0, + 5.0, + ], + [ + "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", + "conicalWell50mL", + 111.200, + 56110.279, + 3.0, + 5.0, + ], + [ + "opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical", + "15mlconicalWell", + 40.830, + 15956.600, + 3.0, + 3.0, + ], + [ + "opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical", + "50mlconicalWell", + 163.860, + 57720.510, + 3.0, + 3.0, + ], +] diff --git a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py index fda32a56ce0..8f28c6de88e 100644 --- a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py @@ -6,6 +6,7 @@ from math import isclose from typing import cast, List, Tuple, Optional, NamedTuple, Dict from unittest.mock import sentinel +from os import listdir, path import pytest from decoy import Decoy @@ -15,6 +16,7 @@ StateUpdate, ) +from opentrons_shared_data import get_shared_data_root, load_shared_data from opentrons_shared_data.deck.types import DeckDefinitionV5 from opentrons_shared_data.deck import load as load_deck from opentrons_shared_data.labware.types import LabwareUri @@ -27,8 +29,8 @@ Dimensions as LabwareDimensions, Parameters as LabwareDefinitionParameters, CornerOffsetFromSlot, + ConicalFrustum, ) -from opentrons_shared_data import load_shared_data from opentrons.protocol_engine import errors from opentrons.protocol_engine.types import ( @@ -96,6 +98,7 @@ _volume_from_height_circular, _volume_from_height_rectangular, ) +from .inner_geometry_test_params import INNER_WELL_GEOMETRY_TEST_PARAMS from ..pipette_fixtures import get_default_nozzle_map from ..mock_circular_frusta import TEST_EXAMPLES as CIRCULAR_TEST_EXAMPLES from ..mock_rectangular_frusta import TEST_EXAMPLES as RECTANGULAR_TEST_EXAMPLES @@ -3278,19 +3281,23 @@ def _find_volume_from_height_(index: int) -> None: nonlocal total_frustum_height, bottom_radius top_radius = frustum["radius"][index] target_height = frustum["height"][index] - + segment = ConicalFrustum( + shape="conical", + bottomDiameter=bottom_radius * 2, + topDiameter=top_radius * 2, + topHeight=total_frustum_height, + bottomHeight=0.0, + xCount=1, + yCount=1, + ) found_volume = _volume_from_height_circular( target_height=target_height, - total_frustum_height=total_frustum_height, - top_radius=top_radius, - bottom_radius=bottom_radius, + segment=segment, ) found_height = _height_from_volume_circular( - volume=found_volume, - total_frustum_height=total_frustum_height, - top_radius=top_radius, - bottom_radius=bottom_radius, + target_volume=found_volume, + segment=segment, ) assert isclose(found_height, frustum["height"][index]) @@ -3360,3 +3367,133 @@ def test_validate_dispense_volume_into_well_meniscus( ), volume=1100000.0, ) + + +@pytest.mark.parametrize( + [ + "labware_id", + "well_name", + "input_volume_bottom", + "input_volume_top", + "expected_height_from_bottom_mm", + "expected_height_from_top_mm", + ], + INNER_WELL_GEOMETRY_TEST_PARAMS, +) +def test_get_well_height_at_volume( + decoy: Decoy, + subject: GeometryView, + labware_id: str, + well_name: str, + input_volume_bottom: float, + input_volume_top: float, + expected_height_from_bottom_mm: float, + expected_height_from_top_mm: float, + mock_labware_view: LabwareView, +) -> None: + """Test getting the well height at a given volume.""" + + def _get_labware_def() -> LabwareDefinition: + def_dir = str(get_shared_data_root()) + f"/labware/definitions/3/{labware_id}" + version_str = max([str(version) for version in listdir(def_dir)]) + def_path = path.join(def_dir, version_str) + _labware_def = LabwareDefinition.model_validate( + json.loads(load_shared_data(def_path).decode("utf-8")) + ) + return _labware_def + + labware_def = _get_labware_def() + assert labware_def.innerLabwareGeometry is not None + well_geometry = labware_def.innerLabwareGeometry.get(well_name) + assert well_geometry is not None + well_definition = [ + well + for well in labware_def.wells.values() + if well.geometryDefinitionId == well_name + ][0] + + decoy.when(mock_labware_view.get_well_geometry(labware_id, well_name)).then_return( + well_geometry + ) + decoy.when( + mock_labware_view.get_well_definition(labware_id, well_name) + ).then_return(well_definition) + + found_height_bottom = subject.get_well_height_at_volume( + labware_id=labware_id, well_name=well_name, volume=input_volume_bottom + ) + found_height_top = subject.get_well_height_at_volume( + labware_id=labware_id, well_name=well_name, volume=input_volume_top + ) + assert isclose(found_height_bottom, expected_height_from_bottom_mm, rel_tol=0.01) + vol_2_expected_height_from_bottom = ( + subject.get_well_height(labware_id=labware_id, well_name=well_name) + - expected_height_from_top_mm + ) + assert isclose(found_height_top, vol_2_expected_height_from_bottom, rel_tol=0.01) + + +@pytest.mark.parametrize( + [ + "labware_id", + "well_name", + "expected_volume_bottom", + "expected_volume_top", + "input_height_from_bottom_mm", + "input_height_from_top_mm", + ], + INNER_WELL_GEOMETRY_TEST_PARAMS, +) +def test_get_well_volume_at_height( + decoy: Decoy, + subject: GeometryView, + labware_id: str, + well_name: str, + expected_volume_bottom: float, + expected_volume_top: float, + input_height_from_bottom_mm: float, + input_height_from_top_mm: float, + mock_labware_view: LabwareView, +) -> None: + """Test getting the volume at a given height.""" + + def _get_labware_def() -> LabwareDefinition: + def_dir = str(get_shared_data_root()) + f"/labware/definitions/3/{labware_id}" + version_str = max([str(version) for version in listdir(def_dir)]) + def_path = path.join(def_dir, version_str) + _labware_def = LabwareDefinition.model_validate( + json.loads(load_shared_data(def_path).decode("utf-8")) + ) + return _labware_def + + labware_def = _get_labware_def() + assert labware_def.innerLabwareGeometry is not None + well_geometry = labware_def.innerLabwareGeometry.get(well_name) + assert well_geometry is not None + well_definition = [ + well + for well in labware_def.wells.values() + if well.geometryDefinitionId == well_name + ][0] + + decoy.when(mock_labware_view.get_well_geometry(labware_id, well_name)).then_return( + well_geometry + ) + decoy.when( + mock_labware_view.get_well_definition(labware_id, well_name) + ).then_return(well_definition) + + found_volume_bottom = subject.get_well_volume_at_height( + labware_id=labware_id, well_name=well_name, height=input_height_from_bottom_mm + ) + vol_2_input_height_from_bottom = ( + subject.get_well_height(labware_id=labware_id, well_name=well_name) + - input_height_from_top_mm + ) + found_volume_top = subject.get_well_volume_at_height( + labware_id=labware_id, + well_name=well_name, + height=vol_2_input_height_from_bottom, + ) + assert isclose(found_volume_bottom, expected_volume_bottom, rel_tol=0.01) + assert isclose(found_volume_top, expected_volume_top, rel_tol=0.01) diff --git a/api/tests/opentrons/protocols/geometry/test_frustum_helpers.py b/api/tests/opentrons/protocols/geometry/test_frustum_helpers.py index 0b8d3429527..d9bd8173834 100644 --- a/api/tests/opentrons/protocols/geometry/test_frustum_helpers.py +++ b/api/tests/opentrons/protocols/geometry/test_frustum_helpers.py @@ -11,7 +11,6 @@ _cross_section_area_rectangular, _cross_section_area_circular, _reject_unacceptable_heights, - _circular_frustum_polynomial_roots, _rectangular_frustum_polynomial_roots, _volume_from_height_rectangular, _volume_from_height_circular, @@ -211,39 +210,25 @@ def test_volume_and_height_circular(well: List[Any]) -> None: """Test both volume and height calculations for circular frusta.""" if well[-1].shape == "spherical": return - total_height = well[0].topHeight for segment in well: if segment.shape == "conical": - top_radius = segment.topDiameter / 2 - bottom_radius = segment.bottomDiameter / 2 - a = pi * ((top_radius - bottom_radius) ** 2) / (3 * total_height**2) - b = pi * bottom_radius * (top_radius - bottom_radius) / total_height - c = pi * bottom_radius**2 - assert _circular_frustum_polynomial_roots( - top_radius=top_radius, - bottom_radius=bottom_radius, - total_frustum_height=total_height, - ) == (a, b, c) + a = segment.topDiameter / 2 + b = segment.bottomDiameter / 2 # test volume within a bunch of arbitrary heights - for target_height in range(round(total_height)): - expected_volume = ( - a * (target_height**3) - + b * (target_height**2) - + c * target_height + segment_height = segment.topHeight - segment.bottomHeight + for target_height in range(round(segment_height)): + r_y = (target_height / segment_height) * (a - b) + b + expected_volume = (pi * target_height / 3) * ( + b**2 + b * r_y + r_y**2 ) found_volume = _volume_from_height_circular( target_height=target_height, - total_frustum_height=total_height, - bottom_radius=bottom_radius, - top_radius=top_radius, + segment=segment, ) - assert found_volume == expected_volume + assert isclose(found_volume, expected_volume) # test going backwards to get height back found_height = _height_from_volume_circular( - volume=found_volume, - total_frustum_height=total_height, - bottom_radius=bottom_radius, - top_radius=top_radius, + target_volume=found_volume, segment=segment ) assert isclose(found_height, target_height) diff --git a/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json b/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json index 4a06fc94f97..f9bf94127ab 100644 --- a/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json +++ b/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json @@ -57,22 +57,22 @@ "sections": [ { "shape": "cuboidal", - "topXDimension": 107.25, + "topXDimension": 106.79, "topYDimension": 8, "bottomXDimension": 101.25, "bottomYDimension": 1.66, "topHeight": 2, - "bottomHeight": 8, + "bottomHeight": 0, "yCount": 8 }, { "shape": "cuboidal", "topXDimension": 107.5, "topYDimension": 71.25, - "bottomXDimension": 107.25, + "bottomXDimension": 106.79, "bottomYDimension": 71.0, - "topHeight": 39.22, - "bottomHeight": 2 + "topHeight": 39.23, + "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json index a6954ac9d06..d47afca68c4 100644 --- a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json +++ b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json @@ -4712,8 +4712,8 @@ }, { "shape": "conical", - "bottomDiameter": 1.4, "topDiameter": 3.17, + "bottomDiameter": 1.4, "topHeight": 5.77, "bottomHeight": 0.34 }, diff --git a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json index 61f780b9bfd..24f0656db6b 100644 --- a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json +++ b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json @@ -38,9 +38,9 @@ "gripHeightFromLabwareBottom": 10.14, "wells": { "H1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 11.24, @@ -48,9 +48,9 @@ "geometryDefinitionId": "conicalWell" }, "G1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 20.24, @@ -58,9 +58,9 @@ "geometryDefinitionId": "conicalWell" }, "F1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 29.24, @@ -68,9 +68,9 @@ "geometryDefinitionId": "conicalWell" }, "E1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 38.24, @@ -78,9 +78,9 @@ "geometryDefinitionId": "conicalWell" }, "D1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 47.24, @@ -88,9 +88,9 @@ "geometryDefinitionId": "conicalWell" }, "C1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 56.24, @@ -98,9 +98,9 @@ "geometryDefinitionId": "conicalWell" }, "B1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 65.24, @@ -108,9 +108,9 @@ "geometryDefinitionId": "conicalWell" }, "A1": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 14.38, "y": 74.24, @@ -118,9 +118,9 @@ "geometryDefinitionId": "conicalWell" }, "H2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 11.24, @@ -128,9 +128,9 @@ "geometryDefinitionId": "conicalWell" }, "G2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 20.24, @@ -138,9 +138,9 @@ "geometryDefinitionId": "conicalWell" }, "F2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 29.24, @@ -148,9 +148,9 @@ "geometryDefinitionId": "conicalWell" }, "E2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 38.24, @@ -158,9 +158,9 @@ "geometryDefinitionId": "conicalWell" }, "D2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 47.24, @@ -168,9 +168,9 @@ "geometryDefinitionId": "conicalWell" }, "C2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 56.24, @@ -178,9 +178,9 @@ "geometryDefinitionId": "conicalWell" }, "B2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 65.24, @@ -188,9 +188,9 @@ "geometryDefinitionId": "conicalWell" }, "A2": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 23.38, "y": 74.24, @@ -198,9 +198,9 @@ "geometryDefinitionId": "conicalWell" }, "H3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 11.24, @@ -208,9 +208,9 @@ "geometryDefinitionId": "conicalWell" }, "G3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 20.24, @@ -218,9 +218,9 @@ "geometryDefinitionId": "conicalWell" }, "F3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 29.24, @@ -228,9 +228,9 @@ "geometryDefinitionId": "conicalWell" }, "E3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 38.24, @@ -238,9 +238,9 @@ "geometryDefinitionId": "conicalWell" }, "D3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 47.24, @@ -248,9 +248,9 @@ "geometryDefinitionId": "conicalWell" }, "C3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 56.24, @@ -258,9 +258,9 @@ "geometryDefinitionId": "conicalWell" }, "B3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 65.24, @@ -268,9 +268,9 @@ "geometryDefinitionId": "conicalWell" }, "A3": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 32.38, "y": 74.24, @@ -278,9 +278,9 @@ "geometryDefinitionId": "conicalWell" }, "H4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 11.24, @@ -288,9 +288,9 @@ "geometryDefinitionId": "conicalWell" }, "G4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 20.24, @@ -298,9 +298,9 @@ "geometryDefinitionId": "conicalWell" }, "F4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 29.24, @@ -308,9 +308,9 @@ "geometryDefinitionId": "conicalWell" }, "E4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 38.24, @@ -318,9 +318,9 @@ "geometryDefinitionId": "conicalWell" }, "D4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 47.24, @@ -328,9 +328,9 @@ "geometryDefinitionId": "conicalWell" }, "C4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 56.24, @@ -338,9 +338,9 @@ "geometryDefinitionId": "conicalWell" }, "B4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 65.24, @@ -348,9 +348,9 @@ "geometryDefinitionId": "conicalWell" }, "A4": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 41.38, "y": 74.24, @@ -358,9 +358,9 @@ "geometryDefinitionId": "conicalWell" }, "H5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 11.24, @@ -368,9 +368,9 @@ "geometryDefinitionId": "conicalWell" }, "G5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 20.24, @@ -378,9 +378,9 @@ "geometryDefinitionId": "conicalWell" }, "F5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 29.24, @@ -388,9 +388,9 @@ "geometryDefinitionId": "conicalWell" }, "E5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 38.24, @@ -398,9 +398,9 @@ "geometryDefinitionId": "conicalWell" }, "D5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 47.24, @@ -408,9 +408,9 @@ "geometryDefinitionId": "conicalWell" }, "C5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 56.24, @@ -418,9 +418,9 @@ "geometryDefinitionId": "conicalWell" }, "B5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 65.24, @@ -428,9 +428,9 @@ "geometryDefinitionId": "conicalWell" }, "A5": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 50.38, "y": 74.24, @@ -438,9 +438,9 @@ "geometryDefinitionId": "conicalWell" }, "H6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 11.24, @@ -448,9 +448,9 @@ "geometryDefinitionId": "conicalWell" }, "G6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 20.24, @@ -458,9 +458,9 @@ "geometryDefinitionId": "conicalWell" }, "F6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 29.24, @@ -468,9 +468,9 @@ "geometryDefinitionId": "conicalWell" }, "E6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 38.24, @@ -478,9 +478,9 @@ "geometryDefinitionId": "conicalWell" }, "D6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 47.24, @@ -488,9 +488,9 @@ "geometryDefinitionId": "conicalWell" }, "C6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 56.24, @@ -498,9 +498,9 @@ "geometryDefinitionId": "conicalWell" }, "B6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 65.24, @@ -508,9 +508,9 @@ "geometryDefinitionId": "conicalWell" }, "A6": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 59.38, "y": 74.24, @@ -518,9 +518,9 @@ "geometryDefinitionId": "conicalWell" }, "H7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 11.24, @@ -528,9 +528,9 @@ "geometryDefinitionId": "conicalWell" }, "G7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 20.24, @@ -538,9 +538,9 @@ "geometryDefinitionId": "conicalWell" }, "F7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 29.24, @@ -548,9 +548,9 @@ "geometryDefinitionId": "conicalWell" }, "E7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 38.24, @@ -558,9 +558,9 @@ "geometryDefinitionId": "conicalWell" }, "D7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 47.24, @@ -568,9 +568,9 @@ "geometryDefinitionId": "conicalWell" }, "C7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 56.24, @@ -578,9 +578,9 @@ "geometryDefinitionId": "conicalWell" }, "B7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 65.24, @@ -588,9 +588,9 @@ "geometryDefinitionId": "conicalWell" }, "A7": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 68.38, "y": 74.24, @@ -598,9 +598,9 @@ "geometryDefinitionId": "conicalWell" }, "H8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 11.24, @@ -608,9 +608,9 @@ "geometryDefinitionId": "conicalWell" }, "G8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 20.24, @@ -618,9 +618,9 @@ "geometryDefinitionId": "conicalWell" }, "F8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 29.24, @@ -628,9 +628,9 @@ "geometryDefinitionId": "conicalWell" }, "E8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 38.24, @@ -638,9 +638,9 @@ "geometryDefinitionId": "conicalWell" }, "D8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 47.24, @@ -648,9 +648,9 @@ "geometryDefinitionId": "conicalWell" }, "C8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 56.24, @@ -658,9 +658,9 @@ "geometryDefinitionId": "conicalWell" }, "B8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 65.24, @@ -668,9 +668,9 @@ "geometryDefinitionId": "conicalWell" }, "A8": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 77.38, "y": 74.24, @@ -678,9 +678,9 @@ "geometryDefinitionId": "conicalWell" }, "H9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 11.24, @@ -688,9 +688,9 @@ "geometryDefinitionId": "conicalWell" }, "G9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 20.24, @@ -698,9 +698,9 @@ "geometryDefinitionId": "conicalWell" }, "F9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 29.24, @@ -708,9 +708,9 @@ "geometryDefinitionId": "conicalWell" }, "E9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 38.24, @@ -718,9 +718,9 @@ "geometryDefinitionId": "conicalWell" }, "D9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 47.24, @@ -728,9 +728,9 @@ "geometryDefinitionId": "conicalWell" }, "C9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 56.24, @@ -738,9 +738,9 @@ "geometryDefinitionId": "conicalWell" }, "B9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 65.24, @@ -748,9 +748,9 @@ "geometryDefinitionId": "conicalWell" }, "A9": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 86.38, "y": 74.24, @@ -758,9 +758,9 @@ "geometryDefinitionId": "conicalWell" }, "H10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 11.24, @@ -768,9 +768,9 @@ "geometryDefinitionId": "conicalWell" }, "G10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 20.24, @@ -778,9 +778,9 @@ "geometryDefinitionId": "conicalWell" }, "F10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 29.24, @@ -788,9 +788,9 @@ "geometryDefinitionId": "conicalWell" }, "E10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 38.24, @@ -798,9 +798,9 @@ "geometryDefinitionId": "conicalWell" }, "D10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 47.24, @@ -808,9 +808,9 @@ "geometryDefinitionId": "conicalWell" }, "C10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 56.24, @@ -818,9 +818,9 @@ "geometryDefinitionId": "conicalWell" }, "B10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 65.24, @@ -828,9 +828,9 @@ "geometryDefinitionId": "conicalWell" }, "A10": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 95.38, "y": 74.24, @@ -838,9 +838,9 @@ "geometryDefinitionId": "conicalWell" }, "H11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 11.24, @@ -848,9 +848,9 @@ "geometryDefinitionId": "conicalWell" }, "G11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 20.24, @@ -858,9 +858,9 @@ "geometryDefinitionId": "conicalWell" }, "F11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 29.24, @@ -868,9 +868,9 @@ "geometryDefinitionId": "conicalWell" }, "E11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 38.24, @@ -878,9 +878,9 @@ "geometryDefinitionId": "conicalWell" }, "D11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 47.24, @@ -888,9 +888,9 @@ "geometryDefinitionId": "conicalWell" }, "C11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 56.24, @@ -898,9 +898,9 @@ "geometryDefinitionId": "conicalWell" }, "B11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 65.24, @@ -908,9 +908,9 @@ "geometryDefinitionId": "conicalWell" }, "A11": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 104.38, "y": 74.24, @@ -918,9 +918,9 @@ "geometryDefinitionId": "conicalWell" }, "H12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 11.24, @@ -928,9 +928,9 @@ "geometryDefinitionId": "conicalWell" }, "G12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 20.24, @@ -938,9 +938,9 @@ "geometryDefinitionId": "conicalWell" }, "F12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 29.24, @@ -948,9 +948,9 @@ "geometryDefinitionId": "conicalWell" }, "E12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 38.24, @@ -958,9 +958,9 @@ "geometryDefinitionId": "conicalWell" }, "D12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 47.24, @@ -968,9 +968,9 @@ "geometryDefinitionId": "conicalWell" }, "C12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 56.24, @@ -978,9 +978,9 @@ "geometryDefinitionId": "conicalWell" }, "B12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 65.24, @@ -988,9 +988,9 @@ "geometryDefinitionId": "conicalWell" }, "A12": { - "depth": 14.81, + "depth": 14.57, "shape": "circular", - "diameter": 5.46, + "diameter": 5.44, "totalLiquidVolume": 200, "x": 113.38, "y": 74.24, @@ -1150,22 +1150,22 @@ }, { "shape": "conical", + "topDiameter": 3.0, "bottomDiameter": 2.81, - "topDiameter": 3, "topHeight": 1.87, "bottomHeight": 1.21 }, { "shape": "conical", - "bottomDiameter": 3, "topDiameter": 4.98, + "bottomDiameter": 3, "topHeight": 8.58, "bottomHeight": 1.87 }, { "shape": "conical", - "bottomDiameter": 3, "topDiameter": 5.44, + "bottomDiameter": 4.98, "topHeight": 10.14, "bottomHeight": 8.58 }, diff --git a/shared-data/labware/definitions/3/corning_12_wellplate_6.9ml_flat/3.json b/shared-data/labware/definitions/3/corning_12_wellplate_6.9ml_flat/3.json index f51bce0859c..3a0001ef016 100644 --- a/shared-data/labware/definitions/3/corning_12_wellplate_6.9ml_flat/3.json +++ b/shared-data/labware/definitions/3/corning_12_wellplate_6.9ml_flat/3.json @@ -31,7 +31,7 @@ "wells": { "C1": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 24.94, @@ -41,7 +41,7 @@ }, "B1": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 24.94, @@ -51,7 +51,7 @@ }, "A1": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 24.94, @@ -61,7 +61,7 @@ }, "C2": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 50.95, @@ -71,7 +71,7 @@ }, "B2": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 50.95, @@ -81,7 +81,7 @@ }, "A2": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 50.95, @@ -91,7 +91,7 @@ }, "C3": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 76.96, @@ -101,7 +101,7 @@ }, "B3": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 76.96, @@ -111,7 +111,7 @@ }, "A3": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 76.96, @@ -121,7 +121,7 @@ }, "C4": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 102.97, @@ -131,7 +131,7 @@ }, "B4": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 102.97, @@ -141,7 +141,7 @@ }, "A4": { "shape": "circular", - "depth": 17.53, + "depth": 17.399, "diameter": 22.73, "totalLiquidVolume": 6900, "x": 102.97, diff --git a/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json b/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json index ca3758f2339..69a3b324063 100644 --- a/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json +++ b/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json @@ -457,7 +457,7 @@ "gripHeightFromLabwareBottom": 12.4, "wells": { "P1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -465,10 +465,10 @@ "x": 12.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -476,10 +476,10 @@ "x": 12.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -487,10 +487,10 @@ "x": 12.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -498,10 +498,10 @@ "x": 12.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -509,10 +509,10 @@ "x": 12.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -520,10 +520,10 @@ "x": 12.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -531,10 +531,10 @@ "x": 12.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -542,10 +542,10 @@ "x": 12.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -553,10 +553,10 @@ "x": 12.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -564,10 +564,10 @@ "x": 12.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -575,10 +575,10 @@ "x": 12.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -586,10 +586,10 @@ "x": 12.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -597,10 +597,10 @@ "x": 12.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -608,10 +608,10 @@ "x": 12.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -619,10 +619,10 @@ "x": 12.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A1": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -630,10 +630,10 @@ "x": 12.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -641,10 +641,10 @@ "x": 16.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -652,10 +652,10 @@ "x": 16.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -663,10 +663,10 @@ "x": 16.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -674,10 +674,10 @@ "x": 16.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -685,10 +685,10 @@ "x": 16.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -696,10 +696,10 @@ "x": 16.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -707,10 +707,10 @@ "x": 16.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -718,10 +718,10 @@ "x": 16.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -729,10 +729,10 @@ "x": 16.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -740,10 +740,10 @@ "x": 16.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -751,10 +751,10 @@ "x": 16.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -762,10 +762,10 @@ "x": 16.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -773,10 +773,10 @@ "x": 16.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -784,10 +784,10 @@ "x": 16.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -795,10 +795,10 @@ "x": 16.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A2": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -806,10 +806,10 @@ "x": 16.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -817,10 +817,10 @@ "x": 21.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -828,10 +828,10 @@ "x": 21.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -839,10 +839,10 @@ "x": 21.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -850,10 +850,10 @@ "x": 21.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -861,10 +861,10 @@ "x": 21.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -872,10 +872,10 @@ "x": 21.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -883,10 +883,10 @@ "x": 21.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -894,10 +894,10 @@ "x": 21.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -905,10 +905,10 @@ "x": 21.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -916,10 +916,10 @@ "x": 21.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -927,10 +927,10 @@ "x": 21.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -938,10 +938,10 @@ "x": 21.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -949,10 +949,10 @@ "x": 21.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -960,10 +960,10 @@ "x": 21.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -971,10 +971,10 @@ "x": 21.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A3": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -982,10 +982,10 @@ "x": 21.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -993,10 +993,10 @@ "x": 25.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1004,10 +1004,10 @@ "x": 25.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1015,10 +1015,10 @@ "x": 25.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1026,10 +1026,10 @@ "x": 25.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1037,10 +1037,10 @@ "x": 25.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1048,10 +1048,10 @@ "x": 25.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1059,10 +1059,10 @@ "x": 25.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1070,10 +1070,10 @@ "x": 25.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1081,10 +1081,10 @@ "x": 25.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1092,10 +1092,10 @@ "x": 25.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1103,10 +1103,10 @@ "x": 25.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1114,10 +1114,10 @@ "x": 25.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1125,10 +1125,10 @@ "x": 25.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1136,10 +1136,10 @@ "x": 25.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1147,10 +1147,10 @@ "x": 25.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A4": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1158,10 +1158,10 @@ "x": 25.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1169,10 +1169,10 @@ "x": 30.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1180,10 +1180,10 @@ "x": 30.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1191,10 +1191,10 @@ "x": 30.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1202,10 +1202,10 @@ "x": 30.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1213,10 +1213,10 @@ "x": 30.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1224,10 +1224,10 @@ "x": 30.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1235,10 +1235,10 @@ "x": 30.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1246,10 +1246,10 @@ "x": 30.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1257,10 +1257,10 @@ "x": 30.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1268,10 +1268,10 @@ "x": 30.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1279,10 +1279,10 @@ "x": 30.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1290,10 +1290,10 @@ "x": 30.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1301,10 +1301,10 @@ "x": 30.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1312,10 +1312,10 @@ "x": 30.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1323,10 +1323,10 @@ "x": 30.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A5": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1334,10 +1334,10 @@ "x": 30.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1345,10 +1345,10 @@ "x": 34.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1356,10 +1356,10 @@ "x": 34.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1367,10 +1367,10 @@ "x": 34.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1378,10 +1378,10 @@ "x": 34.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1389,10 +1389,10 @@ "x": 34.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1400,10 +1400,10 @@ "x": 34.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1411,10 +1411,10 @@ "x": 34.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1422,10 +1422,10 @@ "x": 34.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1433,10 +1433,10 @@ "x": 34.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1444,10 +1444,10 @@ "x": 34.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1455,10 +1455,10 @@ "x": 34.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1466,10 +1466,10 @@ "x": 34.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1477,10 +1477,10 @@ "x": 34.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1488,10 +1488,10 @@ "x": 34.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1499,10 +1499,10 @@ "x": 34.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A6": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1510,10 +1510,10 @@ "x": 34.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1521,10 +1521,10 @@ "x": 39.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1532,10 +1532,10 @@ "x": 39.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1543,10 +1543,10 @@ "x": 39.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1554,10 +1554,10 @@ "x": 39.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1565,10 +1565,10 @@ "x": 39.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1576,10 +1576,10 @@ "x": 39.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1587,10 +1587,10 @@ "x": 39.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1598,10 +1598,10 @@ "x": 39.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1609,10 +1609,10 @@ "x": 39.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1620,10 +1620,10 @@ "x": 39.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1631,10 +1631,10 @@ "x": 39.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1642,10 +1642,10 @@ "x": 39.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1653,10 +1653,10 @@ "x": 39.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1664,10 +1664,10 @@ "x": 39.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1675,10 +1675,10 @@ "x": 39.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A7": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1686,10 +1686,10 @@ "x": 39.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1697,10 +1697,10 @@ "x": 43.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1708,10 +1708,10 @@ "x": 43.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1719,10 +1719,10 @@ "x": 43.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1730,10 +1730,10 @@ "x": 43.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1741,10 +1741,10 @@ "x": 43.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1752,10 +1752,10 @@ "x": 43.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1763,10 +1763,10 @@ "x": 43.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1774,10 +1774,10 @@ "x": 43.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1785,10 +1785,10 @@ "x": 43.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1796,10 +1796,10 @@ "x": 43.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1807,10 +1807,10 @@ "x": 43.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1818,10 +1818,10 @@ "x": 43.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1829,10 +1829,10 @@ "x": 43.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1840,10 +1840,10 @@ "x": 43.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1851,10 +1851,10 @@ "x": 43.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A8": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1862,10 +1862,10 @@ "x": 43.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1873,10 +1873,10 @@ "x": 48.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1884,10 +1884,10 @@ "x": 48.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1895,10 +1895,10 @@ "x": 48.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1906,10 +1906,10 @@ "x": 48.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1917,10 +1917,10 @@ "x": 48.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1928,10 +1928,10 @@ "x": 48.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1939,10 +1939,10 @@ "x": 48.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1950,10 +1950,10 @@ "x": 48.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1961,10 +1961,10 @@ "x": 48.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1972,10 +1972,10 @@ "x": 48.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1983,10 +1983,10 @@ "x": 48.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -1994,10 +1994,10 @@ "x": 48.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2005,10 +2005,10 @@ "x": 48.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2016,10 +2016,10 @@ "x": 48.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2027,10 +2027,10 @@ "x": 48.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A9": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2038,10 +2038,10 @@ "x": 48.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2049,10 +2049,10 @@ "x": 52.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2060,10 +2060,10 @@ "x": 52.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2071,10 +2071,10 @@ "x": 52.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2082,10 +2082,10 @@ "x": 52.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2093,10 +2093,10 @@ "x": 52.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2104,10 +2104,10 @@ "x": 52.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2115,10 +2115,10 @@ "x": 52.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2126,10 +2126,10 @@ "x": 52.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2137,10 +2137,10 @@ "x": 52.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2148,10 +2148,10 @@ "x": 52.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2159,10 +2159,10 @@ "x": 52.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2170,10 +2170,10 @@ "x": 52.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2181,10 +2181,10 @@ "x": 52.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2192,10 +2192,10 @@ "x": 52.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2203,10 +2203,10 @@ "x": 52.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A10": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2214,10 +2214,10 @@ "x": 52.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2225,10 +2225,10 @@ "x": 57.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2236,10 +2236,10 @@ "x": 57.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2247,10 +2247,10 @@ "x": 57.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2258,10 +2258,10 @@ "x": 57.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2269,10 +2269,10 @@ "x": 57.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2280,10 +2280,10 @@ "x": 57.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2291,10 +2291,10 @@ "x": 57.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2302,10 +2302,10 @@ "x": 57.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2313,10 +2313,10 @@ "x": 57.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2324,10 +2324,10 @@ "x": 57.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2335,10 +2335,10 @@ "x": 57.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2346,10 +2346,10 @@ "x": 57.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2357,10 +2357,10 @@ "x": 57.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2368,10 +2368,10 @@ "x": 57.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2379,10 +2379,10 @@ "x": 57.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A11": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2390,10 +2390,10 @@ "x": 57.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2401,10 +2401,10 @@ "x": 61.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2412,10 +2412,10 @@ "x": 61.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2423,10 +2423,10 @@ "x": 61.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2434,10 +2434,10 @@ "x": 61.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2445,10 +2445,10 @@ "x": 61.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2456,10 +2456,10 @@ "x": 61.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2467,10 +2467,10 @@ "x": 61.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2478,10 +2478,10 @@ "x": 61.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2489,10 +2489,10 @@ "x": 61.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2500,10 +2500,10 @@ "x": 61.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2511,10 +2511,10 @@ "x": 61.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2522,10 +2522,10 @@ "x": 61.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2533,10 +2533,10 @@ "x": 61.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2544,10 +2544,10 @@ "x": 61.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2555,10 +2555,10 @@ "x": 61.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A12": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2566,10 +2566,10 @@ "x": 61.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2577,10 +2577,10 @@ "x": 66.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2588,10 +2588,10 @@ "x": 66.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2599,10 +2599,10 @@ "x": 66.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2610,10 +2610,10 @@ "x": 66.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2621,10 +2621,10 @@ "x": 66.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2632,10 +2632,10 @@ "x": 66.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2643,10 +2643,10 @@ "x": 66.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2654,10 +2654,10 @@ "x": 66.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2665,10 +2665,10 @@ "x": 66.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2676,10 +2676,10 @@ "x": 66.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2687,10 +2687,10 @@ "x": 66.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2698,10 +2698,10 @@ "x": 66.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2709,10 +2709,10 @@ "x": 66.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2720,10 +2720,10 @@ "x": 66.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2731,10 +2731,10 @@ "x": 66.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A13": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2742,10 +2742,10 @@ "x": 66.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2753,10 +2753,10 @@ "x": 70.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2764,10 +2764,10 @@ "x": 70.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2775,10 +2775,10 @@ "x": 70.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2786,10 +2786,10 @@ "x": 70.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2797,10 +2797,10 @@ "x": 70.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2808,10 +2808,10 @@ "x": 70.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2819,10 +2819,10 @@ "x": 70.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2830,10 +2830,10 @@ "x": 70.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2841,10 +2841,10 @@ "x": 70.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2852,10 +2852,10 @@ "x": 70.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2863,10 +2863,10 @@ "x": 70.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2874,10 +2874,10 @@ "x": 70.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2885,10 +2885,10 @@ "x": 70.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2896,10 +2896,10 @@ "x": 70.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2907,10 +2907,10 @@ "x": 70.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A14": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2918,10 +2918,10 @@ "x": 70.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2929,10 +2929,10 @@ "x": 75.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2940,10 +2940,10 @@ "x": 75.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2951,10 +2951,10 @@ "x": 75.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2962,10 +2962,10 @@ "x": 75.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2973,10 +2973,10 @@ "x": 75.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2984,10 +2984,10 @@ "x": 75.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -2995,10 +2995,10 @@ "x": 75.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3006,10 +3006,10 @@ "x": 75.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3017,10 +3017,10 @@ "x": 75.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3028,10 +3028,10 @@ "x": 75.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3039,10 +3039,10 @@ "x": 75.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3050,10 +3050,10 @@ "x": 75.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3061,10 +3061,10 @@ "x": 75.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3072,10 +3072,10 @@ "x": 75.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3083,10 +3083,10 @@ "x": 75.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A15": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3094,10 +3094,10 @@ "x": 75.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3105,10 +3105,10 @@ "x": 79.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3116,10 +3116,10 @@ "x": 79.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3127,10 +3127,10 @@ "x": 79.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3138,10 +3138,10 @@ "x": 79.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3149,10 +3149,10 @@ "x": 79.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3160,10 +3160,10 @@ "x": 79.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3171,10 +3171,10 @@ "x": 79.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3182,10 +3182,10 @@ "x": 79.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3193,10 +3193,10 @@ "x": 79.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3204,10 +3204,10 @@ "x": 79.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3215,10 +3215,10 @@ "x": 79.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3226,10 +3226,10 @@ "x": 79.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3237,10 +3237,10 @@ "x": 79.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3248,10 +3248,10 @@ "x": 79.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3259,10 +3259,10 @@ "x": 79.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A16": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3270,10 +3270,10 @@ "x": 79.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3281,10 +3281,10 @@ "x": 84.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3292,10 +3292,10 @@ "x": 84.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3303,10 +3303,10 @@ "x": 84.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3314,10 +3314,10 @@ "x": 84.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3325,10 +3325,10 @@ "x": 84.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3336,10 +3336,10 @@ "x": 84.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3347,10 +3347,10 @@ "x": 84.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3358,10 +3358,10 @@ "x": 84.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3369,10 +3369,10 @@ "x": 84.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3380,10 +3380,10 @@ "x": 84.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3391,10 +3391,10 @@ "x": 84.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3402,10 +3402,10 @@ "x": 84.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3413,10 +3413,10 @@ "x": 84.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3424,10 +3424,10 @@ "x": 84.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3435,10 +3435,10 @@ "x": 84.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A17": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3446,10 +3446,10 @@ "x": 84.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3457,10 +3457,10 @@ "x": 88.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3468,10 +3468,10 @@ "x": 88.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3479,10 +3479,10 @@ "x": 88.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3490,10 +3490,10 @@ "x": 88.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3501,10 +3501,10 @@ "x": 88.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3512,10 +3512,10 @@ "x": 88.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3523,10 +3523,10 @@ "x": 88.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3534,10 +3534,10 @@ "x": 88.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3545,10 +3545,10 @@ "x": 88.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3556,10 +3556,10 @@ "x": 88.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3567,10 +3567,10 @@ "x": 88.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3578,10 +3578,10 @@ "x": 88.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3589,10 +3589,10 @@ "x": 88.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3600,10 +3600,10 @@ "x": 88.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3611,10 +3611,10 @@ "x": 88.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A18": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3622,10 +3622,10 @@ "x": 88.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3633,10 +3633,10 @@ "x": 93.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3644,10 +3644,10 @@ "x": 93.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3655,10 +3655,10 @@ "x": 93.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3666,10 +3666,10 @@ "x": 93.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3677,10 +3677,10 @@ "x": 93.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3688,10 +3688,10 @@ "x": 93.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3699,10 +3699,10 @@ "x": 93.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3710,10 +3710,10 @@ "x": 93.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3721,10 +3721,10 @@ "x": 93.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3732,10 +3732,10 @@ "x": 93.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3743,10 +3743,10 @@ "x": 93.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3754,10 +3754,10 @@ "x": 93.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3765,10 +3765,10 @@ "x": 93.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3776,10 +3776,10 @@ "x": 93.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3787,10 +3787,10 @@ "x": 93.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A19": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3798,10 +3798,10 @@ "x": 93.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3809,10 +3809,10 @@ "x": 97.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3820,10 +3820,10 @@ "x": 97.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3831,10 +3831,10 @@ "x": 97.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3842,10 +3842,10 @@ "x": 97.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3853,10 +3853,10 @@ "x": 97.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3864,10 +3864,10 @@ "x": 97.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3875,10 +3875,10 @@ "x": 97.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3886,10 +3886,10 @@ "x": 97.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3897,10 +3897,10 @@ "x": 97.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3908,10 +3908,10 @@ "x": 97.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3919,10 +3919,10 @@ "x": 97.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3930,10 +3930,10 @@ "x": 97.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3941,10 +3941,10 @@ "x": 97.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3952,10 +3952,10 @@ "x": 97.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3963,10 +3963,10 @@ "x": 97.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A20": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3974,10 +3974,10 @@ "x": 97.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3985,10 +3985,10 @@ "x": 102.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -3996,10 +3996,10 @@ "x": 102.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4007,10 +4007,10 @@ "x": 102.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4018,10 +4018,10 @@ "x": 102.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4029,10 +4029,10 @@ "x": 102.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4040,10 +4040,10 @@ "x": 102.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4051,10 +4051,10 @@ "x": 102.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4062,10 +4062,10 @@ "x": 102.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4073,10 +4073,10 @@ "x": 102.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4084,10 +4084,10 @@ "x": 102.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4095,10 +4095,10 @@ "x": 102.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4106,10 +4106,10 @@ "x": 102.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4117,10 +4117,10 @@ "x": 102.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4128,10 +4128,10 @@ "x": 102.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4139,10 +4139,10 @@ "x": 102.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A21": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4150,10 +4150,10 @@ "x": 102.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4161,10 +4161,10 @@ "x": 106.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4172,10 +4172,10 @@ "x": 106.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4183,10 +4183,10 @@ "x": 106.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4194,10 +4194,10 @@ "x": 106.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4205,10 +4205,10 @@ "x": 106.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4216,10 +4216,10 @@ "x": 106.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4227,10 +4227,10 @@ "x": 106.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4238,10 +4238,10 @@ "x": 106.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4249,10 +4249,10 @@ "x": 106.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4260,10 +4260,10 @@ "x": 106.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4271,10 +4271,10 @@ "x": 106.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4282,10 +4282,10 @@ "x": 106.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4293,10 +4293,10 @@ "x": 106.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4304,10 +4304,10 @@ "x": 106.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4315,10 +4315,10 @@ "x": 106.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A22": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4326,10 +4326,10 @@ "x": 106.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4337,10 +4337,10 @@ "x": 111.12, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4348,10 +4348,10 @@ "x": 111.12, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4359,10 +4359,10 @@ "x": 111.12, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4370,10 +4370,10 @@ "x": 111.12, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4381,10 +4381,10 @@ "x": 111.12, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4392,10 +4392,10 @@ "x": 111.12, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4403,10 +4403,10 @@ "x": 111.12, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4414,10 +4414,10 @@ "x": 111.12, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4425,10 +4425,10 @@ "x": 111.12, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4436,10 +4436,10 @@ "x": 111.12, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4447,10 +4447,10 @@ "x": 111.12, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4458,10 +4458,10 @@ "x": 111.12, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4469,10 +4469,10 @@ "x": 111.12, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4480,10 +4480,10 @@ "x": 111.12, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4491,10 +4491,10 @@ "x": 111.12, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A23": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4502,10 +4502,10 @@ "x": 111.12, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "P24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4513,10 +4513,10 @@ "x": 115.62, "y": 8.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "O24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4524,10 +4524,10 @@ "x": 115.62, "y": 13.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "N24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4535,10 +4535,10 @@ "x": 115.62, "y": 17.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "M24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4546,10 +4546,10 @@ "x": 115.62, "y": 22.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "L24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4557,10 +4557,10 @@ "x": 115.62, "y": 26.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "K24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4568,10 +4568,10 @@ "x": 115.62, "y": 31.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "J24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4579,10 +4579,10 @@ "x": 115.62, "y": 35.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "I24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4590,10 +4590,10 @@ "x": 115.62, "y": 40.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "H24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4601,10 +4601,10 @@ "x": 115.62, "y": 44.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "G24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4612,10 +4612,10 @@ "x": 115.62, "y": 49.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "F24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4623,10 +4623,10 @@ "x": 115.62, "y": 53.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "E24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4634,10 +4634,10 @@ "x": 115.62, "y": 58.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "D24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4645,10 +4645,10 @@ "x": 115.62, "y": 62.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "C24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4656,10 +4656,10 @@ "x": 115.62, "y": 67.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "B24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4667,10 +4667,10 @@ "x": 115.62, "y": 71.99, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" }, "A24": { - "shape": "rectangular", + "shape": "circular", "depth": 11.43, "xDimension": 3.63, "yDimension": 3.63, @@ -4678,7 +4678,7 @@ "x": 115.62, "y": 76.49, "z": 2.79, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "flatWell" } }, "brand": { @@ -5099,13 +5099,15 @@ } }, "innerLabwareGeometry": { - "conicalWell": { + "flatWell": { "sections": [ { - "shape": "conical", - "bottomDiameter": 3.64, - "topDiameter": 2.74, - "topHeight": 11.65, + "shape": "cuboidal", + "topXDimension": 3.6322, + "topYDimension": 3.6322, + "bottomXDimension": 2.667, + "bottomYDimension": 2.667, + "topHeight": 11.43, "bottomHeight": 0.0 } ] diff --git a/shared-data/labware/definitions/3/corning_48_wellplate_1.6ml_flat/3.json b/shared-data/labware/definitions/3/corning_48_wellplate_1.6ml_flat/3.json index 9caad9af4b0..ad4bf3005ac 100644 --- a/shared-data/labware/definitions/3/corning_48_wellplate_1.6ml_flat/3.json +++ b/shared-data/labware/definitions/3/corning_48_wellplate_1.6ml_flat/3.json @@ -35,7 +35,7 @@ "F1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 10.08, @@ -45,7 +45,7 @@ "E1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 23.16, @@ -55,7 +55,7 @@ "D1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 36.24, @@ -65,7 +65,7 @@ "C1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 49.32, @@ -75,7 +75,7 @@ "B1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 62.4, @@ -85,7 +85,7 @@ "A1": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 18.16, "y": 75.48, @@ -95,7 +95,7 @@ "F2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 10.08, @@ -105,7 +105,7 @@ "E2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 23.16, @@ -115,7 +115,7 @@ "D2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 36.24, @@ -125,7 +125,7 @@ "C2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 49.32, @@ -135,7 +135,7 @@ "B2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 62.4, @@ -145,7 +145,7 @@ "A2": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 31.24, "y": 75.48, @@ -155,7 +155,7 @@ "F3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 10.08, @@ -165,7 +165,7 @@ "E3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 23.16, @@ -175,7 +175,7 @@ "D3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 36.24, @@ -185,7 +185,7 @@ "C3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 49.32, @@ -195,7 +195,7 @@ "B3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 62.4, @@ -205,7 +205,7 @@ "A3": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 44.32, "y": 75.48, @@ -215,7 +215,7 @@ "F4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 10.08, @@ -225,7 +225,7 @@ "E4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 23.16, @@ -235,7 +235,7 @@ "D4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 36.24, @@ -245,7 +245,7 @@ "C4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 49.32, @@ -255,7 +255,7 @@ "B4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 62.4, @@ -265,7 +265,7 @@ "A4": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 57.4, "y": 75.48, @@ -275,7 +275,7 @@ "F5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 10.08, @@ -285,7 +285,7 @@ "E5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 23.16, @@ -295,7 +295,7 @@ "D5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 36.24, @@ -305,7 +305,7 @@ "C5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 49.32, @@ -315,7 +315,7 @@ "B5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 62.4, @@ -325,7 +325,7 @@ "A5": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 70.48, "y": 75.48, @@ -335,7 +335,7 @@ "F6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 10.08, @@ -345,7 +345,7 @@ "E6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 23.16, @@ -355,7 +355,7 @@ "D6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 36.24, @@ -365,7 +365,7 @@ "C6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 49.32, @@ -375,7 +375,7 @@ "B6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 62.4, @@ -385,7 +385,7 @@ "A6": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 83.56, "y": 75.48, @@ -395,7 +395,7 @@ "F7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 10.08, @@ -405,7 +405,7 @@ "E7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 23.16, @@ -415,7 +415,7 @@ "D7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 36.24, @@ -425,7 +425,7 @@ "C7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 49.32, @@ -435,7 +435,7 @@ "B7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 62.4, @@ -445,7 +445,7 @@ "A7": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 96.64, "y": 75.48, @@ -455,7 +455,7 @@ "F8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 10.08, @@ -465,7 +465,7 @@ "E8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 23.16, @@ -475,7 +475,7 @@ "D8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 36.24, @@ -485,7 +485,7 @@ "C8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 49.32, @@ -495,7 +495,7 @@ "B8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 62.4, @@ -505,7 +505,7 @@ "A8": { "shape": "circular", "depth": 17.4, - "diameter": 11.56, + "diameter": 11.1, "totalLiquidVolume": 1600, "x": 109.72, "y": 75.48, @@ -594,9 +594,9 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 11.0998, - "topDiameter": 10.6426, - "topHeight": 17.399, + "bottomDiameter": 10.6426, + "topDiameter": 11.0998, + "topHeight": 17.4, "bottomHeight": 0.0 } ] diff --git a/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json b/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json index 842b916fb8c..a5fb287ad8c 100644 --- a/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json +++ b/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json @@ -20,7 +20,7 @@ "gripHeightFromLabwareBottom": 16.8, "wells": { "A1": { - "depth": 25, + "depth": 26.85, "shape": "rectangular", "xDimension": 106.8, "yDimension": 71.2, @@ -71,11 +71,11 @@ { "shape": "cuboidal", "topXDimension": 71.3, - "topYDimension": 70.6, - "bottomXDimension": 107.3, + "topYDimension": 107.3, + "bottomXDimension": 70.6, "bottomYDimension": 106.8, "topHeight": 26.85, - "bottomHeight": 2 + "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json b/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json index 13e9cd8f40c..46c5a494533 100644 --- a/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json +++ b/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json @@ -57,12 +57,22 @@ "sections": [ { "shape": "cuboidal", - "topXDimension": 70.6, - "topYDimension": 106.8, - "bottomXDimension": 71.3, - "bottomYDimension": 107.3, - "topHeight": 2.05, - "bottomHeight": 0.0 + "topXDimension": 7.75, + "topYDimension": 70.75, + "bottomXDimension": 3.127, + "bottomYDimension": 66.85, + "topHeight": 2.0, + "bottomHeight": 0.0, + "xCount": 12 + }, + { + "shape": "cuboidal", + "topXDimension": 107.76, + "topYDimension": 71.0, + "bottomXDimension": 106.75, + "bottomYDimension": 70.75, + "topHeight": 39.55, + "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json index 3e55fa4ed84..44114349497 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json @@ -33,7 +33,7 @@ "gripHeightFromLabwareBottom": 10.65, "wells": { "A1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -43,7 +43,7 @@ "geometryDefinitionId": "conicalWell" }, "B1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -53,7 +53,7 @@ "geometryDefinitionId": "conicalWell" }, "C1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -63,7 +63,7 @@ "geometryDefinitionId": "conicalWell" }, "D1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -73,7 +73,7 @@ "geometryDefinitionId": "conicalWell" }, "E1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -83,7 +83,7 @@ "geometryDefinitionId": "conicalWell" }, "F1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -93,7 +93,7 @@ "geometryDefinitionId": "conicalWell" }, "G1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -103,7 +103,7 @@ "geometryDefinitionId": "conicalWell" }, "H1": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -113,7 +113,7 @@ "geometryDefinitionId": "conicalWell" }, "A2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -123,7 +123,7 @@ "geometryDefinitionId": "conicalWell" }, "B2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -133,7 +133,7 @@ "geometryDefinitionId": "conicalWell" }, "C2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -143,7 +143,7 @@ "geometryDefinitionId": "conicalWell" }, "D2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -153,7 +153,7 @@ "geometryDefinitionId": "conicalWell" }, "E2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -163,7 +163,7 @@ "geometryDefinitionId": "conicalWell" }, "F2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -173,7 +173,7 @@ "geometryDefinitionId": "conicalWell" }, "G2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -183,7 +183,7 @@ "geometryDefinitionId": "conicalWell" }, "H2": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -193,7 +193,7 @@ "geometryDefinitionId": "conicalWell" }, "A3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -203,7 +203,7 @@ "geometryDefinitionId": "conicalWell" }, "B3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -213,7 +213,7 @@ "geometryDefinitionId": "conicalWell" }, "C3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -223,7 +223,7 @@ "geometryDefinitionId": "conicalWell" }, "D3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -233,7 +233,7 @@ "geometryDefinitionId": "conicalWell" }, "E3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -243,7 +243,7 @@ "geometryDefinitionId": "conicalWell" }, "F3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -253,7 +253,7 @@ "geometryDefinitionId": "conicalWell" }, "G3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -263,7 +263,7 @@ "geometryDefinitionId": "conicalWell" }, "H3": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -273,7 +273,7 @@ "geometryDefinitionId": "conicalWell" }, "A4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -283,7 +283,7 @@ "geometryDefinitionId": "conicalWell" }, "B4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -293,7 +293,7 @@ "geometryDefinitionId": "conicalWell" }, "C4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -303,7 +303,7 @@ "geometryDefinitionId": "conicalWell" }, "D4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -313,7 +313,7 @@ "geometryDefinitionId": "conicalWell" }, "E4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -323,7 +323,7 @@ "geometryDefinitionId": "conicalWell" }, "F4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -333,7 +333,7 @@ "geometryDefinitionId": "conicalWell" }, "G4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -343,7 +343,7 @@ "geometryDefinitionId": "conicalWell" }, "H4": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -353,7 +353,7 @@ "geometryDefinitionId": "conicalWell" }, "A5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -363,7 +363,7 @@ "geometryDefinitionId": "conicalWell" }, "B5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -373,7 +373,7 @@ "geometryDefinitionId": "conicalWell" }, "C5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -383,7 +383,7 @@ "geometryDefinitionId": "conicalWell" }, "D5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -393,7 +393,7 @@ "geometryDefinitionId": "conicalWell" }, "E5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -403,7 +403,7 @@ "geometryDefinitionId": "conicalWell" }, "F5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -413,7 +413,7 @@ "geometryDefinitionId": "conicalWell" }, "G5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -423,7 +423,7 @@ "geometryDefinitionId": "conicalWell" }, "H5": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -433,7 +433,7 @@ "geometryDefinitionId": "conicalWell" }, "A6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -443,7 +443,7 @@ "geometryDefinitionId": "conicalWell" }, "B6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -453,7 +453,7 @@ "geometryDefinitionId": "conicalWell" }, "C6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -463,7 +463,7 @@ "geometryDefinitionId": "conicalWell" }, "D6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -473,7 +473,7 @@ "geometryDefinitionId": "conicalWell" }, "E6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -483,7 +483,7 @@ "geometryDefinitionId": "conicalWell" }, "F6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -493,7 +493,7 @@ "geometryDefinitionId": "conicalWell" }, "G6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -503,7 +503,7 @@ "geometryDefinitionId": "conicalWell" }, "H6": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -513,7 +513,7 @@ "geometryDefinitionId": "conicalWell" }, "A7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -523,7 +523,7 @@ "geometryDefinitionId": "conicalWell" }, "B7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -533,7 +533,7 @@ "geometryDefinitionId": "conicalWell" }, "C7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -543,7 +543,7 @@ "geometryDefinitionId": "conicalWell" }, "D7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -553,7 +553,7 @@ "geometryDefinitionId": "conicalWell" }, "E7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -563,7 +563,7 @@ "geometryDefinitionId": "conicalWell" }, "F7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -573,7 +573,7 @@ "geometryDefinitionId": "conicalWell" }, "G7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -583,7 +583,7 @@ "geometryDefinitionId": "conicalWell" }, "H7": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -593,7 +593,7 @@ "geometryDefinitionId": "conicalWell" }, "A8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -603,7 +603,7 @@ "geometryDefinitionId": "conicalWell" }, "B8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -613,7 +613,7 @@ "geometryDefinitionId": "conicalWell" }, "C8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -623,7 +623,7 @@ "geometryDefinitionId": "conicalWell" }, "D8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -633,7 +633,7 @@ "geometryDefinitionId": "conicalWell" }, "E8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -643,7 +643,7 @@ "geometryDefinitionId": "conicalWell" }, "F8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -653,7 +653,7 @@ "geometryDefinitionId": "conicalWell" }, "G8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -663,7 +663,7 @@ "geometryDefinitionId": "conicalWell" }, "H8": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -673,7 +673,7 @@ "geometryDefinitionId": "conicalWell" }, "A9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -683,7 +683,7 @@ "geometryDefinitionId": "conicalWell" }, "B9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -693,7 +693,7 @@ "geometryDefinitionId": "conicalWell" }, "C9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -703,7 +703,7 @@ "geometryDefinitionId": "conicalWell" }, "D9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -713,7 +713,7 @@ "geometryDefinitionId": "conicalWell" }, "E9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -723,7 +723,7 @@ "geometryDefinitionId": "conicalWell" }, "F9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -733,7 +733,7 @@ "geometryDefinitionId": "conicalWell" }, "G9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -743,7 +743,7 @@ "geometryDefinitionId": "conicalWell" }, "H9": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -753,7 +753,7 @@ "geometryDefinitionId": "conicalWell" }, "A10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -763,7 +763,7 @@ "geometryDefinitionId": "conicalWell" }, "B10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -773,7 +773,7 @@ "geometryDefinitionId": "conicalWell" }, "C10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -783,7 +783,7 @@ "geometryDefinitionId": "conicalWell" }, "D10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -793,7 +793,7 @@ "geometryDefinitionId": "conicalWell" }, "E10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -803,7 +803,7 @@ "geometryDefinitionId": "conicalWell" }, "F10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -813,7 +813,7 @@ "geometryDefinitionId": "conicalWell" }, "G10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -823,7 +823,7 @@ "geometryDefinitionId": "conicalWell" }, "H10": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -833,7 +833,7 @@ "geometryDefinitionId": "conicalWell" }, "A11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -843,7 +843,7 @@ "geometryDefinitionId": "conicalWell" }, "B11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -853,7 +853,7 @@ "geometryDefinitionId": "conicalWell" }, "C11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -863,7 +863,7 @@ "geometryDefinitionId": "conicalWell" }, "D11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -873,7 +873,7 @@ "geometryDefinitionId": "conicalWell" }, "E11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -883,7 +883,7 @@ "geometryDefinitionId": "conicalWell" }, "F11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -893,7 +893,7 @@ "geometryDefinitionId": "conicalWell" }, "G11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -903,7 +903,7 @@ "geometryDefinitionId": "conicalWell" }, "H11": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -913,7 +913,7 @@ "geometryDefinitionId": "conicalWell" }, "A12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -923,7 +923,7 @@ "geometryDefinitionId": "conicalWell" }, "B12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -933,7 +933,7 @@ "geometryDefinitionId": "conicalWell" }, "C12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -943,7 +943,7 @@ "geometryDefinitionId": "conicalWell" }, "D12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -953,7 +953,7 @@ "geometryDefinitionId": "conicalWell" }, "E12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -963,7 +963,7 @@ "geometryDefinitionId": "conicalWell" }, "F12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -973,7 +973,7 @@ "geometryDefinitionId": "conicalWell" }, "G12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, @@ -983,7 +983,7 @@ "geometryDefinitionId": "conicalWell" }, "H12": { - "depth": 14.78, + "depth": 14.7, "shape": "circular", "diameter": 5.34, "totalLiquidVolume": 100, diff --git a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json index 7827cbb5916..788e56ee3ba 100644 --- a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json @@ -90,7 +90,7 @@ "totalLiquidVolume": 50000, "diameter": 27.81, "shape": "circular", - "depth": 113, + "depth": 112.85, "x": 71.38, "y": 60.25, "z": 7.3, @@ -100,7 +100,7 @@ "totalLiquidVolume": 50000, "diameter": 27.81, "shape": "circular", - "depth": 113, + "depth": 112.85, "x": 71.38, "y": 25.25, "z": 7.3, @@ -110,7 +110,7 @@ "totalLiquidVolume": 50000, "diameter": 27.81, "shape": "circular", - "depth": 113, + "depth": 112.85, "x": 106.38, "y": 60.25, "z": 7.3, @@ -120,7 +120,7 @@ "totalLiquidVolume": 50000, "diameter": 27.81, "shape": "circular", - "depth": 113, + "depth": 112.85, "x": 106.38, "y": 25.25, "z": 7.3, diff --git a/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json index 417e3e893de..209aeac29e6 100644 --- a/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json @@ -8,7 +8,7 @@ "x": 13.88, "y": 67.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "B1": { "totalLiquidVolume": 15000, @@ -18,7 +18,7 @@ "x": 13.88, "y": 42.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "C1": { "totalLiquidVolume": 15000, @@ -28,7 +28,7 @@ "x": 13.88, "y": 17.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "A2": { "totalLiquidVolume": 15000, @@ -38,7 +38,7 @@ "x": 38.88, "y": 67.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "B2": { "totalLiquidVolume": 15000, @@ -48,7 +48,7 @@ "x": 38.88, "y": 42.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "C2": { "totalLiquidVolume": 15000, @@ -58,47 +58,47 @@ "x": 38.88, "y": 17.75, "z": 6.85, - "geometryDefinitionId": "conicalWell" + "geometryDefinitionId": "conicalWell15mL" }, "A3": { "totalLiquidVolume": 50000, - "diameter": 27.95, + "diameter": 28.18, "shape": "circular", - "depth": 113.05, + "depth": 113.1, "x": 71.38, "y": 60.25, "z": 7.3, - "geometryDefinitionId": "b" + "geometryDefinitionId": "conicalWell50mL" }, "B3": { "totalLiquidVolume": 50000, - "diameter": 27.95, + "diameter": 28.18, "shape": "circular", - "depth": 113.05, + "depth": 113.1, "x": 71.38, "y": 25.25, "z": 7.3, - "geometryDefinitionId": "b" + "geometryDefinitionId": "conicalWell50mL" }, "A4": { "totalLiquidVolume": 50000, - "diameter": 27.95, + "diameter": 28.18, "shape": "circular", - "depth": 113.05, + "depth": 113.1, "x": 106.38, "y": 60.25, "z": 7.3, - "geometryDefinitionId": "b" + "geometryDefinitionId": "conicalWell50mL" }, "B4": { "totalLiquidVolume": 50000, - "diameter": 27.95, + "diameter": 28.18, "shape": "circular", - "depth": 113.05, + "depth": 113.1, "x": 106.38, "y": 25.25, "z": 7.3, - "geometryDefinitionId": "b" + "geometryDefinitionId": "conicalWell50mL" } }, "groups": [ @@ -168,53 +168,66 @@ "z": 0 }, "innerLabwareGeometry": { - "conicalWell": { + "conicalWell15mL": { "sections": [ + { + "shape": "spherical", + "radiusOfCurvature": 1.235, + "topHeight": 0.92, + "bottomHeight": 0.0 + }, { "shape": "conical", "topDiameter": 13.8, - "bottomDiameter": 2.5, + "bottomDiameter": 2.38, "topHeight": 22.55, - "bottomHeight": 0.0 + "bottomHeight": 0.92 }, { "shape": "conical", - "topDiameter": 14.78, + "topDiameter": 14.56, "bottomDiameter": 13.8, - "topHeight": 109.03, + "topHeight": 113.8, "bottomHeight": 22.55 }, { "shape": "conical", "topDiameter": 15.5, - "bottomDiameter": 14.78, + "bottomDiameter": 14.56, "topHeight": 117.8, - "bottomHeight": 109.03 + "bottomHeight": 113.8 } ] }, - "b": { + "conicalWell50mL": { "sections": [ { "shape": "conical", "topDiameter": 26.0, - "bottomDiameter": 6.0, - "topHeight": 14.28, + "bottomDiameter": 4.5, + "topHeight": 14.35, "bottomHeight": 0.0 }, { "shape": "conical", - "topDiameter": 27.0, + "topDiameter": 27.69, "bottomDiameter": 26.0, - "topHeight": 109.0, - "bottomHeight": 14.28 + "topHeight": 108.8, + "bottomHeight": 14.35 + }, + { + "shape": "conical", + "topDiameter": 27.95, + "bottomDiameter": 27.69, + "topHeight": 109.1, + "bottomHeight": 108.8 }, { "shape": "conical", - "topDiameter": 27.45, - "bottomDiameter": 27.0, - "topHeight": 113.3, - "bottomHeight": 109.0 + "topDiameter": 28.18, + "bottomDiameter": 27.95, + "topHeight": 113.1, + "bottomHeight": 109.1 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json index 1a0cc9ea508..97726f203f7 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json @@ -334,7 +334,140 @@ }, "innerLabwareGeometry": { "conicalWell": { - "sections": [] + "sections": [ + { + "shape": "spherical", + "radiusOfCurvature": 2.88, + "topHeight": 1.45, + "bottomHeight": 0.0 + }, + { + "shape": "conical", + "topDiameter": 6.0, + "bottomDiameter": 5.0, + "topHeight": 2.2, + "bottomHeight": 1.45 + }, + { + "shape": "conical", + "topDiameter": 6.4, + "bottomDiameter": 6.0, + "topHeight": 2.45, + "bottomHeight": 2.2 + }, + { + "shape": "conical", + "topDiameter": 6.8, + "bottomDiameter": 6.4, + "topHeight": 2.75, + "bottomHeight": 2.45 + }, + { + "shape": "conical", + "topDiameter": 7.2, + "bottomDiameter": 6.8, + "topHeight": 3.14, + "bottomHeight": 2.75 + }, + { + "shape": "conical", + "topDiameter": 7.6, + "bottomDiameter": 7.2, + "topHeight": 3.67, + "bottomHeight": 3.14 + }, + { + "shape": "conical", + "topDiameter": 7.7, + "bottomDiameter": 7.6, + "topHeight": 3.93, + "bottomHeight": 3.67 + }, + { + "shape": "conical", + "topDiameter": 8.0, + "bottomDiameter": 7.7, + "topHeight": 4.29, + "bottomHeight": 3.93 + }, + { + "shape": "conical", + "topDiameter": 8.2, + "bottomDiameter": 8.0, + "topHeight": 4.53, + "bottomHeight": 4.29 + }, + { + "shape": "conical", + "topDiameter": 8.4, + "bottomDiameter": 8.2, + "topHeight": 5.03, + "bottomHeight": 4.53 + }, + { + "shape": "conical", + "topDiameter": 8.5, + "bottomDiameter": 8.4, + "topHeight": 5.15, + "bottomHeight": 5.03 + }, + { + "shape": "conical", + "topDiameter": 8.6, + "bottomDiameter": 8.5, + "topHeight": 5.43, + "bottomHeight": 5.15 + }, + { + "shape": "conical", + "topDiameter": 8.78, + "bottomDiameter": 8.6, + "topHeight": 6.97, + "bottomHeight": 5.43 + }, + { + "shape": "conical", + "topDiameter": 8.9, + "bottomDiameter": 8.78, + "topHeight": 10.17, + "bottomHeight": 6.97 + }, + { + "shape": "conical", + "topDiameter": 9.0, + "bottomDiameter": 8.9, + "topHeight": 13.32, + "bottomHeight": 10.17 + }, + { + "shape": "conical", + "topDiameter": 9.1, + "bottomDiameter": 9.0, + "topHeight": 25.26, + "bottomHeight": 13.32 + }, + { + "shape": "conical", + "topDiameter": 9.2, + "bottomDiameter": 9.1, + "topHeight": 32.5, + "bottomHeight": 25.26 + }, + { + "shape": "conical", + "topDiameter": 9.6, + "bottomDiameter": 9.2, + "topHeight": 33.96, + "bottomHeight": 32.5 + }, + { + "shape": "conical", + "topDiameter": 10.0, + "bottomDiameter": 9.6, + "topHeight": 39.02, + "bottomHeight": 33.96 + } + ] } } } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json index 660331eedfd..0914789708c 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json @@ -323,7 +323,29 @@ }, "innerLabwareGeometry": { "conicalWell": { - "sections": [] + "sections": [ + { + "shape": "conical", + "topDiameter": 6.5, + "bottomDiameter": 1.21, + "topHeight": 2.08, + "bottomHeight": 0.0 + }, + { + "shape": "conical", + "topDiameter": 8.14, + "bottomDiameter": 6.5, + "topHeight": 3.04, + "bottomHeight": 2.08 + }, + { + "shape": "conical", + "topDiameter": 8.5, + "bottomDiameter": 8.14, + "topHeight": 42.0, + "bottomHeight": 3.04 + } + ] } } } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json index 7d7a193d55d..9544e5cc9c2 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json @@ -27,9 +27,9 @@ }, "wells": { "A1": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 18.21, "y": 75.43, @@ -37,9 +37,9 @@ "geometryDefinitionId": "conicalWell" }, "B1": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 18.21, "y": 56.15, @@ -47,9 +47,9 @@ "geometryDefinitionId": "conicalWell" }, "C1": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 18.21, "y": 36.87, @@ -57,9 +57,9 @@ "geometryDefinitionId": "conicalWell" }, "D1": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 18.21, "y": 17.59, @@ -67,9 +67,9 @@ "geometryDefinitionId": "conicalWell" }, "A2": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 38.1, "y": 75.43, @@ -77,9 +77,9 @@ "geometryDefinitionId": "conicalWell" }, "B2": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 38.1, "y": 56.15, @@ -87,9 +87,9 @@ "geometryDefinitionId": "conicalWell" }, "C2": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 38.1, "y": 36.87, @@ -97,9 +97,9 @@ "geometryDefinitionId": "conicalWell" }, "D2": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 38.1, "y": 17.59, @@ -107,9 +107,9 @@ "geometryDefinitionId": "conicalWell" }, "A3": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 57.99, "y": 75.43, @@ -117,9 +117,9 @@ "geometryDefinitionId": "conicalWell" }, "B3": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 57.99, "y": 56.15, @@ -127,9 +127,9 @@ "geometryDefinitionId": "conicalWell" }, "C3": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 57.99, "y": 36.87, @@ -137,9 +137,9 @@ "geometryDefinitionId": "conicalWell" }, "D3": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 57.99, "y": 17.59, @@ -147,9 +147,9 @@ "geometryDefinitionId": "conicalWell" }, "A4": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 77.88, "y": 75.43, @@ -157,9 +157,9 @@ "geometryDefinitionId": "conicalWell" }, "B4": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 77.88, "y": 56.15, @@ -167,9 +167,9 @@ "geometryDefinitionId": "conicalWell" }, "C4": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 77.88, "y": 36.87, @@ -177,9 +177,9 @@ "geometryDefinitionId": "conicalWell" }, "D4": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 77.88, "y": 17.59, @@ -187,9 +187,9 @@ "geometryDefinitionId": "conicalWell" }, "A5": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 97.77, "y": 75.43, @@ -197,9 +197,9 @@ "geometryDefinitionId": "conicalWell" }, "B5": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 97.77, "y": 56.15, @@ -207,9 +207,9 @@ "geometryDefinitionId": "conicalWell" }, "C5": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 97.77, "y": 36.87, @@ -217,9 +217,9 @@ "geometryDefinitionId": "conicalWell" }, "D5": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 97.77, "y": 17.59, @@ -227,9 +227,9 @@ "geometryDefinitionId": "conicalWell" }, "A6": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 117.66, "y": 75.43, @@ -237,9 +237,9 @@ "geometryDefinitionId": "conicalWell" }, "B6": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 117.66, "y": 56.15, @@ -247,9 +247,9 @@ "geometryDefinitionId": "conicalWell" }, "C6": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 117.66, "y": 36.87, @@ -257,9 +257,9 @@ "geometryDefinitionId": "conicalWell" }, "D6": { - "depth": 43.9, + "depth": 42.6, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 1500, "x": 117.66, "y": 17.59, diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json index c1025a18ad1..af1f609a7f4 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json @@ -29,7 +29,7 @@ "A1": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 18.21, "y": 75.43, @@ -39,7 +39,7 @@ "B1": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 18.21, "y": 56.15, @@ -49,7 +49,7 @@ "C1": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 18.21, "y": 36.87, @@ -59,7 +59,7 @@ "D1": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 18.21, "y": 17.59, @@ -69,7 +69,7 @@ "A2": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 38.1, "y": 75.43, @@ -79,7 +79,7 @@ "B2": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 38.1, "y": 56.15, @@ -89,7 +89,7 @@ "C2": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 38.1, "y": 36.87, @@ -99,7 +99,7 @@ "D2": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 38.1, "y": 17.59, @@ -109,7 +109,7 @@ "A3": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 57.99, "y": 75.43, @@ -119,7 +119,7 @@ "B3": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 57.99, "y": 56.15, @@ -129,7 +129,7 @@ "C3": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 57.99, "y": 36.87, @@ -139,7 +139,7 @@ "D3": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 57.99, "y": 17.59, @@ -149,7 +149,7 @@ "A4": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 77.88, "y": 75.43, @@ -159,7 +159,7 @@ "B4": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 77.88, "y": 56.15, @@ -169,7 +169,7 @@ "C4": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 77.88, "y": 36.87, @@ -179,7 +179,7 @@ "D4": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 77.88, "y": 17.59, @@ -189,7 +189,7 @@ "A5": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 97.77, "y": 75.43, @@ -199,7 +199,7 @@ "B5": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 97.77, "y": 56.15, @@ -209,7 +209,7 @@ "C5": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 97.77, "y": 36.87, @@ -219,7 +219,7 @@ "D5": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 97.77, "y": 17.59, @@ -229,7 +229,7 @@ "A6": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 117.66, "y": 75.43, @@ -239,7 +239,7 @@ "B6": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 117.66, "y": 56.15, @@ -249,7 +249,7 @@ "C6": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 117.66, "y": 36.87, @@ -259,7 +259,7 @@ "D6": { "depth": 37.9, "shape": "circular", - "diameter": 10.2, + "diameter": 9.9, "totalLiquidVolume": 1500, "x": 117.66, "y": 17.59, @@ -328,23 +328,30 @@ "sections": [ { "shape": "spherical", - "radiusOfCurvature": 2.72, - "topHeight": 1.57, + "radiusOfCurvature": 1.87, + "topHeight": 1.56, "bottomHeight": 0.0 }, { "shape": "conical", - "topDiameter": 8.9, + "topDiameter": 8.98, "bottomDiameter": 3.69, - "topHeight": 17.7, - "bottomHeight": 1.57 + "topHeight": 17.4, + "bottomHeight": 1.56 }, { "shape": "conical", "topDiameter": 9.28, - "bottomDiameter": 8.9, + "bottomDiameter": 8.98, + "topHeight": 35.4, + "bottomHeight": 17.4 + }, + { + "shape": "conical", + "topDiameter": 9.9, + "bottomDiameter": 9.28, "topHeight": 37.9, - "bottomHeight": 17.7 + "bottomHeight": 35.4 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json index 7b1ab858fe6..a66604fbb00 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json @@ -27,9 +27,9 @@ }, "wells": { "A1": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 18.21, "y": 75.43, @@ -37,9 +37,9 @@ "geometryDefinitionId": "conicalWell" }, "B1": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 18.21, "y": 56.15, @@ -47,9 +47,9 @@ "geometryDefinitionId": "conicalWell" }, "C1": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 18.21, "y": 36.87, @@ -57,9 +57,9 @@ "geometryDefinitionId": "conicalWell" }, "D1": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 18.21, "y": 17.59, @@ -67,9 +67,9 @@ "geometryDefinitionId": "conicalWell" }, "A2": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 38.1, "y": 75.43, @@ -77,9 +77,9 @@ "geometryDefinitionId": "conicalWell" }, "B2": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 38.1, "y": 56.15, @@ -87,9 +87,9 @@ "geometryDefinitionId": "conicalWell" }, "C2": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 38.1, "y": 36.87, @@ -97,9 +97,9 @@ "geometryDefinitionId": "conicalWell" }, "D2": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 38.1, "y": 17.59, @@ -107,9 +107,9 @@ "geometryDefinitionId": "conicalWell" }, "A3": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 57.99, "y": 75.43, @@ -117,9 +117,9 @@ "geometryDefinitionId": "conicalWell" }, "B3": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 57.99, "y": 56.15, @@ -127,9 +127,9 @@ "geometryDefinitionId": "conicalWell" }, "C3": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 57.99, "y": 36.87, @@ -137,9 +137,9 @@ "geometryDefinitionId": "conicalWell" }, "D3": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 57.99, "y": 17.59, @@ -147,9 +147,9 @@ "geometryDefinitionId": "conicalWell" }, "A4": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 77.88, "y": 75.43, @@ -157,9 +157,9 @@ "geometryDefinitionId": "conicalWell" }, "B4": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 77.88, "y": 56.15, @@ -167,9 +167,9 @@ "geometryDefinitionId": "conicalWell" }, "C4": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 77.88, "y": 36.87, @@ -177,9 +177,9 @@ "geometryDefinitionId": "conicalWell" }, "D4": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 77.88, "y": 17.59, @@ -187,9 +187,9 @@ "geometryDefinitionId": "conicalWell" }, "A5": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 97.77, "y": 75.43, @@ -197,9 +197,9 @@ "geometryDefinitionId": "conicalWell" }, "B5": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 97.77, "y": 56.15, @@ -207,9 +207,9 @@ "geometryDefinitionId": "conicalWell" }, "C5": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 97.77, "y": 36.87, @@ -217,9 +217,9 @@ "geometryDefinitionId": "conicalWell" }, "D5": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 97.77, "y": 17.59, @@ -227,9 +227,9 @@ "geometryDefinitionId": "conicalWell" }, "A6": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 117.66, "y": 75.43, @@ -237,9 +237,9 @@ "geometryDefinitionId": "conicalWell" }, "B6": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 117.66, "y": 56.15, @@ -247,9 +247,9 @@ "geometryDefinitionId": "conicalWell" }, "C6": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 117.66, "y": 36.87, @@ -257,9 +257,9 @@ "geometryDefinitionId": "conicalWell" }, "D6": { - "depth": 44.05, + "depth": 43.4, "shape": "circular", - "diameter": 8.69, + "diameter": 8.55, "totalLiquidVolume": 2000, "x": 117.66, "y": 17.59, diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json index 7ae81c69e0c..3918d0c0c42 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json @@ -29,7 +29,7 @@ "A1": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 18.21, "y": 75.43, @@ -39,7 +39,7 @@ "B1": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 18.21, "y": 56.15, @@ -49,7 +49,7 @@ "C1": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 18.21, "y": 36.87, @@ -59,7 +59,7 @@ "D1": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 18.21, "y": 17.59, @@ -69,7 +69,7 @@ "A2": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 38.1, "y": 75.43, @@ -79,7 +79,7 @@ "B2": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 38.1, "y": 56.15, @@ -89,7 +89,7 @@ "C2": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 38.1, "y": 36.87, @@ -99,7 +99,7 @@ "D2": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 38.1, "y": 17.59, @@ -109,7 +109,7 @@ "A3": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 57.99, "y": 75.43, @@ -119,7 +119,7 @@ "B3": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 57.99, "y": 56.15, @@ -129,7 +129,7 @@ "C3": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 57.99, "y": 36.87, @@ -139,7 +139,7 @@ "D3": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 57.99, "y": 17.59, @@ -149,7 +149,7 @@ "A4": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 77.88, "y": 75.43, @@ -159,7 +159,7 @@ "B4": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 77.88, "y": 56.15, @@ -169,7 +169,7 @@ "C4": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 77.88, "y": 36.87, @@ -179,7 +179,7 @@ "D4": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 77.88, "y": 17.59, @@ -189,7 +189,7 @@ "A5": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 97.77, "y": 75.43, @@ -199,7 +199,7 @@ "B5": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 97.77, "y": 56.15, @@ -209,7 +209,7 @@ "C5": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 97.77, "y": 36.87, @@ -219,7 +219,7 @@ "D5": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 97.77, "y": 17.59, @@ -229,7 +229,7 @@ "A6": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 117.66, "y": 75.43, @@ -239,7 +239,7 @@ "B6": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 117.66, "y": 56.15, @@ -249,7 +249,7 @@ "C6": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 117.66, "y": 36.87, @@ -259,7 +259,7 @@ "D6": { "depth": 39.28, "shape": "circular", - "diameter": 10.18, + "diameter": 9.28, "totalLiquidVolume": 2000, "x": 117.66, "y": 17.59, @@ -362,11 +362,18 @@ }, { "shape": "conical", - "topDiameter": 8.9, + "topDiameter": 8.74, "bottomDiameter": 8.0, - "topHeight": 15.04, + "topHeight": 6.26, "bottomHeight": 3.98 }, + { + "shape": "conical", + "topDiameter": 8.9, + "bottomDiameter": 8.74, + "topHeight": 15.04, + "bottomHeight": 6.26 + }, { "shape": "conical", "topDiameter": 9.28, diff --git a/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json b/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json index d17d27c041a..bbc013e5d09 100644 --- a/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json +++ b/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json @@ -37,7 +37,7 @@ "wells": { "A1": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -48,7 +48,7 @@ }, "A2": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -59,7 +59,7 @@ }, "A3": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -70,7 +70,7 @@ }, "A4": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -81,7 +81,7 @@ }, "A5": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -92,7 +92,7 @@ }, "A6": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -103,7 +103,7 @@ }, "A7": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -114,7 +114,7 @@ }, "A8": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -125,7 +125,7 @@ }, "A9": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -136,7 +136,7 @@ }, "A10": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -147,7 +147,7 @@ }, "A11": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -158,7 +158,7 @@ }, "A12": { "shape": "rectangular", - "depth": 42.16, + "depth": 41.75, "xDimension": 8.33, "yDimension": 71.88, "totalLiquidVolume": 22000, @@ -204,24 +204,32 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ + { + "shape": "spherical", + "radiusOfCurvature": 1.5362, + "topHeight": 0.25, + "bottomHeight": 0.0, + "yCount": 8 + }, { "shape": "squaredcone", "bottomCrossSection": "circular", - "circleDiameter": 2.5, - "rectangleXDimension": 7.98, - "rectangleYDimension": 70.98, - "topHeight": 4.05, - "bottomHeight": 0.0, + "circleDiameter": 1.68, + "rectangleXDimension": 7.9, + "rectangleYDimension": 7.9, + "topHeight": 4.0, + "bottomHeight": 0.25, + "xCount": 1, "yCount": 8 }, { "shape": "cuboidal", "topXDimension": 8.34, "topYDimension": 71.85, - "bottomXDimension": 7.98, - "bottomYDimension": 70.98, + "bottomXDimension": 7.9, + "bottomYDimension": 71.75, "topHeight": 41.75, - "bottomHeight": 4.05 + "bottomHeight": 4.0 } ] } diff --git a/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json b/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json index d9741e18c57..d7011a4920e 100644 --- a/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json +++ b/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json @@ -1211,7 +1211,26 @@ }, "innerLabwareGeometry": { "cuboidalWell": { - "sections": [] + "sections": [ + { + "shape": "cuboidal", + "topXDimension": 7.52, + "topYDimension": 7.52, + "bottomXDimension": 0.25, + "bottomYDimension": 0.25, + "topHeight": 2.63, + "bottomHeight": 0.0 + }, + { + "shape": "cuboidal", + "topXDimension": 8.2, + "topYDimension": 8.2, + "bottomXDimension": 7.52, + "bottomYDimension": 7.52, + "topHeight": 41.3, + "bottomHeight": 2.63 + } + ] } } } diff --git a/shared-data/python/opentrons_shared_data/labware/labware_definition.py b/shared-data/python/opentrons_shared_data/labware/labware_definition.py index c25f37962c1..57f86016de5 100644 --- a/shared-data/python/opentrons_shared_data/labware/labware_definition.py +++ b/shared-data/python/opentrons_shared_data/labware/labware_definition.py @@ -299,6 +299,30 @@ class ConicalFrustum(BaseModel): description="Number of instances of this shape in the stackup, used for wells that have multiple sub-wells", ) + @cached_property + def height_to_volume_table(self) -> Dict[float, float]: + """Return a lookup table of heights to volumes.""" + # the accuracy of this method is approximately +- 10*dx so for dx of 0.001 we have a +- 0.01 ul + dx = 0.005 + total_height = self.topHeight - self.bottomHeight + y = 0.0 + table: Dict[float, float] = {} + # fill in the table + a = self.topDiameter / 2 + b = self.bottomDiameter / 2 + while y < total_height: + r_y = (y / total_height) * (a - b) + b + table[y] = (pi * y / 3) * (b**2 + b * r_y + r_y**2) + y = y + dx + + # we always want to include the volume at the max height + table[total_height] = (pi * total_height / 3) * (b**2 + a * b + a**2) + return table + + @cached_property + def volume_to_height_table(self) -> Dict[float, float]: + return dict((v, k) for k, v in self.height_to_volume_table.items()) + @cached_property def count(self) -> int: return self.xCount * self.yCount From f54a1937b09e4975449f09380b362470d6570c16 Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Tue, 28 Jan 2025 14:52:50 -0500 Subject: [PATCH 33/81] fix(api):show plate reader files in run log (#17369) --- .../protocol_engine/commands/absorbance_reader/read.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py index fc230d1dee9..a4a3aa58a5e 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py @@ -182,6 +182,9 @@ async def execute( # noqa: C901 ) file_ids.append(file_id) + state_update.files_added = update_types.FilesAddedUpdate( + file_ids=file_ids + ) # Return success data to api return SuccessData( public=ReadAbsorbanceResult( From c048e5bdd6c980846d32d0f7726b40ffc29e61d1 Mon Sep 17 00:00:00 2001 From: Laura Cox <31892318+Laura-Danielle@users.noreply.github.com> Date: Tue, 28 Jan 2025 14:17:40 -0600 Subject: [PATCH 34/81] feat(shared-data, api): Add evo tips definition and restrictions on loading (#17237) Add evo tip adapter and evo tips labware definition but as a labware so that liquid handling actions can happen in the 'labware'. --- ...[pl_BacteriaInoculation_Flex_6plates].json | 5 + ...03a95825][Flex_S_v2_19_QIASeq_FX_48x].json | 5 + ...][Flex_S_v2_18_Illumina_DNA_Prep_48x].json | 5 + ..._EM_seq_48Samples_AllSteps_Edits_150].json | 10 + ...llumina_Stranded_total_RNA_Ribo_Zero].json | 5 + ...0fccf4][pl_microBioID_beads_touchtip].json | 5 + ...l_Dynabeads_IP_Flex_96well_RIT_final].json | 10 + ...c080][pl_MagMax_RNA_Cells_Flex_multi].json | 5 + ..._Omega_HDQ_DNA_Cells_Flex_96_channel].json | 25 + ...7961bc58][pl_NiNTA_Flex_96well_final].json | 25 + ...9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json | 5 + ...pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json | 5 + ...2bc6830494][pl_langone_ribo_pt1_ramp].json | 5 + ...TC_TM_TriggerPrepareForMountMovement].json | 5 + ...f][pl_Dynabeads_IP_Flex_96well_final].json | 10 + ...shot[4148613317][Flex_S_v2_19_ligseq].json | 5 + ...apshot[42beea80be][pl_96_ch_demo_rtp].json | 10 + ...50c02c81][Flex_S_v2_19_AMPure_XP_48x].json | 5 + ...][pl_Zymo_Quick_RNA_Cells_Flex_multi].json | 5 + ...][Flex_S_v2_19_Illumina_DNA_Prep_48x].json | 5 + ...shot[59b00713a7][Flex_S_v2_18_ligseq].json | 5 + ...ega_HDQ_DNA_Bacteria_Flex_96_channel].json | 35 + ...b47][pl_M_N_Nucleomag_DNA_Flex_multi].json | 5 + ...96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json | 25 + ..._HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json | 5 + ...[pl_SamplePrep_MS_Digest_Flex_upto96].json | 5 + ...e61426a2][Flex_S_v2_18_AMPure_XP_48x].json | 5 + ..._QIAseq_FX_24x_Normalizer_Workflow_B].json | 5 + ...84cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json | 5 + ...Zymo_Quick_RNA_Cells_Flex_96_Channel].json | 35 + ...pl_NiNTA_Flex_96well_PlatePrep_final].json | 20 + ...747b2f9][pl_Illumina_DNA_Prep_48x_v8].json | 5 + ..._TM_MB_OmegaHDQDNAExtractionBacteria].json | 35 + ...pl_SamplePrep_MS_Cleanup_Flex_upto96].json | 10 + ...][Flex_S_v2_19_Illumina_DNA_PCR_Free].json | 5 + ...37534569][Flex_S_v2_19_kapahyperplus].json | 5 + ...l_Nanopore_Genomic_Ligation_v5_Final].json | 5 + ...4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json | 10 + ...a8a5ad823d][pl_cherrypicking_flex_v3].json | 5 + ...4f22054f][Flex_S_v2_18_kapahyperplus].json | 5 + ..._snapshot[aa61eee0bf][pl_sigdx_part2].json | 15 + ...shot[ac5a46e74b][pl_langone_pt2_ribo].json | 5 + ...6_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json | 20 + ...llumina_Stranded_total_RNA_Ribo_Zero].json | 5 + ...[pl_MagMax_RNA_Cells_Flex_96_Channel].json | 30 + ...d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json | 5 + ...pl_Zymo_Magbead_DNA_Cells_Flex_multi].json | 5 + ...shot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json | 5 + ...oMagbeadRNAExtractionCellsOrBacteria].json | 35 + ...mo_Magbead_DNA_Cells_Flex_96_channel].json | 35 + ...39e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json | 5 + ...shot[d6389183c0][pl_AMPure_XP_48x_v8].json | 5 + ...1][pl_Hyperplus_tiptracking_V4_final].json | 5 + ...tranded_total_RNA_Ribo_Zero_protocol].json | 5 + ...][Flex_S_v2_18_Illumina_DNA_PCR_Free].json | 5 + ...e71b031f47][pl_Illumina_DNA_PCR_Free].json | 5 + ...P_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json | 20 + .../protocol_engine/commands/load_labware.py | 5 + .../protocol_engine/commands/move_labware.py | 9 + .../protocol_engine/errors/__init__.py | 2 + .../protocol_engine/errors/exceptions.py | 13 + .../resources/labware_validation.py | 8 + .../protocol_engine/state/labware.py | 13 + .../ODD/QuickTransferFlow/constants.ts | 3 + .../js/__tests__/labwareDefQuirks.test.ts | 1 + shared-data/js/labware.ts | 6 + .../2/nest_96_wellplate_2ml_deep/2.json | 5 + .../3/evotips_flex_96_tiprack_adapter/1.json | 41 + .../3/evotips_opentrons_96_labware/1.json | 1045 +++++++++++++++++ 69 files changed, 1756 insertions(+) create mode 100644 shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json create mode 100644 shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json index 0a408e946c3..0cf14e731b6 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json @@ -982,6 +982,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json index a7e09aba292..fccf2aae96c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json @@ -5144,6 +5144,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json index 705c9658155..b49eaeb6609 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json @@ -5205,6 +5205,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json index b964f2a7367..c407d673c2b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json @@ -8631,6 +8631,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -9909,6 +9914,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json index 087cbb927b9..8701aae97bc 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -3283,6 +3283,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json index 6b7d81ff805..0363b1ca1df 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json @@ -3576,6 +3576,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json index 29df1897867..a084faeeb15 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json @@ -305,6 +305,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6222,6 +6227,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json index 03bb82c7b3c..7d89bcbae0c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json index 427cd1c997b..38d0810f4ad 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -5067,6 +5072,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -9802,6 +9812,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -14537,6 +14552,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -17544,6 +17564,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json index 7602c8613f4..64cec1732c3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json @@ -305,6 +305,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -1584,6 +1589,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2863,6 +2873,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -4142,6 +4157,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -8375,6 +8395,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json index 1598272fc5c..936161f35e0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json index d6a2126b774..bce6b1bfc5c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json index 103852d1fad..cbbda041874 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json @@ -4454,6 +4454,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json index 527f7681c11..cade2906ff1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json @@ -3757,6 +3757,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json index 67b6613beee..b38642d42ac 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json @@ -305,6 +305,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6191,6 +6196,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json index c25eab4039e..be83efdb3d1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json @@ -2423,6 +2423,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json index d01d2417596..42f66954c50 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json @@ -3986,6 +3986,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -5265,6 +5270,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json index 953bf5c133d..01407d2b421 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json @@ -4032,6 +4032,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json index c22754f270b..00eb89d9c69 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json index 10732760f7a..22587a32c81 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json @@ -5205,6 +5205,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json index 17c3ea8b6a4..737dc286bb5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json @@ -2423,6 +2423,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json index 00ec976bea7..026a1474062 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2108,6 +2113,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -7979,6 +7989,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -12714,6 +12729,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -15721,6 +15741,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -18728,6 +18753,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -21735,6 +21765,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json index 36c77e37312..4b86c4eccdc 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json index 729e4b265eb..5bb400f3266 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json @@ -761,6 +761,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2039,6 +2044,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -5017,6 +5027,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6295,6 +6310,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -7573,6 +7593,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json index b2975565a97..a6b46f54c00 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json @@ -1946,6 +1946,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json index c62ce072bd9..9afcc19539c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json @@ -1600,6 +1600,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json index ae9a44679de..744032008ce 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json @@ -4032,6 +4032,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json index 62f2ce5038d..c567c61d095 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json @@ -857,6 +857,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json index edafb62c064..b4e7172cb6c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json @@ -5144,6 +5144,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json index 080564645c6..d929f2211bb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6714,6 +6719,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -9721,6 +9731,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -14456,6 +14471,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -17463,6 +17483,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -20470,6 +20495,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -26384,6 +26414,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json index 37e82771ce7..23a738dea13 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json @@ -305,6 +305,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -1584,6 +1589,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2863,6 +2873,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -5195,6 +5210,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json index 7215d1d2813..4e22ae14eb6 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json @@ -5205,6 +5205,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json index 3dc6df75eb5..27170407315 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2108,6 +2113,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6251,6 +6261,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -7530,6 +7545,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -8809,6 +8829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -10088,6 +10113,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -11367,6 +11397,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json index 65c642d5802..a42786e59e3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json @@ -2124,6 +2124,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -3652,6 +3657,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json index 6b9ce6ed6d2..6da5b62e4ec 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json @@ -6158,6 +6158,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json index 17c5183316b..814c874d188 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json @@ -6866,6 +6866,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json index f022770ef34..8faa3209168 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json @@ -2423,6 +2423,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json index cb8b6964316..0c84054c2ff 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json @@ -4524,6 +4524,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -5803,6 +5808,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json index 335d8570804..9be279fa95e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json @@ -1816,6 +1816,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json index e2cf7a80abc..784df7d0aa1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json @@ -6866,6 +6866,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json index d9080b06e23..6c5410c683b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json @@ -763,6 +763,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -2623,6 +2628,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -3901,6 +3911,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json index 6f5fe499523..f4bafb81e72 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json @@ -8494,6 +8494,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json index 3436029e76b..b5cf2f13f52 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json @@ -1506,6 +1506,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -4019,6 +4024,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -7698,6 +7708,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -10203,6 +10218,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json index 68b2b5c1f76..7fa95382fb8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -3283,6 +3283,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json index 4157d11e090..9256b703b2c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6714,6 +6719,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -8024,6 +8034,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -11031,6 +11046,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -14038,6 +14058,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -17045,6 +17070,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json index 6c54624f311..c7cc6586b5d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json @@ -5144,6 +5144,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json index 14a7616b697..c8f00ac080e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json index 9cb48b08976..a9306a86942 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json @@ -5144,6 +5144,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json index 2523a86633a..426c94558c1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -4972,6 +4977,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6251,6 +6261,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -7530,6 +7545,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -8809,6 +8829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -10088,6 +10113,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -11367,6 +11397,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json index 90e2c5c4dfb..9214cce5922 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json @@ -829,6 +829,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -4972,6 +4977,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -9707,6 +9717,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -14442,6 +14457,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -17449,6 +17469,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -20456,6 +20481,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -23463,6 +23493,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json index 48cb632ccd4..a8f00e1a0f1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json @@ -5144,6 +5144,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json index 1310283b324..a19d8ed0c76 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json @@ -4032,6 +4032,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json index 47372d63a60..b3678fd89b2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json @@ -6866,6 +6866,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json index dba92ac69c0..590ca209392 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json @@ -3283,6 +3283,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json index 881892ce99c..4459fe971fd 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json @@ -6158,6 +6158,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json index 94c209d56fb..cffdb1bb54c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json @@ -6158,6 +6158,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json index bcc3989e9f6..1c7b1c8237d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json @@ -4870,6 +4870,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -6148,6 +6153,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -9943,6 +9953,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, @@ -11221,6 +11236,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, diff --git a/api/src/opentrons/protocol_engine/commands/load_labware.py b/api/src/opentrons/protocol_engine/commands/load_labware.py index d0e83863616..d965c1116ad 100644 --- a/api/src/opentrons/protocol_engine/commands/load_labware.py +++ b/api/src/opentrons/protocol_engine/commands/load_labware.py @@ -192,6 +192,11 @@ async def execute( self._state_view.labware.raise_if_labware_incompatible_with_plate_reader( loaded_labware.definition ) + + self._state_view.labware.raise_if_labware_cannot_be_ondeck( + location=params.location, labware_definition=loaded_labware.definition + ) + return SuccessData( public=LoadLabwareResult( labwareId=loaded_labware.labware_id, diff --git a/api/src/opentrons/protocol_engine/commands/move_labware.py b/api/src/opentrons/protocol_engine/commands/move_labware.py index 8eb93ce9217..5b3d751bbfb 100644 --- a/api/src/opentrons/protocol_engine/commands/move_labware.py +++ b/api/src/opentrons/protocol_engine/commands/move_labware.py @@ -223,6 +223,15 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C self._state_view.labware.raise_if_labware_has_labware_on_top( labware_id=params.labwareId ) + + if isinstance(available_new_location, DeckSlotLocation): + self._state_view.labware.raise_if_labware_cannot_be_ondeck( + location=available_new_location, + labware_definition=self._state_view.labware.get_definition( + params.labwareId + ), + ) + if isinstance(available_new_location, OnLabwareLocation): self._state_view.labware.raise_if_labware_has_labware_on_top( available_new_location.labwareId diff --git a/api/src/opentrons/protocol_engine/errors/__init__.py b/api/src/opentrons/protocol_engine/errors/__init__.py index 2b0fb6a6060..419043120a6 100644 --- a/api/src/opentrons/protocol_engine/errors/__init__.py +++ b/api/src/opentrons/protocol_engine/errors/__init__.py @@ -18,6 +18,7 @@ LiquidDoesNotExistError, LabwareDefinitionDoesNotExistError, LabwareCannotBeStackedError, + LabwareCannotSitOnDeckError, LabwareIsInStackError, LabwareOffsetDoesNotExistError, LabwareIsNotTipRackError, @@ -105,6 +106,7 @@ "LiquidDoesNotExistError", "LabwareDefinitionDoesNotExistError", "LabwareCannotBeStackedError", + "LabwareCannotSitOnDeckError", "LabwareIsInStackError", "LabwareOffsetDoesNotExistError", "LabwareIsNotTipRackError", diff --git a/api/src/opentrons/protocol_engine/errors/exceptions.py b/api/src/opentrons/protocol_engine/errors/exceptions.py index c3fddf99a61..2f7e4b07e56 100644 --- a/api/src/opentrons/protocol_engine/errors/exceptions.py +++ b/api/src/opentrons/protocol_engine/errors/exceptions.py @@ -283,6 +283,19 @@ def __init__( super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) +class LabwareCannotSitOnDeckError(ProtocolEngineError): + """Raised when a labware is incompatible with a deck slot.""" + + def __init__( + self, + message: Optional[str] = None, + details: Optional[Dict[str, Any]] = None, + wrapping: Optional[Sequence[EnumeratedError]] = None, + ) -> None: + """Build a LabwareCannotSitOnDeckError.""" + super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) + + class LabwareIsInStackError(ProtocolEngineError): """Raised when trying to move to or physically interact with a labware that has another labware on top.""" diff --git a/api/src/opentrons/protocol_engine/resources/labware_validation.py b/api/src/opentrons/protocol_engine/resources/labware_validation.py index efe6d6daf65..451f3afbfab 100644 --- a/api/src/opentrons/protocol_engine/resources/labware_validation.py +++ b/api/src/opentrons/protocol_engine/resources/labware_validation.py @@ -44,6 +44,14 @@ def validate_labware_can_be_stacked( return below_labware_load_name in top_labware_definition.stackingOffsetWithLabware +def validate_labware_can_be_ondeck(definition: LabwareDefinition) -> bool: + """Validate that the labware being loaded onto the deck can sit in a slot.""" + return ( + definition.parameters.quirks is None + or "stackingOnly" not in definition.parameters.quirks + ) + + def validate_gripper_compatible(definition: LabwareDefinition) -> bool: """Validate that the labware definition does not have a quirk disallowing movement with gripper.""" return ( diff --git a/api/src/opentrons/protocol_engine/state/labware.py b/api/src/opentrons/protocol_engine/state/labware.py index 58909f5be9f..60ae8344930 100644 --- a/api/src/opentrons/protocol_engine/state/labware.py +++ b/api/src/opentrons/protocol_engine/state/labware.py @@ -886,6 +886,19 @@ def raise_if_labware_in_location( f"Labware {labware.loadName} is already present at {location}." ) + def raise_if_labware_cannot_be_ondeck( + self, + location: LabwareLocation, + labware_definition: LabwareDefinition, + ) -> None: + """Raise an error if the labware cannot be in the specified location.""" + if isinstance( + location, (DeckSlotLocation, AddressableAreaLocation) + ) and not labware_validation.validate_labware_can_be_ondeck(labware_definition): + raise errors.LabwareCannotSitOnDeckError( + f"{labware_definition.parameters.loadName} cannot sit in a slot by itself." + ) + def raise_if_labware_incompatible_with_plate_reader( self, labware_definition: LabwareDefinition, diff --git a/app/src/organisms/ODD/QuickTransferFlow/constants.ts b/app/src/organisms/ODD/QuickTransferFlow/constants.ts index dd1b18cda43..5aa6aa3b60d 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/constants.ts +++ b/app/src/organisms/ODD/QuickTransferFlow/constants.ts @@ -100,6 +100,7 @@ export const SINGLE_CHANNEL_COMPATIBLE_LABWARE = [ 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', 'opentrons/usascientific_12_reservoir_22ml/1', 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', + 'opentrons/evotips_opentrons_96_labware/1', ] export const EIGHT_CHANNEL_COMPATIBLE_LABWARE = [ @@ -144,6 +145,7 @@ export const EIGHT_CHANNEL_COMPATIBLE_LABWARE = [ 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', 'opentrons/usascientific_12_reservoir_22ml/1', 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', + 'opentrons/evotips_opentrons_96_labware/1', ] export const NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE = [ @@ -188,4 +190,5 @@ export const NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE = [ 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', 'opentrons/usascientific_12_reservoir_22ml/1', 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', + 'opentrons/evotips_opentrons_96_labware/1', ] diff --git a/shared-data/js/__tests__/labwareDefQuirks.test.ts b/shared-data/js/__tests__/labwareDefQuirks.test.ts index 6251c894647..4ef69b5cb51 100644 --- a/shared-data/js/__tests__/labwareDefQuirks.test.ts +++ b/shared-data/js/__tests__/labwareDefQuirks.test.ts @@ -14,6 +14,7 @@ const EXPECTED_VALID_QUIRKS = [ 'gripperIncompatible', 'tiprackAdapterFor96Channel', 'stackingMaxFive', + 'stackingOnly', ] describe('check quirks for all labware defs', () => { diff --git a/shared-data/js/labware.ts b/shared-data/js/labware.ts index 20d41c3a697..9faa6ced497 100644 --- a/shared-data/js/labware.ts +++ b/shared-data/js/labware.ts @@ -121,6 +121,8 @@ import thermoscientificnunc96Wellplate2000UlV1Uncasted from '../labware/definiti import tipone96Tiprack200UlV1Uncasted from '../labware/definitions/2/tipone_96_tiprack_200ul/1.json' import usascientific12Reservoir22MlV1Uncasted from '../labware/definitions/2/usascientific_12_reservoir_22ml/1.json' import usascientific96Wellplate24MlDeepV1Uncasted from '../labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/1.json' +import evotipsFlex96TiprackAdapterV1Uncasted from '../labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json' +import evotipsOpentrons96LabwareV1Uncasted from '../labware/definitions/3/evotips_opentrons_96_labware/1.json' // v1 legacy labware definitions @@ -297,6 +299,8 @@ const thermoscientificnunc96Wellplate2000UlV1 = thermoscientificnunc96Wellplate2 const tipone96Tiprack200UlV1 = tipone96Tiprack200UlV1Uncasted as LabwareDefinition2 const usascientific12Reservoir22MlV1 = usascientific12Reservoir22MlV1Uncasted as LabwareDefinition2 const usascientific96Wellplate24MlDeepV1 = usascientific96Wellplate24MlDeepV1Uncasted as LabwareDefinition2 +const evotipsFlex96TiprackAdapterV1 = evotipsFlex96TiprackAdapterV1Uncasted as LabwareDefinition2 +const evotipsOpentrons96LabwareV1 = evotipsOpentrons96LabwareV1Uncasted as LabwareDefinition2 // cast v1 defs @@ -466,6 +470,8 @@ const latestDefs = { tipone96Tiprack200UlV1, usascientific12Reservoir22MlV1, usascientific96Wellplate24MlDeepV1, + evotipsFlex96TiprackAdapterV1, + evotipsOpentrons96LabwareV1, } // labware definitions const getAllLabwareDefs = (): Record< diff --git a/shared-data/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json b/shared-data/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json index 775596e7386..ad48d50fecc 100644 --- a/shared-data/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json +++ b/shared-data/labware/definitions/2/nest_96_wellplate_2ml_deep/2.json @@ -1130,6 +1130,11 @@ "x": 0, "y": 0, "z": 16.1 + }, + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 } }, "stackingOffsetWithModule": { diff --git a/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json b/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json new file mode 100644 index 00000000000..36125856ad3 --- /dev/null +++ b/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json @@ -0,0 +1,41 @@ +{ + "ordering": [], + "brand": { + "brand": "Opentrons", + "brandId": [] + }, + "metadata": { + "displayName": "Evotips adapter", + "displayCategory": "adapter", + "displayVolumeUnits": "\u00b5L", + "tags": [] + }, + "dimensions": { + "xDimension": 156.5, + "yDimension": 105, + "zDimension": 132 + }, + "wells": {}, + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], + "parameters": { + "format": "96Standard", + "quirks": ["tiprackAdapterFor96Channel", "stackingMaxFive"], + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "evotips_flex_96_tiprack_adapter" + }, + "namespace": "opentrons", + "version": 1, + "schemaVersion": 3, + "allowedRoles": ["adapter"], + "cornerOffsetFromSlot": { + "x": -14.25, + "y": -3.5, + "z": 0 + } +} diff --git a/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json b/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json new file mode 100644 index 00000000000..43b2616c6f5 --- /dev/null +++ b/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json @@ -0,0 +1,1045 @@ +{ + "ordering": [ + ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"], + ["A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3"], + ["A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4"], + ["A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5"], + ["A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6"], + ["A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7"], + ["A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8"], + ["A9", "B9", "C9", "D9", "E9", "F9", "G9", "H9"], + ["A10", "B10", "C10", "D10", "E10", "F10", "G10", "H10"], + ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], + ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] + ], + "brand": { + "brand": "opentrons", + "brandId": [] + }, + "metadata": { + "displayName": "Evotips", + "displayCategory": "wellPlate", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 86, + "zDimension": 39.25 + }, + "wells": { + "A1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 75.25, + "z": 1 + }, + "B1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 66.25, + "z": 1 + }, + "C1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 57.25, + "z": 1 + }, + "D1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 48.25, + "z": 1 + }, + "E1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 39.25, + "z": 1 + }, + "F1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 30.25, + "z": 1 + }, + "G1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 21.25, + "z": 1 + }, + "H1": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 14.08, + "y": 12.25, + "z": 1 + }, + "A2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 75.25, + "z": 1 + }, + "B2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 66.25, + "z": 1 + }, + "C2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 57.25, + "z": 1 + }, + "D2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 48.25, + "z": 1 + }, + "E2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 39.25, + "z": 1 + }, + "F2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 30.25, + "z": 1 + }, + "G2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 21.25, + "z": 1 + }, + "H2": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 23.08, + "y": 12.25, + "z": 1 + }, + "A3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 75.25, + "z": 1 + }, + "B3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 66.25, + "z": 1 + }, + "C3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 57.25, + "z": 1 + }, + "D3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 48.25, + "z": 1 + }, + "E3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 39.25, + "z": 1 + }, + "F3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 30.25, + "z": 1 + }, + "G3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 21.25, + "z": 1 + }, + "H3": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 32.08, + "y": 12.25, + "z": 1 + }, + "A4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 75.25, + "z": 1 + }, + "B4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 66.25, + "z": 1 + }, + "C4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 57.25, + "z": 1 + }, + "D4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 48.25, + "z": 1 + }, + "E4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 39.25, + "z": 1 + }, + "F4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 30.25, + "z": 1 + }, + "G4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 21.25, + "z": 1 + }, + "H4": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 41.08, + "y": 12.25, + "z": 1 + }, + "A5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 75.25, + "z": 1 + }, + "B5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 66.25, + "z": 1 + }, + "C5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 57.25, + "z": 1 + }, + "D5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 48.25, + "z": 1 + }, + "E5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 39.25, + "z": 1 + }, + "F5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 30.25, + "z": 1 + }, + "G5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 21.25, + "z": 1 + }, + "H5": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 50.08, + "y": 12.25, + "z": 1 + }, + "A6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 75.25, + "z": 1 + }, + "B6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 66.25, + "z": 1 + }, + "C6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 57.25, + "z": 1 + }, + "D6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 48.25, + "z": 1 + }, + "E6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 39.25, + "z": 1 + }, + "F6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 30.25, + "z": 1 + }, + "G6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 21.25, + "z": 1 + }, + "H6": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 59.08, + "y": 12.25, + "z": 1 + }, + "A7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 75.25, + "z": 1 + }, + "B7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 66.25, + "z": 1 + }, + "C7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 57.25, + "z": 1 + }, + "D7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 48.25, + "z": 1 + }, + "E7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 39.25, + "z": 1 + }, + "F7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 30.25, + "z": 1 + }, + "G7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 21.25, + "z": 1 + }, + "H7": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 68.08, + "y": 12.25, + "z": 1 + }, + "A8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 75.25, + "z": 1 + }, + "B8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 66.25, + "z": 1 + }, + "C8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 57.25, + "z": 1 + }, + "D8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 48.25, + "z": 1 + }, + "E8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 39.25, + "z": 1 + }, + "F8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 30.25, + "z": 1 + }, + "G8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 21.25, + "z": 1 + }, + "H8": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 77.08, + "y": 12.25, + "z": 1 + }, + "A9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 75.25, + "z": 1 + }, + "B9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 66.25, + "z": 1 + }, + "C9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 57.25, + "z": 1 + }, + "D9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 48.25, + "z": 1 + }, + "E9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 39.25, + "z": 1 + }, + "F9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 30.25, + "z": 1 + }, + "G9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 21.25, + "z": 1 + }, + "H9": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 86.08, + "y": 12.25, + "z": 1 + }, + "A10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 75.25, + "z": 1 + }, + "B10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 66.25, + "z": 1 + }, + "C10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 57.25, + "z": 1 + }, + "D10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 48.25, + "z": 1 + }, + "E10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 39.25, + "z": 1 + }, + "F10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 30.25, + "z": 1 + }, + "G10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 21.25, + "z": 1 + }, + "H10": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 95.08, + "y": 12.25, + "z": 1 + }, + "A11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 75.25, + "z": 1 + }, + "B11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 66.25, + "z": 1 + }, + "C11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 57.25, + "z": 1 + }, + "D11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 48.25, + "z": 1 + }, + "E11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 39.25, + "z": 1 + }, + "F11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 30.25, + "z": 1 + }, + "G11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 21.25, + "z": 1 + }, + "H11": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 104.08, + "y": 12.25, + "z": 1 + }, + "A12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 75.25, + "z": 1 + }, + "B12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 66.25, + "z": 1 + }, + "C12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 57.25, + "z": 1 + }, + "D12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 48.25, + "z": 1 + }, + "E12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 39.25, + "z": 1 + }, + "F12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 30.25, + "z": 1 + }, + "G12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 21.25, + "z": 1 + }, + "H12": { + "depth": 54, + "totalLiquidVolume": 1000, + "shape": "circular", + "diameter": 7, + "x": 113.08, + "y": 12.25, + "z": 1 + } + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "96Standard", + "quirks": ["stackingOnly"], + "isTiprack": false, + "tipLength": 42.0, + "tipOverlap": 10.0, + "isMagneticModuleCompatible": false, + "loadName": "evotips_opentrons_96_labware" + }, + "namespace": "opentrons", + "allowedRoles": ["labware"], + "version": 1, + "stackLimit": 5, + "compatibleParentLabware": [ + "nest_96_wellplate_2ml_deep", + "nest_1_reservoir_195ml", + "evotips_flex_96_tiprack_adapter" + ], + "schemaVersion": 3, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "gripHeightFromLabwareBottom": 14.5, + "gripForce": 15, + "stackingOffsetWithLabware": { + "nest_96_wellplate_2ml_deep": { + "x": 0, + "y": 0, + "z": 22.5 + }, + "nest_1_reservoir_195ml": { + "x": 0, + "y": 0, + "z": 22.5 + }, + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 76.78 + } + } +} From 85c4e96d0606ac806a1a32eeb183830b42c6878c Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Thu, 30 Jan 2025 13:41:45 -0500 Subject: [PATCH 35/81] fix(api): Over pressure while probing should trigger ER (#17379) --- .../protocol_engine/commands/liquid_probe.py | 71 ++++++++++++++++--- .../commands/test_liquid_probe.py | 4 +- 2 files changed, 64 insertions(+), 11 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/liquid_probe.py b/api/src/opentrons/protocol_engine/commands/liquid_probe.py index 419dca03b40..53cc3f77abd 100644 --- a/api/src/opentrons/protocol_engine/commands/liquid_probe.py +++ b/api/src/opentrons/protocol_engine/commands/liquid_probe.py @@ -19,12 +19,14 @@ from opentrons_shared_data.errors.exceptions import ( PipetteLiquidNotFoundError, UnsupportedHardwareCommand, + PipetteOverpressureError, ) from ..types import DeckPoint from .pipetting_common import ( LiquidNotFoundError, PipetteIdMixin, + OverpressureError, ) from .movement_common import ( WellLocationMixin, @@ -43,7 +45,7 @@ from ..errors.error_occurrence import ErrorOccurrence if TYPE_CHECKING: - from ..execution import MovementHandler, PipettingHandler + from ..execution import MovementHandler, PipettingHandler, GantryMover from ..resources import ModelUtils from ..state.state import StateView @@ -99,10 +101,14 @@ class TryLiquidProbeResult(DestinationPositionResult): _LiquidProbeExecuteReturn = Union[ SuccessData[LiquidProbeResult], - DefinedErrorData[LiquidNotFoundError] | DefinedErrorData[StallOrCollisionError], + DefinedErrorData[LiquidNotFoundError] + | DefinedErrorData[StallOrCollisionError] + | DefinedErrorData[OverpressureError], ] _TryLiquidProbeExecuteReturn = ( - SuccessData[TryLiquidProbeResult] | DefinedErrorData[StallOrCollisionError] + SuccessData[TryLiquidProbeResult] + | DefinedErrorData[StallOrCollisionError] + | DefinedErrorData[OverpressureError] ) @@ -110,19 +116,22 @@ class _ExecuteCommonResult(NamedTuple): # If the probe succeeded, the z_pos that it returned. # Or, if the probe found no liquid, the error representing that, # so calling code can propagate those details up. - z_pos_or_error: float | PipetteLiquidNotFoundError + z_pos_or_error: float | PipetteLiquidNotFoundError | PipetteOverpressureError state_update: update_types.StateUpdate deck_point: DeckPoint -async def _execute_common( +async def _execute_common( # noqa: C901 state_view: StateView, movement: MovementHandler, + gantry_mover: GantryMover, pipetting: PipettingHandler, model_utils: ModelUtils, params: _CommonParams, -) -> _ExecuteCommonResult | DefinedErrorData[StallOrCollisionError]: +) -> _ExecuteCommonResult | DefinedErrorData[StallOrCollisionError] | DefinedErrorData[ + OverpressureError +]: pipette_id = params.pipetteId labware_id = params.labwareId well_name = params.wellName @@ -173,6 +182,7 @@ async def _execute_common( if isinstance(move_result, DefinedErrorData): return move_result try: + current_position = await gantry_mover.get_position(params.pipetteId) z_pos = await pipetting.liquid_probe_in_place( pipette_id=pipette_id, labware_id=labware_id, @@ -185,6 +195,33 @@ async def _execute_common( state_update=move_result.state_update, deck_point=move_result.public.position, ) + except PipetteOverpressureError as e: + return DefinedErrorData( + public=OverpressureError( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + wrappedErrors=[ + ErrorOccurrence.from_failed( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + error=e, + ) + ], + errorInfo=( + { + # This is here bc its not optional in the type but we are not using the retry location for this case + "retryLocation": ( + current_position.x, + current_position.y, + current_position.z, + ) + } + ), + ), + state_update=move_result.state_update.set_fluid_unknown( + pipette_id=pipette_id + ), + ) else: return _ExecuteCommonResult( z_pos_or_error=z_pos, @@ -202,12 +239,14 @@ def __init__( self, state_view: StateView, movement: MovementHandler, + gantry_mover: GantryMover, pipetting: PipettingHandler, model_utils: ModelUtils, **kwargs: object, ) -> None: self._state_view = state_view self._movement = movement + self._gantry_mover = gantry_mover self._pipetting = pipetting self._model_utils = model_utils @@ -230,6 +269,7 @@ async def execute(self, params: _CommonParams) -> _LiquidProbeExecuteReturn: result = await _execute_common( state_view=self._state_view, movement=self._movement, + gantry_mover=self._gantry_mover, pipetting=self._pipetting, model_utils=self._model_utils, params=params, @@ -237,7 +277,9 @@ async def execute(self, params: _CommonParams) -> _LiquidProbeExecuteReturn: if isinstance(result, DefinedErrorData): return result z_pos_or_error, state_update, deck_point = result - if isinstance(z_pos_or_error, PipetteLiquidNotFoundError): + if isinstance( + z_pos_or_error, (PipetteLiquidNotFoundError, PipetteOverpressureError) + ): state_update.set_liquid_probed( labware_id=params.labwareId, well_name=params.wellName, @@ -294,12 +336,14 @@ def __init__( self, state_view: StateView, movement: MovementHandler, + gantry_mover: GantryMover, pipetting: PipettingHandler, model_utils: ModelUtils, **kwargs: object, ) -> None: self._state_view = state_view self._movement = movement + self._gantry_mover = gantry_mover self._pipetting = pipetting self._model_utils = model_utils @@ -313,6 +357,7 @@ async def execute(self, params: _CommonParams) -> _TryLiquidProbeExecuteReturn: result = await _execute_common( state_view=self._state_view, movement=self._movement, + gantry_mover=self._gantry_mover, pipetting=self._pipetting, model_utils=self._model_utils, params=params, @@ -321,7 +366,9 @@ async def execute(self, params: _CommonParams) -> _TryLiquidProbeExecuteReturn: return result z_pos_or_error, state_update, deck_point = result - if isinstance(z_pos_or_error, PipetteLiquidNotFoundError): + if isinstance( + z_pos_or_error, (PipetteLiquidNotFoundError, PipetteOverpressureError) + ): z_pos = None well_volume: float | update_types.ClearType = update_types.CLEAR else: @@ -354,7 +401,7 @@ class LiquidProbe( BaseCommand[ LiquidProbeParams, LiquidProbeResult, - LiquidNotFoundError | StallOrCollisionError, + LiquidNotFoundError | StallOrCollisionError | OverpressureError, ] ): """The model for a full `liquidProbe` command.""" @@ -367,7 +414,11 @@ class LiquidProbe( class TryLiquidProbe( - BaseCommand[TryLiquidProbeParams, TryLiquidProbeResult, StallOrCollisionError] + BaseCommand[ + TryLiquidProbeParams, + TryLiquidProbeResult, + StallOrCollisionError | OverpressureError, + ] ): """The model for a full `tryLiquidProbe` command.""" diff --git a/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py b/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py index c9661512aaa..14a269bf300 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py +++ b/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py @@ -49,6 +49,7 @@ from opentrons.protocol_engine.execution import ( MovementHandler, PipettingHandler, + GantryMover, ) from opentrons.protocol_engine.resources.model_utils import ModelUtils @@ -106,6 +107,7 @@ def subject( implementation_type: EitherImplementationType, state_view: StateView, movement: MovementHandler, + gantry_mover: GantryMover, pipetting: PipettingHandler, model_utils: ModelUtils, ) -> Union[LiquidProbeImplementation, TryLiquidProbeImplementation]: @@ -114,6 +116,7 @@ def subject( state_view=state_view, pipetting=pipetting, movement=movement, + gantry_mover=gantry_mover, model_utils=model_utils, ) @@ -317,7 +320,6 @@ async def test_liquid_not_found_error( operation_volume=None, ), ).then_return(position) - decoy.when( await pipetting.liquid_probe_in_place( pipette_id=pipette_id, From 3d78c1f4fff687ac2363739a4804423d48319c5b Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Thu, 30 Jan 2025 17:33:58 -0500 Subject: [PATCH 36/81] feat(api): Addition of Evotip specific commands (#17351) Covers EXEC-907 Introduces Evotip (or resin-tip) specific commands to the instrument context. These commands achieve the desired sealing, pressurization and unsealing steps for a resin tip protocol. --- api/src/opentrons/hardware_control/api.py | 6 +- api/src/opentrons/hardware_control/ot3api.py | 26 +- .../protocols/liquid_handler.py | 5 +- .../protocols/motion_controller.py | 1 + api/src/opentrons/legacy_commands/commands.py | 37 ++ api/src/opentrons/legacy_commands/types.py | 39 +++ .../protocol_api/core/engine/instrument.py | 109 ++++++ .../opentrons/protocol_api/core/instrument.py | 27 ++ .../core/legacy/legacy_instrument_core.py | 50 +++ .../legacy_instrument_core.py | 24 ++ .../protocol_api/instrument_context.py | 141 ++++++++ .../protocol_engine/commands/__init__.py | 40 +++ .../commands/command_unions.py | 39 +++ .../commands/evotip_dispense.py | 156 +++++++++ .../commands/evotip_seal_pipette.py | 331 ++++++++++++++++++ .../commands/evotip_unseal_pipette.py | 160 +++++++++ .../protocol_engine/errors/__init__.py | 2 + .../protocol_engine/errors/exceptions.py | 13 + .../protocol_engine/execution/gantry_mover.py | 5 + .../protocol_engine/execution/tip_handler.py | 39 ++- .../resources/labware_validation.py | 5 + .../protocol_engine/state/pipettes.py | 5 + .../hardware_control/test_ot3_api.py | 8 +- .../commands/test_evotip_dispense.py | 133 +++++++ .../commands/test_evotip_seal_pipette.py | 300 ++++++++++++++++ .../commands/test_evotip_unseal_pipette.py | 330 +++++++++++++++++ .../execution/test_gantry_mover.py | 4 +- .../execution/test_tip_handler.py | 4 +- .../gripper_assembly_qc_ot3/test_mount.py | 4 +- .../robot_assembly_qc_ot3/test_instruments.py | 4 +- .../production_qc/z_stage_qc_ot3.py | 2 +- shared-data/command/schemas/11.json | 226 ++++++++++++ .../3/evotips_opentrons_96_labware/1.json | 14 + 33 files changed, 2260 insertions(+), 29 deletions(-) create mode 100644 api/src/opentrons/protocol_engine/commands/evotip_dispense.py create mode 100644 api/src/opentrons/protocol_engine/commands/evotip_seal_pipette.py create mode 100644 api/src/opentrons/protocol_engine/commands/evotip_unseal_pipette.py create mode 100644 api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py create mode 100644 api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py create mode 100644 api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py diff --git a/api/src/opentrons/hardware_control/api.py b/api/src/opentrons/hardware_control/api.py index c52fae64131..175c89dda7e 100644 --- a/api/src/opentrons/hardware_control/api.py +++ b/api/src/opentrons/hardware_control/api.py @@ -778,6 +778,7 @@ async def move_axes( position: Mapping[Axis, float], speed: Optional[float] = None, max_speeds: Optional[Dict[Axis, float]] = None, + expect_stalls: bool = False, ) -> None: """Moves the effectors of the specified axis to the specified position. The effector of the x,y axis is the center of the carriage. @@ -1248,7 +1249,10 @@ async def pick_up_tip( await self.prepare_for_aspirate(mount) async def tip_drop_moves( - self, mount: top_types.Mount, home_after: bool = True + self, + mount: top_types.Mount, + home_after: bool = True, + ignore_plunger: bool = False, ) -> None: spec, _ = self.plan_check_drop_tip(mount, home_after) diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index 6295757e7ab..038843e23ac 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -1189,7 +1189,7 @@ async def move_to( speed: Optional[float] = None, critical_point: Optional[CriticalPoint] = None, max_speeds: Union[None, Dict[Axis, float], OT3AxisMap[float]] = None, - _expect_stalls: bool = False, + expect_stalls: bool = False, ) -> None: """Move the critical point of the specified mount to a location relative to the deck, at the specified speed.""" @@ -1233,7 +1233,7 @@ async def move_to( target_position, speed=speed, max_speeds=checked_max, - expect_stalls=_expect_stalls, + expect_stalls=expect_stalls, ) async def move_axes( # noqa: C901 @@ -1241,6 +1241,7 @@ async def move_axes( # noqa: C901 position: Mapping[Axis, float], speed: Optional[float] = None, max_speeds: Optional[Dict[Axis, float]] = None, + expect_stalls: bool = False, ) -> None: """Moves the effectors of the specified axis to the specified position. The effector of the x,y axis is the center of the carriage. @@ -1296,7 +1297,11 @@ async def move_axes( # noqa: C901 if axis not in absolute_positions: absolute_positions[axis] = position_value - await self._move(target_position=absolute_positions, speed=speed) + await self._move( + target_position=absolute_positions, + speed=speed, + expect_stalls=expect_stalls, + ) async def move_rel( self, @@ -1306,7 +1311,7 @@ async def move_rel( max_speeds: Union[None, Dict[Axis, float], OT3AxisMap[float]] = None, check_bounds: MotionChecks = MotionChecks.NONE, fail_on_not_homed: bool = False, - _expect_stalls: bool = False, + expect_stalls: bool = False, ) -> None: """Move the critical point of the specified mount by a specified displacement in a specified direction, at the specified speed.""" @@ -1348,7 +1353,7 @@ async def move_rel( speed=speed, max_speeds=checked_max, check_bounds=check_bounds, - expect_stalls=_expect_stalls, + expect_stalls=expect_stalls, ) async def _cache_and_maybe_retract_mount(self, mount: OT3Mount) -> None: @@ -2320,11 +2325,16 @@ def set_working_volume( instrument.working_volume = tip_volume async def tip_drop_moves( - self, mount: Union[top_types.Mount, OT3Mount], home_after: bool = False + self, + mount: Union[top_types.Mount, OT3Mount], + home_after: bool = False, + ignore_plunger: bool = False, ) -> None: realmount = OT3Mount.from_mount(mount) - - await self._move_to_plunger_bottom(realmount, rate=1.0, check_current_vol=False) + if ignore_plunger is False: + await self._move_to_plunger_bottom( + realmount, rate=1.0, check_current_vol=False + ) if self.gantry_load == GantryLoad.HIGH_THROUGHPUT: spec = self._pipette_handler.plan_ht_drop_tip() diff --git a/api/src/opentrons/hardware_control/protocols/liquid_handler.py b/api/src/opentrons/hardware_control/protocols/liquid_handler.py index 2aea15bd55b..090b7dfec93 100644 --- a/api/src/opentrons/hardware_control/protocols/liquid_handler.py +++ b/api/src/opentrons/hardware_control/protocols/liquid_handler.py @@ -183,7 +183,10 @@ async def pick_up_tip( ... async def tip_drop_moves( - self, mount: MountArgType, home_after: bool = True + self, + mount: MountArgType, + home_after: bool = True, + ignore_plunger: bool = False, ) -> None: ... diff --git a/api/src/opentrons/hardware_control/protocols/motion_controller.py b/api/src/opentrons/hardware_control/protocols/motion_controller.py index e95a9d2e24f..77f78506506 100644 --- a/api/src/opentrons/hardware_control/protocols/motion_controller.py +++ b/api/src/opentrons/hardware_control/protocols/motion_controller.py @@ -171,6 +171,7 @@ async def move_axes( position: Mapping[Axis, float], speed: Optional[float] = None, max_speeds: Optional[Dict[Axis, float]] = None, + expect_stalls: bool = False, ) -> None: """Moves the effectors of the specified axis to the specified position. The effector of the x,y axis is the center of the carriage. diff --git a/api/src/opentrons/legacy_commands/commands.py b/api/src/opentrons/legacy_commands/commands.py index 68b6f1a0595..fbbb14d7fc4 100755 --- a/api/src/opentrons/legacy_commands/commands.py +++ b/api/src/opentrons/legacy_commands/commands.py @@ -299,3 +299,40 @@ def move_to_disposal_location( "name": command_types.MOVE_TO_DISPOSAL_LOCATION, "payload": {"instrument": instrument, "location": location, "text": text}, } + + +def seal( + instrument: InstrumentContext, + location: Well, +) -> command_types.SealCommand: + location_text = stringify_location(location) + text = f"Sealing to {location_text}" + return { + "name": command_types.SEAL, + "payload": {"instrument": instrument, "location": location, "text": text}, + } + + +def unseal( + instrument: InstrumentContext, + location: Well, +) -> command_types.UnsealCommand: + location_text = stringify_location(location) + text = f"Unsealing from {location_text}" + return { + "name": command_types.UNSEAL, + "payload": {"instrument": instrument, "location": location, "text": text}, + } + + +def resin_tip_dispense( + instrument: InstrumentContext, + flow_rate: float | None, +) -> command_types.PressurizeCommand: + if flow_rate is None: + flow_rate = 10 # The Protocol Engine default for Resin Tip Dispense + text = f"Pressurize pipette to dispense from resin tip at {flow_rate}uL/s." + return { + "name": command_types.PRESSURIZE, + "payload": {"instrument": instrument, "text": text}, + } diff --git a/api/src/opentrons/legacy_commands/types.py b/api/src/opentrons/legacy_commands/types.py index 5aaa72b8e09..61302985c2c 100755 --- a/api/src/opentrons/legacy_commands/types.py +++ b/api/src/opentrons/legacy_commands/types.py @@ -43,6 +43,10 @@ RETURN_TIP: Final = "command.RETURN_TIP" MOVE_TO: Final = "command.MOVE_TO" MOVE_TO_DISPOSAL_LOCATION: Final = "command.MOVE_TO_DISPOSAL_LOCATION" +SEAL: Final = "command.SEAL" +UNSEAL: Final = "command.UNSEAL" +PRESSURIZE: Final = "command.PRESSURIZE" + # Modules # @@ -535,11 +539,40 @@ class MoveLabwareCommandPayload(TextOnlyPayload): pass +class SealCommandPayload(TextOnlyPayload): + instrument: InstrumentContext + location: Union[None, Location, Well] + + +class UnsealCommandPayload(TextOnlyPayload): + instrument: InstrumentContext + location: Union[None, Location, Well] + + +class PressurizeCommandPayload(TextOnlyPayload): + instrument: InstrumentContext + + class MoveLabwareCommand(TypedDict): name: Literal["command.MOVE_LABWARE"] payload: MoveLabwareCommandPayload +class SealCommand(TypedDict): + name: Literal["command.SEAL"] + payload: SealCommandPayload + + +class UnsealCommand(TypedDict): + name: Literal["command.UNSEAL"] + payload: UnsealCommandPayload + + +class PressurizeCommand(TypedDict): + name: Literal["command.PRESSURIZE"] + payload: PressurizeCommandPayload + + Command = Union[ DropTipCommand, DropTipInDisposalLocationCommand, @@ -588,6 +621,9 @@ class MoveLabwareCommand(TypedDict): MoveToCommand, MoveToDisposalLocationCommand, MoveLabwareCommand, + SealCommand, + UnsealCommand, + PressurizeCommand, ] @@ -637,6 +673,9 @@ class MoveLabwareCommand(TypedDict): MoveToCommandPayload, MoveToDisposalLocationCommandPayload, MoveLabwareCommandPayload, + SealCommandPayload, + UnsealCommandPayload, + PressurizeCommandPayload, ] diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index 010f3110fdb..cd6548202ff 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -48,6 +48,8 @@ from opentrons.protocol_api._liquid import LiquidClass _DISPENSE_VOLUME_VALIDATION_ADDED_IN = APIVersion(2, 17) +_RESIN_TIP_DEFAULT_VOLUME = 400 +_RESIN_TIP_DEFAULT_FLOW_RATE = 10.0 class InstrumentCore(AbstractInstrument[WellCore]): @@ -678,6 +680,113 @@ def move_to( location=location, mount=self.get_mount() ) + def resin_tip_seal( + self, location: Location, well_core: WellCore, in_place: Optional[bool] = False + ) -> None: + labware_id = well_core.labware_id + well_name = well_core.get_name() + well_location = ( + self._engine_client.state.geometry.get_relative_pick_up_tip_well_location( + labware_id=labware_id, + well_name=well_name, + absolute_point=location.point, + ) + ) + + self._engine_client.execute_command( + cmd.EvotipSealPipetteParams( + pipetteId=self._pipette_id, + labwareId=labware_id, + wellName=well_name, + wellLocation=well_location, + ) + ) + + def resin_tip_unseal(self, location: Location, well_core: WellCore) -> None: + well_name = well_core.get_name() + labware_id = well_core.labware_id + + if location is not None: + relative_well_location = ( + self._engine_client.state.geometry.get_relative_well_location( + labware_id=labware_id, + well_name=well_name, + absolute_point=location.point, + ) + ) + + well_location = DropTipWellLocation( + origin=DropTipWellOrigin(relative_well_location.origin.value), + offset=relative_well_location.offset, + ) + else: + well_location = DropTipWellLocation() + + pipette_movement_conflict.check_safe_for_pipette_movement( + engine_state=self._engine_client.state, + pipette_id=self._pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + ) + self._engine_client.execute_command( + cmd.EvotipUnsealPipetteParams( + pipetteId=self._pipette_id, + labwareId=labware_id, + wellName=well_name, + wellLocation=well_location, + ) + ) + + self._protocol_core.set_last_location(location=location, mount=self.get_mount()) + + def resin_tip_dispense( + self, + location: Location, + well_core: WellCore, + volume: Optional[float] = None, + flow_rate: Optional[float] = None, + ) -> None: + """ + Args: + volume: The volume of liquid to dispense, in microliters. Defaults to 400uL. + location: The exact location to dispense to. + well_core: The well to dispense to, if applicable. + flow_rate: The flow rate in µL/s to dispense at. Defaults to 10.0uL/S. + """ + if isinstance(location, (TrashBin, WasteChute)): + raise ValueError("Trash Bin and Waste Chute have no Wells.") + well_name = well_core.get_name() + labware_id = well_core.labware_id + if volume is None: + volume = _RESIN_TIP_DEFAULT_VOLUME + if flow_rate is None: + flow_rate = _RESIN_TIP_DEFAULT_FLOW_RATE + + well_location = self._engine_client.state.geometry.get_relative_liquid_handling_well_location( + labware_id=labware_id, + well_name=well_name, + absolute_point=location.point, + is_meniscus=None, + ) + pipette_movement_conflict.check_safe_for_pipette_movement( + engine_state=self._engine_client.state, + pipette_id=self._pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + ) + self._engine_client.execute_command( + cmd.EvotipDispenseParams( + pipetteId=self._pipette_id, + labwareId=labware_id, + wellName=well_name, + wellLocation=well_location, + volume=volume, + flowRate=flow_rate, + ) + ) + def get_mount(self) -> Mount: """Get the mount the pipette is attached to.""" return self._engine_client.state.pipettes.get( diff --git a/api/src/opentrons/protocol_api/core/instrument.py b/api/src/opentrons/protocol_api/core/instrument.py index bc1ec3669df..7f0fa4d72a7 100644 --- a/api/src/opentrons/protocol_api/core/instrument.py +++ b/api/src/opentrons/protocol_api/core/instrument.py @@ -180,6 +180,33 @@ def move_to( ) -> None: ... + @abstractmethod + def resin_tip_seal( + self, + location: types.Location, + well_core: WellCoreType, + in_place: Optional[bool] = False, + ) -> None: + ... + + @abstractmethod + def resin_tip_unseal( + self, + location: types.Location, + well_core: WellCoreType, + ) -> None: + ... + + @abstractmethod + def resin_tip_dispense( + self, + location: types.Location, + well_core: WellCoreType, + volume: Optional[float] = None, + flow_rate: Optional[float] = None, + ) -> None: + ... + @abstractmethod def get_mount(self) -> types.Mount: ... diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py index d2d25051d49..20d0b862e53 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py @@ -308,6 +308,30 @@ def drop_tip_in_disposal_location( ) -> None: raise APIVersionError(api_element="Dropping tips in a trash bin or waste chute") + def resin_tip_seal( + self, + location: types.Location, + well_core: WellCore, + in_place: Optional[bool] = False, + ) -> None: + raise APIVersionError(api_element="Sealing resin tips.") + + def resin_tip_unseal( + self, + location: types.Location, + well_core: WellCore, + ) -> None: + raise APIVersionError(api_element="Unsealing resin tips.") + + def resin_tip_dispense( + self, + location: types.Location, + well_core: WellCore, + volume: Optional[float] = None, + flow_rate: Optional[float] = None, + ) -> None: + raise APIVersionError(api_element="Dispensing liquid from resin tips.") + def home(self) -> None: """Home the mount""" self._protocol_interface.get_hardware().home_z( @@ -400,6 +424,32 @@ def move_to( location=location, mount=location_cache_mount ) + def evotip_seal( + self, + location: types.Location, + well_core: LegacyWellCore, + in_place: Optional[bool] = False, + ) -> None: + """This will never be called because it was added in API 2.22.""" + assert False, "evotip_seal only supported in API 2.22 & later" + + def evotip_unseal( + self, location: types.Location, well_core: WellCore, home_after: Optional[bool] + ) -> None: + """This will never be called because it was added in API 2.22.""" + assert False, "evotip_unseal only supported in API 2.22 & later" + + def evotip_dispense( + self, + location: types.Location, + well_core: WellCore, + volume: Optional[float] = None, + flow_rate: Optional[float] = None, + push_out: Optional[float] = None, + ) -> None: + """This will never be called because it was added in API 2.22.""" + assert False, "evotip_dispense only supported in API 2.22 & later" + def get_mount(self) -> types.Mount: """Get the mount this pipette is attached to.""" return self._mount diff --git a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py index ec194874528..54c43a90f8c 100644 --- a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py @@ -276,6 +276,30 @@ def drop_tip_in_disposal_location( ) -> None: raise APIVersionError(api_element="Dropping tips in a trash bin or waste chute") + def resin_tip_seal( + self, + location: types.Location, + well_core: WellCore, + in_place: Optional[bool] = False, + ) -> None: + raise APIVersionError(api_element="Sealing resin tips.") + + def resin_tip_unseal( + self, + location: types.Location, + well_core: WellCore, + ) -> None: + raise APIVersionError(api_element="Unsealing resin tips.") + + def resin_tip_dispense( + self, + location: types.Location, + well_core: WellCore, + volume: Optional[float] = None, + flow_rate: Optional[float] = None, + ) -> None: + raise APIVersionError(api_element="Dispensing liquid from resin tips.") + def home(self) -> None: self._protocol_interface.set_last_location(None) diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 9c6338270c7..bc2e072b671 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -1712,6 +1712,147 @@ def move_to( return self + @requires_version(2, 22) + def resin_tip_seal( + self, + location: Union[labware.Well, labware.Labware], + ) -> InstrumentContext: + """Seal resin tips onto the pipette. + + The location provided should contain resin tips. Sealing the + tip will perform a `pick up` action but there will be no tip tracking + associated with the pipette. + + :param location: A location containing resin tips, must be a Labware or a Well. + + :type location: :py:class:`~.types.Location` + """ + if isinstance(location, labware.Labware): + well = location.wells()[0] + else: + well = location + + with publisher.publish_context( + broker=self.broker, + command=cmds.seal( + instrument=self, + location=well, + ), + ): + self._core.resin_tip_seal( + location=well.top(), well_core=well._core, in_place=False + ) + return self + + @requires_version(2, 22) + def resin_tip_unseal( + self, + location: Union[labware.Well, labware.Labware], + ) -> InstrumentContext: + """Release resin tips from the pipette. + + The location provided should be a valid location to drop resin tips. + + :param location: A location containing that can accept tips. + + :type location: :py:class:`~.types.Location` + + :param home_after: + Whether to home the pipette after dropping the tip. If not specified + defaults to ``True`` on a Flex. The plunger will not home on an unseal. + + When ``False``, the pipette does not home its plunger. This can save a few + seconds, but is not recommended. Homing helps the robot track the pipette's + position. + + """ + if isinstance(location, labware.Labware): + well = location.wells()[0] + else: + well = location + + with publisher.publish_context( + broker=self.broker, + command=cmds.unseal( + instrument=self, + location=well, + ), + ): + self._core.resin_tip_unseal(location=well.top(), well_core=well._core) + + return self + + @requires_version(2, 22) + def resin_tip_dispense( + self, + location: types.Location, + volume: Optional[float] = None, + rate: Optional[float] = None, + ) -> InstrumentContext: + """Dispense a volume from resin tips into a labware. + + The location provided should contain resin tips labware as well as a + receptical for dispensed liquid. Dispensing from tip will perform a + `dispense` action of the specified volume at a desired flow rate. + + :param location: A location containing resin tips. + :type location: :py:class:`~.types.Location` + + :param volume: Will default to maximum, recommended to use the default. + The volume, in µL, that the pipette will prepare to handle. + :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`. + :type rate: float + + """ + well: Optional[labware.Well] = None + last_location = self._get_last_location_by_api_version() + + try: + target = validation.validate_location( + location=location, last_location=last_location + ) + except validation.NoLocationError as e: + raise RuntimeError( + "If dispense is called without an explicit location, another" + " method that moves to a location (such as move_to or " + "aspirate) must previously have been called so the robot " + "knows where it is." + ) from e + + if isinstance(target, validation.WellTarget): + well = target.well + if target.location: + move_to_location = target.location + elif well.parent._core.is_fixed_trash(): + move_to_location = target.well.top() + else: + move_to_location = target.well.bottom( + z=self._well_bottom_clearances.dispense + ) + else: + raise RuntimeError( + "A well must be specified when using `resin_tip_dispense`." + ) + + with publisher.publish_context( + broker=self.broker, + command=cmds.resin_tip_dispense( + instrument=self, + flow_rate=rate, + ), + ): + self._core.resin_tip_dispense( + move_to_location, + well_core=well._core, + volume=volume, + flow_rate=rate, + ) + return self + @requires_version(2, 18) def _retract( self, diff --git a/api/src/opentrons/protocol_engine/commands/__init__.py b/api/src/opentrons/protocol_engine/commands/__init__.py index 4ad91012b11..6f6c08c35e3 100644 --- a/api/src/opentrons/protocol_engine/commands/__init__.py +++ b/api/src/opentrons/protocol_engine/commands/__init__.py @@ -380,6 +380,28 @@ TryLiquidProbeCommandType, ) +from .evotip_seal_pipette import ( + EvotipSealPipette, + EvotipSealPipetteParams, + EvotipSealPipetteCreate, + EvotipSealPipetteResult, + EvotipSealPipetteCommandType, +) +from .evotip_unseal_pipette import ( + EvotipUnsealPipette, + EvotipUnsealPipetteParams, + EvotipUnsealPipetteCreate, + EvotipUnsealPipetteResult, + EvotipUnsealPipetteCommandType, +) +from .evotip_dispense import ( + EvotipDispense, + EvotipDispenseParams, + EvotipDispenseCreate, + EvotipDispenseResult, + EvotipDispenseCommandType, +) + __all__ = [ # command type unions "Command", @@ -670,4 +692,22 @@ "TryLiquidProbeCreate", "TryLiquidProbeResult", "TryLiquidProbeCommandType", + # evotip seal command bundle + "EvotipSealPipette", + "EvotipSealPipetteParams", + "EvotipSealPipetteCreate", + "EvotipSealPipetteResult", + "EvotipSealPipetteCommandType", + # evotip unseal command bundle + "EvotipUnsealPipette", + "EvotipUnsealPipetteParams", + "EvotipUnsealPipetteCreate", + "EvotipUnsealPipetteResult", + "EvotipUnsealPipetteCommandType", + # evotip dispense command bundle + "EvotipDispense", + "EvotipDispenseParams", + "EvotipDispenseCreate", + "EvotipDispenseResult", + "EvotipDispenseCommandType", ] diff --git a/api/src/opentrons/protocol_engine/commands/command_unions.py b/api/src/opentrons/protocol_engine/commands/command_unions.py index b04b381ae6b..d5d1b0a3fc9 100644 --- a/api/src/opentrons/protocol_engine/commands/command_unions.py +++ b/api/src/opentrons/protocol_engine/commands/command_unions.py @@ -360,6 +360,30 @@ TryLiquidProbeCommandType, ) +from .evotip_seal_pipette import ( + EvotipSealPipette, + EvotipSealPipetteParams, + EvotipSealPipetteCreate, + EvotipSealPipetteResult, + EvotipSealPipetteCommandType, +) + +from .evotip_dispense import ( + EvotipDispense, + EvotipDispenseParams, + EvotipDispenseCreate, + EvotipDispenseResult, + EvotipDispenseCommandType, +) + +from .evotip_unseal_pipette import ( + EvotipUnsealPipette, + EvotipUnsealPipetteParams, + EvotipUnsealPipetteCreate, + EvotipUnsealPipetteResult, + EvotipUnsealPipetteCommandType, +) + Command = Annotated[ Union[ AirGapInPlace, @@ -404,6 +428,9 @@ GetNextTip, LiquidProbe, TryLiquidProbe, + EvotipSealPipette, + EvotipDispense, + EvotipUnsealPipette, heater_shaker.WaitForTemperature, heater_shaker.SetTargetTemperature, heater_shaker.DeactivateHeater, @@ -492,6 +519,9 @@ GetNextTipParams, LiquidProbeParams, TryLiquidProbeParams, + EvotipSealPipetteParams, + EvotipDispenseParams, + EvotipUnsealPipetteParams, heater_shaker.WaitForTemperatureParams, heater_shaker.SetTargetTemperatureParams, heater_shaker.DeactivateHeaterParams, @@ -578,6 +608,9 @@ GetNextTipCommandType, LiquidProbeCommandType, TryLiquidProbeCommandType, + EvotipSealPipetteCommandType, + EvotipDispenseCommandType, + EvotipUnsealPipetteCommandType, heater_shaker.WaitForTemperatureCommandType, heater_shaker.SetTargetTemperatureCommandType, heater_shaker.DeactivateHeaterCommandType, @@ -665,6 +698,9 @@ GetNextTipCreate, LiquidProbeCreate, TryLiquidProbeCreate, + EvotipSealPipetteCreate, + EvotipDispenseCreate, + EvotipUnsealPipetteCreate, heater_shaker.WaitForTemperatureCreate, heater_shaker.SetTargetTemperatureCreate, heater_shaker.DeactivateHeaterCreate, @@ -760,6 +796,9 @@ GetNextTipResult, LiquidProbeResult, TryLiquidProbeResult, + EvotipSealPipetteResult, + EvotipDispenseResult, + EvotipUnsealPipetteResult, heater_shaker.WaitForTemperatureResult, heater_shaker.SetTargetTemperatureResult, heater_shaker.DeactivateHeaterResult, diff --git a/api/src/opentrons/protocol_engine/commands/evotip_dispense.py b/api/src/opentrons/protocol_engine/commands/evotip_dispense.py new file mode 100644 index 00000000000..e0053262295 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/evotip_dispense.py @@ -0,0 +1,156 @@ +"""Evotip Dispense-in-place command request, result, and implementation models.""" + +from __future__ import annotations +from typing import TYPE_CHECKING, Optional, Type, Union +from typing_extensions import Literal + +from opentrons.protocol_engine.errors import UnsupportedLabwareForActionError +from .pipetting_common import ( + PipetteIdMixin, + FlowRateMixin, + DispenseVolumeMixin, + BaseLiquidHandlingResult, + dispense_in_place, +) +from .movement_common import ( + LiquidHandlingWellLocationMixin, + StallOrCollisionError, + move_to_well, +) + +from .command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + SuccessData, + DefinedErrorData, +) +from ..state.update_types import StateUpdate +from ..resources import labware_validation +from ..errors import ProtocolEngineError + +if TYPE_CHECKING: + from ..execution import PipettingHandler, GantryMover, MovementHandler + from ..resources import ModelUtils + from ..state.state import StateView + + +EvotipDispenseCommandType = Literal["evotipDispense"] + + +class EvotipDispenseParams( + PipetteIdMixin, DispenseVolumeMixin, FlowRateMixin, LiquidHandlingWellLocationMixin +): + """Payload required to dispense in place.""" + + pass + + +class EvotipDispenseResult(BaseLiquidHandlingResult): + """Result data from the execution of a DispenseInPlace command.""" + + pass + + +_ExecuteReturn = Union[ + SuccessData[EvotipDispenseResult], + DefinedErrorData[StallOrCollisionError], +] + + +class EvotipDispenseImplementation( + AbstractCommandImpl[EvotipDispenseParams, _ExecuteReturn] +): + """DispenseInPlace command implementation.""" + + def __init__( + self, + pipetting: PipettingHandler, + state_view: StateView, + gantry_mover: GantryMover, + model_utils: ModelUtils, + movement: MovementHandler, + **kwargs: object, + ) -> None: + self._pipetting = pipetting + self._state_view = state_view + self._gantry_mover = gantry_mover + self._model_utils = model_utils + self._movement = movement + + async def execute(self, params: EvotipDispenseParams) -> _ExecuteReturn: + """Move to and dispense to the requested well.""" + well_location = params.wellLocation + labware_id = params.labwareId + well_name = params.wellName + + labware_definition = self._state_view.labware.get_definition(params.labwareId) + if not labware_validation.is_evotips(labware_definition.parameters.loadName): + raise UnsupportedLabwareForActionError( + f"Cannot use command: `EvotipDispense` with labware: {labware_definition.parameters.loadName}" + ) + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, + pipette_id=params.pipetteId, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + ) + if isinstance(move_result, DefinedErrorData): + return move_result + + current_position = await self._gantry_mover.get_position(params.pipetteId) + result = await dispense_in_place( + pipette_id=params.pipetteId, + volume=params.volume, + flow_rate=params.flowRate, + push_out=None, + location_if_error={ + "retryLocation": ( + current_position.x, + current_position.y, + current_position.z, + ) + }, + pipetting=self._pipetting, + model_utils=self._model_utils, + ) + if isinstance(result, DefinedErrorData): + # TODO (chb, 2025-01-29): Remove this and the OverpressureError returns once disabled for this function + raise ProtocolEngineError( + message="Overpressure Error during Resin Tip Dispense Command." + ) + return SuccessData( + public=EvotipDispenseResult(volume=result.public.volume), + state_update=StateUpdate.reduce( + move_result.state_update, result.state_update + ), + ) + + +class EvotipDispense( + BaseCommand[ + EvotipDispenseParams, + EvotipDispenseResult, + StallOrCollisionError, + ] +): + """DispenseInPlace command model.""" + + commandType: EvotipDispenseCommandType = "evotipDispense" + params: EvotipDispenseParams + result: Optional[EvotipDispenseResult] = None + + _ImplementationCls: Type[ + EvotipDispenseImplementation + ] = EvotipDispenseImplementation + + +class EvotipDispenseCreate(BaseCommandCreate[EvotipDispenseParams]): + """DispenseInPlace command request model.""" + + commandType: EvotipDispenseCommandType = "evotipDispense" + params: EvotipDispenseParams + + _CommandCls: Type[EvotipDispense] = EvotipDispense diff --git a/api/src/opentrons/protocol_engine/commands/evotip_seal_pipette.py b/api/src/opentrons/protocol_engine/commands/evotip_seal_pipette.py new file mode 100644 index 00000000000..0e67e8fc2c0 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/evotip_seal_pipette.py @@ -0,0 +1,331 @@ +"""Seal evotip resin tip command request, result, and implementation models.""" + +from __future__ import annotations +from pydantic import Field, BaseModel +from typing import TYPE_CHECKING, Optional, Type, Union +from opentrons.types import MountType +from opentrons.protocol_engine.types import MotorAxis +from typing_extensions import Literal + +from opentrons.protocol_engine.errors import UnsupportedLabwareForActionError +from ..resources import ModelUtils, labware_validation +from ..types import PickUpTipWellLocation, FluidKind, AspiratedFluid +from .pipetting_common import ( + PipetteIdMixin, +) +from .movement_common import ( + DestinationPositionResult, + StallOrCollisionError, + move_to_well, +) +from .command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + DefinedErrorData, + SuccessData, +) + +from opentrons.hardware_control import HardwareControlAPI +from opentrons.hardware_control.types import Axis +from ..state.update_types import StateUpdate + +if TYPE_CHECKING: + from ..state.state import StateView + from ..execution import ( + MovementHandler, + TipHandler, + GantryMover, + PipettingHandler, + ) + + +EvotipSealPipetteCommandType = Literal["evotipSealPipette"] +_PREP_DISTANCE_DEFAULT = 8.25 +_PRESS_DISTANCE_DEFAULT = 3.5 +_EJECTOR_PUSH_MM_DEFAULT = 7.0 + + +class TipPickUpParams(BaseModel): + """Payload used to specify press-tip parameters for a seal command.""" + + prepDistance: float = Field( + default=0, description="The distance to move down to fit the tips on." + ) + pressDistance: float = Field( + default=0, description="The distance to press on tips." + ) + ejectorPushMm: float = Field( + default=0, + description="The distance to back off to ensure that the tip presence sensors are not triggered.", + ) + + +class EvotipSealPipetteParams(PipetteIdMixin): + """Payload needed to seal resin tips to a pipette.""" + + labwareId: str = Field(..., description="Identifier of labware to use.") + wellName: str = Field(..., description="Name of well to use in labware.") + wellLocation: PickUpTipWellLocation = Field( + default_factory=PickUpTipWellLocation, + description="Relative well location at which to pick up the tip.", + ) + tipPickUpParams: Optional[TipPickUpParams] = Field( + default=None, description="Specific parameters for " + ) + + +class EvotipSealPipetteResult(DestinationPositionResult): + """Result data from the execution of a EvotipSealPipette.""" + + tipVolume: float = Field( + 0, + description="Maximum volume of liquid that the picked up tip can hold, in µL.", + ge=0, + ) + + tipLength: float = Field( + 0, + description="The length of the tip in mm.", + ge=0, + ) + + tipDiameter: float = Field( + 0, + description="The diameter of the tip in mm.", + ge=0, + ) + + +_ExecuteReturn = Union[ + SuccessData[EvotipSealPipetteResult], + DefinedErrorData[StallOrCollisionError], +] + + +class EvotipSealPipetteImplementation( + AbstractCommandImpl[EvotipSealPipetteParams, _ExecuteReturn] +): + """Evotip seal pipette command implementation.""" + + def __init__( + self, + state_view: StateView, + tip_handler: TipHandler, + model_utils: ModelUtils, + movement: MovementHandler, + hardware_api: HardwareControlAPI, + gantry_mover: GantryMover, + pipetting: PipettingHandler, + **kwargs: object, + ) -> None: + self._state_view = state_view + self._tip_handler = tip_handler + self._model_utils = model_utils + self._movement = movement + self._gantry_mover = gantry_mover + self._pipetting = pipetting + self._hardware_api = hardware_api + + async def relative_pickup_tip( + self, + tip_pick_up_params: TipPickUpParams, + mount: MountType, + ) -> None: + """A relative press-fit pick up command using gantry moves.""" + prep_distance = tip_pick_up_params.prepDistance + press_distance = tip_pick_up_params.pressDistance + retract_distance = -1 * (prep_distance + press_distance) + + mount_axis = MotorAxis.LEFT_Z if mount == MountType.LEFT else MotorAxis.RIGHT_Z + + # TODO chb, 2025-01-29): Factor out the movement constants and relocate this logic into the hardware controller + await self._gantry_mover.move_axes( + axis_map={mount_axis: prep_distance}, speed=10, relative_move=True + ) + + # Drive mount down for press-fit + await self._gantry_mover.move_axes( + axis_map={mount_axis: press_distance}, + speed=10.0, + relative_move=True, + expect_stalls=True, + ) + # retract cam : 11.05 + await self._gantry_mover.move_axes( + axis_map={mount_axis: retract_distance}, speed=5.5, relative_move=True + ) + + async def cam_action_relative_pickup_tip( + self, + tip_pick_up_params: TipPickUpParams, + mount: MountType, + ) -> None: + """A cam action pick up command using gantry moves.""" + prep_distance = tip_pick_up_params.prepDistance + press_distance = tip_pick_up_params.pressDistance + ejector_push_mm = tip_pick_up_params.ejectorPushMm + retract_distance = -1 * (prep_distance + press_distance) + + mount_axis = MotorAxis.LEFT_Z if mount == MountType.LEFT else MotorAxis.RIGHT_Z + + # TODO chb, 2025-01-29): Factor out the movement constants and relocate this logic into the hardware controller + await self._gantry_mover.move_axes( + axis_map={mount_axis: -6}, speed=10, relative_move=True + ) + + # Drive Q down 3mm at fast speed - look into the pick up tip fuinction to find slow and fast: 10.0 + await self._gantry_mover.move_axes( + axis_map={MotorAxis.AXIS_96_CHANNEL_CAM: prep_distance}, + speed=10.0, + relative_move=True, + ) + # 2.8mm at slow speed - cam action pickup speed: 5.5 + await self._gantry_mover.move_axes( + axis_map={MotorAxis.AXIS_96_CHANNEL_CAM: press_distance}, + speed=5.5, + relative_move=True, + ) + # retract cam : 11.05 + await self._gantry_mover.move_axes( + axis_map={MotorAxis.AXIS_96_CHANNEL_CAM: retract_distance}, + speed=5.5, + relative_move=True, + ) + + # Lower tip presence + await self._gantry_mover.move_axes( + axis_map={mount_axis: 2}, speed=10, relative_move=True + ) + await self._gantry_mover.move_axes( + axis_map={MotorAxis.AXIS_96_CHANNEL_CAM: ejector_push_mm}, + speed=5.5, + relative_move=True, + ) + await self._gantry_mover.move_axes( + axis_map={MotorAxis.AXIS_96_CHANNEL_CAM: -1 * ejector_push_mm}, + speed=5.5, + relative_move=True, + ) + + async def execute( + self, params: EvotipSealPipetteParams + ) -> Union[SuccessData[EvotipSealPipetteResult], _ExecuteReturn]: + """Move to and pick up a tip using the requested pipette.""" + pipette_id = params.pipetteId + labware_id = params.labwareId + well_name = params.wellName + + labware_definition = self._state_view.labware.get_definition(params.labwareId) + if not labware_validation.is_evotips(labware_definition.parameters.loadName): + raise UnsupportedLabwareForActionError( + f"Cannot use command: `EvotipSealPipette` with labware: {labware_definition.parameters.loadName}" + ) + + well_location = self._state_view.geometry.convert_pick_up_tip_well_location( + well_location=params.wellLocation + ) + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + ) + if isinstance(move_result, DefinedErrorData): + return move_result + + # Aspirate to move plunger to a maximum volume position per pipette type + tip_geometry = self._state_view.geometry.get_nominal_tip_geometry( + pipette_id, labware_id, well_name + ) + maximum_volume = self._state_view.pipettes.get_maximum_volume(pipette_id) + if self._state_view.pipettes.get_mount(pipette_id) == MountType.LEFT: + await self._hardware_api.home(axes=[Axis.P_L]) + else: + await self._hardware_api.home(axes=[Axis.P_R]) + + # Begin relative pickup steps for the resin tips + + channels = self._state_view.tips.get_pipette_active_channels(pipette_id) + mount = self._state_view.pipettes.get_mount(pipette_id) + tip_pick_up_params = params.tipPickUpParams + if tip_pick_up_params is None: + tip_pick_up_params = TipPickUpParams( + prepDistance=_PREP_DISTANCE_DEFAULT, + pressDistance=_PRESS_DISTANCE_DEFAULT, + ejectorPushMm=_EJECTOR_PUSH_MM_DEFAULT, + ) + + if channels != 96: + await self.relative_pickup_tip( + tip_pick_up_params=tip_pick_up_params, + mount=mount, + ) + elif channels == 96: + await self.cam_action_relative_pickup_tip( + tip_pick_up_params=tip_pick_up_params, + mount=mount, + ) + else: + tip_geometry = await self._tip_handler.pick_up_tip( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + do_not_ignore_tip_presence=True, + ) + + # cache_tip + if self._state_view.config.use_virtual_pipettes is False: + self._tip_handler.cache_tip(pipette_id, tip_geometry) + hw_instr = self._hardware_api.hardware_instruments[mount.to_hw_mount()] + if hw_instr is not None: + hw_instr.set_current_volume(maximum_volume) + + state_update = StateUpdate() + state_update.update_pipette_tip_state( + pipette_id=pipette_id, + tip_geometry=tip_geometry, + ) + + state_update.set_fluid_aspirated( + pipette_id=pipette_id, + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=maximum_volume), + ) + return SuccessData( + public=EvotipSealPipetteResult( + tipVolume=tip_geometry.volume, + tipLength=tip_geometry.length, + tipDiameter=tip_geometry.diameter, + position=move_result.public.position, + ), + state_update=state_update, + ) + + +class EvotipSealPipette( + BaseCommand[ + EvotipSealPipetteParams, + EvotipSealPipetteResult, + StallOrCollisionError, + ] +): + """Seal evotip resin tip command model.""" + + commandType: EvotipSealPipetteCommandType = "evotipSealPipette" + params: EvotipSealPipetteParams + result: Optional[EvotipSealPipetteResult] = None + + _ImplementationCls: Type[ + EvotipSealPipetteImplementation + ] = EvotipSealPipetteImplementation + + +class EvotipSealPipetteCreate(BaseCommandCreate[EvotipSealPipetteParams]): + """Seal evotip resin tip command creation request model.""" + + commandType: EvotipSealPipetteCommandType = "evotipSealPipette" + params: EvotipSealPipetteParams + + _CommandCls: Type[EvotipSealPipette] = EvotipSealPipette diff --git a/api/src/opentrons/protocol_engine/commands/evotip_unseal_pipette.py b/api/src/opentrons/protocol_engine/commands/evotip_unseal_pipette.py new file mode 100644 index 00000000000..e8cde34fd5c --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/evotip_unseal_pipette.py @@ -0,0 +1,160 @@ +"""Unseal evotip resin tip command request, result, and implementation models.""" + +from __future__ import annotations + +from pydantic import Field +from typing import TYPE_CHECKING, Optional, Type +from typing_extensions import Literal + +from opentrons.protocol_engine.resources.model_utils import ModelUtils +from opentrons.protocol_engine.errors import UnsupportedLabwareForActionError +from opentrons.protocol_engine.types import MotorAxis +from opentrons.types import MountType + +from ..types import DropTipWellLocation +from .pipetting_common import ( + PipetteIdMixin, +) +from .movement_common import ( + DestinationPositionResult, + move_to_well, + StallOrCollisionError, +) +from .command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + DefinedErrorData, + SuccessData, +) +from ..resources import labware_validation + +if TYPE_CHECKING: + from ..state.state import StateView + from ..execution import MovementHandler, TipHandler, GantryMover + + +EvotipUnsealPipetteCommandType = Literal["evotipUnsealPipette"] + + +class EvotipUnsealPipetteParams(PipetteIdMixin): + """Payload required to drop a tip in a specific well.""" + + labwareId: str = Field(..., description="Identifier of labware to use.") + wellName: str = Field(..., description="Name of well to use in labware.") + wellLocation: DropTipWellLocation = Field( + default_factory=DropTipWellLocation, + description="Relative well location at which to drop the tip.", + ) + + +class EvotipUnsealPipetteResult(DestinationPositionResult): + """Result data from the execution of a DropTip command.""" + + pass + + +_ExecuteReturn = ( + SuccessData[EvotipUnsealPipetteResult] | DefinedErrorData[StallOrCollisionError] +) + + +class EvotipUnsealPipetteImplementation( + AbstractCommandImpl[EvotipUnsealPipetteParams, _ExecuteReturn] +): + """Drop tip command implementation.""" + + def __init__( + self, + state_view: StateView, + tip_handler: TipHandler, + movement: MovementHandler, + model_utils: ModelUtils, + gantry_mover: GantryMover, + **kwargs: object, + ) -> None: + self._state_view = state_view + self._tip_handler = tip_handler + self._movement_handler = movement + self._model_utils = model_utils + self._gantry_mover = gantry_mover + + async def execute(self, params: EvotipUnsealPipetteParams) -> _ExecuteReturn: + """Move to and drop a tip using the requested pipette.""" + pipette_id = params.pipetteId + labware_id = params.labwareId + well_name = params.wellName + + well_location = params.wellLocation + labware_definition = self._state_view.labware.get_definition(params.labwareId) + if not labware_validation.is_evotips(labware_definition.parameters.loadName): + raise UnsupportedLabwareForActionError( + f"Cannot use command: `EvotipUnsealPipette` with labware: {labware_definition.parameters.loadName}" + ) + is_partially_configured = self._state_view.pipettes.get_is_partially_configured( + pipette_id=pipette_id + ) + tip_drop_location = self._state_view.geometry.get_checked_tip_drop_location( + pipette_id=pipette_id, + labware_id=labware_id, + well_location=well_location, + partially_configured=is_partially_configured, + ) + + move_result = await move_to_well( + movement=self._movement_handler, + model_utils=self._model_utils, + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=tip_drop_location, + ) + if isinstance(move_result, DefinedErrorData): + return move_result + + # Move to an appropriate position + mount = self._state_view.pipettes.get_mount(pipette_id) + + mount_axis = MotorAxis.LEFT_Z if mount == MountType.LEFT else MotorAxis.RIGHT_Z + await self._gantry_mover.move_axes( + axis_map={mount_axis: -14}, speed=10, relative_move=True + ) + + await self._tip_handler.drop_tip( + pipette_id=pipette_id, + home_after=None, + do_not_ignore_tip_presence=False, + ignore_plunger=True, + ) + + return SuccessData( + public=EvotipUnsealPipetteResult(position=move_result.public.position), + state_update=move_result.state_update.set_fluid_unknown( + pipette_id=pipette_id + ).update_pipette_tip_state(pipette_id=params.pipetteId, tip_geometry=None), + ) + + +class EvotipUnsealPipette( + BaseCommand[ + EvotipUnsealPipetteParams, EvotipUnsealPipetteResult, StallOrCollisionError + ] +): + """Evotip unseal command model.""" + + commandType: EvotipUnsealPipetteCommandType = "evotipUnsealPipette" + params: EvotipUnsealPipetteParams + result: Optional[EvotipUnsealPipetteResult] = None + + _ImplementationCls: Type[ + EvotipUnsealPipetteImplementation + ] = EvotipUnsealPipetteImplementation + + +class EvotipUnsealPipetteCreate(BaseCommandCreate[EvotipUnsealPipetteParams]): + """Evotip unseal command creation request model.""" + + commandType: EvotipUnsealPipetteCommandType = "evotipUnsealPipette" + params: EvotipUnsealPipetteParams + + _CommandCls: Type[EvotipUnsealPipette] = EvotipUnsealPipette diff --git a/api/src/opentrons/protocol_engine/errors/__init__.py b/api/src/opentrons/protocol_engine/errors/__init__.py index 419043120a6..d3dcc5abaac 100644 --- a/api/src/opentrons/protocol_engine/errors/__init__.py +++ b/api/src/opentrons/protocol_engine/errors/__init__.py @@ -11,6 +11,7 @@ PickUpTipTipNotAttachedError, TipAttachedError, CommandDoesNotExistError, + UnsupportedLabwareForActionError, LabwareNotLoadedError, LabwareNotLoadedOnModuleError, LabwareNotLoadedOnLabwareError, @@ -104,6 +105,7 @@ "LabwareNotLoadedOnLabwareError", "LabwareNotOnDeckError", "LiquidDoesNotExistError", + "UnsupportedLabwareForActionError", "LabwareDefinitionDoesNotExistError", "LabwareCannotBeStackedError", "LabwareCannotSitOnDeckError", diff --git a/api/src/opentrons/protocol_engine/errors/exceptions.py b/api/src/opentrons/protocol_engine/errors/exceptions.py index 2f7e4b07e56..d8c96d8dd31 100644 --- a/api/src/opentrons/protocol_engine/errors/exceptions.py +++ b/api/src/opentrons/protocol_engine/errors/exceptions.py @@ -387,6 +387,19 @@ def __init__( super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) +class UnsupportedLabwareForActionError(ProtocolEngineError): + """Raised when trying to use an unsupported labware for a command.""" + + def __init__( + self, + message: Optional[str] = None, + details: Optional[Dict[str, Any]] = None, + wrapping: Optional[Sequence[EnumeratedError]] = None, + ) -> None: + """Build a UnsupportedLabwareForActionError.""" + super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) + + class WellDoesNotExistError(ProtocolEngineError): """Raised when referencing a well that does not exist.""" diff --git a/api/src/opentrons/protocol_engine/execution/gantry_mover.py b/api/src/opentrons/protocol_engine/execution/gantry_mover.py index 5413de8741c..ca90d0a12cb 100644 --- a/api/src/opentrons/protocol_engine/execution/gantry_mover.py +++ b/api/src/opentrons/protocol_engine/execution/gantry_mover.py @@ -114,6 +114,7 @@ async def move_axes( critical_point: Optional[Dict[MotorAxis, float]] = None, speed: Optional[float] = None, relative_move: bool = False, + expect_stalls: bool = False, ) -> Dict[MotorAxis, float]: """Move a set of axes a given distance.""" ... @@ -341,6 +342,7 @@ async def move_axes( critical_point: Optional[Dict[MotorAxis, float]] = None, speed: Optional[float] = None, relative_move: bool = False, + expect_stalls: bool = False, ) -> Dict[MotorAxis, float]: """Move a set of axes a given distance. @@ -349,6 +351,7 @@ async def move_axes( critical_point: A critical point override for axes speed: Optional speed parameter for the move. relative_move: Whether the axis map needs to be converted from a relative to absolute move. + expect_stalls: Whether it is expected that the move triggers a stall error. """ try: pos_hw = self._convert_axis_map_for_hw(axis_map) @@ -385,6 +388,7 @@ async def move_axes( await self._hardware_api.move_axes( position=absolute_pos, speed=speed, + expect_stalls=expect_stalls, ) except PositionUnknownError as e: @@ -588,6 +592,7 @@ async def move_axes( critical_point: Optional[Dict[MotorAxis, float]] = None, speed: Optional[float] = None, relative_move: bool = False, + expect_stalls: bool = False, ) -> Dict[MotorAxis, float]: """Move the give axes map. No-op in virtual implementation.""" mount = self.pick_mount_from_axis_map(axis_map) diff --git a/api/src/opentrons/protocol_engine/execution/tip_handler.py b/api/src/opentrons/protocol_engine/execution/tip_handler.py index 8a58536c10b..d27925e00fe 100644 --- a/api/src/opentrons/protocol_engine/execution/tip_handler.py +++ b/api/src/opentrons/protocol_engine/execution/tip_handler.py @@ -62,6 +62,7 @@ async def pick_up_tip( pipette_id: str, labware_id: str, well_name: str, + do_not_ignore_tip_presence: bool = True, ) -> TipGeometry: """Pick up the named tip. @@ -75,7 +76,13 @@ async def pick_up_tip( """ ... - async def drop_tip(self, pipette_id: str, home_after: Optional[bool]) -> None: + async def drop_tip( + self, + pipette_id: str, + home_after: Optional[bool], + do_not_ignore_tip_presence: bool = True, + ignore_plunger: bool = False, + ) -> None: """Drop the attached tip into the current location. Pipette should be in place over the destination prior to calling this method. @@ -230,6 +237,7 @@ async def pick_up_tip( pipette_id: str, labware_id: str, well_name: str, + do_not_ignore_tip_presence: bool = True, ) -> TipGeometry: """See documentation on abstract base class.""" hw_mount = self._get_hw_mount(pipette_id) @@ -253,10 +261,11 @@ async def pick_up_tip( await self._hardware_api.tip_pickup_moves( mount=hw_mount, presses=None, increment=None ) - try: - await self.verify_tip_presence(pipette_id, TipPresenceStatus.PRESENT) - except TipNotAttachedError as e: - raise PickUpTipTipNotAttachedError(tip_geometry=tip_geometry) from e + if do_not_ignore_tip_presence: + try: + await self.verify_tip_presence(pipette_id, TipPresenceStatus.PRESENT) + except TipNotAttachedError as e: + raise PickUpTipTipNotAttachedError(tip_geometry=tip_geometry) from e self.cache_tip(pipette_id, tip_geometry) @@ -264,7 +273,13 @@ async def pick_up_tip( return tip_geometry - async def drop_tip(self, pipette_id: str, home_after: Optional[bool]) -> None: + async def drop_tip( + self, + pipette_id: str, + home_after: Optional[bool], + do_not_ignore_tip_presence: bool = True, + ignore_plunger: bool = False, + ) -> None: """See documentation on abstract base class.""" hw_mount = self._get_hw_mount(pipette_id) @@ -275,10 +290,13 @@ async def drop_tip(self, pipette_id: str, home_after: Optional[bool]) -> None: else: kwargs = {} - await self._hardware_api.tip_drop_moves(mount=hw_mount, **kwargs) + await self._hardware_api.tip_drop_moves( + mount=hw_mount, ignore_plunger=ignore_plunger, **kwargs + ) - # Allow TipNotAttachedError to propagate. - await self.verify_tip_presence(pipette_id, TipPresenceStatus.ABSENT) + if do_not_ignore_tip_presence: + # Allow TipNotAttachedError to propagate. + await self.verify_tip_presence(pipette_id, TipPresenceStatus.ABSENT) self.remove_tip(pipette_id) @@ -383,6 +401,7 @@ async def pick_up_tip( pipette_id: str, labware_id: str, well_name: str, + do_not_ignore_tip_presence: bool = True, ) -> TipGeometry: """Pick up a tip at the current location using a virtual pipette. @@ -424,6 +443,8 @@ async def drop_tip( self, pipette_id: str, home_after: Optional[bool], + do_not_ignore_tip_presence: bool = True, + ignore_plunger: bool = False, ) -> None: """Pick up a tip at the current location using a virtual pipette. diff --git a/api/src/opentrons/protocol_engine/resources/labware_validation.py b/api/src/opentrons/protocol_engine/resources/labware_validation.py index 451f3afbfab..b33650e65be 100644 --- a/api/src/opentrons/protocol_engine/resources/labware_validation.py +++ b/api/src/opentrons/protocol_engine/resources/labware_validation.py @@ -14,6 +14,11 @@ def is_absorbance_reader_lid(load_name: str) -> bool: return load_name == "opentrons_flex_lid_absorbance_plate_reader_module" +def is_evotips(load_name: str) -> bool: + """Check if a labware is an evotips tiprack.""" + return load_name == "evotips_opentrons_96_labware" + + def validate_definition_is_labware(definition: LabwareDefinition) -> bool: """Validate that one of the definition's allowed roles is `labware`. diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index 9b7d289e890..fc7b1da20ac 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -331,6 +331,11 @@ def _update_volumes(self, state_update: update_types.StateUpdate) -> None: def _update_aspirated( self, update: update_types.PipetteAspiratedFluidUpdate ) -> None: + if self._state.pipette_contents_by_id[update.pipette_id] is None: + self._state.pipette_contents_by_id[ + update.pipette_id + ] = fluid_stack.FluidStack() + self._fluid_stack_log_if_empty(update.pipette_id).add_fluid(update.fluid) def _update_ejected(self, update: update_types.PipetteEjectedFluidUpdate) -> None: diff --git a/api/tests/opentrons/hardware_control/test_ot3_api.py b/api/tests/opentrons/hardware_control/test_ot3_api.py index 200549108db..cbb5838c266 100644 --- a/api/tests/opentrons/hardware_control/test_ot3_api.py +++ b/api/tests/opentrons/hardware_control/test_ot3_api.py @@ -1895,7 +1895,9 @@ async def test_move_axes( await ot3_hardware.move_axes(position=input_position) mock_check_motor.return_value = True - mock_move.assert_called_once_with(target_position=expected_move_pos, speed=None) + mock_move.assert_called_once_with( + target_position=expected_move_pos, speed=None, expect_stalls=False + ) async def test_move_gripper_mount_without_gripper_attached( @@ -1913,14 +1915,14 @@ async def test_move_expect_stall_flag( expected = HWStopCondition.stall if expect_stalls else HWStopCondition.none - await ot3_hardware.move_to(Mount.LEFT, Point(0, 0, 0), _expect_stalls=expect_stalls) + await ot3_hardware.move_to(Mount.LEFT, Point(0, 0, 0), expect_stalls=expect_stalls) mock_backend_move.assert_called_once() _, _, _, condition = mock_backend_move.call_args_list[0][0] assert condition == expected mock_backend_move.reset_mock() await ot3_hardware.move_rel( - Mount.LEFT, Point(10, 0, 0), _expect_stalls=expect_stalls + Mount.LEFT, Point(10, 0, 0), expect_stalls=expect_stalls ) mock_backend_move.assert_called_once() _, _, _, condition = mock_backend_move.call_args_list[0][0] diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py new file mode 100644 index 00000000000..568ddda83c1 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py @@ -0,0 +1,133 @@ +"""Test evotip dispense in place commands.""" +import json + +import pytest +from decoy import Decoy + +from opentrons.protocol_engine import ( + LiquidHandlingWellLocation, + WellOrigin, + WellOffset, + DeckPoint, +) +from opentrons.types import Point +from opentrons.protocol_engine.execution import ( + PipettingHandler, + GantryMover, + MovementHandler, +) + +from opentrons.protocols.models import LabwareDefinition +from opentrons.protocol_engine.commands.command import SuccessData +from opentrons.protocol_engine.commands.evotip_dispense import ( + EvotipDispenseParams, + EvotipDispenseResult, + EvotipDispenseImplementation, +) +from opentrons.protocol_engine.resources import ModelUtils +from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.state import update_types + +from opentrons_shared_data import load_shared_data + + +@pytest.fixture +def evotips_definition() -> LabwareDefinition: + """A fixturee of the evotips definition.""" + # TODO (chb 2025-01-29): When we migrate all labware to v3 we can clean this up + return LabwareDefinition.model_validate( + json.loads( + load_shared_data( + "labware/definitions/3/evotips_opentrons_96_labware/1.json" + ) + ) + ) + + +@pytest.fixture +def subject( + pipetting: PipettingHandler, + state_view: StateView, + gantry_mover: GantryMover, + model_utils: ModelUtils, + movement: MovementHandler, + **kwargs: object, +) -> EvotipDispenseImplementation: + """Build a command implementation.""" + return EvotipDispenseImplementation( + pipetting=pipetting, + state_view=state_view, + gantry_mover=gantry_mover, + model_utils=model_utils, + movement=movement, + ) + + +async def test_evotip_dispense_implementation( + decoy: Decoy, + movement: MovementHandler, + gantry_mover: GantryMover, + pipetting: PipettingHandler, + state_view: StateView, + subject: EvotipDispenseImplementation, + evotips_definition: LabwareDefinition, +) -> None: + """It should dispense in place.""" + well_location = LiquidHandlingWellLocation( + origin=WellOrigin.TOP, offset=WellOffset(x=0, y=0, z=0) + ) + + data = EvotipDispenseParams( + pipetteId="pipette-id-abc123", + labwareId="labware-id-abc123", + wellName="A3", + volume=100, + flowRate=456, + ) + + decoy.when( + await movement.move_to_well( + pipette_id="pipette-id-abc123", + labware_id="labware-id-abc123", + well_name="A3", + well_location=well_location, + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_return(Point(x=1, y=2, z=3)) + + decoy.when(state_view.labware.get_definition("labware-id-abc123")).then_return( + evotips_definition + ) + + decoy.when( + await pipetting.dispense_in_place( + pipette_id="pipette-id-abc123", volume=100.0, flow_rate=456.0, push_out=None + ) + ).then_return(100) + + decoy.when(await gantry_mover.get_position("pipette-id-abc123")).then_return( + Point(1, 2, 3) + ) + + result = await subject.execute(data) + + assert result == SuccessData( + public=EvotipDispenseResult(volume=100), + state_update=update_types.StateUpdate( + pipette_location=update_types.PipetteLocationUpdate( + pipette_id="pipette-id-abc123", + new_location=update_types.Well( + labware_id="labware-id-abc123", + well_name="A3", + ), + new_deck_point=DeckPoint.model_construct(x=1, y=2, z=3), + ), + pipette_aspirated_fluid=update_types.PipetteEjectedFluidUpdate( + pipette_id="pipette-id-abc123", volume=100 + ), + ), + ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py new file mode 100644 index 00000000000..3d1bbeb1406 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py @@ -0,0 +1,300 @@ +"""Test evotip seal commands.""" + +import pytest +from datetime import datetime + +from decoy import Decoy, matchers +from unittest.mock import sentinel + +from opentrons.protocols.models import LabwareDefinition + +from opentrons_shared_data.errors.exceptions import StallOrCollisionDetectedError + +from opentrons.types import MountType, Point + +from opentrons.protocol_engine import ( + WellLocation, + PickUpTipWellLocation, + WellOffset, + DeckPoint, +) +from opentrons.protocol_engine.errors import PickUpTipTipNotAttachedError +from opentrons.protocol_engine.execution import MovementHandler, GantryMover, TipHandler +from opentrons.protocol_engine.resources import ModelUtils +from opentrons.protocol_engine.state import update_types +from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.types import TipGeometry, FluidKind, AspiratedFluid + +from opentrons.protocol_engine.commands.movement_common import StallOrCollisionError +from opentrons.protocol_engine.commands.command import DefinedErrorData, SuccessData +from opentrons.protocol_engine.commands.evotip_seal_pipette import ( + EvotipSealPipetteParams, + EvotipSealPipetteResult, + EvotipSealPipetteImplementation, +) +from opentrons.protocol_engine.execution import ( + PipettingHandler, +) +from opentrons.hardware_control import HardwareControlAPI +import json +from opentrons_shared_data import load_shared_data + + +@pytest.fixture +def evotips_definition() -> LabwareDefinition: + """A fixturee of the evotips definition.""" + # TODO (chb 2025-01-29): When we migrate all labware to v3 we can clean this up + return LabwareDefinition.model_validate( + json.loads( + load_shared_data( + "labware/definitions/3/evotips_opentrons_96_labware/1.json" + ) + ) + ) + + +async def test_success( + decoy: Decoy, + state_view: StateView, + movement: MovementHandler, + tip_handler: TipHandler, + model_utils: ModelUtils, + gantry_mover: GantryMover, + evotips_definition: LabwareDefinition, + hardware_api: HardwareControlAPI, + pipetting: PipettingHandler, +) -> None: + """A PickUpTip command should have an execution implementation.""" + subject = EvotipSealPipetteImplementation( + state_view=state_view, + movement=movement, + tip_handler=tip_handler, + model_utils=model_utils, + gantry_mover=gantry_mover, + hardware_api=hardware_api, + pipetting=pipetting, + ) + + decoy.when(state_view.pipettes.get_mount("pipette-id")).then_return(MountType.LEFT) + + decoy.when( + state_view.geometry.convert_pick_up_tip_well_location( + well_location=PickUpTipWellLocation(offset=WellOffset(x=1, y=2, z=3)) + ) + ).then_return(WellLocation(offset=WellOffset(x=1, y=2, z=3))) + + decoy.when(state_view.labware.get_definition("labware-id")).then_return( + evotips_definition + ) + decoy.when( + await movement.move_to_well( + pipette_id="pipette-id", + labware_id="labware-id", + well_name="A3", + well_location=WellLocation(offset=WellOffset(x=1, y=2, z=3)), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_return(Point(x=111, y=222, z=333)) + decoy.when( + state_view.geometry.get_nominal_tip_geometry("pipette-id", "labware-id", "A3") + ).then_return(TipGeometry(length=42, diameter=5, volume=300)) + decoy.when(state_view.pipettes.get_maximum_volume("pipette-id")).then_return(1000) + + decoy.when( + await tip_handler.pick_up_tip( + pipette_id="pipette-id", + labware_id="labware-id", + well_name="A3", + ) + ).then_return(TipGeometry(length=42, diameter=5, volume=300)) + + result = await subject.execute( + EvotipSealPipetteParams( + pipetteId="pipette-id", + labwareId="labware-id", + wellName="A3", + wellLocation=PickUpTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + ) + ) + + assert result == SuccessData( + public=EvotipSealPipetteResult( + tipLength=42, + tipVolume=300, + tipDiameter=5, + position=DeckPoint(x=111, y=222, z=333), + ), + state_update=update_types.StateUpdate( + pipette_tip_state=update_types.PipetteTipStateUpdate( + pipette_id="pipette-id", + tip_geometry=TipGeometry(length=42, diameter=5, volume=300), + ), + pipette_aspirated_fluid=update_types.PipetteAspiratedFluidUpdate( + pipette_id="pipette-id", + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=1000), + ), + ), + ) + + +async def test_no_tip_physically_missing_error( + decoy: Decoy, + state_view: StateView, + movement: MovementHandler, + tip_handler: TipHandler, + model_utils: ModelUtils, + gantry_mover: GantryMover, + hardware_api: HardwareControlAPI, + pipetting: PipettingHandler, + evotips_definition: LabwareDefinition, +) -> None: + """It should not return a TipPhysicallyMissingError even though evotips do not sit high enough on the pipette to be detected by the tip sensor.""" + subject = EvotipSealPipetteImplementation( + state_view=state_view, + movement=movement, + tip_handler=tip_handler, + model_utils=model_utils, + gantry_mover=gantry_mover, + hardware_api=hardware_api, + pipetting=pipetting, + ) + + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" + error_id = "error-id" + error_created_at = datetime(1234, 5, 6) + + decoy.when( + state_view.geometry.convert_pick_up_tip_well_location( + well_location=PickUpTipWellLocation(offset=WellOffset()) + ) + ).then_return(WellLocation(offset=WellOffset())) + + decoy.when( + await movement.move_to_well( + pipette_id="pipette-id", + labware_id="labware-id", + well_name="well-name", + well_location=WellLocation(offset=WellOffset()), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_return(Point(x=111, y=222, z=333)) + decoy.when( + state_view.geometry.get_nominal_tip_geometry(pipette_id, labware_id, well_name) + ).then_return(TipGeometry(length=42, diameter=5, volume=300)) + + decoy.when( + await tip_handler.pick_up_tip( + pipette_id=pipette_id, labware_id=labware_id, well_name=well_name + ) + ).then_raise(PickUpTipTipNotAttachedError(tip_geometry=sentinel.tip_geometry)) + decoy.when(model_utils.generate_id()).then_return(error_id) + decoy.when(model_utils.get_timestamp()).then_return(error_created_at) + decoy.when(state_view.labware.get_definition(labware_id)).then_return( + evotips_definition + ) + decoy.when(state_view.pipettes.get_maximum_volume(pipette_id)).then_return(1000) + + result = await subject.execute( + EvotipSealPipetteParams( + pipetteId=pipette_id, labwareId=labware_id, wellName=well_name + ) + ) + + assert result == SuccessData( + public=EvotipSealPipetteResult( + tipLength=42, + tipVolume=300, + tipDiameter=5, + position=DeckPoint(x=111, y=222, z=333), + ), + state_update=update_types.StateUpdate( + pipette_tip_state=update_types.PipetteTipStateUpdate( + pipette_id="pipette-id", + tip_geometry=TipGeometry(length=42, diameter=5, volume=300), + ), + pipette_aspirated_fluid=update_types.PipetteAspiratedFluidUpdate( + pipette_id="pipette-id", + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=1000), + ), + ), + ) + + +async def test_stall_error( + decoy: Decoy, + state_view: StateView, + movement: MovementHandler, + tip_handler: TipHandler, + model_utils: ModelUtils, + gantry_mover: GantryMover, + hardware_api: HardwareControlAPI, + pipetting: PipettingHandler, + evotips_definition: LabwareDefinition, +) -> None: + """It should return a TipPhysicallyMissingError if the HW API indicates that.""" + subject = EvotipSealPipetteImplementation( + state_view=state_view, + movement=movement, + tip_handler=tip_handler, + model_utils=model_utils, + gantry_mover=gantry_mover, + hardware_api=hardware_api, + pipetting=pipetting, + ) + + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" + error_id = "error-id" + error_created_at = datetime(1234, 5, 6) + + decoy.when( + state_view.geometry.convert_pick_up_tip_well_location( + well_location=PickUpTipWellLocation(offset=WellOffset()) + ) + ).then_return(WellLocation(offset=WellOffset())) + + decoy.when( + await movement.move_to_well( + pipette_id="pipette-id", + labware_id="labware-id", + well_name="well-name", + well_location=WellLocation(offset=WellOffset()), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_raise(StallOrCollisionDetectedError()) + + decoy.when(model_utils.generate_id()).then_return(error_id) + decoy.when(model_utils.get_timestamp()).then_return(error_created_at) + decoy.when(state_view.labware.get_definition(labware_id)).then_return( + evotips_definition + ) + + result = await subject.execute( + EvotipSealPipetteParams( + pipetteId=pipette_id, labwareId=labware_id, wellName=well_name + ) + ) + + assert result == DefinedErrorData( + public=StallOrCollisionError.model_construct( + id=error_id, createdAt=error_created_at, wrappedErrors=[matchers.Anything()] + ), + state_update=update_types.StateUpdate( + pipette_location=update_types.CLEAR, + ), + ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py new file mode 100644 index 00000000000..5f1c94c3dd6 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py @@ -0,0 +1,330 @@ +"""Test evotip unseal commands.""" + +from datetime import datetime + +import pytest +from decoy import Decoy, matchers + +from opentrons_shared_data.errors.exceptions import StallOrCollisionDetectedError + +from opentrons.protocol_engine import ( + DropTipWellLocation, + DropTipWellOrigin, + WellLocation, + WellOffset, + DeckPoint, +) +from opentrons.protocol_engine.commands.command import DefinedErrorData, SuccessData +from opentrons.protocol_engine.commands.evotip_unseal_pipette import ( + EvotipUnsealPipetteParams, + EvotipUnsealPipetteResult, + EvotipUnsealPipetteImplementation, +) +from opentrons.protocol_engine.commands.movement_common import StallOrCollisionError +from opentrons.protocol_engine.errors.exceptions import TipAttachedError +from opentrons.protocol_engine.resources.model_utils import ModelUtils +from opentrons.protocol_engine.state import update_types +from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.execution import MovementHandler, GantryMover, TipHandler +from opentrons.protocols.models import LabwareDefinition +import json +from opentrons_shared_data import load_shared_data + +from opentrons.types import Point + + +@pytest.fixture +def mock_state_view(decoy: Decoy) -> StateView: + """Get a mock StateView.""" + return decoy.mock(cls=StateView) + + +@pytest.fixture +def mock_movement_handler(decoy: Decoy) -> MovementHandler: + """Get a mock MovementHandler.""" + return decoy.mock(cls=MovementHandler) + + +@pytest.fixture +def mock_tip_handler(decoy: Decoy) -> TipHandler: + """Get a mock TipHandler.""" + return decoy.mock(cls=TipHandler) + + +@pytest.fixture +def mock_model_utils(decoy: Decoy) -> ModelUtils: + """Get a mock ModelUtils.""" + return decoy.mock(cls=ModelUtils) + + +def test_drop_tip_params_defaults() -> None: + """A drop tip should use a `WellOrigin.DROP_TIP` by default.""" + default_params = EvotipUnsealPipetteParams.model_validate( + {"pipetteId": "abc", "labwareId": "def", "wellName": "ghj"} + ) + + assert default_params.wellLocation == DropTipWellLocation( + origin=DropTipWellOrigin.DEFAULT, offset=WellOffset(x=0, y=0, z=0) + ) + + +def test_drop_tip_params_default_origin() -> None: + """A drop tip should drop a `WellOrigin.DROP_TIP` by default even if an offset is given.""" + default_params = EvotipUnsealPipetteParams.model_validate( + { + "pipetteId": "abc", + "labwareId": "def", + "wellName": "ghj", + "wellLocation": {"offset": {"x": 1, "y": 2, "z": 3}}, + } + ) + + assert default_params.wellLocation == DropTipWellLocation( + origin=DropTipWellOrigin.DEFAULT, offset=WellOffset(x=1, y=2, z=3) + ) + + +@pytest.fixture +def evotips_definition() -> LabwareDefinition: + """A fixturee of the evotips definition.""" + # TODO (chb 2025-01-29): When we migrate all labware to v3 we can clean this up + return LabwareDefinition.model_validate( + json.loads( + load_shared_data( + "labware/definitions/3/evotips_opentrons_96_labware/1.json" + ) + ) + ) + + +async def test_drop_tip_implementation( + decoy: Decoy, + mock_state_view: StateView, + mock_movement_handler: MovementHandler, + mock_tip_handler: TipHandler, + mock_model_utils: ModelUtils, + gantry_mover: GantryMover, + evotips_definition: LabwareDefinition, +) -> None: + """A DropTip command should have an execution implementation.""" + subject = EvotipUnsealPipetteImplementation( + state_view=mock_state_view, + movement=mock_movement_handler, + tip_handler=mock_tip_handler, + model_utils=mock_model_utils, + gantry_mover=gantry_mover, + ) + + params = EvotipUnsealPipetteParams( + pipetteId="abc", + labwareId="123", + wellName="A3", + wellLocation=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + ) + decoy.when(mock_state_view.labware.get_definition("123")).then_return( + evotips_definition + ) + + decoy.when( + mock_state_view.pipettes.get_is_partially_configured(pipette_id="abc") + ).then_return(False) + + decoy.when( + mock_state_view.geometry.get_checked_tip_drop_location( + pipette_id="abc", + labware_id="123", + well_location=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + partially_configured=False, + ) + ).then_return(WellLocation(offset=WellOffset(x=4, y=5, z=6))) + + decoy.when( + await mock_movement_handler.move_to_well( + pipette_id="abc", + labware_id="123", + well_name="A3", + well_location=WellLocation(offset=WellOffset(x=4, y=5, z=6)), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_return(Point(x=111, y=222, z=333)) + + result = await subject.execute(params) + + assert result == SuccessData( + public=EvotipUnsealPipetteResult(position=DeckPoint(x=111, y=222, z=333)), + state_update=update_types.StateUpdate( + pipette_location=update_types.PipetteLocationUpdate( + pipette_id="abc", + new_location=update_types.Well( + labware_id="123", + well_name="A3", + ), + new_deck_point=DeckPoint(x=111, y=222, z=333), + ), + pipette_tip_state=update_types.PipetteTipStateUpdate( + pipette_id="abc", tip_geometry=None + ), + pipette_aspirated_fluid=update_types.PipetteUnknownFluidUpdate( + pipette_id="abc" + ), + ), + ) + decoy.verify( + await mock_tip_handler.drop_tip( + pipette_id="abc", + home_after=None, + do_not_ignore_tip_presence=False, + ignore_plunger=True, + ), + times=1, + ) + + +async def test_tip_attached_error( + decoy: Decoy, + mock_state_view: StateView, + mock_movement_handler: MovementHandler, + mock_tip_handler: TipHandler, + mock_model_utils: ModelUtils, + gantry_mover: GantryMover, + evotips_definition: LabwareDefinition, +) -> None: + """A Evotip Unseal command should have an execution implementation.""" + subject = EvotipUnsealPipetteImplementation( + state_view=mock_state_view, + movement=mock_movement_handler, + tip_handler=mock_tip_handler, + model_utils=mock_model_utils, + gantry_mover=gantry_mover, + ) + + params = EvotipUnsealPipetteParams( + pipetteId="abc", + labwareId="123", + wellName="A3", + wellLocation=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + ) + decoy.when(mock_state_view.labware.get_definition("123")).then_return( + evotips_definition + ) + + decoy.when( + mock_state_view.pipettes.get_is_partially_configured(pipette_id="abc") + ).then_return(False) + + decoy.when( + mock_state_view.geometry.get_checked_tip_drop_location( + pipette_id="abc", + labware_id="123", + well_location=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + partially_configured=False, + ) + ).then_return(WellLocation(offset=WellOffset(x=4, y=5, z=6))) + + decoy.when( + await mock_movement_handler.move_to_well( + pipette_id="abc", + labware_id="123", + well_name="A3", + well_location=WellLocation(offset=WellOffset(x=4, y=5, z=6)), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_return(Point(x=111, y=222, z=333)) + decoy.when( + await mock_tip_handler.drop_tip( + pipette_id="abc", + home_after=None, + do_not_ignore_tip_presence=False, + ignore_plunger=True, + ) + ).then_raise(TipAttachedError("Egads!")) + + decoy.when(mock_model_utils.generate_id()).then_return("error-id") + decoy.when(mock_model_utils.get_timestamp()).then_return( + datetime(year=1, month=2, day=3) + ) + + with pytest.raises(TipAttachedError): + await subject.execute(params) + + +async def test_stall_error( + decoy: Decoy, + mock_state_view: StateView, + mock_movement_handler: MovementHandler, + mock_tip_handler: TipHandler, + mock_model_utils: ModelUtils, + gantry_mover: GantryMover, + evotips_definition: LabwareDefinition, +) -> None: + """A DropTip command should have an execution implementation.""" + subject = EvotipUnsealPipetteImplementation( + state_view=mock_state_view, + movement=mock_movement_handler, + tip_handler=mock_tip_handler, + model_utils=mock_model_utils, + gantry_mover=gantry_mover, + ) + + params = EvotipUnsealPipetteParams( + pipetteId="abc", + labwareId="123", + wellName="A3", + wellLocation=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + ) + decoy.when(mock_state_view.labware.get_definition("123")).then_return( + evotips_definition + ) + + decoy.when( + mock_state_view.pipettes.get_is_partially_configured(pipette_id="abc") + ).then_return(False) + + decoy.when( + mock_state_view.geometry.get_checked_tip_drop_location( + pipette_id="abc", + labware_id="123", + well_location=DropTipWellLocation(offset=WellOffset(x=1, y=2, z=3)), + partially_configured=False, + ) + ).then_return(WellLocation(offset=WellOffset(x=4, y=5, z=6))) + + decoy.when( + await mock_movement_handler.move_to_well( + pipette_id="abc", + labware_id="123", + well_name="A3", + well_location=WellLocation(offset=WellOffset(x=4, y=5, z=6)), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ) + ).then_raise(StallOrCollisionDetectedError()) + + decoy.when(mock_model_utils.generate_id()).then_return("error-id") + decoy.when(mock_model_utils.get_timestamp()).then_return( + datetime(year=1, month=2, day=3) + ) + + result = await subject.execute(params) + + assert result == DefinedErrorData( + public=StallOrCollisionError.model_construct( + id="error-id", + createdAt=datetime(year=1, month=2, day=3), + wrappedErrors=[matchers.Anything()], + ), + state_update=update_types.StateUpdate( + pipette_location=update_types.CLEAR, + ), + ) diff --git a/api/tests/opentrons/protocol_engine/execution/test_gantry_mover.py b/api/tests/opentrons/protocol_engine/execution/test_gantry_mover.py index 2c872c003d1..caa8d0cc3b6 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_gantry_mover.py +++ b/api/tests/opentrons/protocol_engine/execution/test_gantry_mover.py @@ -568,7 +568,9 @@ def _current_position(mount: Mount, refresh: bool) -> Dict[HardwareAxis, float]: pos = await subject.move_axes(axis_map, critical_point, 100, relative_move) decoy.verify( - await ot3_hardware_api.move_axes(position=call_to_hw, speed=100), + await ot3_hardware_api.move_axes( + position=call_to_hw, speed=100, expect_stalls=False + ), times=1, ) assert pos == { diff --git a/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py b/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py index 23f701db80b..b0f5d618361 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py +++ b/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py @@ -257,7 +257,9 @@ async def test_drop_tip( await subject.drop_tip(pipette_id="pipette-id", home_after=True) decoy.verify( - await mock_hardware_api.tip_drop_moves(mount=Mount.RIGHT, home_after=True) + await mock_hardware_api.tip_drop_moves( + mount=Mount.RIGHT, ignore_plunger=False, home_after=True + ) ) decoy.verify(mock_hardware_api.remove_tip(mount=Mount.RIGHT)) decoy.verify( diff --git a/hardware-testing/hardware_testing/production_qc/gripper_assembly_qc_ot3/test_mount.py b/hardware-testing/hardware_testing/production_qc/gripper_assembly_qc_ot3/test_mount.py index 7d0855e54b4..df40b60e61f 100644 --- a/hardware-testing/hardware_testing/production_qc/gripper_assembly_qc_ot3/test_mount.py +++ b/hardware-testing/hardware_testing/production_qc/gripper_assembly_qc_ot3/test_mount.py @@ -120,7 +120,7 @@ async def _save_result(tag: str, target_z: float, include_pass_fail: bool) -> bo mount, Point(z=-Z_AXIS_TRAVEL_DISTANCE), speed=speed, - _expect_stalls=True, + expect_stalls=True, ) down_end_passed = await _save_result( _get_test_tag(current, speed, "down", "end"), @@ -139,7 +139,7 @@ async def _save_result(tag: str, target_z: float, include_pass_fail: bool) -> bo mount, Point(z=Z_AXIS_TRAVEL_DISTANCE), speed=speed, - _expect_stalls=True, + expect_stalls=True, ) up_end_passed = await _save_result( _get_test_tag(current, speed, "up", "end"), diff --git a/hardware-testing/hardware_testing/production_qc/robot_assembly_qc_ot3/test_instruments.py b/hardware-testing/hardware_testing/production_qc/robot_assembly_qc_ot3/test_instruments.py index a9a86cc6d9b..ef169914ba9 100644 --- a/hardware-testing/hardware_testing/production_qc/robot_assembly_qc_ot3/test_instruments.py +++ b/hardware-testing/hardware_testing/production_qc/robot_assembly_qc_ot3/test_instruments.py @@ -201,10 +201,10 @@ async def _test_gripper(api: OT3API, report: CSVReport, section: str) -> None: target_z = 100 await api.home([z_ax, Axis.G]) start_pos = await api.gantry_position(OT3Mount.GRIPPER) - await api.move_to(mount, start_pos._replace(z=target_z), _expect_stalls=True) + await api.move_to(mount, start_pos._replace(z=target_z), expect_stalls=True) enc_pos = await api.encoder_current_position_ot3(OT3Mount.GRIPPER) if abs(enc_pos[Axis.Z_G] - target_z) < 0.25: - await api.move_to(mount, start_pos, _expect_stalls=True) + await api.move_to(mount, start_pos, expect_stalls=True) if abs(enc_pos[Axis.Z_G] - target_z) < 0.25: result = CSVResult.PASS await api.home([z_ax]) diff --git a/hardware-testing/hardware_testing/production_qc/z_stage_qc_ot3.py b/hardware-testing/hardware_testing/production_qc/z_stage_qc_ot3.py index 8a55a831c45..3ec704686c1 100644 --- a/hardware-testing/hardware_testing/production_qc/z_stage_qc_ot3.py +++ b/hardware-testing/hardware_testing/production_qc/z_stage_qc_ot3.py @@ -259,7 +259,7 @@ async def _force_gauge( mount=mount, abs_position=press_pos, speed=FORCE_SPEED, - _expect_stalls=True, + expect_stalls=True, ) finally: thread_sensor = False diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index ce6a1575062..8b13c42d01b 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -1589,6 +1589,195 @@ "title": "EngageParams", "type": "object" }, + "EvotipDispenseCreate": { + "description": "DispenseInPlace command request model.", + "properties": { + "commandType": { + "const": "evotipDispense", + "default": "evotipDispense", + "enum": ["evotipDispense"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipDispenseParams" + } + }, + "required": ["params"], + "title": "EvotipDispenseCreate", + "type": "object" + }, + "EvotipDispenseParams": { + "description": "Payload required to dispense in place.", + "properties": { + "flowRate": { + "description": "Speed in \u00b5L/s configured for the pipette", + "exclusiveMinimum": 0.0, + "title": "Flowrate", + "type": "number" + }, + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "volume": { + "description": "The amount of liquid to dispense, in \u00b5L. Must not be greater than the currently aspirated volume. There is some tolerance for floating point rounding errors.", + "minimum": 0.0, + "title": "Volume", + "type": "number" + }, + "wellLocation": { + "$ref": "#/$defs/LiquidHandlingWellLocation", + "description": "Relative well location at which to perform the operation" + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], + "title": "EvotipDispenseParams", + "type": "object" + }, + "EvotipSealPipetteCreate": { + "description": "Seal evotip resin tip command creation request model.", + "properties": { + "commandType": { + "const": "evotipSealPipette", + "default": "evotipSealPipette", + "enum": ["evotipSealPipette"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipSealPipetteParams" + } + }, + "required": ["params"], + "title": "EvotipSealPipetteCreate", + "type": "object" + }, + "EvotipSealPipetteParams": { + "description": "Payload needed to seal resin tips to a pipette.", + "properties": { + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "tipPickUpParams": { + "anyOf": [ + { + "$ref": "#/$defs/TipPickUpParams" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific parameters for " + }, + "wellLocation": { + "$ref": "#/$defs/PickUpTipWellLocation", + "description": "Relative well location at which to pick up the tip." + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["pipetteId", "labwareId", "wellName"], + "title": "EvotipSealPipetteParams", + "type": "object" + }, + "EvotipUnsealPipetteCreate": { + "description": "Evotip unseal command creation request model.", + "properties": { + "commandType": { + "const": "evotipUnsealPipette", + "default": "evotipUnsealPipette", + "enum": ["evotipUnsealPipette"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipUnsealPipetteParams" + } + }, + "required": ["params"], + "title": "EvotipUnsealPipetteCreate", + "type": "object" + }, + "EvotipUnsealPipetteParams": { + "description": "Payload required to drop a tip in a specific well.", + "properties": { + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "wellLocation": { + "$ref": "#/$defs/DropTipWellLocation", + "description": "Relative well location at which to drop the tip." + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["pipetteId", "labwareId", "wellName"], + "title": "EvotipUnsealPipetteParams", + "type": "object" + }, "GetNextTipCreate": { "description": "Get next tip command creation request model.", "properties": { @@ -4564,6 +4753,31 @@ "title": "Submerge", "type": "object" }, + "TipPickUpParams": { + "description": "Payload used to specify press-tip parameters for a seal command.", + "properties": { + "ejectorPushMm": { + "default": 0, + "description": "The distance to back off to ensure that the tip presence sensors are not triggered.", + "title": "Ejectorpushmm", + "type": "number" + }, + "prepDistance": { + "default": 0, + "description": "The distance to move down to fit the tips on.", + "title": "Prepdistance", + "type": "number" + }, + "pressDistance": { + "default": 0, + "description": "The distance to press on tips.", + "title": "Pressdistance", + "type": "number" + } + }, + "title": "TipPickUpParams", + "type": "object" + }, "TipPresenceStatus": { "description": "Tip presence status reported by a pipette.", "enum": ["present", "absent", "unknown"], @@ -5721,6 +5935,9 @@ "dispenseInPlace": "#/$defs/DispenseInPlaceCreate", "dropTip": "#/$defs/DropTipCreate", "dropTipInPlace": "#/$defs/DropTipInPlaceCreate", + "evotipDispense": "#/$defs/EvotipDispenseCreate", + "evotipSealPipette": "#/$defs/EvotipSealPipetteCreate", + "evotipUnsealPipette": "#/$defs/EvotipUnsealPipetteCreate", "getNextTip": "#/$defs/GetNextTipCreate", "getTipPresence": "#/$defs/GetTipPresenceCreate", "heaterShaker/closeLabwareLatch": "#/$defs/CloseLabwareLatchCreate", @@ -5914,6 +6131,15 @@ { "$ref": "#/$defs/TryLiquidProbeCreate" }, + { + "$ref": "#/$defs/EvotipSealPipetteCreate" + }, + { + "$ref": "#/$defs/EvotipDispenseCreate" + }, + { + "$ref": "#/$defs/EvotipUnsealPipetteCreate" + }, { "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__wait_for_temperature__WaitForTemperatureCreate" }, diff --git a/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json b/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json index 43b2616c6f5..d2ecbdce217 100644 --- a/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json +++ b/shared-data/labware/definitions/3/evotips_opentrons_96_labware/1.json @@ -1025,6 +1025,20 @@ }, "gripHeightFromLabwareBottom": 14.5, "gripForce": 15, + "gripperOffsets": { + "default": { + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 15 + }, + "dropOffset": { + "x": 0, + "y": 0, + "z": 15 + } + } + }, "stackingOffsetWithLabware": { "nest_96_wellplate_2ml_deep": { "x": 0, From a667e6231a78df0bfe67b2d8cfcfb7f332acef5f Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Fri, 31 Jan 2025 16:57:27 -0500 Subject: [PATCH 37/81] feat(app): Add new evotips command support to run log (#17402) --- .../en/protocol_command_text.json | 3 + .../hooks/useCommandTextString/index.ts | 3 + .../commandText/getPipettingCommandText.ts | 88 +++++++------------ shared-data/command/types/pipetting.ts | 47 ++++++++++ 4 files changed, 85 insertions(+), 56 deletions(-) diff --git a/app/src/assets/localization/en/protocol_command_text.json b/app/src/assets/localization/en/protocol_command_text.json index c3620eac904..51f37c9fa30 100644 --- a/app/src/assets/localization/en/protocol_command_text.json +++ b/app/src/assets/localization/en/protocol_command_text.json @@ -64,11 +64,13 @@ "pause_on": "Pause on {{robot_name}}", "pickup_tip": "Picking up tip(s) from {{well_range}} of {{labware}} in {{labware_location}}", "prepare_to_aspirate": "Preparing {{pipette}} to aspirate", + "pressurizing_to_dispense": "Pressurize pipette to dispense {{volume}} µL from resin tip at {{flow_rate}} µL/sec", "reloading_labware": "Reloading {{labware}}", "return_tip": "Returning tip to {{well_name}} of {{labware}} in {{labware_location}}", "right": "Right", "row_layout": "row layout", "save_position": "Saving position", + "sealing_to_location": "Sealing to {{labware}} in {{location}}", "set_and_await_hs_shake": "Setting Heater-Shaker to shake at {{rpm}} rpm and waiting until reached", "setting_hs_temp": "Setting Target Temperature of Heater-Shaker to {{temp}}", "setting_temperature_module_temp": "Setting Temperature Module to {{temp}} (rounded to nearest integer)", @@ -89,6 +91,7 @@ "turning_rail_lights_off": "Turning rail lights off", "turning_rail_lights_on": "Turning rail lights on", "unlatching_hs_latch": "Unlatching labware on Heater-Shaker", + "unsealing_from_location": "Unsealing from {{labware}} in {{location}}", "wait_for_duration": "Pausing for {{seconds}} seconds. {{message}}", "wait_for_resume": "Pausing protocol", "waiting_for_hs_to_reach": "Waiting for Heater-Shaker to reach target temperature", diff --git a/app/src/local-resources/commands/hooks/useCommandTextString/index.ts b/app/src/local-resources/commands/hooks/useCommandTextString/index.ts index 3b77c607052..86e8314e20c 100644 --- a/app/src/local-resources/commands/hooks/useCommandTextString/index.ts +++ b/app/src/local-resources/commands/hooks/useCommandTextString/index.ts @@ -91,6 +91,9 @@ export function useCommandTextString( case 'dropTipInPlace': case 'pickUpTip': case 'airGapInPlace': + case 'evotipSealPipette': + case 'evotipUnsealPipette': + case 'evotipDispense': return { kind: 'generic', commandText: utils.getPipettingCommandText(fullParams), diff --git a/app/src/local-resources/commands/hooks/useCommandTextString/utils/commandText/getPipettingCommandText.ts b/app/src/local-resources/commands/hooks/useCommandTextString/utils/commandText/getPipettingCommandText.ts index 2a0d87762b2..38730082699 100644 --- a/app/src/local-resources/commands/hooks/useCommandTextString/utils/commandText/getPipettingCommandText.ts +++ b/app/src/local-resources/commands/hooks/useCommandTextString/utils/commandText/getPipettingCommandText.ts @@ -52,19 +52,21 @@ export const getPipettingCommandText = ({ t, }) + const labwareName = + commandTextData != null + ? getLabwareName({ + loadedLabwares: commandTextData.labware ?? [], + labwareId, + allRunDefs, + }) + : null + switch (command?.commandType) { case 'aspirate': { const { volume, flowRate } = command.params return t('aspirate', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, volume, flow_rate: flowRate, @@ -75,14 +77,7 @@ export const getPipettingCommandText = ({ return pushOut != null ? t('dispense_push_out', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, volume, flow_rate: flowRate, @@ -90,14 +85,7 @@ export const getPipettingCommandText = ({ }) : t('dispense', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, volume, flow_rate: flowRate, @@ -107,14 +95,7 @@ export const getPipettingCommandText = ({ const { flowRate } = command.params return t('blowout', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, flow_rate: flowRate, }) @@ -136,26 +117,12 @@ export const getPipettingCommandText = ({ return Boolean(labwareDef?.parameters.isTiprack) ? t('return_tip', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, }) : t('drop_tip', { well_name: wellName, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, }) } case 'pickUpTip': { @@ -176,14 +143,7 @@ export const getPipettingCommandText = ({ pipetteName ) : null, - labware: - commandTextData != null - ? getLabwareName({ - loadedLabwares: commandTextData.labware ?? [], - labwareId, - allRunDefs, - }) - : null, + labware: labwareName, labware_location: displayLocation, }) } @@ -213,6 +173,22 @@ export const getPipettingCommandText = ({ const { volume } = command.params return t('air_gap_in_place', { volume }) } + case 'evotipSealPipette': { + return t('sealing_to_location', { + labware: labwareName, + location: displayLocation, + }) + } + case 'evotipUnsealPipette': { + return t('unsealing_from_location', { + labware: labwareName, + location: displayLocation, + }) + } + case 'evotipDispense': { + const { flowRate, volume } = command.params + return t('pressurizing_to_dispense', { volume, flow_rate: flowRate }) + } default: { console.warn( 'PipettingCommandText encountered a command with an unrecognized commandType: ', diff --git a/shared-data/command/types/pipetting.ts b/shared-data/command/types/pipetting.ts index d609af1854b..277af530ce9 100644 --- a/shared-data/command/types/pipetting.ts +++ b/shared-data/command/types/pipetting.ts @@ -21,6 +21,9 @@ export type PipettingRunTimeCommand = | LiquidProbeRunTimeCommand | TryLiquidProbeRunTimeCommand | AirGapInPlaceRunTimeCommand + | EvotipSealRunTimeCommand + | EvotipUnsealRunTimeCommand + | EvotipPressurizeRunTimeCommand export type PipettingCreateCommand = | AspirateCreateCommand @@ -41,6 +44,9 @@ export type PipettingCreateCommand = | LiquidProbeCreateCommand | TryLiquidProbeCreateCommand | AirGapInPlaceCreateCommand + | EvotipSealCreateCommand + | EvotipUnsealCreateCommand + | EvotipPressurizeCreateCommand export interface ConfigureForVolumeCreateCommand extends CommonCommandCreateInfo { @@ -237,6 +243,37 @@ export interface TryLiquidProbeRunTimeCommand result?: Record } +export interface EvotipSealCreateCommand extends CommonCommandCreateInfo { + commandType: 'evotipSealPipette' + params: PipetteAccessParams & WellLocationParam +} +export interface EvotipUnsealCreateCommand extends CommonCommandCreateInfo { + commandType: 'evotipUnsealPipette' + params: PipetteAccessParams & WellLocationParam +} + +export interface EvotipPressurizeCreateCommand extends CommonCommandCreateInfo { + commandType: 'evotipDispense' + params: PipetteAccessParams & + WellLocationParam & + FlowRateParams & + VolumeParams +} +export interface EvotipSealRunTimeCommand + extends CommonCommandRunTimeInfo, + EvotipSealCreateCommand { + result?: EvotipSealResult +} +export interface EvotipUnsealRunTimeCommand + extends CommonCommandRunTimeInfo, + EvotipUnsealCreateCommand { + result?: EvotipUnsealResult +} +export interface EvotipPressurizeRunTimeCommand + extends CommonCommandRunTimeInfo, + EvotipPressurizeCreateCommand { + result?: BasicLiquidHandlingResult +} export type AspDispAirgapParams = FlowRateParams & PipetteAccessParams & VolumeParams & @@ -321,3 +358,13 @@ interface TipPresenceResult { // ot2 should alwasy return unknown status?: 'present' | 'absent' | 'unknown' } + +interface EvotipSealResult { + position: AddressableOffsetVector + tipVolume: number + tipLength: number + tipDiameter: number +} +interface EvotipUnsealResult { + position: AddressableOffsetVector +} From b4831cffd0005b57e267c0c8d7c511e7607ca9f5 Mon Sep 17 00:00:00 2001 From: Caila Marashaj <98041399+caila-marashaj@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:56:25 -0500 Subject: [PATCH 38/81] feat(api): add new user-facing helper functions for static liquid tracking (#17360) --- .../protocol_api/core/engine/instrument.py | 31 +++-- .../protocol_api/core/engine/well.py | 32 +++++ .../opentrons/protocol_api/core/instrument.py | 4 + .../core/legacy/legacy_instrument_core.py | 11 ++ .../core/legacy/legacy_well_core.py | 15 +++ .../legacy_instrument_core.py | 12 ++ api/src/opentrons/protocol_api/core/well.py | 15 +++ .../protocol_api/instrument_context.py | 5 + api/src/opentrons/protocol_api/labware.py | 32 ++++- .../protocol_engine/commands/aspirate.py | 1 - .../protocol_engine/errors/__init__.py | 2 + .../protocol_engine/errors/exceptions.py | 13 ++ .../protocol_engine/state/frustum_helpers.py | 14 ++- .../protocol_engine/state/geometry.py | 69 ++++++++++- .../core/engine/test_instrument_core.py | 43 +++++++ .../core/engine/test_well_core.py | 111 ++++++++++++++++++ 16 files changed, 390 insertions(+), 20 deletions(-) diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index d1898e5ccaa..7d600369932 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -2,15 +2,7 @@ from __future__ import annotations -from typing import ( - Optional, - TYPE_CHECKING, - cast, - Union, - List, - Tuple, - NamedTuple, -) +from typing import Optional, TYPE_CHECKING, cast, Union, List, Tuple, NamedTuple from opentrons.types import Location, Mount, NozzleConfigurationType, NozzleMapInterface from opentrons.hardware_control import SyncHardwareAPI from opentrons.hardware_control.dev_types import PipetteDict @@ -1369,6 +1361,27 @@ def detect_liquid_presence(self, well_core: WellCore, loc: Location) -> bool: return result.z_position is not None + def get_minimum_liquid_sense_height(self) -> float: + attached_tip = self._engine_client.state.pipettes.get_attached_tip( + self._pipette_id + ) + if attached_tip: + tip_volume = attached_tip.volume + else: + raise TipNotAttachedError( + "Need to have a tip attached for liquid-sense operations." + ) + lld_settings = self._engine_client.state.pipettes.get_pipette_lld_settings( + pipette_id=self.pipette_id + ) + if lld_settings: + lld_min_height_for_tip_attached = lld_settings[f"t{tip_volume}"][ + "minHeight" + ] + return lld_min_height_for_tip_attached + else: + raise ValueError("liquid-level detection settings not found.") + def liquid_probe_with_recovery(self, well_core: WellCore, loc: Location) -> None: labware_id = well_core.labware_id well_name = well_core.get_name() diff --git a/api/src/opentrons/protocol_api/core/engine/well.py b/api/src/opentrons/protocol_api/core/engine/well.py index 34616d9eb55..6f47f6b572d 100644 --- a/api/src/opentrons/protocol_api/core/engine/well.py +++ b/api/src/opentrons/protocol_api/core/engine/well.py @@ -155,3 +155,35 @@ def from_center_cartesian(self, x: float, y: float, z: float) -> Point: y_ratio=y, z_ratio=z, ) + + def estimate_liquid_height_after_pipetting( + self, + operation_volume: float, + ) -> float: + """Return an estimate of liquid height after pipetting without raising an error.""" + labware_id = self.labware_id + well_name = self._name + starting_liquid_height = self.current_liquid_height() + projected_final_height = self._engine_client.state.geometry.get_well_height_after_liquid_handling_no_error( + labware_id=labware_id, + well_name=well_name, + initial_height=starting_liquid_height, + volume=operation_volume, + ) + return projected_final_height + + def current_liquid_height(self) -> float: + """Return the current liquid height within a well.""" + labware_id = self.labware_id + well_name = self._name + return self._engine_client.state.geometry.get_meniscus_height( + labware_id=labware_id, well_name=well_name + ) + + def get_liquid_volume(self) -> float: + """Return the current volume in a well.""" + labware_id = self.labware_id + well_name = self._name + return self._engine_client.state.geometry.get_current_well_volume( + labware_id=labware_id, well_name=well_name + ) diff --git a/api/src/opentrons/protocol_api/core/instrument.py b/api/src/opentrons/protocol_api/core/instrument.py index 4a60cf8f19e..7664d2c1cc8 100644 --- a/api/src/opentrons/protocol_api/core/instrument.py +++ b/api/src/opentrons/protocol_api/core/instrument.py @@ -225,6 +225,10 @@ def get_current_volume(self) -> float: def get_available_volume(self) -> float: ... + @abstractmethod + def get_minimum_liquid_sense_height(self) -> float: + ... + @abstractmethod def get_hardware_state(self) -> PipetteDict: """Get the current state of the pipette hardware as a dictionary.""" diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py index 5572ef440d9..7f8ba3b7a47 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py @@ -643,3 +643,14 @@ def _pressure_supported_by_pipette(self) -> bool: def nozzle_configuration_valid_for_lld(self) -> bool: """Check if the nozzle configuration currently supports LLD.""" return False + + def get_minimum_liquid_sense_height(self) -> float: + return 0.0 + + def estimate_liquid_height( + self, + well_core: LegacyWellCore, + starting_liquid_height: float, + operation_volume: float, + ) -> float: + return 0.0 diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_well_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_well_core.py index a88dd2eee80..5a39a7cd93f 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_well_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_well_core.py @@ -118,6 +118,21 @@ def from_center_cartesian(self, x: float, y: float, z: float) -> Point: """Gets point in deck coordinates based on percentage of the radius of each axis.""" return self._geometry.from_center_cartesian(x, y, z) + def estimate_liquid_height_after_pipetting( + self, + operation_volume: float, + ) -> float: + """Estimate what the liquid height will be after pipetting, without raising an error.""" + return 0.0 + + def current_liquid_height(self) -> float: + """Get the current liquid height.""" + return 0.0 + + def get_liquid_volume(self) -> float: + """Get the current well volume.""" + return 0.0 + # TODO(mc, 2022-10-28): is this used and/or necessary? def __repr__(self) -> str: """Use the well's display name as its repr.""" diff --git a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py index 8c2c570ad1c..f7138198462 100644 --- a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py @@ -561,3 +561,15 @@ def _pressure_supported_by_pipette(self) -> bool: def nozzle_configuration_valid_for_lld(self) -> bool: """Check if the nozzle configuration currently supports LLD.""" return False + + def get_minimum_liquid_sense_height(self) -> float: + return 0.0 + + def estimate_liquid_height( + self, + well_core: LegacyWellCore, + starting_liquid_height: float, + operation_volume: float, + ) -> float: + """This will never be called because it was added in API 2.21.""" + assert False, "estimate_liquid_height only supported in API 2.21 & later" diff --git a/api/src/opentrons/protocol_api/core/well.py b/api/src/opentrons/protocol_api/core/well.py index bd58963a59c..bcaef764bf9 100644 --- a/api/src/opentrons/protocol_api/core/well.py +++ b/api/src/opentrons/protocol_api/core/well.py @@ -83,5 +83,20 @@ def load_liquid( def from_center_cartesian(self, x: float, y: float, z: float) -> Point: """Gets point in deck coordinates based on percentage of the radius of each axis.""" + @abstractmethod + def estimate_liquid_height_after_pipetting( + self, + operation_volume: float, + ) -> float: + """Estimate what the liquid height will be after pipetting, without raising an error.""" + + @abstractmethod + def current_liquid_height(self) -> float: + """Get the current liquid height.""" + + @abstractmethod + def get_liquid_volume(self) -> float: + """Get the current volume within a well.""" + WellCoreType = TypeVar("WellCoreType", bound=AbstractWellCore) diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 992aa68c785..5e45dc7d9b7 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -165,6 +165,11 @@ def default_speed(self) -> float: def default_speed(self, speed: float) -> None: self._core.set_default_speed(speed) + @requires_version(2, 21) + def get_minimum_liquid_sense_height(self) -> float: + """Get the minimum allowed height for liquid-level detection.""" + return self._core.get_minimum_liquid_sense_height() + @requires_version(2, 0) def aspirate( self, diff --git a/api/src/opentrons/protocol_api/labware.py b/api/src/opentrons/protocol_api/labware.py index bb8a094e4c2..57472641969 100644 --- a/api/src/opentrons/protocol_api/labware.py +++ b/api/src/opentrons/protocol_api/labware.py @@ -36,7 +36,6 @@ UnsupportedAPIError, ) - # TODO(mc, 2022-09-02): re-exports provided for backwards compatibility # remove when their usage is no longer needed from opentrons.protocols.labware import ( # noqa: F401 @@ -49,7 +48,10 @@ from ._liquid import Liquid from ._types import OffDeckType from .core import well_grid -from .core.engine import ENGINE_CORE_API_VERSION, SET_OFFSET_RESTORED_API_VERSION +from .core.engine import ( + ENGINE_CORE_API_VERSION, + SET_OFFSET_RESTORED_API_VERSION, +) from .core.labware import AbstractLabware from .core.module import AbstractModuleCore from .core.core_map import LoadedCoreMap @@ -301,6 +303,32 @@ def load_liquid(self, liquid: Liquid, volume: float) -> None: volume=volume, ) + @requires_version(2, 21) + def current_liquid_height(self) -> float: + """Get the current liquid height in a well.""" + return self._core.current_liquid_height() + + @requires_version(2, 21) + def current_liquid_volume(self) -> float: + """Get the current liquid volume in a well.""" + return self._core.get_liquid_volume() + + @requires_version(2, 21) + def estimate_liquid_height_after_pipetting(self, operation_volume: float) -> float: + """Check the height of the liquid within a well. + + :returns: The height, in mm, of the liquid from the deck. + + :meta private: + + This is intended for Opentrons internal use only and is not a guaranteed API. + """ + + projected_final_height = self._core.estimate_liquid_height_after_pipetting( + operation_volume=operation_volume, + ) + return projected_final_height + def _from_center_cartesian(self, x: float, y: float, z: float) -> Point: """ Private version of from_center_cartesian. Present only for backward diff --git a/api/src/opentrons/protocol_engine/commands/aspirate.py b/api/src/opentrons/protocol_engine/commands/aspirate.py index 708ee3ecbdb..c599cc5ca44 100644 --- a/api/src/opentrons/protocol_engine/commands/aspirate.py +++ b/api/src/opentrons/protocol_engine/commands/aspirate.py @@ -152,7 +152,6 @@ async def execute(self, params: AspirateParams) -> _ExecuteReturn: labware_id=labware_id, well_name=well_name, ) - move_result = await move_to_well( movement=self._movement, model_utils=self._model_utils, diff --git a/api/src/opentrons/protocol_engine/errors/__init__.py b/api/src/opentrons/protocol_engine/errors/__init__.py index 85d89e8e2fb..6f6b276e897 100644 --- a/api/src/opentrons/protocol_engine/errors/__init__.py +++ b/api/src/opentrons/protocol_engine/errors/__init__.py @@ -74,6 +74,7 @@ CommandNotAllowedError, InvalidLiquidHeightFound, LiquidHeightUnknownError, + LiquidVolumeUnknownError, IncompleteLabwareDefinitionError, IncompleteWellDefinitionError, OperationLocationNotInWellError, @@ -167,6 +168,7 @@ "CommandNotAllowedError", "InvalidLiquidHeightFound", "LiquidHeightUnknownError", + "LiquidVolumeUnknownError", "IncompleteLabwareDefinitionError", "IncompleteWellDefinitionError", "OperationLocationNotInWellError", diff --git a/api/src/opentrons/protocol_engine/errors/exceptions.py b/api/src/opentrons/protocol_engine/errors/exceptions.py index 3aa7c0562ab..efcce483935 100644 --- a/api/src/opentrons/protocol_engine/errors/exceptions.py +++ b/api/src/opentrons/protocol_engine/errors/exceptions.py @@ -1101,6 +1101,19 @@ def __init__( super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) +class LiquidVolumeUnknownError(ProtocolEngineError): + """Raised when attempting to report an unknown liquid volume.""" + + def __init__( + self, + message: Optional[str] = None, + details: Optional[Dict[str, Any]] = None, + wrapping: Optional[Sequence[EnumeratedError]] = None, + ) -> None: + """Build a LiquidVolumeUnknownError.""" + super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) + + class EStopActivatedError(ProtocolEngineError): """Represents an E-stop event.""" diff --git a/api/src/opentrons/protocol_engine/state/frustum_helpers.py b/api/src/opentrons/protocol_engine/state/frustum_helpers.py index b28fb936be7..15706bf3d3d 100644 --- a/api/src/opentrons/protocol_engine/state/frustum_helpers.py +++ b/api/src/opentrons/protocol_engine/state/frustum_helpers.py @@ -241,9 +241,8 @@ def _get_segment_capacity(segment: WellSegment) -> float: def get_well_volumetric_capacity( well_geometry: InnerWellGeometry, ) -> List[Tuple[float, float]]: - """Return the total volumetric capacity of a well as a map of height borders to volume.""" - # dictionary map of heights to volumetric capacities within their respective segment - # {top_height_0: volume_0, top_height_1: volume_1, top_height_2: volume_2} + """Return the volumetric capacity of a well as a list of pairs relating segment heights to volumes.""" + # [(top_height_0, section_0_volume), (top_height_1, section_1_volume), ...] well_volume = [] # get the well segments sorted in ascending order @@ -417,13 +416,16 @@ def _find_height_in_partial_frustum( def find_height_at_well_volume( - target_volume: float, well_geometry: InnerWellGeometry + target_volume: float, + well_geometry: InnerWellGeometry, + raise_error_if_result_invalid: bool = True, ) -> float: """Find the height within a well, at a known volume.""" volumetric_capacity = get_well_volumetric_capacity(well_geometry) max_volume = sum(row[1] for row in volumetric_capacity) - if target_volume < 0 or target_volume > max_volume: - raise InvalidLiquidHeightFound("Invalid target volume.") + if raise_error_if_result_invalid: + if target_volume < 0 or target_volume > max_volume: + raise InvalidLiquidHeightFound("Invalid target volume.") sorted_well = sorted(well_geometry.sections, key=lambda section: section.topHeight) # find the section the target volume is in and compute the height diff --git a/api/src/opentrons/protocol_engine/state/geometry.py b/api/src/opentrons/protocol_engine/state/geometry.py index adebf800082..3f44712600d 100644 --- a/api/src/opentrons/protocol_engine/state/geometry.py +++ b/api/src/opentrons/protocol_engine/state/geometry.py @@ -1477,7 +1477,7 @@ def get_well_offset_adjustment( volume = operation_volume or 0.0 if volume: - return self.get_well_height_after_volume( + return self.get_well_height_after_liquid_handling( labware_id=labware_id, well_name=well_name, initial_height=initial_handling_height, @@ -1486,6 +1486,49 @@ def get_well_offset_adjustment( else: return initial_handling_height + def get_current_well_volume( + self, + labware_id: str, + well_name: str, + ) -> float: + """Returns most recently updated volume in specified well.""" + last_updated = self._wells.get_last_liquid_update(labware_id, well_name) + if last_updated is None: + raise errors.LiquidHeightUnknownError( + "Must LiquidProbe or LoadLiquid before specifying WellOrigin.MENISCUS." + ) + + well_liquid = self._wells.get_well_liquid_info( + labware_id=labware_id, well_name=well_name + ) + if ( + well_liquid.probed_height is not None + and well_liquid.probed_height.height is not None + and well_liquid.probed_height.last_probed == last_updated + ): + return self.get_well_volume_at_height( + labware_id=labware_id, + well_name=well_name, + height=well_liquid.probed_height.height, + ) + elif ( + well_liquid.loaded_volume is not None + and well_liquid.loaded_volume.volume is not None + and well_liquid.loaded_volume.last_loaded == last_updated + ): + return well_liquid.loaded_volume.volume + elif ( + well_liquid.probed_volume is not None + and well_liquid.probed_volume.volume is not None + and well_liquid.probed_volume.last_probed == last_updated + ): + return well_liquid.probed_volume.volume + else: + # This should not happen if there was an update but who knows + raise errors.LiquidVolumeUnknownError( + f"Unable to find liquid volume despite an update at {last_updated}." + ) + def get_meniscus_height( self, labware_id: str, @@ -1552,7 +1595,7 @@ def get_well_handling_height( ) return float(handling_height) - def get_well_height_after_volume( + def get_well_height_after_liquid_handling( self, labware_id: str, well_name: str, initial_height: float, volume: float ) -> float: """Return the height of liquid in a labware well after a given volume has been handled. @@ -1570,6 +1613,28 @@ def get_well_height_after_volume( target_volume=final_volume, well_geometry=well_geometry ) + def get_well_height_after_liquid_handling_no_error( + self, labware_id: str, well_name: str, initial_height: float, volume: float + ) -> float: + """Return what the height of liquid in a labware well after liquid handling will be. + + This raises no error if the value returned is an invalid physical location, so it should never be + used for navigation, only for a pre-emptive estimate. + """ + well_geometry = self._labware.get_well_geometry( + labware_id=labware_id, well_name=well_name + ) + initial_volume = find_volume_at_well_height( + target_height=initial_height, well_geometry=well_geometry + ) + final_volume = initial_volume + volume + well_volume = find_height_at_well_volume( + target_volume=final_volume, + well_geometry=well_geometry, + raise_error_if_result_invalid=False, + ) + return well_volume + def get_well_height_at_volume( self, labware_id: str, well_name: str, volume: float ) -> float: diff --git a/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py b/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py index c7e5fa904e0..c59a088a1c9 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py @@ -1155,6 +1155,49 @@ def test_get_display_name( assert subject.get_display_name() == "display-name" +@pytest.mark.parametrize("tip", [50, 200, 1000]) +def test_get_minimum_liquid_sense_height( + decoy: Decoy, subject: InstrumentCore, mock_engine_client: EngineClient, tip: int +) -> None: + """Make sure get minimum liquid sense height returns the appropriate minHeight for its tip.""" + dummy_lld_settings = { + "t50": {"minHeight": 1.0, "minVolume": 11}, + "t200": {"minHeight": 2.0, "minVolume": 22}, + "t1000": {"minHeight": 3.0, "minVolume": 33}, + } + decoy.when( + mock_engine_client.state.pipettes.get_pipette_lld_settings(subject.pipette_id) + ).then_return(dummy_lld_settings) + decoy.when( + mock_engine_client.state.pipettes.get_attached_tip("abc123") + ).then_return(TipGeometry(length=1, diameter=2, volume=tip)) + assert ( + subject.get_minimum_liquid_sense_height() + == dummy_lld_settings[f"t{tip}"]["minHeight"] + ) + + +def test_get_minimum_liquid_sense_height_requires_tip_presence( + decoy: Decoy, + subject: InstrumentCore, + mock_engine_client: EngineClient, +) -> None: + """Make sure get_minimum_liquid_sense_height propagates a TipNotAttachedError.""" + dummy_lld_settings = { + "t50": {"minHeight": 1.0, "minVolume": 11}, + "t200": {"minHeight": 2.0, "minVolume": 22}, + "t1000": {"minHeight": 3.0, "minVolume": 33}, + } + decoy.when( + mock_engine_client.state.pipettes.get_pipette_lld_settings(subject.pipette_id) + ).then_return(dummy_lld_settings) + decoy.when( + mock_engine_client.state.pipettes.get_attached_tip("abc123") + ).then_return(None) + with pytest.raises(TipNotAttachedError): + subject.get_minimum_liquid_sense_height() + + def test_get_min_volume( decoy: Decoy, subject: InstrumentCore, diff --git a/api/tests/opentrons/protocol_api/core/engine/test_well_core.py b/api/tests/opentrons/protocol_api/core/engine/test_well_core.py index 6e1912f0aec..06a5f827e1c 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_well_core.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_well_core.py @@ -11,9 +11,18 @@ from opentrons.protocol_engine import WellLocation, WellOrigin, WellOffset from opentrons.protocol_engine import commands as cmd from opentrons.protocol_engine.clients import SyncClient as EngineClient +from opentrons.protocol_engine.errors.exceptions import ( + LiquidHeightUnknownError, + LiquidVolumeUnknownError, +) from opentrons.protocols.api_support.types import APIVersion from opentrons.protocols.api_support.util import UnsupportedAPIError from opentrons.types import Point +from opentrons_shared_data.labware.labware_definition import ( + InnerWellGeometry, + ConicalFrustum, + SphericalSegment, +) from opentrons.protocol_api._liquid import Liquid from opentrons.protocol_api.core.engine import WellCore, point_calculations, stringify @@ -227,6 +236,108 @@ def test_depth(subject: WellCore) -> None: assert subject.depth == 42.0 +def test_current_liquid_height( + decoy: Decoy, subject: WellCore, mock_engine_client: EngineClient +) -> None: + """Make sure current_liquid_height returns the correct meniscus value or raises an error.""" + fake_meniscus_height = 2222.2 + decoy.when( + mock_engine_client.state.geometry.get_meniscus_height( + labware_id="labware-id", well_name="well-name" + ) + ).then_return(fake_meniscus_height) + assert subject.current_liquid_height() == fake_meniscus_height + + # make sure that WellCore propagates a LiquidHeightUnknownError + decoy.when( + mock_engine_client.state.geometry.get_meniscus_height( + labware_id="labware-id", well_name="well-name" + ) + ).then_raise(LiquidHeightUnknownError()) + + with pytest.raises(LiquidHeightUnknownError): + subject.current_liquid_height() + + +def test_current_liquid_volume( + decoy: Decoy, subject: WellCore, mock_engine_client: EngineClient +) -> None: + """Make sure current_liquid_volume returns the correct value or raises an error.""" + fake_volume = 2222.2 + decoy.when( + mock_engine_client.state.geometry.get_current_well_volume( + labware_id="labware-id", well_name="well-name" + ) + ).then_return(fake_volume) + assert subject.get_liquid_volume() == fake_volume + + # make sure that WellCore propagates a LiquidVolumeUnknownError + decoy.when( + mock_engine_client.state.geometry.get_current_well_volume( + labware_id="labware-id", well_name="well-name" + ) + ).then_raise(LiquidVolumeUnknownError()) + + with pytest.raises(LiquidVolumeUnknownError): + subject.get_liquid_volume() + + +@pytest.mark.parametrize("operation_volume", [0.0, 100, -100, 2, -4, 5]) +def test_estimate_liquid_height_after_pipetting( + decoy: Decoy, + subject: WellCore, + mock_engine_client: EngineClient, + operation_volume: float, +) -> None: + """Make sure estimate_liquid_height_after_pipetting returns the correct value and does not raise an error.""" + fake_well_geometry = InnerWellGeometry( + sections=[ + SphericalSegment( + shape="spherical", + radiusOfCurvature=1.0, + topHeight=2.5, + bottomHeight=0.0, + ), + ConicalFrustum( + shape="conical", + bottomHeight=2.5, + topHeight=10.1, + bottomDiameter=4.4, + topDiameter=6.7, + ), + ConicalFrustum( + shape="conical", + bottomHeight=10.1, + topHeight=10.2, + bottomDiameter=6.7, + topDiameter=7.7, + ), + ] + ) + decoy.when( + mock_engine_client.state.labware.get_well_geometry( + labware_id="labware-id", well_name="well-name" + ) + ).then_return(fake_well_geometry) + initial_liquid_height = 5.6 + fake_final_height = 10000000 + decoy.when(subject.current_liquid_height()).then_return(initial_liquid_height) + decoy.when( + mock_engine_client.state.geometry.get_well_height_after_liquid_handling_no_error( + labware_id="labware-id", + well_name="well-name", + initial_height=initial_liquid_height, + volume=operation_volume, + ) + ).then_return(fake_final_height) + + # make sure that no error was raised + final_height = subject.estimate_liquid_height_after_pipetting( + operation_volume=operation_volume, + ) + assert final_height == fake_final_height + + def test_from_center_cartesian( decoy: Decoy, mock_engine_client: EngineClient, subject: WellCore ) -> None: From 932000d2403ecda99c58d488a69e5f8d8ec9d448 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 3 Feb 2025 16:13:27 -0500 Subject: [PATCH 39/81] import fixes, correction volume for evotip dispense, and stray merge error --- api/src/opentrons/protocol_engine/commands/evotip_dispense.py | 2 ++ .../protocol_engine/commands/test_evotip_dispense.py | 4 ++-- .../protocol_engine/commands/test_evotip_seal_pipette.py | 2 +- .../protocol_engine/commands/test_evotip_unseal_pipette.py | 2 +- .../opentrons/protocol_engine/state/test_geometry_view.py | 1 - 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/evotip_dispense.py b/api/src/opentrons/protocol_engine/commands/evotip_dispense.py index e0053262295..b028d72fc45 100644 --- a/api/src/opentrons/protocol_engine/commands/evotip_dispense.py +++ b/api/src/opentrons/protocol_engine/commands/evotip_dispense.py @@ -11,6 +11,7 @@ DispenseVolumeMixin, BaseLiquidHandlingResult, dispense_in_place, + DEFAULT_CORRECTION_VOLUME, ) from .movement_common import ( LiquidHandlingWellLocationMixin, @@ -115,6 +116,7 @@ async def execute(self, params: EvotipDispenseParams) -> _ExecuteReturn: }, pipetting=self._pipetting, model_utils=self._model_utils, + correction_volume=params.correctionVolume or DEFAULT_CORRECTION_VOLUME, ) if isinstance(result, DefinedErrorData): # TODO (chb, 2025-01-29): Remove this and the OverpressureError returns once disabled for this function diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py index 568ddda83c1..d8da3b69b82 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py @@ -17,7 +17,7 @@ MovementHandler, ) -from opentrons.protocols.models import LabwareDefinition +from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons.protocol_engine.commands.command import SuccessData from opentrons.protocol_engine.commands.evotip_dispense import ( EvotipDispenseParams, @@ -105,7 +105,7 @@ async def test_evotip_dispense_implementation( decoy.when( await pipetting.dispense_in_place( - pipette_id="pipette-id-abc123", volume=100.0, flow_rate=456.0, push_out=None + pipette_id="pipette-id-abc123", volume=100.0, flow_rate=456.0, push_out=None, correction_volume=0, ) ).then_return(100) diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py index 3d1bbeb1406..0a2805913e6 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_seal_pipette.py @@ -6,7 +6,7 @@ from decoy import Decoy, matchers from unittest.mock import sentinel -from opentrons.protocols.models import LabwareDefinition +from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons_shared_data.errors.exceptions import StallOrCollisionDetectedError diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py index 5f1c94c3dd6..54c7e222bd2 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_unseal_pipette.py @@ -26,7 +26,7 @@ from opentrons.protocol_engine.state import update_types from opentrons.protocol_engine.state.state import StateView from opentrons.protocol_engine.execution import MovementHandler, GantryMover, TipHandler -from opentrons.protocols.models import LabwareDefinition +from opentrons_shared_data.labware.labware_definition import LabwareDefinition import json from opentrons_shared_data import load_shared_data diff --git a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py index 602835196f5..3c214923e25 100644 --- a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py @@ -3409,7 +3409,6 @@ def test_validate_dispense_volume_into_well_meniscus( ) -<<<<<<< HEAD def test_get_latest_volume_information( decoy: Decoy, mock_labware_view: LabwareView, From 73ca6742ad7600bc64119446b0bc96a28281ae57 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 3 Feb 2025 16:15:51 -0500 Subject: [PATCH 40/81] stray format fix --- .../protocol_engine/commands/test_evotip_dispense.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py index d8da3b69b82..abde82a1d77 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py +++ b/api/tests/opentrons/protocol_engine/commands/test_evotip_dispense.py @@ -105,7 +105,11 @@ async def test_evotip_dispense_implementation( decoy.when( await pipetting.dispense_in_place( - pipette_id="pipette-id-abc123", volume=100.0, flow_rate=456.0, push_out=None, correction_volume=0, + pipette_id="pipette-id-abc123", + volume=100.0, + flow_rate=456.0, + push_out=None, + correction_volume=0, ) ).then_return(100) From b3b2e1e80a6b0cd7674891c4c926a6796348bf08 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 3 Feb 2025 16:16:03 -0500 Subject: [PATCH 41/81] command schema 12 update --- shared-data/command/schemas/12.json | 240 ++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) diff --git a/shared-data/command/schemas/12.json b/shared-data/command/schemas/12.json index 914e32a117b..2e40c357c7d 100644 --- a/shared-data/command/schemas/12.json +++ b/shared-data/command/schemas/12.json @@ -1880,6 +1880,209 @@ "title": "EngageParams", "type": "object" }, + "EvotipDispenseCreate": { + "description": "DispenseInPlace command request model.", + "properties": { + "commandType": { + "const": "evotipDispense", + "default": "evotipDispense", + "enum": ["evotipDispense"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipDispenseParams" + } + }, + "required": ["params"], + "title": "EvotipDispenseCreate", + "type": "object" + }, + "EvotipDispenseParams": { + "description": "Payload required to dispense in place.", + "properties": { + "correctionVolume": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The correction volume in uL.", + "title": "Correctionvolume" + }, + "flowRate": { + "description": "Speed in \u00b5L/s configured for the pipette", + "exclusiveMinimum": 0.0, + "title": "Flowrate", + "type": "number" + }, + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "volume": { + "description": "The amount of liquid to dispense, in \u00b5L. Must not be greater than the currently aspirated volume. There is some tolerance for floating point rounding errors.", + "minimum": 0.0, + "title": "Volume", + "type": "number" + }, + "wellLocation": { + "$ref": "#/$defs/LiquidHandlingWellLocation", + "description": "Relative well location at which to perform the operation" + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], + "title": "EvotipDispenseParams", + "type": "object" + }, + "EvotipSealPipetteCreate": { + "description": "Seal evotip resin tip command creation request model.", + "properties": { + "commandType": { + "const": "evotipSealPipette", + "default": "evotipSealPipette", + "enum": ["evotipSealPipette"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipSealPipetteParams" + } + }, + "required": ["params"], + "title": "EvotipSealPipetteCreate", + "type": "object" + }, + "EvotipSealPipetteParams": { + "description": "Payload needed to seal resin tips to a pipette.", + "properties": { + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "tipPickUpParams": { + "anyOf": [ + { + "$ref": "#/$defs/TipPickUpParams" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific parameters for " + }, + "wellLocation": { + "$ref": "#/$defs/PickUpTipWellLocation", + "description": "Relative well location at which to pick up the tip." + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["pipetteId", "labwareId", "wellName"], + "title": "EvotipSealPipetteParams", + "type": "object" + }, + "EvotipUnsealPipetteCreate": { + "description": "Evotip unseal command creation request model.", + "properties": { + "commandType": { + "const": "evotipUnsealPipette", + "default": "evotipUnsealPipette", + "enum": ["evotipUnsealPipette"], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/EvotipUnsealPipetteParams" + } + }, + "required": ["params"], + "title": "EvotipUnsealPipetteCreate", + "type": "object" + }, + "EvotipUnsealPipetteParams": { + "description": "Payload required to drop a tip in a specific well.", + "properties": { + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "wellLocation": { + "$ref": "#/$defs/DropTipWellLocation", + "description": "Relative well location at which to drop the tip." + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": ["pipetteId", "labwareId", "wellName"], + "title": "EvotipUnsealPipetteParams", + "type": "object" + }, "GetNextTipCreate": { "description": "Get next tip command creation request model.", "properties": { @@ -4971,6 +5174,31 @@ "title": "Submerge", "type": "object" }, + "TipPickUpParams": { + "description": "Payload used to specify press-tip parameters for a seal command.", + "properties": { + "ejectorPushMm": { + "default": 0, + "description": "The distance to back off to ensure that the tip presence sensors are not triggered.", + "title": "Ejectorpushmm", + "type": "number" + }, + "prepDistance": { + "default": 0, + "description": "The distance to move down to fit the tips on.", + "title": "Prepdistance", + "type": "number" + }, + "pressDistance": { + "default": 0, + "description": "The distance to press on tips.", + "title": "Pressdistance", + "type": "number" + } + }, + "title": "TipPickUpParams", + "type": "object" + }, "TipPresenceStatus": { "description": "Tip presence status reported by a pipette.", "enum": ["present", "absent", "unknown"], @@ -6130,6 +6358,9 @@ "dispenseWhileTracking": "#/$defs/DispenseWhileTrackingCreate", "dropTip": "#/$defs/DropTipCreate", "dropTipInPlace": "#/$defs/DropTipInPlaceCreate", + "evotipDispense": "#/$defs/EvotipDispenseCreate", + "evotipSealPipette": "#/$defs/EvotipSealPipetteCreate", + "evotipUnsealPipette": "#/$defs/EvotipUnsealPipetteCreate", "flexStacker/configure": "#/$defs/ConfigureCreate", "flexStacker/retrieve": "#/$defs/RetrieveCreate", "flexStacker/store": "#/$defs/StoreCreate", @@ -6332,6 +6563,15 @@ { "$ref": "#/$defs/TryLiquidProbeCreate" }, + { + "$ref": "#/$defs/EvotipSealPipetteCreate" + }, + { + "$ref": "#/$defs/EvotipDispenseCreate" + }, + { + "$ref": "#/$defs/EvotipUnsealPipetteCreate" + }, { "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__wait_for_temperature__WaitForTemperatureCreate" }, From 307f745cbdd1aac7069289ff185985aad216c237 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 3 Feb 2025 16:47:22 -0500 Subject: [PATCH 42/81] lint fixes --- .../protocol_engine/commands/flex_stacker/configure.py | 2 +- .../opentrons/protocol_engine/commands/flex_stacker/retrieve.py | 2 +- .../opentrons/protocol_engine/commands/flex_stacker/store.py | 2 +- app/src/assets/localization/en/device_details.json | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/flex_stacker/configure.py b/api/src/opentrons/protocol_engine/commands/flex_stacker/configure.py index 85c0808b60a..d9af9a24f9c 100644 --- a/api/src/opentrons/protocol_engine/commands/flex_stacker/configure.py +++ b/api/src/opentrons/protocol_engine/commands/flex_stacker/configure.py @@ -62,7 +62,7 @@ class Configure(BaseCommand[ConfigureParams, ConfigureResult, ErrorOccurrence]): commandType: ConfigureCommandType = "flexStacker/configure" params: ConfigureParams - result: Optional[ConfigureResult] + result: Optional[ConfigureResult] = None _ImplementationCls: Type[ConfigureImpl] = ConfigureImpl diff --git a/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py b/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py index 7029b5772c3..2b723304017 100644 --- a/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py +++ b/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py @@ -113,7 +113,7 @@ class Retrieve(BaseCommand[RetrieveParams, RetrieveResult, ErrorOccurrence]): commandType: RetrieveCommandType = "flexStacker/retrieve" params: RetrieveParams - result: Optional[RetrieveResult] + result: Optional[RetrieveResult] = None _ImplementationCls: Type[RetrieveImpl] = RetrieveImpl diff --git a/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py b/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py index 37f2d9f7616..c2ef3e67f3e 100644 --- a/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py +++ b/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py @@ -100,7 +100,7 @@ class Store(BaseCommand[StoreParams, StoreResult, ErrorOccurrence]): commandType: StoreCommandType = "flexStacker/store" params: StoreParams - result: Optional[StoreResult] + result: Optional[StoreResult] = None _ImplementationCls: Type[StoreImpl] = StoreImpl diff --git a/app/src/assets/localization/en/device_details.json b/app/src/assets/localization/en/device_details.json index 9ee03d91807..11ecc8edc2b 100644 --- a/app/src/assets/localization/en/device_details.json +++ b/app/src/assets/localization/en/device_details.json @@ -65,7 +65,6 @@ "firmware_updated_successfully": "Firmware updated successfully", "fixture": "Fixture", "flex_stacker_door_status": "Door status: {{status}}", - "have_not_run_description": "After you run some protocols, they will appear here.", "have_not_run": "No recent runs", "have_not_run_description": "After you run some protocols, they will appear here.", "heater": "Heater", From 222d4a0c978a02c968d324c6e69ed0c823a3b2d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:00:14 -0600 Subject: [PATCH 43/81] fix(analyses-snapshot-testing): heal mergeback_chore_release_830_into_edge snapshots (#17409) This PR was requested on the PR https://github.com/Opentrons/opentrons/pull/17408 Co-authored-by: y3rsh <502770+y3rsh@users.noreply.github.com> --- ...2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 40 ++++++++++++++++--- ...0][Flex_X_v2_21_tc_lids_wrong_target].json | 5 +++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index 0454e8ec9c9..ee19bc58e32 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -1253,7 +1253,8 @@ "biorad_96_wellplate_200ul_pcr", "opentrons_96_wellplate_200ul_pcr_full_skirt", "opentrons_flex_deck_riser", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "protocol_engine_lid_stack_object" ], "cornerOffsetFromSlot": { "x": 0, @@ -1358,6 +1359,11 @@ "x": 0, "y": 0, "z": 6.492 + }, + "protocol_engine_lid_stack_object": { + "x": 0, + "y": 0, + "z": 0 } }, "stackingOffsetWithModule": { @@ -1405,7 +1411,8 @@ "biorad_96_wellplate_200ul_pcr", "opentrons_96_wellplate_200ul_pcr_full_skirt", "opentrons_flex_deck_riser", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "protocol_engine_lid_stack_object" ], "cornerOffsetFromSlot": { "x": 0, @@ -1510,6 +1517,11 @@ "x": 0, "y": 0, "z": 6.492 + }, + "protocol_engine_lid_stack_object": { + "x": 0, + "y": 0, + "z": 0 } }, "stackingOffsetWithModule": { @@ -1557,7 +1569,8 @@ "biorad_96_wellplate_200ul_pcr", "opentrons_96_wellplate_200ul_pcr_full_skirt", "opentrons_flex_deck_riser", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "protocol_engine_lid_stack_object" ], "cornerOffsetFromSlot": { "x": 0, @@ -1662,6 +1675,11 @@ "x": 0, "y": 0, "z": 6.492 + }, + "protocol_engine_lid_stack_object": { + "x": 0, + "y": 0, + "z": 0 } }, "stackingOffsetWithModule": { @@ -1709,7 +1727,8 @@ "biorad_96_wellplate_200ul_pcr", "opentrons_96_wellplate_200ul_pcr_full_skirt", "opentrons_flex_deck_riser", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "protocol_engine_lid_stack_object" ], "cornerOffsetFromSlot": { "x": 0, @@ -1814,6 +1833,11 @@ "x": 0, "y": 0, "z": 6.492 + }, + "protocol_engine_lid_stack_object": { + "x": 0, + "y": 0, + "z": 0 } }, "stackingOffsetWithModule": { @@ -1861,7 +1885,8 @@ "biorad_96_wellplate_200ul_pcr", "opentrons_96_wellplate_200ul_pcr_full_skirt", "opentrons_flex_deck_riser", - "opentrons_tough_pcr_auto_sealing_lid" + "opentrons_tough_pcr_auto_sealing_lid", + "protocol_engine_lid_stack_object" ], "cornerOffsetFromSlot": { "x": 0, @@ -1966,6 +1991,11 @@ "x": 0, "y": 0, "z": 6.492 + }, + "protocol_engine_lid_stack_object": { + "x": 0, + "y": 0, + "z": 0 } }, "stackingOffsetWithModule": { diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json index ca0539fd2ad..c2da7c45698 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json @@ -830,6 +830,11 @@ }, "schemaVersion": 2, "stackingOffsetWithLabware": { + "evotips_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 102 + }, "opentrons_96_deep_well_adapter": { "x": 0, "y": 0, From 0855b9b677ef428fcb4f6ee2407bea6f84d46770 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Tue, 4 Feb 2025 09:12:41 -0600 Subject: [PATCH 44/81] fix(ci): update and streamline PD workflow (#17406) --- .../environment/complex-variables/action.yml | 13 ++ .github/actions/git/resolve-tag/action.yml | 17 ++ .github/actions/js/setup/action.yml | 28 +++ .github/workflows/pd-test-build-deploy.yaml | 179 +++++------------- protocol-designer/Makefile | 8 +- protocol-designer/vite.config.mts | 3 + vitest.config.mts | 2 +- 7 files changed, 110 insertions(+), 140 deletions(-) create mode 100644 .github/actions/environment/complex-variables/action.yml create mode 100644 .github/actions/git/resolve-tag/action.yml create mode 100644 .github/actions/js/setup/action.yml diff --git a/.github/actions/environment/complex-variables/action.yml b/.github/actions/environment/complex-variables/action.yml new file mode 100644 index 00000000000..b16e788ddab --- /dev/null +++ b/.github/actions/environment/complex-variables/action.yml @@ -0,0 +1,13 @@ +name: 'Set Complex Environment Variables' +description: Composite action using github-script to set complex environment variables. +inputs: {} +runs: + using: 'composite' + steps: + - name: 'Set complex environment variables' + id: set-vars + uses: actions/github-script@v7 + with: + script: | + const { buildComplexEnvVars } = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/utils.js`) + buildComplexEnvVars(core, context) diff --git a/.github/actions/git/resolve-tag/action.yml b/.github/actions/git/resolve-tag/action.yml new file mode 100644 index 00000000000..9be544b79bc --- /dev/null +++ b/.github/actions/git/resolve-tag/action.yml @@ -0,0 +1,17 @@ +name: 'Fix Checkout Tags' +description: > + Composite action to fix actions/checkout odd handling of tags + by fetching and checking out the exact tag reference. + See https://github.com/actions/checkout/issues/290 +inputs: {} +runs: + using: 'composite' + steps: + - name: 'Fix actions/checkout odd handling of tags' + if: startsWith(github.ref, 'refs/tags') + shell: bash + env: + REF: ${{ github.ref }} + run: | + git fetch -f origin "${REF}:${REF}" + git checkout "${REF}" diff --git a/.github/actions/js/setup/action.yml b/.github/actions/js/setup/action.yml new file mode 100644 index 00000000000..4b9c97cd27f --- /dev/null +++ b/.github/actions/js/setup/action.yml @@ -0,0 +1,28 @@ +name: 'Setup JS Environment' +description: > + Composite action to fix tag handling in checkout, + setup Node.js, install udev for USB detection, cache Yarn/NPM caches, + and perform JS setup. + +inputs: {} + +runs: + using: 'composite' + steps: + - uses: ./.github/actions/git/resolve-tag + - uses: ./.github/actions/environment/complex-variables + - name: 'Setup Node' + uses: actions/setup-node@v4 + with: + node-version: '22.11.0' + cache: 'yarn' + + - name: 'Install udev for USB-detection' + if: runner.os == 'Linux' + shell: bash + run: sudo apt-get update && sudo apt-get install libudev-dev + + - name: 'Setup JS' + shell: bash + run: | + make setup-js diff --git a/.github/workflows/pd-test-build-deploy.yaml b/.github/workflows/pd-test-build-deploy.yaml index babebb5a918..fc047ab5f49 100644 --- a/.github/workflows/pd-test-build-deploy.yaml +++ b/.github/workflows/pd-test-build-deploy.yaml @@ -11,6 +11,9 @@ on: - 'components/**' - 'package.json' - '.github/workflows/pd-test-build-deploy.yaml' + - '.github/actions/js/setup/action.yml' + - '.github/actions/git/resolve-tag/action.yml' + - '.github/actions/environment/complex-variables/action.yml' push: paths: - 'protocol-designer/**' @@ -19,6 +22,9 @@ on: - 'components/**' - 'package.json' - '.github/workflows/pd-test-build-deploy.yaml' + - '.github/actions/js/setup/action.yml' + - '.github/actions/git/resolve-tag/action.yml' + - '.github/actions/environment/complex-variables/action.yml' branches: - '**' tags: @@ -37,126 +43,42 @@ env: CI: true jobs: - js-unit-test: + unit-test: name: 'protocol designer unit tests' - runs-on: 'ubuntu-22.04' - timeout-minutes: 30 + runs-on: 'ubuntu-24.04' + timeout-minutes: 20 steps: - - uses: 'actions/checkout@v4' - # https://github.com/actions/checkout/issues/290 - - name: 'Fix actions/checkout odd handling of tags' - if: startsWith(github.ref, 'refs/tags') - run: | - git fetch -f origin ${{ github.ref }}:${{ github.ref }} - git checkout ${{ github.ref }} - - uses: 'actions/setup-node@v4' - with: - node-version: '22.11.0' - - name: 'install udev for usb-detection' - run: | - # WORKAROUND: Remove microsoft debian repo due to https://github.com/microsoft/linux-package-repositories/issues/130. Remove line below after it is resolved - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update && sudo apt-get install libudev-dev - - name: 'cache yarn cache' - uses: actions/cache@v2 - with: - path: | - ${{ github.workspace }}/.yarn-cache - ${{ github.workspace }}/.npm-cache - key: js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn- - - name: 'setup-js' - run: | - npm config set cache ./.npm-cache - yarn config set cache-folder ./.yarn-cache - make setup-js - - name: 'run PD unit tests' + - name: 'Checkout Repository' + uses: actions/checkout@v4 + - uses: ./.github/actions/js/setup + - name: 'run unit tests' run: make -C protocol-designer test-cov - name: 'Upload coverage report' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v5 with: - files: ./coverage/lcov.info flags: protocol-designer + token: ${{ secrets.CODECOV_TOKEN }} e2e-test: - name: 'pd e2e tests' - needs: ['js-unit-test'] - timeout-minutes: 30 - strategy: - matrix: - os: ['ubuntu-22.04'] - runs-on: '${{ matrix.os }}' - steps: - - uses: 'actions/checkout@v4' - with: - fetch-depth: 0 - # https://github.com/actions/checkout/issues/290 - - name: 'Fix actions/checkout odd handling of tags' - if: startsWith(github.ref, 'refs/tags') - run: | - git fetch -f origin ${{ github.ref }}:${{ github.ref }} - git checkout ${{ github.ref }} - - uses: 'actions/setup-node@v4' - with: - node-version: '22.11.0' - - name: 'install udev for usb-detection' - if: startsWith(matrix.os, 'ubuntu') - run: | - # WORKAROUND: Remove microsoft debian repo due to https://github.com/microsoft/linux-package-repositories/issues/130. Remove line below after it is resolved - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update && sudo apt-get install libudev-dev - - name: 'cache yarn cache' - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/.yarn-cache - ${{ github.workspace }}/.npm-cache - key: js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn- - - name: 'setup-js' - run: | - npm config set cache ./.npm-cache - yarn config set cache-folder ./.yarn-cache - make setup-js - - name: 'test-e2e' - run: make -C protocol-designer test-e2e + name: 'protocol designer e2e tests' + runs-on: 'ubuntu-24.04' + timeout-minutes: 20 + steps: + - name: 'Checkout Repository' + uses: actions/checkout@v4 + - uses: ./.github/actions/js/setup + - name: 'run test-e2e' + run: make -C protocol-designer test-e2e + build-pd: - name: 'build protocol designer artifact' - needs: ['js-unit-test'] - runs-on: 'ubuntu-22.04' + timeout-minutes: 20 + name: 'build protocol designer' + needs: ['unit-test', 'e2e-test'] + runs-on: 'ubuntu-24.04' if: github.event_name != 'pull_request' steps: - - uses: 'actions/checkout@v4' - with: - fetch-depth: 0 - # https://github.com/actions/checkout/issues/290 - - name: 'Fix actions/checkout odd handling of tags' - if: startsWith(github.ref, 'refs/tags') - run: | - git fetch -f origin ${{ github.ref }}:${{ github.ref }} - git checkout ${{ github.ref }} - - uses: 'actions/setup-node@v4' - with: - node-version: '22.11.0' - - name: 'install udev for usb-detection' - run: | - # WORKAROUND: Remove microsoft debian repo due to https://github.com/microsoft/linux-package-repositories/issues/130. Remove line below after it is resolved - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update && sudo apt-get install libudev-dev - - name: 'cache yarn cache' - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/.yarn-cache - ${{ github.workspace }}/.npm-cache - key: js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - - name: 'setup-js' - run: | - npm config set cache ./.npm-cache - yarn config set cache-folder ./.yarn-cache - make setup-js + - uses: actions/checkout@v4 + - uses: ./.github/actions/js/setup - name: 'build PD' env: OT_PD_MIXPANEL_ID: ${{ secrets.OT_PD_MIXPANEL_ID }} @@ -168,40 +90,28 @@ jobs: with: name: 'pd-artifact' path: protocol-designer/dist + deploy-pd: - name: 'deploy PD artifact to S3' - runs-on: 'ubuntu-22.04' - needs: ['js-unit-test', 'build-pd'] + timeout-minutes: 10 + name: 'deploy protocol designer' + needs: ['build-pd'] + runs-on: 'ubuntu-24.04' if: github.event_name != 'pull_request' steps: - - uses: 'actions/checkout@v4' - # https://github.com/actions/checkout/issues/290 - - name: 'Fix actions/checkout odd handling of tags' - if: startsWith(github.ref, 'refs/tags') - run: | - git fetch -f origin ${{ github.ref }}:${{ github.ref }} - git checkout ${{ github.ref }} - - uses: 'actions/setup-node@v4' - with: - node-version: '22.11.0' - - name: 'install udev for usb-detection' - run: | - # WORKAROUND: Remove microsoft debian repo due to https://github.com/microsoft/linux-package-repositories/issues/130. Remove line below after it is resolved - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update && sudo apt-get install libudev-dev - - name: 'set complex environment variables' - id: 'set-vars' - uses: actions/github-script@v6 - with: - script: | - const { buildComplexEnvVars } = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/utils.js`) - buildComplexEnvVars(core, context) + - name: 'Checkout Repository' + uses: actions/checkout@v4 + + - uses: ./.github/actions/git/resolve-tag + + - uses: ./.github/actions/environment/complex-variables + - name: 'download PD build' uses: 'actions/download-artifact@v4' with: name: pd-artifact path: ./dist - name: 'configure ot3 s3 deploy creds and deploy' + shell: bash env: AWS_ACCESS_KEY_ID: ${{ secrets.PD_S3_SANDBOX_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.PD_S3_SANDBOX_SECRET }} @@ -218,4 +128,3 @@ jobs: # invalidate both sandbox.opentrons.com and www.sandbox.opentrons.com cloudfront caches aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_DISTRIBUTION_ID }} --paths "/*" --profile deploy aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_WWW_DISTRIBUTION_ID }} --paths "/*" --profile deploy - shell: bash diff --git a/protocol-designer/Makefile b/protocol-designer/Makefile index dc201e472bc..e9ef4864241 100644 --- a/protocol-designer/Makefile +++ b/protocol-designer/Makefile @@ -8,10 +8,10 @@ PATH := $(shell cd .. && yarn bin):$(PATH) benchmark_output := $(shell node -e 'console.log(new Date());') -# These variables can be overriden when make is invoked to customize the +# These variables can be overridden when make is invoked to customize the # behavior of jest tests ?= -cov_opts ?= --coverage=true +cov_opts ?= --coverage --pool=threads test_opts ?= # standard targets @@ -60,9 +60,9 @@ serve: all # end to end tests .PHONY: test-e2e test-e2e: clean-downloads - concurrently --no-color --kill-others --success first --names "protocol-designer-server,protocol-designer-tests" \ + concurrently --kill-others --success first --names "protocol-designer-server,protocol-designer-tests" \ "$(MAKE) dev" \ - "wait-on http://localhost:5178/ && cypress run --browser chrome --headless --record false" + "wait-on http://localhost:5178/ && cypress run --browser chrome --headless --record false --quiet" .PHONY: test test: diff --git a/protocol-designer/vite.config.mts b/protocol-designer/vite.config.mts index ed0a649b9b7..cebdace5157 100644 --- a/protocol-designer/vite.config.mts +++ b/protocol-designer/vite.config.mts @@ -64,6 +64,9 @@ export default defineConfig( }, server: { port: 5178, + watch: { + ignored: ['**/cypress/downloads/**'], + } }, } } diff --git a/vitest.config.mts b/vitest.config.mts index 1412fdcee4f..0d008099ea1 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -17,7 +17,7 @@ export default mergeConfig( coverage: { exclude: ['**/node_modules/**', '**/dist/**', '**/__tests__/**'], provider: 'v8', - reporter: ['text', 'json', 'html'], + reporter: ['text', 'json', 'html', 'lcov'], }, }, resolve: { From 19a94a630dc67d205495750c44d2d56b9bf8fd39 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Tue, 4 Feb 2025 09:49:29 -0600 Subject: [PATCH 45/81] chore(release): internal release notes 2.4.0-alpha.0 (#17405) --- api/release-notes-internal.md | 4 ++-- app-shell/build/release-notes-internal.md | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/api/release-notes-internal.md b/api/release-notes-internal.md index 1186b510eb6..48579201e21 100644 --- a/api/release-notes-internal.md +++ b/api/release-notes-internal.md @@ -2,11 +2,11 @@ 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 +## Internal Release 2.4.0-alpha.0 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): +### New Stuff In This Release (list in progress) - Python API version bumped to 2.23 - Added liquid classes and new transfer functions diff --git a/app-shell/build/release-notes-internal.md b/app-shell/build/release-notes-internal.md index 565c5e1aa9b..c389f3a0ad7 100644 --- a/app-shell/build/release-notes-internal.md +++ b/app-shell/build/release-notes-internal.md @@ -1,6 +1,10 @@ For more details about this release, please see the full [technical changelog][]. [technical change log]: https://github.com/Opentrons/opentrons/releases +## Internal Release 2.4.0-alpha.0 + +This internal release, pulled from the `edge` branch, contains features being developed for 8.4.0. It's for internal testing only. + ## 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. From d1cfe80765131f8eb05d080c2b03f80088de4df5 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Tue, 4 Feb 2025 14:05:24 -0500 Subject: [PATCH 46/81] feat(robot-server): handle new offset locations in /labwareOffsets (#17388) Adds the new format for labware offset locations from #17363 to the HTTP API `/labwareOffsets` endpoint. The endpoint now accepts and returns labware offset locations as these sequences. The filter API is for now unchanged, and still works properly to filter out or in offsets based on their core features or on their locations. The types are defined separately from the protocol engine because we'll be shortly adding a concept of a "general offset" to this API, and that is best modeled as another heterogenous union entry, which means the types will start to diverge. This comes along with a sql schema migration; the offset locations are normalized out into an offset table with a foreign key into the main offset table. All content from the offset table is migrated to the new one in the standard persistence directory migration api. ## Reviews - does the sql look good? - do the tests look appropriate? some have expanded - do the migrations look good? ## Testing - [x] put this on a machine that has offset data and make sure it migrates and comes up with the data preserved Closes EXEC-1105 --- api/src/opentrons/protocol_engine/__init__.py | 11 + .../labware_offset_standardization.py | 5 +- .../protocol_engine/types/__init__.py | 2 + .../types/labware_offset_location.py | 8 +- .../labware_offsets/_search_query_builder.py | 177 ++++++++ .../robot_server/labware_offsets/models.py | 89 +++- .../robot_server/labware_offsets/router.py | 48 +- .../robot_server/labware_offsets/store.py | 269 +++++++---- .../persistence/_migrations/v9_to_v10.py | 126 ++++++ .../persistence/file_and_directory_names.py | 2 +- .../persistence/persistence_directory.py | 5 +- .../persistence/tables/__init__.py | 4 +- .../persistence/tables/schema_10.py | 420 ++++++++++++++++++ .../http_api/test_labware_offsets.tavern.yaml | 92 ++-- .../tests/labware_offsets/test_store.py | 386 +++++++++++++--- robot-server/tests/persistence/test_tables.py | 167 ++++++- 16 files changed, 1590 insertions(+), 221 deletions(-) create mode 100644 robot-server/robot_server/labware_offsets/_search_query_builder.py create mode 100644 robot-server/robot_server/persistence/_migrations/v9_to_v10.py create mode 100644 robot-server/robot_server/persistence/tables/schema_10.py diff --git a/api/src/opentrons/protocol_engine/__init__.py b/api/src/opentrons/protocol_engine/__init__.py index 5e90c7235bf..84c80c1555e 100644 --- a/api/src/opentrons/protocol_engine/__init__.py +++ b/api/src/opentrons/protocol_engine/__init__.py @@ -30,6 +30,11 @@ LabwareOffsetCreate, LabwareOffsetVector, LegacyLabwareOffsetLocation, + LabwareOffsetLocationSequence, + OnLabwareOffsetLocationSequenceComponent, + OnModuleOffsetLocationSequenceComponent, + OnAddressableAreaOffsetLocationSequenceComponent, + LabwareOffsetLocationSequenceComponents, LabwareMovementStrategy, AddressableOffsetVector, DeckPoint, @@ -96,7 +101,13 @@ # public value interfaces and models "LabwareOffset", "LabwareOffsetCreate", + "LegacyLabwareOffsetCreate", + "LabwareOffsetLocationSequence", "LabwareOffsetVector", + "OnLabwareOffsetLocationSequenceComponent", + "OnModuleOffsetLocationSequenceComponent", + "OnAddressableAreaOffsetLocationSequenceComponent", + "LabwareOffsetLocationSequenceComponents", "LegacyLabwareOffsetCreate", "LegacyLabwareOffsetLocation", "LabwareMovementStrategy", diff --git a/api/src/opentrons/protocol_engine/labware_offset_standardization.py b/api/src/opentrons/protocol_engine/labware_offset_standardization.py index 836d40cb700..74626af5595 100644 --- a/api/src/opentrons/protocol_engine/labware_offset_standardization.py +++ b/api/src/opentrons/protocol_engine/labware_offset_standardization.py @@ -37,9 +37,10 @@ def standardize_labware_offset_create( ) -def _legacy_offset_location_to_offset_location_sequence( +def legacy_offset_location_to_offset_location_sequence( location: LegacyLabwareOffsetLocation, deck_definition: DeckDefinitionV5 ) -> LabwareOffsetLocationSequence: + """Convert a legacy location to a new-style sequence.""" sequence: LabwareOffsetLocationSequence = [] if location.definitionUri: sequence.append( @@ -165,7 +166,7 @@ def _locations_for_create( } ) return ( - _legacy_offset_location_to_offset_location_sequence( + legacy_offset_location_to_offset_location_sequence( normalized, deck_definition ), normalized, diff --git a/api/src/opentrons/protocol_engine/types/__init__.py b/api/src/opentrons/protocol_engine/types/__init__.py index fbaef870f3e..bf1f524a7a7 100644 --- a/api/src/opentrons/protocol_engine/types/__init__.py +++ b/api/src/opentrons/protocol_engine/types/__init__.py @@ -94,6 +94,7 @@ OnLabwareOffsetLocationSequenceComponent, OnModuleOffsetLocationSequenceComponent, OnAddressableAreaOffsetLocationSequenceComponent, + LabwareOffsetLocationSequenceComponents, ) from .labware_offset_vector import LabwareOffsetVector from .well_position import ( @@ -204,6 +205,7 @@ # Labware offset location "LegacyLabwareOffsetLocation", "LabwareOffsetLocationSequence", + "LabwareOffsetLocationSequenceComponents", "OnLabwareOffsetLocationSequenceComponent", "OnModuleOffsetLocationSequenceComponent", "OnAddressableAreaOffsetLocationSequenceComponent", diff --git a/api/src/opentrons/protocol_engine/types/labware_offset_location.py b/api/src/opentrons/protocol_engine/types/labware_offset_location.py index 2b992a4da01..2a4ebe9ebe6 100644 --- a/api/src/opentrons/protocol_engine/types/labware_offset_location.py +++ b/api/src/opentrons/protocol_engine/types/labware_offset_location.py @@ -3,7 +3,7 @@ This is its own module to fix circular imports. """ -from typing import Optional, Literal +from typing import Optional, Literal, Annotated from pydantic import BaseModel, Field @@ -48,12 +48,16 @@ class OnAddressableAreaOffsetLocationSequenceComponent(BaseModel): ) -LabwareOffsetLocationSequenceComponents = ( +LabwareOffsetLocationSequenceComponentsUnion = ( OnLabwareOffsetLocationSequenceComponent | OnModuleOffsetLocationSequenceComponent | OnAddressableAreaOffsetLocationSequenceComponent ) +LabwareOffsetLocationSequenceComponents = Annotated[ + LabwareOffsetLocationSequenceComponentsUnion, Field(discriminator="kind") +] + LabwareOffsetLocationSequence = list[LabwareOffsetLocationSequenceComponents] diff --git a/robot-server/robot_server/labware_offsets/_search_query_builder.py b/robot-server/robot_server/labware_offsets/_search_query_builder.py new file mode 100644 index 00000000000..d6630f59169 --- /dev/null +++ b/robot-server/robot_server/labware_offsets/_search_query_builder.py @@ -0,0 +1,177 @@ +"""Helper to build a search query.""" + +from __future__ import annotations +from typing import Final, TYPE_CHECKING + +import sqlalchemy + +from opentrons.protocol_engine import ModuleModel + +from robot_server.persistence.tables import ( + labware_offset_table, + labware_offset_location_sequence_components_table, +) +from .models import DoNotFilterType, DO_NOT_FILTER + +if TYPE_CHECKING: + from typing_extensions import Self + + +class SearchQueryBuilder: + """Helper class to build a search query. + + This object is stateful, and should be kept around just long enough to have the parameters + of a single search injected. + """ + + def __init__(self) -> None: + """Build the object.""" + super().__init__() + self._filter_original: Final = sqlalchemy.select( + labware_offset_table.c.row_id, + labware_offset_table.c.offset_id, + labware_offset_table.c.definition_uri, + labware_offset_table.c.vector_x, + labware_offset_table.c.vector_y, + labware_offset_table.c.vector_z, + labware_offset_table.c.created_at, + labware_offset_table.c.active, + labware_offset_location_sequence_components_table.c.sequence_ordinal, + labware_offset_location_sequence_components_table.c.component_kind, + labware_offset_location_sequence_components_table.c.primary_component_value, + ).select_from( + sqlalchemy.join( + labware_offset_table, + labware_offset_location_sequence_components_table, + labware_offset_table.c.row_id + == labware_offset_location_sequence_components_table.c.offset_id, + ) + ) + self._offset_location_alias: Final = ( + labware_offset_location_sequence_components_table.alias() + ) + self._current_base_filter_statement = self._filter_original + self._current_positive_location_filter: ( + sqlalchemy.sql.selectable.Exists | None + ) = None + self._current_negative_filter_subqueries: list[ + sqlalchemy.sql.selectable.Exists + ] = [] + + def _positive_query(self) -> sqlalchemy.sql.selectable.Exists: + if self._current_positive_location_filter is not None: + return self._current_positive_location_filter + return sqlalchemy.exists().where( + self._offset_location_alias.c.offset_id + == labware_offset_location_sequence_components_table.c.offset_id + ) + + def build_query(self) -> sqlalchemy.sql.selectable.Selectable: + """Render the query into a sqlalchemy object suitable for passing to the database.""" + statement = self._current_base_filter_statement + if self._current_positive_location_filter is not None: + statement = statement.where(self._current_positive_location_filter) + for subq in self._current_negative_filter_subqueries: + statement = statement.where(sqlalchemy.not_(subq)) + statement = statement.order_by(labware_offset_table.c.row_id).order_by( + labware_offset_location_sequence_components_table.c.sequence_ordinal + ) + return statement + + def do_active_filter(self, active: bool) -> Self: + """Filter to only rows that are active (active=True) or inactive (active=False).""" + self._current_base_filter_statement = self._current_base_filter_statement.where( + labware_offset_table.c.active == active + ) + return self + + def do_id_filter(self, id_filter: str | DoNotFilterType) -> Self: + """Filter to rows with only the given offset ID.""" + if id_filter is DO_NOT_FILTER: + return self + + self._current_base_filter_statement = self._current_base_filter_statement.where( + labware_offset_table.c.offset_id == id_filter + ) + return self + + def do_definition_uri_filter( + self, definition_uri_filter: str | DoNotFilterType + ) -> Self: + """Filter to rows of an offset that apply to a definition URI.""" + if definition_uri_filter is DO_NOT_FILTER: + return self + self._current_base_filter_statement = self._current_base_filter_statement.where( + labware_offset_table.c.definition_uri == definition_uri_filter + ) + return self + + def do_on_addressable_area_filter( + self, + addressable_area_filter: str | DoNotFilterType, + ) -> Self: + """Filter to rows of an offset that applies to the given addressable area.""" + if addressable_area_filter is DO_NOT_FILTER: + return self + self._current_positive_location_filter = ( + self._positive_query() + .where(self._offset_location_alias.c.component_kind == "onAddressableArea") + .where( + self._offset_location_alias.c.primary_component_value + == addressable_area_filter + ) + ) + return self + + def do_on_labware_filter( + self, labware_uri_filter: str | DoNotFilterType | None + ) -> Self: + """Filter to the rows of an offset located on the given labware (or no labware).""" + if labware_uri_filter is DO_NOT_FILTER: + return self + if labware_uri_filter is None: + self._current_negative_filter_subqueries.append( + sqlalchemy.exists() + .where( + self._offset_location_alias.c.offset_id + == labware_offset_location_sequence_components_table.c.offset_id + ) + .where(self._offset_location_alias.c.component_kind == "onLabware") + ) + return self + self._current_positive_location_filter = ( + self._positive_query() + .where(self._offset_location_alias.c.component_kind == "onLabware") + .where( + self._offset_location_alias.c.primary_component_value + == labware_uri_filter + ) + ) + return self + + def do_on_module_filter( + self, + module_model_filter: ModuleModel | DoNotFilterType | None, + ) -> Self: + """Filter to the rows of an offset located on the given module (or no module).""" + if module_model_filter is DO_NOT_FILTER: + return self + if module_model_filter is None: + self._current_negative_filter_subqueries.append( + sqlalchemy.exists() + .where( + self._offset_location_alias.c.offset_id + == labware_offset_location_sequence_components_table.c.offset_id + ) + .where(self._offset_location_alias.c.component_kind == "onModule") + ) + return self + self._current_positive_location_filter = ( + self._positive_query() + .where(self._offset_location_alias.c.component_kind == "onModule") + .where( + self._offset_location_alias.c.primary_component_value + == module_model_filter.value + ) + ) + return self diff --git a/robot-server/robot_server/labware_offsets/models.py b/robot-server/robot_server/labware_offsets/models.py index fcc3d2f2200..7b3f523fccd 100644 --- a/robot-server/robot_server/labware_offsets/models.py +++ b/robot-server/robot_server/labware_offsets/models.py @@ -1,11 +1,98 @@ """Request/response models for the `/labwareOffsets` endpoints.""" +from datetime import datetime +import enum +from typing import Literal, Annotated, Final, TypeAlias, Sequence -from typing import Literal +from pydantic import BaseModel, Field + +from opentrons.protocol_engine import ( + LabwareOffsetVector, +) +from opentrons.protocol_engine.types.labware_offset_location import ( + LabwareOffsetLocationSequenceComponentsUnion, +) from robot_server.errors.error_responses import ErrorDetails +class _DoNotFilter(enum.Enum): + DO_NOT_FILTER = enum.auto() + + +DO_NOT_FILTER: Final = _DoNotFilter.DO_NOT_FILTER +"""A sentinel value for when a filter should not be applied. + +This is different from filtering on `None`, which returns only entries where the +value is equal to `None`. +""" + + +DoNotFilterType: TypeAlias = Literal[_DoNotFilter.DO_NOT_FILTER] +"""The type of `DO_NOT_FILTER`, as `NoneType` is to `None`. + +Unfortunately, mypy doesn't let us write `Literal[DO_NOT_FILTER]`. Use this instead. +""" + + +class UnknownLabwareOffsetLocationSequenceComponent(BaseModel): + """A labware offset location sequence component from the future.""" + + kind: Literal["unknown"] = "unknown" + storedKind: str + primaryValue: str + + +# This is redefined here so we can add stuff to it easily +StoredLabwareOffsetLocationSequenceComponents = Annotated[ + LabwareOffsetLocationSequenceComponentsUnion, Field(discriminator="kind") +] + + +ReturnedLabwareOffsetLocationSequenceComponents = Annotated[ + LabwareOffsetLocationSequenceComponentsUnion + | UnknownLabwareOffsetLocationSequenceComponent, + Field(discriminator="kind"), +] + + +class StoredLabwareOffsetCreate(BaseModel): + """Create an offset for storage.""" + + definitionUri: str = Field(..., description="The URI for the labware's definition.") + + locationSequence: Sequence[StoredLabwareOffsetLocationSequenceComponents] = Field( + ..., + description="Where the labware is located on the robot. Can represent all locations, but may not be present for older runs.", + min_length=1, + ) + vector: LabwareOffsetVector = Field( + ..., + description="The offset applied to matching labware.", + ) + + +class StoredLabwareOffset(BaseModel): + """An offset that the robot adds to a pipette's position when it moves to labware.""" + + # This is a separate thing from the model defined in protocol engine because as a new API it does + # not have to handle legacy locations. There is probably a better way to do this than to copy the model + # contents, but I'm not sure what it is. + id: str = Field(..., description="Unique labware offset record identifier.") + createdAt: datetime = Field(..., description="When this labware offset was added.") + definitionUri: str = Field(..., description="The URI for the labware's definition.") + + locationSequence: Sequence[ReturnedLabwareOffsetLocationSequenceComponents] = Field( + ..., + description="Where the labware is located on the robot. Can represent all locations, but may not be present for older runs.", + min_length=1, + ) + vector: LabwareOffsetVector = Field( + ..., + description="The offset applied to matching labware.", + ) + + class LabwareOffsetNotFound(ErrorDetails): """An error returned when a requested labware offset does not exist.""" diff --git a/robot-server/robot_server/labware_offsets/router.py b/robot-server/robot_server/labware_offsets/router.py index 3f0ada1d46e..4ebf532d657 100644 --- a/robot-server/robot_server/labware_offsets/router.py +++ b/robot-server/robot_server/labware_offsets/router.py @@ -9,12 +9,7 @@ from pydantic.json_schema import SkipJsonSchema from server_utils.fastapi_utils.light_router import LightRouter -from opentrons.protocol_engine import ( - LabwareOffset, - LegacyLabwareOffsetCreate, - ModuleModel, -) -from opentrons.types import DeckSlotName +from opentrons.protocol_engine import ModuleModel from robot_server.labware_offsets.models import LabwareOffsetNotFound from robot_server.service.dependencies import get_current_time, get_unique_id @@ -28,12 +23,17 @@ ) from .store import ( - DO_NOT_FILTER, - DoNotFilterType, LabwareOffsetNotFoundError, LabwareOffsetStore, + IncomingStoredLabwareOffset, ) from .fastapi_dependencies import get_labware_offset_store +from .models import ( + StoredLabwareOffset, + StoredLabwareOffsetCreate, + DO_NOT_FILTER, + DoNotFilterType, +) router = LightRouter() @@ -58,18 +58,26 @@ async def post_labware_offset( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], new_offset_id: Annotated[str, fastapi.Depends(get_unique_id)], new_offset_created_at: Annotated[datetime, fastapi.Depends(get_current_time)], - request_body: Annotated[RequestModel[LegacyLabwareOffsetCreate], fastapi.Body()], -) -> PydanticResponse[SimpleBody[LabwareOffset]]: - new_offset = LabwareOffset.model_construct( + request_body: Annotated[RequestModel[StoredLabwareOffsetCreate], fastapi.Body()], +) -> PydanticResponse[SimpleBody[StoredLabwareOffset]]: + new_offset = IncomingStoredLabwareOffset( id=new_offset_id, createdAt=new_offset_created_at, definitionUri=request_body.data.definitionUri, - location=request_body.data.location, + locationSequence=request_body.data.locationSequence, vector=request_body.data.vector, ) store.add(new_offset) return await PydanticResponse.create( - content=SimpleBody.model_construct(data=new_offset), + content=SimpleBody.model_construct( + data=StoredLabwareOffset( + id=new_offset_id, + createdAt=new_offset_created_at, + definitionUri=request_body.data.definitionUri, + locationSequence=request_body.data.locationSequence, + vector=request_body.data.vector, + ) + ), status_code=201, ) @@ -101,8 +109,8 @@ async def get_labware_offsets( # noqa: D103 ), ), ] = DO_NOT_FILTER, - location_slot_name: Annotated[ - Json[DeckSlotName] | SkipJsonSchema[DoNotFilterType], + location_addressable_area_name: Annotated[ + Json[str] | SkipJsonSchema[DoNotFilterType], fastapi.Query( alias="locationSlotName", description="Filter for exact matches on the `location.slotName` field.", @@ -141,7 +149,7 @@ async def get_labware_offsets( # noqa: D103 alias="pageLength", description="The maximum number of entries to return." ), ] = "unlimited", -) -> PydanticResponse[SimpleMultiBody[LabwareOffset]]: +) -> PydanticResponse[SimpleMultiBody[StoredLabwareOffset]]: if cursor not in (0, None) or page_length != "unlimited": # todo(mm, 2024-12-06): Support this when LabwareOffsetStore supports it. raise NotImplementedError( @@ -151,7 +159,7 @@ async def get_labware_offsets( # noqa: D103 result_data = store.search( id_filter=id, definition_uri_filter=definition_uri, - location_slot_name_filter=location_slot_name, + location_addressable_area_filter=location_addressable_area_name, location_definition_uri_filter=location_definition_uri, location_module_model_filter=location_module_model, ) @@ -163,7 +171,7 @@ async def get_labware_offsets( # noqa: D103 ) return await PydanticResponse.create( - SimpleMultiBody[LabwareOffset].model_construct( + SimpleMultiBody[StoredLabwareOffset].model_construct( data=result_data, meta=meta, ) @@ -183,7 +191,7 @@ async def delete_labware_offset( # noqa: D103 str, fastapi.Path(description="The `id` field of the offset to delete."), ], -) -> PydanticResponse[SimpleBody[LabwareOffset]]: +) -> PydanticResponse[SimpleBody[StoredLabwareOffset]]: try: deleted_offset = store.delete(offset_id=id) except LabwareOffsetNotFoundError as e: @@ -201,7 +209,7 @@ async def delete_labware_offset( # noqa: D103 include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def delete_all_labware_offsets( # noqa: D103 - store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)] + store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], ) -> PydanticResponse[SimpleEmptyBody]: store.delete_all() return await PydanticResponse.create(SimpleEmptyBody.model_construct()) diff --git a/robot-server/robot_server/labware_offsets/store.py b/robot-server/robot_server/labware_offsets/store.py index dbeccc728a1..e17c1a30686 100644 --- a/robot-server/robot_server/labware_offsets/store.py +++ b/robot-server/robot_server/labware_offsets/store.py @@ -1,43 +1,52 @@ # noqa: D100 -import enum -from typing import Final, Literal, TypeAlias +from datetime import datetime +from dataclasses import dataclass +from typing import Iterator, Sequence +from typing_extensions import assert_never from opentrons.protocol_engine.types import ( - LabwareOffset, - LegacyLabwareOffsetLocation, LabwareOffsetVector, ModuleModel, + OnAddressableAreaOffsetLocationSequenceComponent, + OnModuleOffsetLocationSequenceComponent, + OnLabwareOffsetLocationSequenceComponent, ) -from opentrons.types import DeckSlotName -from robot_server.persistence.tables import labware_offset_table +from robot_server.persistence.tables import ( + labware_offset_table, + labware_offset_location_sequence_components_table, +) +from .models import ( + StoredLabwareOffset, + DoNotFilterType, + DO_NOT_FILTER, + StoredLabwareOffsetLocationSequenceComponents, + ReturnedLabwareOffsetLocationSequenceComponents, + UnknownLabwareOffsetLocationSequenceComponent, +) import sqlalchemy import sqlalchemy.exc +from ._search_query_builder import SearchQueryBuilder -class _DoNotFilter(enum.Enum): - DO_NOT_FILTER = enum.auto() - - -DO_NOT_FILTER: Final = _DoNotFilter.DO_NOT_FILTER -"""A sentinel value for when a filter should not be applied. +ReturnedLabwareOffsetLocationSequence = Sequence[ + ReturnedLabwareOffsetLocationSequenceComponents +] -This is different from filtering on `None`, which returns only entries where the -value is equal to `None`. -""" +@dataclass +class IncomingStoredLabwareOffset: + """Internal class for representing valid incoming offsets.""" -DoNotFilterType: TypeAlias = Literal[_DoNotFilter.DO_NOT_FILTER] -"""The type of `DO_NOT_FILTER`, as `NoneType` is to `None`. + id: str + createdAt: datetime + definitionUri: str + locationSequence: Sequence[StoredLabwareOffsetLocationSequenceComponents] + vector: LabwareOffsetVector -Unfortunately, mypy doesn't let us write `Literal[DO_NOT_FILTER]`. Use this instead. -""" - -# todo(mm, 2024-12-06): Convert to be SQL-based and persistent instead of in-memory. -# https://opentrons.atlassian.net/browse/EXEC-1015 class LabwareOffsetStore: """A persistent store for labware offsets, to support the `/labwareOffsets` endpoints.""" @@ -50,78 +59,74 @@ def __init__(self, sql_engine: sqlalchemy.engine.Engine) -> None: """ self._sql_engine = sql_engine - def add(self, offset: LabwareOffset) -> None: + def add( + self, + offset: IncomingStoredLabwareOffset, + ) -> None: """Store a new labware offset.""" with self._sql_engine.begin() as transaction: + offset_row_id = transaction.execute( + sqlalchemy.insert(labware_offset_table).values( + _pydantic_to_sql_offset(offset) + ) + ).inserted_primary_key.row_id transaction.execute( - sqlalchemy.insert(labware_offset_table).values(_pydantic_to_sql(offset)) + sqlalchemy.insert( + labware_offset_location_sequence_components_table + ).values( + list( + _pydantic_to_sql_location_sequence_iterator( + offset, offset_row_id + ) + ) + ) ) def search( self, id_filter: str | DoNotFilterType = DO_NOT_FILTER, definition_uri_filter: str | DoNotFilterType = DO_NOT_FILTER, - location_slot_name_filter: DeckSlotName | DoNotFilterType = DO_NOT_FILTER, - location_module_model_filter: ModuleModel - | None - | DoNotFilterType = DO_NOT_FILTER, + location_addressable_area_filter: str | DoNotFilterType = DO_NOT_FILTER, + location_module_model_filter: ( + ModuleModel | None | DoNotFilterType + ) = DO_NOT_FILTER, location_definition_uri_filter: str | None | DoNotFilterType = DO_NOT_FILTER, # todo(mm, 2024-12-06): Support pagination (cursor & pageLength query params). # The logic for that is currently duplicated across several places in # robot-server and api. We should try to clean that up, or at least avoid # making it worse. - ) -> list[LabwareOffset]: + ) -> list[StoredLabwareOffset]: """Return all matching labware offsets in order from oldest-added to newest.""" - statement = ( - sqlalchemy.select(labware_offset_table) - .order_by(labware_offset_table.c.row_id) - .where(labware_offset_table.c.active == True) # noqa: E712 + builder = ( + SearchQueryBuilder() + .do_active_filter(True) + .do_id_filter(id_filter) + .do_definition_uri_filter(definition_uri_filter) + .do_on_addressable_area_filter(location_addressable_area_filter) + .do_on_module_filter(location_module_model_filter) + .do_on_labware_filter(location_definition_uri_filter) ) - - if id_filter is not DO_NOT_FILTER: - statement = statement.where(labware_offset_table.c.offset_id == id_filter) - if definition_uri_filter is not DO_NOT_FILTER: - statement = statement.where( - labware_offset_table.c.definition_uri == definition_uri_filter - ) - if location_slot_name_filter is not DO_NOT_FILTER: - statement = statement.where( - labware_offset_table.c.location_slot_name - == location_slot_name_filter.value - ) - if location_module_model_filter is not DO_NOT_FILTER: - location_module_model_filter_value = ( - location_module_model_filter.value - if location_module_model_filter is not None - else None - ) - statement = statement.where( - labware_offset_table.c.location_module_model - == location_module_model_filter_value - ) - if location_definition_uri_filter is not DO_NOT_FILTER: - statement = statement.where( - labware_offset_table.c.location_definition_uri - == location_definition_uri_filter - ) + query = builder.build_query() with self._sql_engine.begin() as transaction: - result = transaction.execute(statement).all() + result = transaction.execute(query).all() - return [_sql_to_pydantic(row) for row in result] + if len(result) == 0: + return [] + return list(_collate_sql_to_pydantic(result)) - def delete(self, offset_id: str) -> LabwareOffset: + def delete(self, offset_id: str) -> StoredLabwareOffset: """Delete a labware offset by its ID. Return what was just deleted.""" + builder = SearchQueryBuilder().do_id_filter(offset_id) + query = builder.build_query() with self._sql_engine.begin() as transaction: try: - row_to_delete = transaction.execute( - sqlalchemy.select(labware_offset_table).where( - labware_offset_table.c.offset_id == offset_id - ) - ).one() + offset_rows = transaction.execute(query).all() except sqlalchemy.exc.NoResultFound: raise LabwareOffsetNotFoundError(bad_offset_id=offset_id) from None - if not row_to_delete.active: + if len(offset_rows) == 0: + raise LabwareOffsetNotFoundError(bad_offset_id=offset_id) + if not offset_rows[0].active: # Already soft-deleted. raise LabwareOffsetNotFoundError(bad_offset_id=offset_id) @@ -131,7 +136,7 @@ def delete(self, offset_id: str) -> LabwareOffset: .values(active=False) ) - return _sql_to_pydantic(row_to_delete) + return next(_collate_sql_to_pydantic(offset_rows)) def delete_all(self) -> None: """Delete all labware offsets.""" @@ -149,36 +154,120 @@ def __init__(self, bad_offset_id: str) -> None: self.bad_offset_id = bad_offset_id -def _sql_to_pydantic(row: sqlalchemy.engine.Row) -> LabwareOffset: - return LabwareOffset( - id=row.offset_id, - createdAt=row.created_at, - definitionUri=row.definition_uri, - location=LegacyLabwareOffsetLocation( - slotName=DeckSlotName(row.location_slot_name), - moduleModel=row.location_module_model, - definitionUri=row.location_definition_uri, - ), - vector=LabwareOffsetVector( - x=row.vector_x, - y=row.vector_y, - z=row.vector_z, +def _sql_sequence_component_to_pydantic_sequence_component( + component_row: sqlalchemy.engine.Row, +) -> ReturnedLabwareOffsetLocationSequenceComponents: + if component_row.component_kind == "onLabware": + return OnLabwareOffsetLocationSequenceComponent( + labwareUri=component_row.primary_component_value + ) + elif component_row.component_kind == "onModule": + return OnModuleOffsetLocationSequenceComponent( + moduleModel=ModuleModel(component_row.primary_component_value) + ) + elif component_row.component_kind == "onAddressableArea": + return OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName=component_row.primary_component_value + ) + else: + return UnknownLabwareOffsetLocationSequenceComponent( + storedKind=component_row.component_kind, + primaryValue=component_row.primary_component_value, + ) + + +def _collate_sql_locations( + first_row: sqlalchemy.engine.Row, rest_rows: Iterator[sqlalchemy.engine.Row] +) -> tuple[ + list[ReturnedLabwareOffsetLocationSequenceComponents], sqlalchemy.engine.Row | None +]: + offset_id = first_row.offset_id + location_sequence: list[ReturnedLabwareOffsetLocationSequenceComponents] = [ + _sql_sequence_component_to_pydantic_sequence_component(first_row) + ] + while True: + try: + row = next(rest_rows) + except StopIteration: + return location_sequence, None + if row.offset_id != offset_id: + return location_sequence, row + location_sequence.append( + _sql_sequence_component_to_pydantic_sequence_component(row) + ) + + +def _sql_to_pydantic( + first_row: sqlalchemy.engine.Row, rest_rows: Iterator[sqlalchemy.engine.Row] +) -> tuple[StoredLabwareOffset, sqlalchemy.engine.Row | None]: + location_sequence, next_row = _collate_sql_locations(first_row, rest_rows) + return ( + StoredLabwareOffset( + id=first_row.offset_id, + createdAt=first_row.created_at, + definitionUri=first_row.definition_uri, + locationSequence=location_sequence, + vector=LabwareOffsetVector( + x=first_row.vector_x, + y=first_row.vector_y, + z=first_row.vector_z, + ), ), + next_row, ) -def _pydantic_to_sql(labware_offset: LabwareOffset) -> dict[str, object]: +def _collate_sql_to_pydantic( + query_results: list[sqlalchemy.engine.Row], +) -> Iterator[StoredLabwareOffset]: + row_iter = iter(query_results) + row: sqlalchemy.engine.Row | None = next(row_iter) + while row: + result, row = _sql_to_pydantic(row, row_iter) + yield result + + +def _pydantic_to_sql_offset( + labware_offset: IncomingStoredLabwareOffset, +) -> dict[str, object]: return dict( offset_id=labware_offset.id, definition_uri=labware_offset.definitionUri, - location_slot_name=labware_offset.location.slotName.value, - location_module_model=labware_offset.location.moduleModel.value - if labware_offset.location.moduleModel is not None - else None, - location_definition_uri=labware_offset.location.definitionUri, vector_x=labware_offset.vector.x, vector_y=labware_offset.vector.y, vector_z=labware_offset.vector.z, created_at=labware_offset.createdAt, active=True, ) + + +def _pydantic_to_sql_location_sequence_iterator( + labware_offset: IncomingStoredLabwareOffset, offset_row_id: int +) -> Iterator[dict[str, object]]: + for index, component in enumerate(labware_offset.locationSequence): + if isinstance(component, OnLabwareOffsetLocationSequenceComponent): + yield dict( + offset_id=offset_row_id, + sequence_ordinal=index, + component_kind=component.kind, + primary_component_value=component.labwareUri, + component_value_json=component.model_dump_json(), + ) + elif isinstance(component, OnModuleOffsetLocationSequenceComponent): + yield dict( + offset_id=offset_row_id, + sequence_ordinal=index, + component_kind=component.kind, + primary_component_value=component.moduleModel.value, + component_value_json=component.model_dump_json(), + ) + elif isinstance(component, OnAddressableAreaOffsetLocationSequenceComponent): + yield dict( + offset_id=offset_row_id, + sequence_ordinal=index, + component_kind=component.kind, + primary_component_value=component.addressableAreaName, + component_value_json=component.model_dump_json(), + ) + else: + assert_never(component) diff --git a/robot-server/robot_server/persistence/_migrations/v9_to_v10.py b/robot-server/robot_server/persistence/_migrations/v9_to_v10.py new file mode 100644 index 00000000000..e76ea7217b1 --- /dev/null +++ b/robot-server/robot_server/persistence/_migrations/v9_to_v10.py @@ -0,0 +1,126 @@ +"""Migrate the persistence directory from schema 9 to schema 10. + +Summary of changes from schema 9: + +- Adds a new `labware_offset_sequence_components` table. +""" + +from pathlib import Path + +import sqlalchemy + +from opentrons_shared_data.deck.types import DeckDefinitionV5 +from opentrons_shared_data.deck import load as load_deck + +from opentrons.types import DeckSlotName +from opentrons.protocols.api_support.deck_type import ( + guess_from_global_config as guess_deck_type_from_global_config, +) +from opentrons.protocol_engine import LegacyLabwareOffsetLocation, DeckType, ModuleModel +from opentrons.protocol_engine.labware_offset_standardization import ( + legacy_offset_location_to_offset_location_sequence, +) + +from robot_server.persistence.database import sql_engine_ctx +from robot_server.persistence.file_and_directory_names import DB_FILE +from robot_server.persistence.tables import schema_10, schema_9 + +from ._util import copy_contents +from .._folder_migrator import Migration + + +class Migration9to10(Migration): # noqa: D101 + def migrate(self, source_dir: Path, dest_dir: Path) -> None: + """Migrate the persistence directory from schema 9 to 10.""" + copy_contents(source_dir=source_dir, dest_dir=dest_dir) + + # First we create the new version of our labware offsets table and sequence table + with sql_engine_ctx( + dest_dir / DB_FILE + ) as engine, engine.begin() as transaction: + schema_10.labware_offset_table.create(transaction) + schema_10.labware_offset_location_sequence_components_table.create( + transaction + ) + # Then we upmigrate the data to the new tables + _upmigrate_stored_offsets(transaction) + # Then, we drop the table with we don't care about anymore + schema_9.labware_offset_table.drop(transaction) + + +def _upmigrate_stored_offsets(connection: sqlalchemy.engine.Connection) -> None: + # grab the deck def. middlewares aren't up yet so we can't use the nice version + deck_definition = load_deck( + DeckType(guess_deck_type_from_global_config()), version=5 + ) + + offsets = connection.execute(sqlalchemy.select(schema_9.labware_offset_table)) + + for offset in offsets: + new_row = connection.execute( + sqlalchemy.insert(schema_10.labware_offset_table).values( + _v9_offset_to_v10_offset(offset) + ) + ).inserted_primary_key.row_id + connection.execute( + sqlalchemy.insert( + schema_10.labware_offset_location_sequence_components_table + ).values( + _v9_offset_to_v10_offset_locations(offset, new_row, deck_definition) + ) + ) + + +def _v9_offset_to_v10_offset(v9_offset: sqlalchemy.engine.Row) -> dict[str, object]: + return dict( + offset_id=v9_offset.offset_id, + definition_uri=v9_offset.definition_uri, + vector_x=v9_offset.vector_x, + vector_y=v9_offset.vector_y, + vector_z=v9_offset.vector_z, + created_at=v9_offset.created_at, + active=v9_offset.active, + ) + + +def _v9_offset_to_v10_offset_locations( + v9_offset: sqlalchemy.engine.Row, v10_id: int, deck_definition: DeckDefinitionV5 +) -> list[dict[str, object]]: + location_sequence = legacy_offset_location_to_offset_location_sequence( + LegacyLabwareOffsetLocation( + slotName=DeckSlotName(v9_offset.location_slot_name), + moduleModel=( + ModuleModel(v9_offset.location_module_model) + if v9_offset.location_module_model is not None + else None + ), + definitionUri=v9_offset.location_definition_uri, + ), + deck_definition, + ) + values: list[dict[str, object]] = [] + for index, sequence_component in enumerate(location_sequence): + primary_component_value = "" + component_value_json = "" + if sequence_component.kind == "onLabware": + primary_component_value = sequence_component.labwareUri + component_value_json = sequence_component.model_dump_json() + elif sequence_component.kind == "onModule": + primary_component_value = sequence_component.moduleModel.value + component_value_json = sequence_component.model_dump_json() + elif sequence_component.kind == "onAddressableArea": + primary_component_value = sequence_component.addressableAreaName + component_value_json = sequence_component.model_dump_json() + else: + # This should never happen since we're exhaustively checking kinds here + continue + values.append( + dict( + offset_id=v10_id, + sequence_ordinal=index, + component_kind=sequence_component.kind, + primary_component_value=primary_component_value, + component_value_json=component_value_json, + ) + ) + return values diff --git a/robot-server/robot_server/persistence/file_and_directory_names.py b/robot-server/robot_server/persistence/file_and_directory_names.py index 1d191a0f311..11613dab801 100644 --- a/robot-server/robot_server/persistence/file_and_directory_names.py +++ b/robot-server/robot_server/persistence/file_and_directory_names.py @@ -8,7 +8,7 @@ from typing import Final -LATEST_VERSION_DIRECTORY: Final = "9" +LATEST_VERSION_DIRECTORY: Final = "10" DECK_CONFIGURATION_FILE: Final = "deck_configuration.json" PROTOCOLS_DIRECTORY: Final = "protocols" diff --git a/robot-server/robot_server/persistence/persistence_directory.py b/robot-server/robot_server/persistence/persistence_directory.py index e5a86b31af2..4df4a111e1c 100644 --- a/robot-server/robot_server/persistence/persistence_directory.py +++ b/robot-server/robot_server/persistence/persistence_directory.py @@ -1,6 +1,5 @@ """Create or reset the server's persistence directory.""" - from pathlib import Path from logging import getLogger from shutil import rmtree @@ -19,6 +18,7 @@ v6_to_v7, v7_to_v8, v8_to_v9, + v9_to_v10, ) from .file_and_directory_names import LATEST_VERSION_DIRECTORY @@ -69,7 +69,8 @@ def make_migration_orchestrator(prepared_root: Path) -> MigrationOrchestrator: # internal robots. v6_to_v7.Migration6to7(subdirectory="7.1"), v7_to_v8.Migration7to8(subdirectory="8"), - v8_to_v9.Migration8to9(subdirectory=LATEST_VERSION_DIRECTORY), + v8_to_v9.Migration8to9(subdirectory="9"), + v9_to_v10.Migration9to10(subdirectory=LATEST_VERSION_DIRECTORY), ], temp_file_prefix="temp-", ) diff --git a/robot-server/robot_server/persistence/tables/__init__.py b/robot-server/robot_server/persistence/tables/__init__.py index 3c20c3f8a93..42ed01005d6 100644 --- a/robot-server/robot_server/persistence/tables/__init__.py +++ b/robot-server/robot_server/persistence/tables/__init__.py @@ -1,7 +1,7 @@ """SQL database schemas.""" # Re-export the latest schema. -from .schema_9 import ( +from .schema_10 import ( metadata, protocol_table, analysis_table, @@ -14,6 +14,7 @@ data_files_table, boolean_setting_table, labware_offset_table, + labware_offset_location_sequence_components_table, PrimitiveParamSQLEnum, ProtocolKindSQLEnum, BooleanSettingKey, @@ -35,6 +36,7 @@ "data_files_table", "boolean_setting_table", "labware_offset_table", + "labware_offset_location_sequence_components_table", "PrimitiveParamSQLEnum", "ProtocolKindSQLEnum", "BooleanSettingKey", diff --git a/robot-server/robot_server/persistence/tables/schema_10.py b/robot-server/robot_server/persistence/tables/schema_10.py new file mode 100644 index 00000000000..b403f2feeb1 --- /dev/null +++ b/robot-server/robot_server/persistence/tables/schema_10.py @@ -0,0 +1,420 @@ +"""v10 of our SQLite schema.""" + +import enum +import sqlalchemy + +from robot_server.persistence._utc_datetime import UTCDateTime + + +metadata = sqlalchemy.MetaData() + + +class PrimitiveParamSQLEnum(enum.Enum): + """Enum type to store primitive param type.""" + + INT = "int" + FLOAT = "float" + BOOL = "bool" + STR = "str" + + +class ProtocolKindSQLEnum(enum.Enum): + """What kind a stored protocol is.""" + + STANDARD = "standard" + QUICK_TRANSFER = "quick-transfer" + + +class DataFileSourceSQLEnum(enum.Enum): + """The source this data file is from.""" + + UPLOADED = "uploaded" + GENERATED = "generated" + + +class CommandStatusSQLEnum(enum.Enum): + """Command status sql enum.""" + + QUEUED = "queued" + RUNNING = "running" + SUCCEEDED = "succeeded" + FAILED = "failed" + + +protocol_table = sqlalchemy.Table( + "protocol", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column("protocol_key", sqlalchemy.String, nullable=True), + sqlalchemy.Column( + "protocol_kind", + sqlalchemy.Enum( + ProtocolKindSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + create_constraint=True, + ), + index=True, + nullable=False, + ), +) + + +analysis_table = sqlalchemy.Table( + "analysis", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "protocol_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("protocol.id"), + index=True, + nullable=False, + ), + sqlalchemy.Column( + "analyzer_version", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "completed_analysis", + # Stores a JSON string. See CompletedAnalysisStore. + sqlalchemy.String, + nullable=False, + ), +) + + +analysis_primitive_type_rtp_table = sqlalchemy.Table( + "analysis_primitive_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "analysis_id", + sqlalchemy.ForeignKey("analysis.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "parameter_type", + sqlalchemy.Enum( + PrimitiveParamSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + create_constraint=True, + # todo(mm, 2024-09-24): Can we add validate_strings=True here? + ), + nullable=False, + ), + sqlalchemy.Column( + "parameter_value", + sqlalchemy.String, + nullable=False, + ), +) + + +analysis_csv_rtp_table = sqlalchemy.Table( + "analysis_csv_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "analysis_id", + sqlalchemy.ForeignKey("analysis.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_id", + sqlalchemy.ForeignKey("data_files.id"), + nullable=True, + ), +) + + +run_table = sqlalchemy.Table( + "run", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column( + "protocol_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("protocol.id"), + nullable=True, + ), + sqlalchemy.Column( + "state_summary", + sqlalchemy.String, + nullable=True, + ), + sqlalchemy.Column("engine_status", sqlalchemy.String, nullable=True), + sqlalchemy.Column("_updated_at", UTCDateTime, nullable=True), + sqlalchemy.Column( + "run_time_parameters", + # Stores a JSON string. See RunStore. + sqlalchemy.String, + nullable=True, + ), +) + + +action_table = sqlalchemy.Table( + "action", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column("created_at", UTCDateTime, nullable=False), + sqlalchemy.Column("action_type", sqlalchemy.String, nullable=False), + sqlalchemy.Column( + "run_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("run.id"), + nullable=False, + ), +) + + +run_command_table = sqlalchemy.Table( + "run_command", + metadata, + sqlalchemy.Column("row_id", sqlalchemy.Integer, primary_key=True), + sqlalchemy.Column( + "run_id", sqlalchemy.String, sqlalchemy.ForeignKey("run.id"), nullable=False + ), + # command_index in commands enumeration + sqlalchemy.Column("index_in_run", sqlalchemy.Integer, nullable=False), + sqlalchemy.Column("command_id", sqlalchemy.String, nullable=False), + sqlalchemy.Column("command", sqlalchemy.String, nullable=False), + sqlalchemy.Column( + "command_intent", + sqlalchemy.String, + # nullable=True to match the underlying SQL, which is nullable because of a bug + # in the migration that introduced this column. This is not intended to ever be + # null in practice. + nullable=True, + ), + sqlalchemy.Column("command_error", sqlalchemy.String, nullable=True), + sqlalchemy.Column( + "command_status", + sqlalchemy.Enum( + CommandStatusSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + # nullable=True because it was easier for the migration to add the column + # this way. This is not intended to ever be null in practice. + nullable=True, + # todo(mm, 2024-11-20): We want create_constraint=True here. Something + # about the way we compare SQL in test_tables.py is making that difficult-- + # even when we correctly add the constraint in the migration, the SQL + # doesn't compare equal to what create_constraint=True here would emit. + create_constraint=False, + ), + ), + sqlalchemy.Index( + "ix_run_run_id_command_id", # An arbitrary name for the index. + "run_id", + "command_id", + unique=True, + ), + sqlalchemy.Index( + "ix_run_run_id_index_in_run", # An arbitrary name for the index. + "run_id", + "index_in_run", + unique=True, + ), + sqlalchemy.Index( + "ix_run_run_id_command_status_index_in_run", # An arbitrary name for the index. + "run_id", + "command_status", + "index_in_run", + unique=True, + ), +) + + +data_files_table = sqlalchemy.Table( + "data_files", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_hash", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column( + "source", + sqlalchemy.Enum( + DataFileSourceSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + # create_constraint=False to match the underlying SQL, which omits + # the constraint because of a bug in the migration that introduced this + # column. This is not intended to ever have values other than those in + # DataFileSourceSQLEnum. + create_constraint=False, + ), + # nullable=True to match the underlying SQL, which is nullable because of a bug + # in the migration that introduced this column. This is not intended to ever be + # null in practice. + nullable=True, + ), +) + + +run_csv_rtp_table = sqlalchemy.Table( + "run_csv_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "run_id", + sqlalchemy.ForeignKey("run.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_id", + sqlalchemy.ForeignKey("data_files.id"), + nullable=True, + ), +) + + +class BooleanSettingKey(enum.Enum): + """Keys for boolean settings.""" + + ENABLE_ERROR_RECOVERY = "enable_error_recovery" + + +boolean_setting_table = sqlalchemy.Table( + "boolean_setting", + metadata, + sqlalchemy.Column( + "key", + sqlalchemy.Enum( + BooleanSettingKey, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + create_constraint=True, + ), + primary_key=True, + ), + sqlalchemy.Column( + "value", + sqlalchemy.Boolean, + nullable=False, + ), +) + + +labware_offset_table = sqlalchemy.Table( + "labware_offset_with_sequence", + metadata, + # Numeric row ID for ordering: + sqlalchemy.Column("row_id", sqlalchemy.Integer, primary_key=True), + # String UUID for exposing over HTTP: + sqlalchemy.Column( + "offset_id", sqlalchemy.String, nullable=False, unique=True, index=True + ), + # The URI identifying the labware definition that this offset applies to. + sqlalchemy.Column("definition_uri", sqlalchemy.String, nullable=False), + # The offset itself: + sqlalchemy.Column("vector_x", sqlalchemy.Float, nullable=False), + sqlalchemy.Column("vector_y", sqlalchemy.Float, nullable=False), + sqlalchemy.Column("vector_z", sqlalchemy.Float, nullable=False), + # Whether this record is "active", i.e. whether it should be considered as a + # candidate to apply to runs and affect actual robot motion: + sqlalchemy.Column("active", sqlalchemy.Boolean, nullable=False), + # When this record was created: + sqlalchemy.Column("created_at", UTCDateTime, nullable=False), +) + +labware_offset_location_sequence_components_table = sqlalchemy.Table( + "labware_offset_sequence_components", + metadata, + # ID for this row, which largely won't be used + sqlalchemy.Column("row_id", sqlalchemy.Integer, primary_key=True), + # Which offset this belongs to + sqlalchemy.Column( + "offset_id", + sqlalchemy.ForeignKey( + "labware_offset_with_sequence.row_id", + ), + nullable=False, + index=True, + ), + # Its position within the sequence + sqlalchemy.Column("sequence_ordinal", sqlalchemy.Integer, nullable=False), + # An identifier for the component; in practice this will be an enum entry (of the kind values + # of the LabwareOffsetSequenceComponent models) but by keeping that out of the schema we don't + # have to change the schema if we add something new there + sqlalchemy.Column("component_kind", sqlalchemy.String, nullable=False), + # The value of the component, which will differ in kind by what component it is, and would be + # annoying to further schematize without yet more normalization. If we ever add a sequence component + # that has more than one value in it (think twice before doing this), pick a primary value that you'll + # be searching by and put that here. + sqlalchemy.Column("primary_component_value", sqlalchemy.String, nullable=False), + # If the value of the component has more than one thing in it, dump it to json and put it here. + sqlalchemy.Column("component_value_json", sqlalchemy.String, nullable=False), +) diff --git a/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml b/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml index f84e5b15d56..0745f10a2ae 100644 --- a/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml +++ b/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml @@ -12,11 +12,17 @@ stages: json: data: definitionUri: definitionUri1 - location: - slotName: A1 - definitionUri: testNamespace/testLoadName/123 - moduleModel: thermocyclerModuleV2 - vector: { x: 1, y: 1, z: 1 } + locationSequence: + - kind: onLabware + labwareUri: testNamespace/testLoadName/123 + - kind: onModule + moduleModel: thermocyclerModuleV2 + - kind: onAddressableArea + addressableAreaName: A1 + vector: + x: 1 + y: 1 + z: 1 response: status_code: 201 json: @@ -24,11 +30,17 @@ stages: id: !anystr createdAt: !anystr definitionUri: definitionUri1 - location: - slotName: A1 - definitionUri: testNamespace/testLoadName/123 - moduleModel: thermocyclerModuleV2 - vector: { x: 1, y: 1, z: 1 } + locationSequence: + - kind: onLabware + labwareUri: testNamespace/testLoadName/123 + - kind: onModule + moduleModel: thermocyclerModuleV2 + - kind: onAddressableArea + addressableAreaName: A1 + vector: + x: 1 + y: 1 + z: 1 save: json: offset_1_data: data @@ -41,9 +53,13 @@ stages: json: data: definitionUri: definitionUri2 - location: - slotName: A2 - vector: { x: 2, y: 2, z: 2 } + locationSequence: + - kind: onAddressableArea + addressableAreaName: A2 + vector: + x: 2 + y: 2 + z: 2 response: status_code: 201 save: @@ -57,9 +73,13 @@ stages: json: data: definitionUri: definitionUri3 - location: - slotName: A3 - vector: { x: 3, y: 3, z: 3 } + locationSequence: + - kind: onAddressableArea + addressableAreaName: A3 + vector: + x: 3 + y: 3 + z: 3 response: status_code: 201 save: @@ -146,10 +166,11 @@ stages: json: data: definitionUri: testNamespace/loadName1/1 - location: - slotName: A1 - # No moduleModel - # No definitionUri + locationSequence: + - kind: onAddressableArea + addressableAreaName: A1 + # No moduleModel + # No definitionUri vector: x: 1 y: 2 @@ -166,10 +187,12 @@ stages: json: data: definitionUri: testNamespace/loadName2/1 - location: - slotName: A1 - moduleModel: temperatureModuleV2 - # No definitionUri + locationSequence: + - kind: onModule + moduleModel: temperatureModuleV2 + - kind: onAddressableArea + addressableAreaName: A1 + # No definitionUri vector: x: 1 y: 2 @@ -186,10 +209,12 @@ stages: json: data: definitionUri: testNamespace/loadName2/1 - location: - slotName: A1 - # no moduleModel - definitionUri: testNamespace/adapterLoadName/1 + locationSequence: + - kind: onLabware + labwareUri: testNamespace/adapterLoadName/1 + - kind: onAddressableArea + addressableAreaName: A1 + # no moduleModel vector: x: 1 y: 2 @@ -206,10 +231,13 @@ stages: json: data: definitionUri: testNamespace/loadName3/1 - location: - slotName: A1 - moduleModel: temperatureModuleV2 - definitionUri: testNamespace/adapterLoadName/1 + locationSequence: + - kind: onLabware + labwareUri: testNamespace/adapterLoadName/1 + - kind: onModule + moduleModel: temperatureModuleV2 + - kind: onAddressableArea + addressableAreaName: A1 vector: x: 1 y: 2 diff --git a/robot-server/tests/labware_offsets/test_store.py b/robot-server/tests/labware_offsets/test_store.py index 0b6048da86b..ad4648b2b83 100644 --- a/robot-server/tests/labware_offsets/test_store.py +++ b/robot-server/tests/labware_offsets/test_store.py @@ -6,16 +6,25 @@ import sqlalchemy from opentrons.protocol_engine import ( - LabwareOffset, - LegacyLabwareOffsetLocation, LabwareOffsetVector, + OnLabwareOffsetLocationSequenceComponent, + OnModuleOffsetLocationSequenceComponent, + OnAddressableAreaOffsetLocationSequenceComponent, ) from opentrons.protocol_engine.types import ModuleModel -from opentrons.types import DeckSlotName - +from robot_server.persistence.tables import ( + labware_offset_location_sequence_components_table, +) from robot_server.labware_offsets.store import ( LabwareOffsetStore, LabwareOffsetNotFoundError, + IncomingStoredLabwareOffset, +) +from robot_server.labware_offsets.models import ( + StoredLabwareOffset, + DoNotFilterType, + DO_NOT_FILTER, + UnknownLabwareOffsetLocationSequenceComponent, ) @@ -25,64 +34,237 @@ def subject(sql_engine: sqlalchemy.engine.Engine) -> LabwareOffsetStore: return LabwareOffsetStore(sql_engine) -def _get_all(store: LabwareOffsetStore) -> list[LabwareOffset]: +def _get_all(store: LabwareOffsetStore) -> list[StoredLabwareOffset]: return store.search() -def test_filter_fields(subject: LabwareOffsetStore) -> None: +@pytest.mark.parametrize( + argnames=[ + "id_filter", + "definition_uri_filter", + "location_addressable_area_filter", + "location_module_model_filter", + "location_labware_uri_filter", + "returned_ids", + ], + argvalues=[ + pytest.param( + "a", + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + ["a"], + id="id-only", + ), + pytest.param( + DO_NOT_FILTER, + "definitionUri a", + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + ["a", "c", "d", "e"], + id="labware-only", + ), + pytest.param( + "a", + "definitionUri a", + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + ["a"], + id="labware-and-id-matching", + ), + pytest.param( + "a", + "definitionUri b", + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + [], + id="labware-and-id-conflicting", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + "A1", + DO_NOT_FILTER, + DO_NOT_FILTER, + ["a", "c", "d", "e"], + id="aa-only", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + "A1", + None, + None, + ["c"], + id="aa-and-not-mod-or-lw", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + "A1", + None, + DO_NOT_FILTER, + ["c", "d"], + id="aa-and-not-module", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + "A1", + DO_NOT_FILTER, + None, + ["c", "e"], + id="aa-and-not-lw", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + ModuleModel.MAGNETIC_BLOCK_V1, + DO_NOT_FILTER, + ["b", "e"], + id="module-only", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + ModuleModel.MAGNETIC_BLOCK_V1, + None, + ["e"], + id="module-and-not-lw", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + "location.definitionUri a", + ["a", "d"], + id="lw-only", + ), + pytest.param( + DO_NOT_FILTER, + DO_NOT_FILTER, + DO_NOT_FILTER, + None, + "location.definitionUri a", + ["d"], + id="lw-and-not-module", + ), + ], +) +def test_filter_fields( + subject: LabwareOffsetStore, + id_filter: str | DoNotFilterType, + definition_uri_filter: str | DoNotFilterType, + location_addressable_area_filter: str | DoNotFilterType, + location_module_model_filter: ModuleModel | None | DoNotFilterType, + location_labware_uri_filter: str | None | DoNotFilterType, + returned_ids: list[str], +) -> None: """Test each filterable field to make sure it returns only matching entries.""" - offset_a = LabwareOffset( - id="a", - createdAt=datetime.now(timezone.utc), - definitionUri="definitionUri a", - location=LegacyLabwareOffsetLocation( - slotName=DeckSlotName.SLOT_A1, - moduleModel=ModuleModel.THERMOCYCLER_MODULE_V1, - definitionUri="location.definitionUri a", + offsets = { + "a": IncomingStoredLabwareOffset( + id="a", + createdAt=datetime.now(timezone.utc), + definitionUri="definitionUri a", + locationSequence=[ + OnLabwareOffsetLocationSequenceComponent( + labwareUri="location.definitionUri a" + ), + OnModuleOffsetLocationSequenceComponent( + moduleModel=ModuleModel.THERMOCYCLER_MODULE_V1 + ), + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ), + ], + vector=LabwareOffsetVector(x=1, y=2, z=3), ), - vector=LabwareOffsetVector(x=1, y=2, z=3), - ) - offset_b = LabwareOffset( - id="b", - createdAt=datetime.now(timezone.utc), - definitionUri="definitionUri b", - location=LegacyLabwareOffsetLocation( - slotName=DeckSlotName.SLOT_B1, - moduleModel=ModuleModel.MAGNETIC_BLOCK_V1, - definitionUri="location.definitionUri b", + "b": IncomingStoredLabwareOffset( + id="b", + createdAt=datetime.now(timezone.utc), + definitionUri="definitionUri b", + locationSequence=[ + OnLabwareOffsetLocationSequenceComponent( + labwareUri="location.definitionUri b" + ), + OnModuleOffsetLocationSequenceComponent( + moduleModel=ModuleModel.MAGNETIC_BLOCK_V1 + ), + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="B1" + ), + ], + vector=LabwareOffsetVector(x=2, y=4, z=6), ), - vector=LabwareOffsetVector(x=1, y=2, z=3), + "c": IncomingStoredLabwareOffset( + id="c", + createdAt=datetime.now(timezone.utc), + definitionUri="definitionUri a", + locationSequence=[ + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ) + ], + vector=LabwareOffsetVector(x=3, y=6, z=9), + ), + "d": IncomingStoredLabwareOffset( + id="d", + createdAt=datetime.now(timezone.utc), + definitionUri="definitionUri a", + locationSequence=[ + OnLabwareOffsetLocationSequenceComponent( + labwareUri="location.definitionUri a" + ), + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ), + ], + vector=LabwareOffsetVector(x=4, y=8, z=12), + ), + "e": IncomingStoredLabwareOffset( + id="e", + createdAt=datetime.now(timezone.utc), + definitionUri="definitionUri a", + locationSequence=[ + OnModuleOffsetLocationSequenceComponent( + moduleModel=ModuleModel.MAGNETIC_BLOCK_V1 + ), + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ), + ], + vector=LabwareOffsetVector(x=5, y=10, z=15), + ), + } + for offset in offsets.values(): + subject.add(offset) + results = subject.search( + id_filter=id_filter, + definition_uri_filter=definition_uri_filter, + location_addressable_area_filter=location_addressable_area_filter, + location_module_model_filter=location_module_model_filter, + location_definition_uri_filter=location_labware_uri_filter, + ) + assert sorted(results, key=lambda o: o.id,) == sorted( + [ + StoredLabwareOffset( + id=offsets[id_].id, + createdAt=offsets[id_].createdAt, + definitionUri=offsets[id_].definitionUri, + locationSequence=offsets[id_].locationSequence, + vector=offsets[id_].vector, + ) + for id_ in returned_ids + ], + key=lambda o: o.id, ) - - subject.add(offset_a) - subject.add(offset_b) - - assert subject.search(id_filter=offset_a.id) == [offset_a] - assert subject.search(id_filter=offset_b.id) == [offset_b] - - assert subject.search(definition_uri_filter=offset_a.definitionUri) == [offset_a] - assert subject.search(definition_uri_filter=offset_b.definitionUri) == [offset_b] - - assert subject.search(location_slot_name_filter=offset_a.location.slotName) == [ - offset_a - ] - assert subject.search(location_slot_name_filter=offset_b.location.slotName) == [ - offset_b - ] - - assert subject.search( - location_module_model_filter=offset_a.location.moduleModel - ) == [offset_a] - assert subject.search( - location_module_model_filter=offset_b.location.moduleModel - ) == [offset_b] - - assert subject.search( - location_definition_uri_filter=offset_a.location.definitionUri - ) == [offset_a] - assert subject.search( - location_definition_uri_filter=offset_b.location.definitionUri - ) == [offset_b] def test_filter_combinations(subject: LabwareOffsetStore) -> None: @@ -96,27 +278,41 @@ def test_filter_combinations(subject: LabwareOffsetStore) -> None: ("id-6", "definition-uri-b"), ] labware_offsets = [ - LabwareOffset( + IncomingStoredLabwareOffset( id=id, createdAt=datetime.now(timezone.utc), definitionUri=definition_uri, - location=LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_A1), + locationSequence=[ + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ) + ], vector=LabwareOffsetVector(x=1, y=2, z=3), ) for (id, definition_uri) in ids_and_definition_uris ] + outgoing_offsets = [ + StoredLabwareOffset( + id=offset.id, + createdAt=offset.createdAt, + definitionUri=offset.definitionUri, + locationSequence=offset.locationSequence, + vector=offset.vector, + ) + for offset in labware_offsets + ] for labware_offset in labware_offsets: subject.add(labware_offset) # No filters: - assert subject.search() == labware_offsets + assert subject.search() == outgoing_offsets # Filter on one thing: result = subject.search(definition_uri_filter="definition-uri-b") assert len(result) == 3 assert result == [ - entry for entry in labware_offsets if entry.definitionUri == "definition-uri-b" + entry for entry in outgoing_offsets if entry.definitionUri == "definition-uri-b" ] # Filter on two things: @@ -124,7 +320,7 @@ def test_filter_combinations(subject: LabwareOffsetStore) -> None: id_filter="id-2", definition_uri_filter="definition-uri-b", ) - assert result == [labware_offsets[1]] + assert result == [outgoing_offsets[1]] # Filters should be ANDed, not ORed, together: result = subject.search( @@ -136,16 +332,32 @@ def test_filter_combinations(subject: LabwareOffsetStore) -> None: def test_delete(subject: LabwareOffsetStore) -> None: """Test the `delete()` and `delete_all()` methods.""" - a, b, c = [ - LabwareOffset( + incoming_offsets = [ + IncomingStoredLabwareOffset( id=id, createdAt=datetime.now(timezone.utc), definitionUri="", - location=LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_A1), + locationSequence=[ + OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ) + ], vector=LabwareOffsetVector(x=1, y=2, z=3), ) for id in ["id-a", "id-b", "id-c"] ] + outgoing_offsets = [ + StoredLabwareOffset( + id=offset.id, + createdAt=offset.createdAt, + definitionUri=offset.definitionUri, + locationSequence=offset.locationSequence, + vector=offset.vector, + ) + for offset in incoming_offsets + ] + a, b, c = incoming_offsets + out_a, out_b, out_c = outgoing_offsets with pytest.raises(LabwareOffsetNotFoundError): subject.delete("b") @@ -153,10 +365,52 @@ def test_delete(subject: LabwareOffsetStore) -> None: subject.add(a) subject.add(b) subject.add(c) - assert subject.delete(b.id) == b - assert _get_all(subject) == [a, c] + + assert subject.delete(b.id) == out_b + assert _get_all(subject) == [out_a, out_c] with pytest.raises(LabwareOffsetNotFoundError): - subject.delete(b.id) + subject.delete(out_b.id) subject.delete_all() assert _get_all(subject) == [] + + +def test_handle_unknown( + subject: LabwareOffsetStore, sql_engine: sqlalchemy.engine.Engine +) -> None: + """Test returning an unknown offset.""" + original_location = OnAddressableAreaOffsetLocationSequenceComponent( + addressableAreaName="A1" + ) + incoming_valid = IncomingStoredLabwareOffset( + id="id-a", + createdAt=datetime.now(timezone.utc), + definitionUri="", + locationSequence=[original_location], + vector=LabwareOffsetVector(x=1, y=2, z=3), + ) + outgoing_offset = StoredLabwareOffset( + id=incoming_valid.id, + createdAt=incoming_valid.createdAt, + definitionUri=incoming_valid.definitionUri, + locationSequence=[ + original_location, + UnknownLabwareOffsetLocationSequenceComponent( + storedKind="asdasdad", primaryValue="ddddddd" + ), + ], + vector=incoming_valid.vector, + ) + subject.add(incoming_valid) + with sql_engine.begin() as transaction: + transaction.execute( + sqlalchemy.insert(labware_offset_location_sequence_components_table).values( + row_id=2, + offset_id=1, + sequence_ordinal=2, + component_kind="asdasdad", + primary_component_value="ddddddd", + component_value_json='{"asdasda": "dddddd", "kind": "asdasdad"}', + ) + ) + assert subject.search(id_filter="id-a") == [outgoing_offset] diff --git a/robot-server/tests/persistence/test_tables.py b/robot-server/tests/persistence/test_tables.py index 87110d69eb6..bdb463427ce 100644 --- a/robot-server/tests/persistence/test_tables.py +++ b/robot-server/tests/persistence/test_tables.py @@ -1,6 +1,5 @@ """Tests for SQL tables.""" - from pathlib import Path from typing import List, cast @@ -20,6 +19,7 @@ schema_7, schema_8, schema_9, + schema_10, ) # The statements that we expect to emit when we create a fresh database. @@ -160,6 +160,167 @@ ) """, """ + CREATE TABLE labware_offset_with_sequence ( + row_id INTEGER NOT NULL, + offset_id VARCHAR NOT NULL, + definition_uri VARCHAR NOT NULL, + vector_x FLOAT NOT NULL, + vector_y FLOAT NOT NULL, + vector_z FLOAT NOT NULL, + active BOOLEAN NOT NULL, + created_at DATETIME NOT NULL, + PRIMARY KEY (row_id) + ) + """, + """ + CREATE UNIQUE INDEX ix_labware_offset_with_sequence_offset_id ON labware_offset_with_sequence (offset_id) + """, + """ + CREATE TABLE labware_offset_sequence_components ( + row_id INTEGER NOT NULL, + offset_id INTEGER NOT NULL, + sequence_ordinal INTEGER NOT NULL, + component_kind VARCHAR NOT NULL, + primary_component_value VARCHAR NOT NULL, + component_value_json VARCHAR NOT NULL, + PRIMARY KEY (row_id), + FOREIGN KEY(offset_id) REFERENCES labware_offset_with_sequence (row_id) + ) + """, + """ + CREATE INDEX ix_labware_offset_sequence_components_offset_id ON labware_offset_sequence_components (offset_id) + """, +] + +EXPECTED_STATEMENTS_V10 = EXPECTED_STATEMENTS_LATEST + + +EXPECTED_STATEMENTS_V9 = [ + """ + CREATE TABLE protocol ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + protocol_key VARCHAR, + protocol_kind VARCHAR(14) NOT NULL, + PRIMARY KEY (id), + CONSTRAINT protocolkindsqlenum CHECK (protocol_kind IN ('standard', 'quick-transfer')) + ) + """, + """ + CREATE TABLE analysis ( + id VARCHAR NOT NULL, + protocol_id VARCHAR NOT NULL, + analyzer_version VARCHAR NOT NULL, + completed_analysis VARCHAR NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(protocol_id) REFERENCES protocol (id) + ) + """, + """ + CREATE TABLE analysis_primitive_rtp_table ( + row_id INTEGER NOT NULL, + analysis_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + parameter_type VARCHAR(5) NOT NULL, + parameter_value VARCHAR NOT NULL, + PRIMARY KEY (row_id), + FOREIGN KEY(analysis_id) REFERENCES analysis (id), + CONSTRAINT primitiveparamsqlenum CHECK (parameter_type IN ('int', 'float', 'bool', 'str')) + ) + """, + """ + CREATE TABLE analysis_csv_rtp_table ( + row_id INTEGER NOT NULL, + analysis_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + file_id VARCHAR, + PRIMARY KEY (row_id), + FOREIGN KEY(analysis_id) REFERENCES analysis (id), + FOREIGN KEY(file_id) REFERENCES data_files (id) + ) + """, + """ + CREATE INDEX ix_analysis_protocol_id ON analysis (protocol_id) + """, + """ + CREATE TABLE run ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + protocol_id VARCHAR, + state_summary VARCHAR, + engine_status VARCHAR, + _updated_at DATETIME, + run_time_parameters VARCHAR, + PRIMARY KEY (id), + FOREIGN KEY(protocol_id) REFERENCES protocol (id) + ) + """, + """ + CREATE TABLE action ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + action_type VARCHAR NOT NULL, + run_id VARCHAR NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(run_id) REFERENCES run (id) + ) + """, + """ + CREATE TABLE run_command ( + row_id INTEGER NOT NULL, + run_id VARCHAR NOT NULL, + index_in_run INTEGER NOT NULL, + command_id VARCHAR NOT NULL, + command VARCHAR NOT NULL, + command_intent VARCHAR, + command_error VARCHAR, + command_status VARCHAR(9), + PRIMARY KEY (row_id), + FOREIGN KEY(run_id) REFERENCES run (id) + ) + """, + """ + CREATE UNIQUE INDEX ix_run_run_id_command_id ON run_command (run_id, command_id) + """, + """ + CREATE UNIQUE INDEX ix_run_run_id_index_in_run ON run_command (run_id, index_in_run) + """, + """ + CREATE UNIQUE INDEX ix_run_run_id_command_status_index_in_run ON run_command (run_id, command_status, index_in_run) + """, + """ + CREATE INDEX ix_protocol_protocol_kind ON protocol (protocol_kind) + """, + """ + CREATE TABLE data_files ( + id VARCHAR NOT NULL, + name VARCHAR NOT NULL, + file_hash VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + source VARCHAR(9), + PRIMARY KEY (id) + ) + """, + """ + CREATE TABLE run_csv_rtp_table ( + row_id INTEGER NOT NULL, + run_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + file_id VARCHAR, + PRIMARY KEY (row_id), + FOREIGN KEY(run_id) REFERENCES run (id), + FOREIGN KEY(file_id) REFERENCES data_files (id) + ) + """, + """ + CREATE TABLE boolean_setting ( + "key" VARCHAR(21) NOT NULL, + value BOOLEAN NOT NULL, + PRIMARY KEY ("key"), + CONSTRAINT booleansettingkey CHECK ("key" IN ('enable_error_recovery')) + ) + """, + """ CREATE TABLE labware_offset ( row_id INTEGER NOT NULL, offset_id VARCHAR NOT NULL, @@ -181,9 +342,6 @@ ] -EXPECTED_STATEMENTS_V9 = EXPECTED_STATEMENTS_LATEST - - EXPECTED_STATEMENTS_V8 = [ """ CREATE TABLE protocol ( @@ -831,6 +989,7 @@ def _normalize_statement(statement: str) -> str: ("metadata", "expected_statements"), [ (latest_metadata, EXPECTED_STATEMENTS_LATEST), + (schema_10.metadata, EXPECTED_STATEMENTS_V10), (schema_9.metadata, EXPECTED_STATEMENTS_V9), (schema_8.metadata, EXPECTED_STATEMENTS_V8), (schema_7.metadata, EXPECTED_STATEMENTS_V7), From cffab4eb45c184aee5b7642303dea03b41431d26 Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Tue, 4 Feb 2025 15:49:12 -0500 Subject: [PATCH 47/81] chore(app): reorder parameters in ODD protocol setup (#17416) --- app/src/pages/ODD/ProtocolSetup/index.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/pages/ODD/ProtocolSetup/index.tsx b/app/src/pages/ODD/ProtocolSetup/index.tsx index 9df261ba131..212e17cafaa 100644 --- a/app/src/pages/ODD/ProtocolSetup/index.tsx +++ b/app/src/pages/ODD/ProtocolSetup/index.tsx @@ -566,6 +566,16 @@ function PrepareToRun({ > {!isLoading ? ( <> + { + setSetupScreen('view only parameters') + }} + title={t('parameters')} + detail={parametersDetail} + subDetail={null} + status="ready" + interactionDisabled={!hasRunTimeParameters} + /> { setSetupScreen('instruments') @@ -600,16 +610,6 @@ function PrepareToRun({ } status={offsetsConfirmed ? 'ready' : 'general'} /> - { - setSetupScreen('view only parameters') - }} - title={t('parameters')} - detail={parametersDetail} - subDetail={null} - status="ready" - interactionDisabled={!hasRunTimeParameters} - /> { setSetupScreen('labware') From 643cf15cdbc8c8df2e1221bb13e91a9ba2fbe2e3 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Tue, 4 Feb 2025 17:01:46 -0500 Subject: [PATCH 48/81] test(shared-data): Continue testing other labware if one test fails (#17420) * When we're iterating over labware definition files to test, instead of using a JavaScript-level `forEach`, use a Vitest-level `it.each` or `test.each`. This just makes the error reporting a little bit better: if multiple labware definitions have errors, Vitest will now detect and print all of them instead of just the first one. * Adjust messages and swap some things between `it` and `test`. This is just for code readability and does not have any functional difference. --- .../js/__tests__/labwareDefSchemaV1.test.ts | 13 +++++----- .../js/__tests__/labwareDefSchemaV2.test.ts | 24 +++++++++---------- .../js/__tests__/labwareDefSchemaV3.test.ts | 11 ++++----- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/shared-data/js/__tests__/labwareDefSchemaV1.test.ts b/shared-data/js/__tests__/labwareDefSchemaV1.test.ts index 3a14648eed3..f8fad10bc4e 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV1.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV1.test.ts @@ -1,7 +1,7 @@ import path from 'path' import glob from 'glob' import Ajv from 'ajv' -import { describe, expect, it, beforeAll } from 'vitest' +import { describe, expect, it, test } from 'vitest' import { labwareSchemaV1 } from '../schema' import type { LabwareDefinition1 } from '../types' @@ -57,26 +57,25 @@ describe('test the schema against a minimalist fixture', () => { }) }) -describe('test schemas of all definitions', () => { +describe('test all definitions', () => { const labwarePaths = glob.sync(DEFINITIONS_GLOB_PATTERN, GLOB_OPTIONS) - beforeAll(() => { - // Make sure definitions path didn't break, which would give you false positives + test("definition paths didn't break, which would give false positives", () => { expect(labwarePaths.length).toBeGreaterThan(0) }) - labwarePaths.forEach(labwarePath => { + describe.each(labwarePaths)('%s', labwarePath => { const filename = path.parse(labwarePath).name const labwareDef = require(labwarePath) as LabwareDefinition1 - it(filename, () => { + it('validates against the schema', () => { const valid = validate(labwareDef) const validationErrors = validate.errors expect(validationErrors).toBe(null) expect(valid).toBe(true) }) - it(`file name matches metadata.name: ${filename}`, () => { + it(`has a file name that matches metadata.name: ${filename}`, () => { expect(labwareDef.metadata.name).toEqual(filename) }) }) diff --git a/shared-data/js/__tests__/labwareDefSchemaV2.test.ts b/shared-data/js/__tests__/labwareDefSchemaV2.test.ts index 0f063a0bfa6..a5a39218fe6 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV2.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV2.test.ts @@ -197,34 +197,33 @@ test('fail on bad labware', () => { describe('test schemas of all opentrons definitions', () => { const labwarePaths = glob.sync(globPattern, { cwd: definitionsDir }) - beforeAll(() => { - // Make sure definitions path didn't break, which would give you false positives + test("definition paths didn't break, which would give false positives", () => { expect(labwarePaths.length).toBeGreaterThan(0) }) - labwarePaths.forEach(labwarePath => { + describe.each(labwarePaths)('%s', labwarePath => { const filename = path.parse(labwarePath).base const fullLabwarePath = path.join(definitionsDir, labwarePath) const labwareDef = require(fullLabwarePath) as LabwareDefinition2 - it(`${filename} validates against schema`, () => { + it('validates against the schema', () => { const valid = validate(labwareDef) const validationErrors = validate.errors expect(validationErrors).toBe(null) expect(valid).toBe(true) }) - it(`file name matches version: ${labwarePath}`, () => { + test('file name matches version', () => { expect(`${labwareDef.version}`).toEqual(path.basename(filename, '.json')) }) - it(`parent dir matches loadName: ${labwarePath}`, () => { + test('parent dir matches loadName', () => { expect(labwareDef.parameters.loadName).toEqual( path.basename(path.dirname(labwarePath)) ) }) - it(`namespace is "opentrons": ${labwarePath}`, () => { + test('namespace is "opentrons"', () => { expect(labwareDef.namespace).toEqual('opentrons') }) @@ -266,30 +265,29 @@ describe('test that the dimensions in all opentrons definitions make sense', () describe('test schemas of all v2 labware fixtures', () => { const labwarePaths = glob.sync(globPattern, { cwd: fixturesDir }) - beforeAll(() => { - // Make sure fixtures path didn't break, which would give you false positives + test("definition paths didn't break, which would give false positives", () => { expect(labwarePaths.length).toBeGreaterThan(0) }) - labwarePaths.forEach(labwarePath => { + describe.each(labwarePaths)('%s', labwarePath => { const filename = path.parse(labwarePath).base const fullLabwarePath = path.join(fixturesDir, labwarePath) const labwareDef = require(fullLabwarePath) as LabwareDefinition2 - it(`${filename} validates against schema`, () => { + test(`${filename} validates against schema`, () => { const valid = validate(labwareDef) const validationErrors = validate.errors expect(validationErrors).toBe(null) expect(valid).toBe(true) }) - it(`fixture file name matches loadName: ${labwarePath}`, () => { + test(`fixture file name matches loadName: ${labwarePath}`, () => { expect(labwareDef.parameters.loadName).toEqual( path.basename(filename, '.json') ) }) - it(`namespace is "fixture": ${labwarePath}`, () => { + test(`namespace is "fixture": ${labwarePath}`, () => { expect(labwareDef.namespace).toEqual('fixture') }) diff --git a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts index 14d0c4bf968..a102cb5128f 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts @@ -1,6 +1,6 @@ import path from 'path' import glob from 'glob' -import { describe, expect, it, beforeAll, test } from 'vitest' +import { describe, expect, it, test } from 'vitest' import type { LabwareDefinition3 } from '../types' import Ajv from 'ajv' @@ -44,23 +44,22 @@ const checkGeometryDefinitions = ( describe(`test additions to labware schema in v3`, () => { const labwarePaths = glob.sync(globPattern, { cwd: fixturesDir }) - beforeAll(() => { - // Make sure definitions path didn't break, which would give you false positives + test("definition paths didn't break, which would give false positives", () => { expect(labwarePaths.length).toBeGreaterThan(0) }) - labwarePaths.forEach(labwarePath => { + describe.each(labwarePaths)('%s', labwarePath => { const filename = path.parse(labwarePath).base const fullLabwarePath = path.join(fixturesDir, labwarePath) const labwareDef = require(fullLabwarePath) as LabwareDefinition3 - checkGeometryDefinitions(labwareDef, labwarePath) - it(`${filename} validates against schema`, () => { const valid = validate(labwareDef) const validationErrors = validate.errors expect(validationErrors).toBe(null) expect(valid).toBe(true) }) + + checkGeometryDefinitions(labwareDef, labwarePath) }) }) From d3e189d9379fc952522282b3dd5067eb5ce6f164 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Wed, 5 Feb 2025 10:32:02 -0500 Subject: [PATCH 49/81] fix(shared-data): Pre-sort innerLabwareGeometry sections (#17426) --- .../js/__tests__/labwareDefSchemaV3.test.ts | 11 ++ .../3/agilent_1_reservoir_290ml/2.json | 18 +-- .../2.json | 18 +-- .../3.json | 18 +-- .../3/biorad_384_wellplate_50ul/3.json | 18 +-- .../3/biorad_96_wellplate_200ul_pcr/3.json | 34 ++-- .../3/nest_12_reservoir_15ml/2.json | 18 +-- .../3/nest_1_reservoir_195ml/3.json | 18 +-- .../3/nest_1_reservoir_290ml/2.json | 18 +-- .../3.json | 18 +-- .../3/nest_96_wellplate_2ml_deep/3.json | 18 +-- .../2.json | 44 +++--- .../2.json | 44 +++--- .../2.json | 58 +++---- .../2.json | 28 ++-- .../2.json | 16 +- .../2.json | 44 +++--- .../2.json | 28 ++-- .../2.json | 18 +-- .../2.json | 16 +- .../2.json | 50 +++--- .../2.json | 82 +++++----- .../2.json | 146 +++++++++--------- .../2.json | 16 +- .../2.json | 44 +++--- .../2.json | 28 ++-- .../2.json | 28 ++-- .../2.json | 16 +- .../2.json | 60 +++---- .../2.json | 16 +- .../2.json | 16 +- .../2.json | 34 ++-- .../2.json | 14 +- .../2.json | 18 +-- .../2.json | 18 +-- .../2.json | 14 +- .../3.json | 18 +-- .../2.json | 12 +- .../2.json | 12 +- .../3/usascientific_12_reservoir_22ml/2.json | 24 +-- .../2.json | 18 +-- shared-data/labware/schemas/3.json | 2 +- .../labware/labware_definition.py | 2 +- 43 files changed, 601 insertions(+), 590 deletions(-) diff --git a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts index a102cb5128f..4631f327f29 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts @@ -16,6 +16,17 @@ const checkGeometryDefinitions = ( labwareDef: LabwareDefinition3, filename: string ): void => { + test('innerLabwareGeometry sections should be sorted top to bottom', () => { + const geometries = Object.values(labwareDef.innerLabwareGeometry ?? []) + for (const geometry of geometries) { + const sectionList = geometry.sections + const sortedSectionList = sectionList.toSorted( + (a, b) => b.topHeight - a.topHeight + ) + expect(sortedSectionList).toStrictEqual(sectionList) + } + }) + test(`all geometryDefinitionIds specified in {filename} should have an accompanying valid entry in innerLabwareGeometry`, () => { for (const wellName in labwareDef.wells) { const wellGeometryId = labwareDef.wells[wellName].geometryDefinitionId diff --git a/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json b/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json index f9bf94127ab..315a1375f27 100644 --- a/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json +++ b/shared-data/labware/definitions/3/agilent_1_reservoir_290ml/2.json @@ -55,6 +55,15 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ + { + "shape": "cuboidal", + "topXDimension": 107.5, + "topYDimension": 71.25, + "bottomXDimension": 106.79, + "bottomYDimension": 71.0, + "topHeight": 39.23, + "bottomHeight": 2.0 + }, { "shape": "cuboidal", "topXDimension": 106.79, @@ -64,15 +73,6 @@ "topHeight": 2, "bottomHeight": 0, "yCount": 8 - }, - { - "shape": "cuboidal", - "topXDimension": 107.5, - "topYDimension": 71.25, - "bottomXDimension": 106.79, - "bottomYDimension": 71.0, - "topHeight": 39.23, - "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json index d47afca68c4..e2ff42a3a3c 100644 --- a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json +++ b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json @@ -4705,10 +4705,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 0.89, - "topHeight": 0.34, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 3.17, + "topDiameter": 3.17, + "topHeight": 9.09, + "bottomHeight": 5.77 }, { "shape": "conical", @@ -4718,11 +4719,10 @@ "bottomHeight": 0.34 }, { - "shape": "conical", - "bottomDiameter": 3.17, - "topDiameter": 3.17, - "topHeight": 9.09, - "bottomHeight": 5.77 + "shape": "spherical", + "radiusOfCurvature": 0.89, + "topHeight": 0.34, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json index 71c6f214707..292fe779e73 100644 --- a/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json @@ -1142,10 +1142,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.25, - "topHeight": 0.8, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.5, + "topDiameter": 5.5, + "topHeight": 14.95, + "bottomHeight": 11.35 }, { "shape": "conical", @@ -1155,11 +1156,10 @@ "bottomHeight": 0.8 }, { - "shape": "conical", - "bottomDiameter": 5.5, - "topDiameter": 5.5, - "topHeight": 14.95, - "bottomHeight": 11.35 + "shape": "spherical", + "radiusOfCurvature": 1.25, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json b/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json index d5fb3c926a2..5f6c47fb290 100644 --- a/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json +++ b/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json @@ -4716,10 +4716,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 0.94, - "topHeight": 0.35, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 3, + "topDiameter": 3.1, + "topHeight": 9.35, + "bottomHeight": 5.35 }, { "shape": "conical", @@ -4729,11 +4730,10 @@ "bottomHeight": 0.35 }, { - "shape": "conical", - "bottomDiameter": 3, - "topDiameter": 3.1, - "topHeight": 9.35, - "bottomHeight": 5.35 + "shape": "spherical", + "radiusOfCurvature": 0.94, + "topHeight": 0.35, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json index 24f0656db6b..58a914c225d 100644 --- a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json +++ b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json @@ -1143,17 +1143,18 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.42, - "topHeight": 1.21, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.44, + "topDiameter": 5.44, + "topHeight": 14.57, + "bottomHeight": 10.14 }, { "shape": "conical", - "topDiameter": 3.0, - "bottomDiameter": 2.81, - "topHeight": 1.87, - "bottomHeight": 1.21 + "topDiameter": 5.44, + "bottomDiameter": 4.98, + "topHeight": 10.14, + "bottomHeight": 8.58 }, { "shape": "conical", @@ -1164,17 +1165,16 @@ }, { "shape": "conical", - "topDiameter": 5.44, - "bottomDiameter": 4.98, - "topHeight": 10.14, - "bottomHeight": 8.58 + "topDiameter": 3.0, + "bottomDiameter": 2.81, + "topHeight": 1.87, + "bottomHeight": 1.21 }, { - "shape": "conical", - "bottomDiameter": 5.44, - "topDiameter": 5.44, - "topHeight": 14.57, - "bottomHeight": 10.14 + "shape": "spherical", + "radiusOfCurvature": 1.42, + "topHeight": 1.21, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_12_reservoir_15ml/2.json b/shared-data/labware/definitions/3/nest_12_reservoir_15ml/2.json index 38423ed7234..e674aef77cc 100644 --- a/shared-data/labware/definitions/3/nest_12_reservoir_15ml/2.json +++ b/shared-data/labware/definitions/3/nest_12_reservoir_15ml/2.json @@ -202,15 +202,6 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ - { - "shape": "cuboidal", - "topXDimension": 7.95, - "topYDimension": 70.53, - "bottomXDimension": 1.87, - "bottomYDimension": 64.45, - "topHeight": 2.05, - "bottomHeight": 0.0 - }, { "shape": "cuboidal", "topXDimension": 8.35, @@ -219,6 +210,15 @@ "bottomYDimension": 70.53, "topHeight": 26.85, "bottomHeight": 2.05 + }, + { + "shape": "cuboidal", + "topXDimension": 7.95, + "topYDimension": 70.53, + "bottomXDimension": 1.87, + "bottomYDimension": 64.45, + "topHeight": 2.05, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json b/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json index a5fb287ad8c..a644eb99ae0 100644 --- a/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json +++ b/shared-data/labware/definitions/3/nest_1_reservoir_195ml/3.json @@ -57,6 +57,15 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ + { + "shape": "cuboidal", + "topXDimension": 71.3, + "topYDimension": 107.3, + "bottomXDimension": 70.6, + "bottomYDimension": 106.8, + "topHeight": 26.85, + "bottomHeight": 2.0 + }, { "shape": "cuboidal", "topXDimension": 9, @@ -67,15 +76,6 @@ "bottomHeight": 0, "xCount": 12, "yCount": 8 - }, - { - "shape": "cuboidal", - "topXDimension": 71.3, - "topYDimension": 107.3, - "bottomXDimension": 70.6, - "bottomYDimension": 106.8, - "topHeight": 26.85, - "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json b/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json index 46c5a494533..1c7c8f1b02c 100644 --- a/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json +++ b/shared-data/labware/definitions/3/nest_1_reservoir_290ml/2.json @@ -55,6 +55,15 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ + { + "shape": "cuboidal", + "topXDimension": 107.76, + "topYDimension": 71.0, + "bottomXDimension": 106.75, + "bottomYDimension": 70.75, + "topHeight": 39.55, + "bottomHeight": 2.0 + }, { "shape": "cuboidal", "topXDimension": 7.75, @@ -64,15 +73,6 @@ "topHeight": 2.0, "bottomHeight": 0.0, "xCount": 12 - }, - { - "shape": "cuboidal", - "topXDimension": 107.76, - "topYDimension": 71.0, - "bottomXDimension": 106.75, - "bottomYDimension": 70.75, - "topHeight": 39.55, - "bottomHeight": 2.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json index 44114349497..04bc8501f42 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json @@ -1136,10 +1136,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 3.015, - "topHeight": 0.2, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.26, + "topDiameter": 5.34, + "topHeight": 14.7, + "bottomHeight": 9.89 }, { "shape": "conical", @@ -1149,11 +1150,10 @@ "bottomHeight": 0.2 }, { - "shape": "conical", - "bottomDiameter": 5.26, - "topDiameter": 5.34, - "topHeight": 14.7, - "bottomHeight": 9.89 + "shape": "spherical", + "radiusOfCurvature": 3.015, + "topHeight": 0.2, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json index e3651b1934b..cb30a8b93de 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json @@ -1238,15 +1238,6 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ - { - "shape": "cuboidal", - "topXDimension": 7.4, - "topYDimension": 7.4, - "bottomXDimension": 2.63, - "bottomYDimension": 2.63, - "topHeight": 1.67, - "bottomHeight": 0.0 - }, { "shape": "cuboidal", "topXDimension": 8.2, @@ -1255,6 +1246,15 @@ "bottomYDimension": 7.4, "topHeight": 38.05, "bottomHeight": 1.67 + }, + { + "shape": "cuboidal", + "topXDimension": 7.4, + "topYDimension": 7.4, + "bottomXDimension": 2.63, + "bottomYDimension": 2.63, + "topHeight": 1.67, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json index 788e56ee3ba..1069ccd457f 100644 --- a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/2.json @@ -174,18 +174,12 @@ "innerLabwareGeometry": { "15mlconicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 2.9, - "topHeight": 0.8, - "bottomHeight": 0.0 - }, { "shape": "conical", - "bottomDiameter": 4, - "topDiameter": 13.5, - "topHeight": 20.7, - "bottomHeight": 0.8 + "bottomDiameter": 14.5, + "topDiameter": 14.7, + "topHeight": 118.2, + "bottomHeight": 108.6 }, { "shape": "conical", @@ -196,10 +190,16 @@ }, { "shape": "conical", - "bottomDiameter": 14.5, - "topDiameter": 14.7, - "topHeight": 118.2, - "bottomHeight": 108.6 + "bottomDiameter": 4, + "topDiameter": 13.5, + "topHeight": 20.7, + "bottomHeight": 0.8 + }, + { + "shape": "spherical", + "radiusOfCurvature": 2.9, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] }, @@ -207,10 +207,10 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 6.15, - "topDiameter": 26.18, - "topHeight": 14.3, - "bottomHeight": 0.0 + "bottomDiameter": 27.52, + "topDiameter": 27.81, + "topHeight": 112.85, + "bottomHeight": 100.65 }, { "shape": "conical", @@ -221,10 +221,10 @@ }, { "shape": "conical", - "bottomDiameter": 27.52, - "topDiameter": 27.81, - "topHeight": 112.85, - "bottomHeight": 100.65 + "bottomDiameter": 6.15, + "topDiameter": 26.18, + "topHeight": 14.3, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/2.json b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/2.json index 4c7683521d7..05bb60d7de6 100644 --- a/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/2.json +++ b/shared-data/labware/definitions/3/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic/2.json @@ -172,18 +172,12 @@ "innerLabwareGeometry": { "15mlconicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 2.9, - "topHeight": 0.8, - "bottomHeight": 0.0 - }, { "shape": "conical", - "bottomDiameter": 4, - "topDiameter": 13.5, - "topHeight": 20.7, - "bottomHeight": 0.8 + "bottomDiameter": 14.5, + "topDiameter": 14.7, + "topHeight": 118.2, + "bottomHeight": 108.6 }, { "shape": "conical", @@ -194,10 +188,16 @@ }, { "shape": "conical", - "bottomDiameter": 14.5, - "topDiameter": 14.7, - "topHeight": 118.2, - "bottomHeight": 108.6 + "bottomDiameter": 4, + "topDiameter": 13.5, + "topHeight": 20.7, + "bottomHeight": 0.8 + }, + { + "shape": "spherical", + "radiusOfCurvature": 2.9, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] }, @@ -205,10 +205,10 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 6.15, - "topDiameter": 26.18, - "topHeight": 14.3, - "bottomHeight": 0.0 + "bottomDiameter": 27.52, + "topDiameter": 27.81, + "topHeight": 112.85, + "bottomHeight": 100.65 }, { "shape": "conical", @@ -219,10 +219,10 @@ }, { "shape": "conical", - "bottomDiameter": 27.52, - "topDiameter": 27.81, - "topHeight": 112.85, - "bottomHeight": 100.65 + "bottomDiameter": 6.15, + "topDiameter": 26.18, + "topHeight": 14.3, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json index 209aeac29e6..4d0a1f85adb 100644 --- a/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/2.json @@ -170,18 +170,12 @@ "innerLabwareGeometry": { "conicalWell15mL": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 1.235, - "topHeight": 0.92, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 13.8, - "bottomDiameter": 2.38, - "topHeight": 22.55, - "bottomHeight": 0.92 + "topDiameter": 15.5, + "bottomDiameter": 14.56, + "topHeight": 117.8, + "bottomHeight": 113.8 }, { "shape": "conical", @@ -192,10 +186,16 @@ }, { "shape": "conical", - "topDiameter": 15.5, - "bottomDiameter": 14.56, - "topHeight": 117.8, - "bottomHeight": 113.8 + "topDiameter": 13.8, + "bottomDiameter": 2.38, + "topHeight": 22.55, + "bottomHeight": 0.92 + }, + { + "shape": "spherical", + "radiusOfCurvature": 1.235, + "topHeight": 0.92, + "bottomHeight": 0.0 } ] }, @@ -203,17 +203,10 @@ "sections": [ { "shape": "conical", - "topDiameter": 26.0, - "bottomDiameter": 4.5, - "topHeight": 14.35, - "bottomHeight": 0.0 - }, - { - "shape": "conical", - "topDiameter": 27.69, - "bottomDiameter": 26.0, - "topHeight": 108.8, - "bottomHeight": 14.35 + "topDiameter": 28.18, + "bottomDiameter": 27.95, + "topHeight": 113.1, + "bottomHeight": 109.1 }, { "shape": "conical", @@ -224,10 +217,17 @@ }, { "shape": "conical", - "topDiameter": 28.18, - "bottomDiameter": 27.95, - "topHeight": 113.1, - "bottomHeight": 109.1 + "topDiameter": 27.69, + "bottomDiameter": 26.0, + "topHeight": 108.8, + "bottomHeight": 14.35 + }, + { + "shape": "conical", + "topDiameter": 26.0, + "bottomDiameter": 4.5, + "topHeight": 14.35, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_15_tuberack_falcon_15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_15_tuberack_falcon_15ml_conical/2.json index f0ffc91ba63..2bc57239023 100644 --- a/shared-data/labware/definitions/3/opentrons_15_tuberack_falcon_15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_15_tuberack_falcon_15ml_conical/2.json @@ -226,18 +226,12 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 2.9, - "topHeight": 0.8, - "bottomHeight": 0.0 - }, { "shape": "conical", - "bottomDiameter": 4, - "topDiameter": 13.5, - "topHeight": 20.7, - "bottomHeight": 0.8 + "bottomDiameter": 14.5, + "topDiameter": 14.7, + "topHeight": 118.2, + "bottomHeight": 108.6 }, { "shape": "conical", @@ -248,10 +242,16 @@ }, { "shape": "conical", - "bottomDiameter": 14.5, - "topDiameter": 14.7, - "topHeight": 118.2, - "bottomHeight": 108.6 + "bottomDiameter": 4, + "topDiameter": 13.5, + "topHeight": 20.7, + "bottomHeight": 0.8 + }, + { + "shape": "spherical", + "radiusOfCurvature": 2.9, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_15_tuberack_nest_15ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_15_tuberack_nest_15ml_conical/2.json index 9fa2aa1b613..5f179e81796 100644 --- a/shared-data/labware/definitions/3/opentrons_15_tuberack_nest_15ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_15_tuberack_nest_15ml_conical/2.json @@ -226,10 +226,10 @@ "sections": [ { "shape": "conical", - "topDiameter": 13.8, - "bottomDiameter": 2.5, - "topHeight": 22.55, - "bottomHeight": 0.0 + "topDiameter": 15.5, + "bottomDiameter": 14.78, + "topHeight": 117.8, + "bottomHeight": 109.03 }, { "shape": "conical", @@ -240,10 +240,10 @@ }, { "shape": "conical", - "topDiameter": 15.5, - "bottomDiameter": 14.78, - "topHeight": 117.8, - "bottomHeight": 109.03 + "topDiameter": 13.8, + "bottomDiameter": 2.5, + "topHeight": 22.55, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_0.5ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_0.5ml_screwcap/2.json index d57d4e7942f..2597ac8c542 100644 --- a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_0.5ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_0.5ml_screwcap/2.json @@ -323,25 +323,19 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 3.64, - "topHeight": 0.14, - "bottomHeight": 0.0 - }, { "shape": "conical", - "bottomDiameter": 2, - "topDiameter": 3, - "topHeight": 0.95, - "bottomHeight": 0.14 + "bottomDiameter": 8.56, + "topDiameter": 8.56, + "topHeight": 25.2, + "bottomHeight": 13.95 }, { "shape": "conical", - "bottomDiameter": 3, - "topDiameter": 5.8, - "topHeight": 10.2, - "bottomHeight": 0.95 + "bottomDiameter": 7.9, + "topDiameter": 8.56, + "topHeight": 13.95, + "bottomHeight": 11.9 }, { "shape": "conical", @@ -352,17 +346,23 @@ }, { "shape": "conical", - "bottomDiameter": 7.9, - "topDiameter": 8.56, - "topHeight": 13.95, - "bottomHeight": 11.9 + "bottomDiameter": 3, + "topDiameter": 5.8, + "topHeight": 10.2, + "bottomHeight": 0.95 }, { "shape": "conical", - "bottomDiameter": 8.56, - "topDiameter": 8.56, - "topHeight": 25.2, - "bottomHeight": 13.95 + "bottomDiameter": 2, + "topDiameter": 3, + "topHeight": 0.95, + "bottomHeight": 0.14 + }, + { + "shape": "spherical", + "radiusOfCurvature": 3.64, + "topHeight": 0.14, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_screwcap/2.json index 0e1d1eaaab3..b440b9d1330 100644 --- a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_screwcap/2.json @@ -323,18 +323,12 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 2.36, - "topHeight": 0.2, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 3.2, - "bottomDiameter": 1.9, - "topHeight": 1.88, - "bottomHeight": 0.2 + "topDiameter": 8.55, + "bottomDiameter": 8.2, + "topHeight": 42.6, + "bottomHeight": 13.7 }, { "shape": "conical", @@ -345,10 +339,16 @@ }, { "shape": "conical", - "topDiameter": 8.55, - "bottomDiameter": 8.2, - "topHeight": 42.6, - "bottomHeight": 13.7 + "topDiameter": 3.2, + "bottomDiameter": 1.9, + "topHeight": 1.88, + "bottomHeight": 0.2 + }, + { + "shape": "spherical", + "radiusOfCurvature": 2.36, + "topHeight": 0.2, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_snapcap/2.json index 51084d8df70..58ea723466f 100644 --- a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_1.5ml_snapcap/2.json @@ -326,10 +326,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 2.72, - "topHeight": 1.57, - "bottomHeight": 0.0 + "shape": "conical", + "topDiameter": 9.28, + "bottomDiameter": 8.9, + "topHeight": 37.9, + "bottomHeight": 17.7 }, { "shape": "conical", @@ -339,11 +340,10 @@ "bottomHeight": 1.57 }, { - "shape": "conical", - "topDiameter": 9.28, - "bottomDiameter": 8.9, - "topHeight": 37.9, - "bottomHeight": 17.7 + "shape": "spherical", + "radiusOfCurvature": 2.72, + "topHeight": 1.57, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_screwcap/2.json index 4ce933a91d0..8340977dc9f 100644 --- a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_screwcap/2.json @@ -325,10 +325,10 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 1.21, - "topDiameter": 6.5, - "topHeight": 2.08, - "bottomHeight": 0.0 + "bottomDiameter": 8.14, + "topDiameter": 8.55, + "topHeight": 43.4, + "bottomHeight": 3.04 }, { "shape": "conical", @@ -339,10 +339,10 @@ }, { "shape": "conical", - "bottomDiameter": 8.14, - "topDiameter": 8.55, - "topHeight": 43.4, - "bottomHeight": 3.04 + "bottomDiameter": 1.21, + "topDiameter": 6.5, + "topHeight": 2.08, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_snapcap/2.json index a2ee9e2d328..94d31ce04fb 100644 --- a/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_aluminumblock_nest_2ml_snapcap/2.json @@ -326,24 +326,25 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 3.19, - "topHeight": 1.21, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 8.9, + "topDiameter": 9.28, + "topHeight": 39.28, + "bottomHeight": 15.04 }, { "shape": "conical", - "bottomDiameter": 5, - "topDiameter": 6, - "topHeight": 1.83, - "bottomHeight": 1.21 + "bottomDiameter": 8, + "topDiameter": 8.9, + "topHeight": 15.05, + "bottomHeight": 3.89 }, { "shape": "conical", - "bottomDiameter": 6, - "topDiameter": 7, - "topHeight": 2.59, - "bottomHeight": 1.83 + "bottomDiameter": 7.2, + "topDiameter": 8, + "topHeight": 3.89, + "bottomHeight": 2.74 }, { "shape": "conical", @@ -354,24 +355,23 @@ }, { "shape": "conical", - "bottomDiameter": 7.2, - "topDiameter": 8, - "topHeight": 3.89, - "bottomHeight": 2.74 + "bottomDiameter": 6, + "topDiameter": 7, + "topHeight": 2.59, + "bottomHeight": 1.83 }, { "shape": "conical", - "bottomDiameter": 8, - "topDiameter": 8.9, - "topHeight": 15.05, - "bottomHeight": 3.89 + "bottomDiameter": 5, + "topDiameter": 6, + "topHeight": 1.83, + "bottomHeight": 1.21 }, { - "shape": "conical", - "bottomDiameter": 8.9, - "topDiameter": 9.28, - "topHeight": 39.28, - "bottomHeight": 15.04 + "shape": "spherical", + "radiusOfCurvature": 3.19, + "topHeight": 1.21, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/2.json index 9d0953e53be..a7682390594 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/2.json @@ -337,38 +337,39 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 2.6, - "topHeight": 0.2, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 9.6, + "topDiameter": 10, + "topHeight": 37.8, + "bottomHeight": 32.49 }, { "shape": "conical", - "bottomDiameter": 2, - "topDiameter": 3.26, - "topHeight": 1, - "bottomHeight": 0.2 + "bottomDiameter": 9.2, + "topDiameter": 9.6, + "topHeight": 32.49, + "bottomHeight": 31.97 }, { "shape": "conical", - "bottomDiameter": 3.26, - "topDiameter": 4, - "topHeight": 2.9, - "bottomHeight": 1 + "bottomDiameter": 9.02, + "topDiameter": 9.2, + "topHeight": 31.97, + "bottomHeight": 31.16 }, { "shape": "conical", - "bottomDiameter": 4, - "topDiameter": 6, - "topHeight": 9.24, - "bottomHeight": 2.9 + "bottomDiameter": 8.9, + "topDiameter": 9.02, + "topHeight": 31.16, + "bottomHeight": 28.16 }, { "shape": "conical", - "bottomDiameter": 6, - "topDiameter": 8, - "topHeight": 15.89, - "bottomHeight": 9.24 + "bottomDiameter": 8.5, + "topDiameter": 8.9, + "topHeight": 28.16, + "bottomHeight": 17.56 }, { "shape": "conical", @@ -379,38 +380,37 @@ }, { "shape": "conical", - "bottomDiameter": 8.5, - "topDiameter": 8.9, - "topHeight": 28.16, - "bottomHeight": 17.56 + "bottomDiameter": 6, + "topDiameter": 8, + "topHeight": 15.89, + "bottomHeight": 9.24 }, { "shape": "conical", - "bottomDiameter": 8.9, - "topDiameter": 9.02, - "topHeight": 31.16, - "bottomHeight": 28.16 + "bottomDiameter": 4, + "topDiameter": 6, + "topHeight": 9.24, + "bottomHeight": 2.9 }, { "shape": "conical", - "bottomDiameter": 9.02, - "topDiameter": 9.2, - "topHeight": 31.97, - "bottomHeight": 31.16 + "bottomDiameter": 3.26, + "topDiameter": 4, + "topHeight": 2.9, + "bottomHeight": 1 }, { "shape": "conical", - "bottomDiameter": 9.2, - "topDiameter": 9.6, - "topHeight": 32.49, - "bottomHeight": 31.97 + "bottomDiameter": 2, + "topDiameter": 3.26, + "topHeight": 1, + "bottomHeight": 0.2 }, { - "shape": "conical", - "bottomDiameter": 9.6, - "topDiameter": 10, - "topHeight": 37.8, - "bottomHeight": 32.49 + "shape": "spherical", + "radiusOfCurvature": 2.6, + "topHeight": 0.2, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json index 97726f203f7..e3d0c3d917e 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/2.json @@ -336,66 +336,67 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 2.88, - "topHeight": 1.45, - "bottomHeight": 0.0 + "shape": "conical", + "topDiameter": 10.0, + "bottomDiameter": 9.6, + "topHeight": 39.02, + "bottomHeight": 33.96 }, { "shape": "conical", - "topDiameter": 6.0, - "bottomDiameter": 5.0, - "topHeight": 2.2, - "bottomHeight": 1.45 + "topDiameter": 9.6, + "bottomDiameter": 9.2, + "topHeight": 33.96, + "bottomHeight": 32.5 }, { "shape": "conical", - "topDiameter": 6.4, - "bottomDiameter": 6.0, - "topHeight": 2.45, - "bottomHeight": 2.2 + "topDiameter": 9.2, + "bottomDiameter": 9.1, + "topHeight": 32.5, + "bottomHeight": 25.26 }, { "shape": "conical", - "topDiameter": 6.8, - "bottomDiameter": 6.4, - "topHeight": 2.75, - "bottomHeight": 2.45 + "topDiameter": 9.1, + "bottomDiameter": 9.0, + "topHeight": 25.26, + "bottomHeight": 13.32 }, { "shape": "conical", - "topDiameter": 7.2, - "bottomDiameter": 6.8, - "topHeight": 3.14, - "bottomHeight": 2.75 + "topDiameter": 9.0, + "bottomDiameter": 8.9, + "topHeight": 13.32, + "bottomHeight": 10.17 }, { "shape": "conical", - "topDiameter": 7.6, - "bottomDiameter": 7.2, - "topHeight": 3.67, - "bottomHeight": 3.14 + "topDiameter": 8.9, + "bottomDiameter": 8.78, + "topHeight": 10.17, + "bottomHeight": 6.97 }, { "shape": "conical", - "topDiameter": 7.7, - "bottomDiameter": 7.6, - "topHeight": 3.93, - "bottomHeight": 3.67 + "topDiameter": 8.78, + "bottomDiameter": 8.6, + "topHeight": 6.97, + "bottomHeight": 5.43 }, { "shape": "conical", - "topDiameter": 8.0, - "bottomDiameter": 7.7, - "topHeight": 4.29, - "bottomHeight": 3.93 + "topDiameter": 8.6, + "bottomDiameter": 8.5, + "topHeight": 5.43, + "bottomHeight": 5.15 }, { "shape": "conical", - "topDiameter": 8.2, - "bottomDiameter": 8.0, - "topHeight": 4.53, - "bottomHeight": 4.29 + "topDiameter": 8.5, + "bottomDiameter": 8.4, + "topHeight": 5.15, + "bottomHeight": 5.03 }, { "shape": "conical", @@ -406,66 +407,65 @@ }, { "shape": "conical", - "topDiameter": 8.5, - "bottomDiameter": 8.4, - "topHeight": 5.15, - "bottomHeight": 5.03 + "topDiameter": 8.2, + "bottomDiameter": 8.0, + "topHeight": 4.53, + "bottomHeight": 4.29 }, { "shape": "conical", - "topDiameter": 8.6, - "bottomDiameter": 8.5, - "topHeight": 5.43, - "bottomHeight": 5.15 + "topDiameter": 8.0, + "bottomDiameter": 7.7, + "topHeight": 4.29, + "bottomHeight": 3.93 }, { "shape": "conical", - "topDiameter": 8.78, - "bottomDiameter": 8.6, - "topHeight": 6.97, - "bottomHeight": 5.43 + "topDiameter": 7.7, + "bottomDiameter": 7.6, + "topHeight": 3.93, + "bottomHeight": 3.67 }, { "shape": "conical", - "topDiameter": 8.9, - "bottomDiameter": 8.78, - "topHeight": 10.17, - "bottomHeight": 6.97 + "topDiameter": 7.6, + "bottomDiameter": 7.2, + "topHeight": 3.67, + "bottomHeight": 3.14 }, { "shape": "conical", - "topDiameter": 9.0, - "bottomDiameter": 8.9, - "topHeight": 13.32, - "bottomHeight": 10.17 + "topDiameter": 7.2, + "bottomDiameter": 6.8, + "topHeight": 3.14, + "bottomHeight": 2.75 }, { "shape": "conical", - "topDiameter": 9.1, - "bottomDiameter": 9.0, - "topHeight": 25.26, - "bottomHeight": 13.32 + "topDiameter": 6.8, + "bottomDiameter": 6.4, + "topHeight": 2.75, + "bottomHeight": 2.45 }, { "shape": "conical", - "topDiameter": 9.2, - "bottomDiameter": 9.1, - "topHeight": 32.5, - "bottomHeight": 25.26 + "topDiameter": 6.4, + "bottomDiameter": 6.0, + "topHeight": 2.45, + "bottomHeight": 2.2 }, { "shape": "conical", - "topDiameter": 9.6, - "bottomDiameter": 9.2, - "topHeight": 33.96, - "bottomHeight": 32.5 + "topDiameter": 6.0, + "bottomDiameter": 5.0, + "topHeight": 2.2, + "bottomHeight": 1.45 }, { - "shape": "conical", - "topDiameter": 10.0, - "bottomDiameter": 9.6, - "topHeight": 39.02, - "bottomHeight": 33.96 + "shape": "spherical", + "radiusOfCurvature": 2.88, + "topHeight": 1.45, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json index 0914789708c..43fd7f20d26 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_generic_2ml_screwcap/2.json @@ -326,10 +326,10 @@ "sections": [ { "shape": "conical", - "topDiameter": 6.5, - "bottomDiameter": 1.21, - "topHeight": 2.08, - "bottomHeight": 0.0 + "topDiameter": 8.5, + "bottomDiameter": 8.14, + "topHeight": 42.0, + "bottomHeight": 3.04 }, { "shape": "conical", @@ -340,10 +340,10 @@ }, { "shape": "conical", - "topDiameter": 8.5, - "bottomDiameter": 8.14, - "topHeight": 42.0, - "bottomHeight": 3.04 + "topDiameter": 6.5, + "bottomDiameter": 1.21, + "topHeight": 2.08, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_0.5ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_0.5ml_screwcap/2.json index 0b29c336b23..ea2717e2cb5 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_0.5ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_0.5ml_screwcap/2.json @@ -324,25 +324,19 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 3.64, - "topHeight": 0.14, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 3, - "bottomDiameter": 2, - "topHeight": 0.95, - "bottomHeight": 0.14 + "topDiameter": 8.56, + "bottomDiameter": 8.56, + "topHeight": 25.2, + "bottomHeight": 13.95 }, { "shape": "conical", - "topDiameter": 5.8, - "bottomDiameter": 3, - "topHeight": 10.2, - "bottomHeight": 0.95 + "topDiameter": 8.56, + "bottomDiameter": 7.9, + "topHeight": 13.95, + "bottomHeight": 11.9 }, { "shape": "conical", @@ -353,17 +347,23 @@ }, { "shape": "conical", - "topDiameter": 8.56, - "bottomDiameter": 7.9, - "topHeight": 13.95, - "bottomHeight": 11.9 + "topDiameter": 5.8, + "bottomDiameter": 3, + "topHeight": 10.2, + "bottomHeight": 0.95 }, { "shape": "conical", - "topDiameter": 8.56, - "bottomDiameter": 8.56, - "topHeight": 25.2, - "bottomHeight": 13.95 + "topDiameter": 3, + "bottomDiameter": 2, + "topHeight": 0.95, + "bottomHeight": 0.14 + }, + { + "shape": "spherical", + "radiusOfCurvature": 3.64, + "topHeight": 0.14, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json index 9544e5cc9c2..e274cb83e20 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_screwcap/2.json @@ -324,18 +324,12 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 2.36, - "topHeight": 0.2, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 3.2, - "bottomDiameter": 1.9, - "topHeight": 1.88, - "bottomHeight": 0.2 + "topDiameter": 8.55, + "bottomDiameter": 8.2, + "topHeight": 42.6, + "bottomHeight": 13.7 }, { "shape": "conical", @@ -346,10 +340,16 @@ }, { "shape": "conical", - "topDiameter": 8.55, - "bottomDiameter": 8.2, - "topHeight": 42.6, - "bottomHeight": 13.7 + "topDiameter": 3.2, + "bottomDiameter": 1.9, + "topHeight": 1.88, + "bottomHeight": 0.2 + }, + { + "shape": "spherical", + "radiusOfCurvature": 2.36, + "topHeight": 0.2, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json index af1f609a7f4..0f5270b9bfd 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_1.5ml_snapcap/2.json @@ -326,18 +326,12 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 1.87, - "topHeight": 1.56, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 8.98, - "bottomDiameter": 3.69, - "topHeight": 17.4, - "bottomHeight": 1.56 + "topDiameter": 9.9, + "bottomDiameter": 9.28, + "topHeight": 37.9, + "bottomHeight": 35.4 }, { "shape": "conical", @@ -348,10 +342,16 @@ }, { "shape": "conical", - "topDiameter": 9.9, - "bottomDiameter": 9.28, - "topHeight": 37.9, - "bottomHeight": 35.4 + "topDiameter": 8.98, + "bottomDiameter": 3.69, + "topHeight": 17.4, + "bottomHeight": 1.56 + }, + { + "shape": "spherical", + "radiusOfCurvature": 1.87, + "topHeight": 1.56, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json index a66604fbb00..0ccc0a0e25b 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_screwcap/2.json @@ -326,10 +326,10 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 1.21, - "topDiameter": 6.5, - "topHeight": 2.08, - "bottomHeight": 0.0 + "topDiameter": 8.55, + "bottomDiameter": 8.14, + "topHeight": 43.4, + "bottomHeight": 3.04 }, { "shape": "conical", @@ -340,10 +340,10 @@ }, { "shape": "conical", - "topDiameter": 8.55, - "bottomDiameter": 8.14, - "topHeight": 43.4, - "bottomHeight": 3.04 + "bottomDiameter": 1.21, + "topDiameter": 6.5, + "topHeight": 2.08, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json index 3918d0c0c42..961d0ef75f3 100644 --- a/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json +++ b/shared-data/labware/definitions/3/opentrons_24_tuberack_nest_2ml_snapcap/2.json @@ -326,32 +326,26 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 3.19, - "topHeight": 1.21, - "bottomHeight": 0.0 - }, { "shape": "conical", - "topDiameter": 6.0, - "bottomDiameter": 5.0, - "topHeight": 1.83, - "bottomHeight": 1.21 + "topDiameter": 9.28, + "bottomDiameter": 8.9, + "topHeight": 39.28, + "bottomHeight": 15.04 }, { "shape": "conical", - "topDiameter": 7.0, - "bottomDiameter": 6.0, - "topHeight": 2.59, - "bottomHeight": 1.83 + "topDiameter": 8.9, + "bottomDiameter": 8.74, + "topHeight": 15.04, + "bottomHeight": 6.26 }, { "shape": "conical", - "topDiameter": 7.2, - "bottomDiameter": 7.0, - "topHeight": 2.74, - "bottomHeight": 2.59 + "topDiameter": 8.74, + "bottomDiameter": 8.0, + "topHeight": 6.26, + "bottomHeight": 3.98 }, { "shape": "conical", @@ -362,24 +356,30 @@ }, { "shape": "conical", - "topDiameter": 8.74, - "bottomDiameter": 8.0, - "topHeight": 6.26, - "bottomHeight": 3.98 + "topDiameter": 7.2, + "bottomDiameter": 7.0, + "topHeight": 2.74, + "bottomHeight": 2.59 }, { "shape": "conical", - "topDiameter": 8.9, - "bottomDiameter": 8.74, - "topHeight": 15.04, - "bottomHeight": 6.26 + "topDiameter": 7.0, + "bottomDiameter": 6.0, + "topHeight": 2.59, + "bottomHeight": 1.83 }, { "shape": "conical", - "topDiameter": 9.28, - "bottomDiameter": 8.9, - "topHeight": 39.28, - "bottomHeight": 15.04 + "topDiameter": 6.0, + "bottomDiameter": 5.0, + "topHeight": 1.83, + "bottomHeight": 1.21 + }, + { + "shape": "spherical", + "radiusOfCurvature": 3.19, + "topHeight": 1.21, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_6_tuberack_falcon_50ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_6_tuberack_falcon_50ml_conical/2.json index e94df16c28e..7f39388b16c 100644 --- a/shared-data/labware/definitions/3/opentrons_6_tuberack_falcon_50ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_6_tuberack_falcon_50ml_conical/2.json @@ -120,10 +120,10 @@ "sections": [ { "shape": "conical", - "bottomDiameter": 6.15, - "topDiameter": 26.18, - "topHeight": 14.3, - "bottomHeight": 0.0 + "bottomDiameter": 27.52, + "topDiameter": 27.81, + "topHeight": 112.85, + "bottomHeight": 100.65 }, { "shape": "conical", @@ -134,10 +134,10 @@ }, { "shape": "conical", - "bottomDiameter": 27.52, - "topDiameter": 27.81, - "topHeight": 112.85, - "bottomHeight": 100.65 + "bottomDiameter": 6.15, + "topDiameter": 26.18, + "topHeight": 14.3, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_6_tuberack_nest_50ml_conical/2.json b/shared-data/labware/definitions/3/opentrons_6_tuberack_nest_50ml_conical/2.json index 01ce776b887..fdf2012b10e 100644 --- a/shared-data/labware/definitions/3/opentrons_6_tuberack_nest_50ml_conical/2.json +++ b/shared-data/labware/definitions/3/opentrons_6_tuberack_nest_50ml_conical/2.json @@ -118,10 +118,10 @@ "sections": [ { "shape": "conical", - "topDiameter": 26.0, - "bottomDiameter": 6.0, - "topHeight": 14.28, - "bottomHeight": 0.0 + "topDiameter": 27.45, + "bottomDiameter": 27.0, + "topHeight": 113.3, + "bottomHeight": 109.0 }, { "shape": "conical", @@ -132,10 +132,10 @@ }, { "shape": "conical", - "topDiameter": 27.45, - "bottomDiameter": 27.0, - "topHeight": 113.3, - "bottomHeight": 109.0 + "topDiameter": 26.0, + "bottomDiameter": 6.0, + "topHeight": 14.28, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json index 48811ce64cd..ff19a886e26 100644 --- a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json @@ -1126,17 +1126,18 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.42, - "topHeight": 1.21, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.44, + "topDiameter": 5.44, + "topHeight": 14.57, + "bottomHeight": 10.14 }, { "shape": "conical", - "bottomDiameter": 2.81, - "topDiameter": 3, - "topHeight": 1.87, - "bottomHeight": 1.21 + "bottomDiameter": 3, + "topDiameter": 5.44, + "topHeight": 10.14, + "bottomHeight": 8.58 }, { "shape": "conical", @@ -1147,17 +1148,16 @@ }, { "shape": "conical", - "bottomDiameter": 3, - "topDiameter": 5.44, - "topHeight": 10.14, - "bottomHeight": 8.58 + "bottomDiameter": 2.81, + "topDiameter": 3, + "topHeight": 1.87, + "bottomHeight": 1.21 }, { - "shape": "conical", - "bottomDiameter": 5.44, - "topDiameter": 5.44, - "topHeight": 14.57, - "bottomHeight": 10.14 + "shape": "spherical", + "radiusOfCurvature": 1.42, + "topHeight": 1.21, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json index 567af45ba6f..7feac27841f 100644 --- a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json @@ -1123,6 +1123,13 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ + { + "shape": "conical", + "bottomDiameter": 5.26, + "topDiameter": 5.34, + "topHeight": 14.7, + "bottomHeight": 9.89 + }, { "shape": "spherical", "radiusOfCurvature": 3.015, @@ -1135,13 +1142,6 @@ "topDiameter": 5.26, "topHeight": 0.2, "bottomHeight": 9.89 - }, - { - "shape": "conical", - "bottomDiameter": 5.26, - "topDiameter": 5.34, - "topHeight": 14.7, - "bottomHeight": 9.89 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json b/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json index 4f4a32320eb..10c63d8ad4a 100644 --- a/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json @@ -1217,15 +1217,6 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ - { - "shape": "cuboidal", - "topXDimension": 7.4, - "topYDimension": 7.4, - "bottomXDimension": 2.63, - "bottomYDimension": 2.63, - "topHeight": 1.67, - "bottomHeight": 0.0 - }, { "shape": "cuboidal", "topXDimension": 8.2, @@ -1234,6 +1225,15 @@ "bottomYDimension": 7.4, "topHeight": 38.05, "bottomHeight": 1.67 + }, + { + "shape": "cuboidal", + "topXDimension": 7.4, + "topYDimension": 7.4, + "bottomXDimension": 2.63, + "bottomYDimension": 2.63, + "topHeight": 1.67, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json index 3ac68ba32be..a21f759a713 100644 --- a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json @@ -1124,10 +1124,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.25, - "topHeight": 0.8, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.5, + "topDiameter": 5.5, + "topHeight": 14.95, + "bottomHeight": 11.35 }, { "shape": "conical", @@ -1137,11 +1138,10 @@ "bottomHeight": 0.8 }, { - "shape": "conical", - "bottomDiameter": 5.5, - "topDiameter": 5.5, - "topHeight": 14.95, - "bottomHeight": 11.35 + "shape": "spherical", + "radiusOfCurvature": 1.25, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json index 013108e6d70..b5a3891c396 100644 --- a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json @@ -1121,6 +1121,13 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ + { + "shape": "conical", + "bottomDiameter": 5.26, + "topDiameter": 5.34, + "topHeight": 14.7, + "bottomHeight": 9.89 + }, { "shape": "spherical", "radiusOfCurvature": 3.015, @@ -1133,13 +1140,6 @@ "topDiameter": 5.26, "topHeight": 0.2, "bottomHeight": 9.89 - }, - { - "shape": "conical", - "bottomDiameter": 5.26, - "topDiameter": 5.34, - "topHeight": 14.7, - "bottomHeight": 9.89 } ] } diff --git a/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json index d868db657cf..2cfa376d741 100644 --- a/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json @@ -1149,10 +1149,11 @@ "conicalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.25, - "topHeight": 0.8, - "bottomHeight": 0.0 + "shape": "conical", + "bottomDiameter": 5.5, + "topDiameter": 5.5, + "topHeight": 14.95, + "bottomHeight": 11.35 }, { "shape": "conical", @@ -1162,11 +1163,10 @@ "bottomHeight": 0.8 }, { - "shape": "conical", - "bottomDiameter": 5.5, - "topDiameter": 5.5, - "topHeight": 14.95, - "bottomHeight": 11.35 + "shape": "spherical", + "radiusOfCurvature": 1.25, + "topHeight": 0.8, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json index 88007da25ed..a022cc88192 100644 --- a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json +++ b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json @@ -1115,18 +1115,18 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 3.6, - "topHeight": 3.6, - "bottomHeight": 0.0 - }, { "shape": "conical", "bottomDiameter": 7.2, "topDiameter": 8.4, "topHeight": 29.1, "bottomHeight": 3.6 + }, + { + "shape": "spherical", + "radiusOfCurvature": 3.6, + "topHeight": 3.6, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json index e76dca47616..dfa3f26f224 100644 --- a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json +++ b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json @@ -1115,18 +1115,18 @@ "innerLabwareGeometry": { "conicalWell": { "sections": [ - { - "shape": "spherical", - "radiusOfCurvature": 3.6, - "topHeight": 3.6, - "bottomHeight": 0.0 - }, { "shape": "conical", "bottomDiameter": 7.2, "topDiameter": 8.5, "topHeight": 41.5, "bottomHeight": 3.6 + }, + { + "shape": "spherical", + "radiusOfCurvature": 3.6, + "topHeight": 3.6, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json b/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json index bbc013e5d09..2db2ff306a2 100644 --- a/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json +++ b/shared-data/labware/definitions/3/usascientific_12_reservoir_22ml/2.json @@ -205,11 +205,13 @@ "cuboidalWell": { "sections": [ { - "shape": "spherical", - "radiusOfCurvature": 1.5362, - "topHeight": 0.25, - "bottomHeight": 0.0, - "yCount": 8 + "shape": "cuboidal", + "topXDimension": 8.34, + "topYDimension": 71.85, + "bottomXDimension": 7.9, + "bottomYDimension": 71.75, + "topHeight": 41.75, + "bottomHeight": 4.0 }, { "shape": "squaredcone", @@ -223,13 +225,11 @@ "yCount": 8 }, { - "shape": "cuboidal", - "topXDimension": 8.34, - "topYDimension": 71.85, - "bottomXDimension": 7.9, - "bottomYDimension": 71.75, - "topHeight": 41.75, - "bottomHeight": 4.0 + "shape": "spherical", + "radiusOfCurvature": 1.5362, + "topHeight": 0.25, + "bottomHeight": 0.0, + "yCount": 8 } ] } diff --git a/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json b/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json index d7011a4920e..4e9ecec2a22 100644 --- a/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json +++ b/shared-data/labware/definitions/3/usascientific_96_wellplate_2.4ml_deep/2.json @@ -1212,15 +1212,6 @@ "innerLabwareGeometry": { "cuboidalWell": { "sections": [ - { - "shape": "cuboidal", - "topXDimension": 7.52, - "topYDimension": 7.52, - "bottomXDimension": 0.25, - "bottomYDimension": 0.25, - "topHeight": 2.63, - "bottomHeight": 0.0 - }, { "shape": "cuboidal", "topXDimension": 8.2, @@ -1229,6 +1220,15 @@ "bottomYDimension": 7.52, "topHeight": 41.3, "bottomHeight": 2.63 + }, + { + "shape": "cuboidal", + "topXDimension": 7.52, + "topYDimension": 7.52, + "bottomXDimension": 0.25, + "bottomYDimension": 0.25, + "topHeight": 2.63, + "bottomHeight": 0.0 } ] } diff --git a/shared-data/labware/schemas/3.json b/shared-data/labware/schemas/3.json index d386cbfbb8d..5e02c45a981 100644 --- a/shared-data/labware/schemas/3.json +++ b/shared-data/labware/schemas/3.json @@ -277,7 +277,7 @@ "required": ["sections"], "properties": { "sections": { - "description": "A list of all of the sections of the well that have a contiguous shape", + "description": "A list of all of the sections of the well that have a contiguous shape. Must be ordered from top (highest z) to bottom (lowest z).", "type": "array", "items": { "oneOf": [ diff --git a/shared-data/python/opentrons_shared_data/labware/labware_definition.py b/shared-data/python/opentrons_shared_data/labware/labware_definition.py index 57f86016de5..6a834a8654e 100644 --- a/shared-data/python/opentrons_shared_data/labware/labware_definition.py +++ b/shared-data/python/opentrons_shared_data/labware/labware_definition.py @@ -679,7 +679,7 @@ class Group(BaseModel): class InnerWellGeometry(BaseModel): sections: List[WellSegment] = Field( ..., - description="A list of all of the sections of the well that have a contiguous shape", + description="A list of all of the sections of the well that have a contiguous shape. Must be ordered from top (highest z) to bottom (lowest z).", ) From f9e3f04a7cf239770da280288a3921be0544b2e7 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Wed, 5 Feb 2025 11:26:31 -0500 Subject: [PATCH 50/81] test(shared-data): Fix schema 3 labware definitions not being tested (#17425) --- .../js/__tests__/labwareDefSchemaV3.test.ts | 61 ++++++++++++------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts index 4631f327f29..e115dccc570 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts @@ -7,15 +7,13 @@ import Ajv from 'ajv' import schema from '../../labware/schemas/3.json' const fixturesDir = path.join(__dirname, '../../labware/fixtures/3') +const definitionsDir = path.join(__dirname, '../../labware/definitions/3') const globPattern = '**/*.json' const ajv = new Ajv({ allErrors: true, jsonPointers: true }) const validate = ajv.compile(schema) -const checkGeometryDefinitions = ( - labwareDef: LabwareDefinition3, - filename: string -): void => { +const checkGeometryDefinitions = (labwareDef: LabwareDefinition3): void => { test('innerLabwareGeometry sections should be sorted top to bottom', () => { const geometries = Object.values(labwareDef.innerLabwareGeometry ?? []) for (const geometry of geometries) { @@ -27,7 +25,7 @@ const checkGeometryDefinitions = ( } }) - test(`all geometryDefinitionIds specified in {filename} should have an accompanying valid entry in innerLabwareGeometry`, () => { + test('all geometryDefinitionIds should have an accompanying valid entry in innerLabwareGeometry', () => { for (const wellName in labwareDef.wells) { const wellGeometryId = labwareDef.wells[wellName].geometryDefinitionId @@ -43,34 +41,53 @@ const checkGeometryDefinitions = ( expect(wellGeometryId in labwareDef.innerLabwareGeometry).toBe(true) - const wellDepth = labwareDef.wells[wellName].depth - const topFrustumHeight = - labwareDef.innerLabwareGeometry[wellGeometryId].sections[0].topHeight - - expect(wellDepth).toEqual(topFrustumHeight) + // FIXME(mm, 2025-02-04): + // `wellDepth` != `topFrustumHeight` for ~23/60 definitions. + // + // const wellDepth = labwareDef.wells[wellName].depth + // const topFrustumHeight = + // labwareDef.innerLabwareGeometry[wellGeometryId].sections[0].topHeight + // expect(wellDepth).toEqual(topFrustumHeight) } }) } -describe(`test additions to labware schema in v3`, () => { - const labwarePaths = glob.sync(globPattern, { cwd: fixturesDir }) +describe(`test labware definitions with schema v3`, () => { + const definitionPaths = glob.sync(globPattern, { + cwd: definitionsDir, + absolute: true, + }) + const fixturePaths = glob.sync(globPattern, { + cwd: fixturesDir, + absolute: true, + }) + const allPaths = definitionPaths.concat(fixturePaths) - test("definition paths didn't break, which would give false positives", () => { - expect(labwarePaths.length).toBeGreaterThan(0) + test("paths didn't break, which would give false positives", () => { + expect(definitionPaths.length).toBeGreaterThan(0) + expect(fixturePaths.length).toBeGreaterThan(0) }) - describe.each(labwarePaths)('%s', labwarePath => { - const filename = path.parse(labwarePath).base - const fullLabwarePath = path.join(fixturesDir, labwarePath) - const labwareDef = require(fullLabwarePath) as LabwareDefinition3 + describe.each(allPaths)('%s', labwarePath => { + const labwareDef = require(labwarePath) as LabwareDefinition3 - it(`${filename} validates against schema`, () => { + it('validates against schema', () => { const valid = validate(labwareDef) const validationErrors = validate.errors - expect(validationErrors).toBe(null) - expect(valid).toBe(true) + + // FIXME(mm, 2025-02-04): These new definitions have a displayCategory that + // the schema does not recognize. Either they need to change or the schema does. + const expectFailure = [ + 'opentrons_flex_tiprack_lid', + 'opentrons_tough_pcr_auto_sealing_lid', + 'protocol_engine_lid_stack_object', + ].includes(labwareDef.parameters.loadName) + + if (expectFailure) expect(validationErrors).not.toBe(null) + else expect(validationErrors).toBe(null) + expect(valid).toBe(!expectFailure) }) - checkGeometryDefinitions(labwareDef, labwarePath) + checkGeometryDefinitions(labwareDef) }) }) From 9d289712decb269e222a24040577822737068cd3 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 5 Feb 2025 14:35:24 -0500 Subject: [PATCH 51/81] feat(protocol-designer): introduce new -locationUpdates (#17414) closes AUTH-1396 The goal of this PR is so when importing JSON/python protocols back into PD, we can determine the additionalEquipment entities from `stepForms` instead of reading the commands. This PR introduces a few new `-locationUpdate` keys in `savedStepForms`'s `INITIAL_DECK_SETUP_STEP` step. The locations include: - `trashBinLocationUpdate` - `wasteChuteLocationUpdate` - `gripperLocationUpdate` - `stagingAreaLocationUpdate` --- protocol-designer/cypress/support/import.ts | 49 +- .../protocol/8/doItAllV3MigratedToV8.json | 110 ++-- .../protocol/8/doItAllV4MigratedToV8.json | 60 +- .../protocol/8/doItAllV7MigratedToV8.json | 262 ++++---- .../fixtures/protocol/8/doItAllV8.json | 167 ++--- .../protocol/8/example_1_1_0MigratedToV8.json | 398 ++++++------ .../fixtures/protocol/8/mix_8_0_0.json | 3 + .../8/newAdvancedSettingsAndMultiTemp.json | 50 +- .../8/ninetySixChannelFullAndColumn.json | 56 +- .../8/thermocyclerOnOt2V7MigratedToV8.json | 34 +- protocol-designer/src/constants.ts | 2 + protocol-designer/src/file-types.ts | 3 +- .../src/load-file/migration/8_5_0.ts | 73 +-- .../getAdditionalEquipmentLocationUpdate.ts | 270 ++++++++ .../utils/getMigrationPositionFromTop.ts | 44 ++ .../EditInstrumentsModal/PipetteOverview.tsx | 11 +- .../src/step-forms/actions/additionalItems.ts | 6 +- .../src/step-forms/reducers/index.ts | 430 +++++-------- .../src/step-forms/selectors/index.ts | 6 +- .../src/step-forms/test/utils.test.ts | 575 +++++++++--------- .../src/step-forms/utils/index.ts | 10 +- .../formLevel/getDefaultsForStepType.ts | 4 + .../test/getDefaultsForStepType.test.ts | 4 + 23 files changed, 1436 insertions(+), 1191 deletions(-) create mode 100644 protocol-designer/src/load-file/migration/utils/getAdditionalEquipmentLocationUpdate.ts create mode 100644 protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts diff --git a/protocol-designer/cypress/support/import.ts b/protocol-designer/cypress/support/import.ts index 829450c2189..3de7ee53ebe 100644 --- a/protocol-designer/cypress/support/import.ts +++ b/protocol-designer/cypress/support/import.ts @@ -104,6 +104,7 @@ export const migrateAndMatchSnapshot = ({ savedFile.designerApplication.version as string ) assert(version !== null, 'PD version is not valid semver') + const isBelowVersion850 = semver.lt(version ?? '', '8.5.0') const files = [savedFile, expectedFile] files.forEach(f => { @@ -111,25 +112,43 @@ export const migrateAndMatchSnapshot = ({ f.designerApplication.data._internalAppBuildDate = 'Foo Date' f.designerApplication.version = 'x.x.x' - Object.values( - f.designerApplication.data.savedStepForms as Record - ).forEach(stepForm => { - const stepFormTyped = stepForm as { - stepType: string - dropTip_location?: string - blowout_location?: string + const savedStepForms = f.designerApplication.data.savedStepForms + const initialDeckSetupStep = '__INITIAL_DECK_SETUP_STEP__' + + // a uuid is randomly generated each time you upload a protocol that is less than version 8_5_0 + // which is the migration version that adds these keys. Due to this, we need to ignore + // the uuids + if (savedStepForms[initialDeckSetupStep] && isBelowVersion850) { + savedStepForms[initialDeckSetupStep].trashBinLocationUpdate = { + trashBin: 'trashLocation', + } + savedStepForms[initialDeckSetupStep].gripperLocationUpdate = { + gripper: 'gripperLocation', } - if (stepFormTyped.stepType === 'moveLiquid') { - stepFormTyped.dropTip_location = 'trash drop tip location' - if (stepFormTyped.blowout_location?.includes('trashBin') ?? false) { + } + + Object.values(savedStepForms as Record).forEach( + stepForm => { + const stepFormTyped = stepForm as { + stepType: string + dropTip_location?: string + blowout_location?: string + } + if (stepFormTyped.stepType === 'moveLiquid') { + stepFormTyped.dropTip_location = 'trash drop tip location' + if ( + stepFormTyped.blowout_location?.includes('trashBin') ?? + false + ) { + stepFormTyped.blowout_location = 'trash blowout location' + } + } + if (stepFormTyped.stepType === 'mix') { + stepFormTyped.dropTip_location = 'trash drop tip location' stepFormTyped.blowout_location = 'trash blowout location' } } - if (stepFormTyped.stepType === 'mix') { - stepFormTyped.dropTip_location = 'trash drop tip location' - stepFormTyped.blowout_location = 'trash blowout location' - } - }) + ) f.commands.forEach((command: { key: string }) => { if ('key' in command) command.key = '123' diff --git a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json index eb34f8a175c..bfe4767cdff 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Fixture", "description": "Test all v3 commands", "created": 1585930833548, - "lastModified": 1738157114365, + "lastModified": 1738682273658, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -135,6 +135,12 @@ "pipetteLocationUpdate": { "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": "left" }, + "trashBinLocationUpdate": { + "bcdf4269-85da-4293-aeb6-bc7eddce6ecf:trashBin": "cutout12" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -162,7 +168,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", + "blowout_location": "bcdf4269-85da-4293-aeb6-bc7eddce6ecf:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -187,7 +193,7 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "dropTip_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", + "dropTip_location": "bcdf4269-85da-4293-aeb6-bc7eddce6ecf:trashBin", "nozzles": null, "path": "multiDispense", "pipette": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", @@ -228,13 +234,13 @@ "aspirate_flowRate": 40, "blowout_checkbox": true, "blowout_flowRate": 46.43, - "blowout_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", + "blowout_location": "bcdf4269-85da-4293-aeb6-bc7eddce6ecf:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": 35, - "dropTip_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", + "dropTip_location": "bcdf4269-85da-4293-aeb6-bc7eddce6ecf:trashBin", "labware": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": true, @@ -2618,7 +2624,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "3bed79e7-58b0-44f7-b69b-f6bbfca92050", + "key": "6419176b-cd87-4854-81de-ff98c98e02ff", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2627,7 +2633,7 @@ } }, { - "key": "4dde1dc9-5acc-472b-a31c-bde389335fa6", + "key": "65aef24f-726a-48de-8791-171484462a98", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2641,7 +2647,7 @@ } }, { - "key": "224b643f-b209-4d3f-99c4-c277ea89bc8f", + "key": "c40e41be-86b5-4895-a9d5-83d3e433085f", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2655,7 +2661,7 @@ } }, { - "key": "a4e63613-8f60-4bc7-bb1e-112564d35720", + "key": "bbeda67b-78da-4797-89a3-7f8cd1c62af5", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2670,7 +2676,7 @@ }, { "commandType": "loadLiquid", - "key": "c820e00d-268f-4d4c-86ee-cdd27b529efc", + "key": "8bfed0bd-7ea5-4d38-a51e-e8e4ada4a2c5", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2696,7 +2702,7 @@ }, { "commandType": "waitForDuration", - "key": "243817c3-d196-48ca-b644-2869c8831be8", + "key": "7790203c-558f-41b2-b9e3-51945c332c46", "params": { "seconds": 62, "message": "" @@ -2704,7 +2710,7 @@ }, { "commandType": "pickUpTip", - "key": "d9a2045f-f90d-4f38-9853-48ccee28ae19", + "key": "21ecac03-c066-4533-bba7-0c5565022cc1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2713,7 +2719,7 @@ }, { "commandType": "aspirate", - "key": "cd570d0a-52d3-4c05-be48-951c0c697a70", + "key": "7e76d464-1033-44fe-a4c1-7c6eb162f087", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2732,7 +2738,7 @@ }, { "commandType": "dispense", - "key": "1324b2c8-7000-4eb5-bb99-8044e5d2d4a1", + "key": "e6e1b4e9-e957-424c-899a-12e0d6225812", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2751,7 +2757,7 @@ }, { "commandType": "aspirate", - "key": "d6fc2391-2fce-4757-841e-b812a0ca7cbd", + "key": "0f7fdf60-f57b-4ddc-8812-de968ac82f1a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2770,7 +2776,7 @@ }, { "commandType": "dispense", - "key": "0e182daa-bba3-4709-94a2-c09cadf77049", + "key": "43933543-902f-47e9-9f5f-58c13c404913", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2789,7 +2795,7 @@ }, { "commandType": "aspirate", - "key": "8e66053b-fea4-4ac1-9509-23dd7371678b", + "key": "8144319f-d13a-4bce-bab3-778fd104bc7e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 100, @@ -2808,7 +2814,7 @@ }, { "commandType": "touchTip", - "key": "39c918f8-615c-4a0d-99b7-d5439942ced3", + "key": "e3dfde52-41fe-41e0-939a-74de6032ae1a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2823,7 +2829,7 @@ }, { "commandType": "dispense", - "key": "5f583194-0869-4fc9-93f7-bc07580ff7ba", + "key": "98ea90df-2a74-4fdc-934e-98101d3a1b8a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2842,7 +2848,7 @@ }, { "commandType": "touchTip", - "key": "670e4b7e-c246-4fba-8f76-490d0064f8e7", + "key": "7260abd2-176c-4893-8df5-2c8027d9b00d", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", @@ -2857,7 +2863,7 @@ }, { "commandType": "dispense", - "key": "40cfe456-331b-43d8-bee0-1806d93b45a2", + "key": "05cd3ff2-9057-40b1-93ce-00aea1817b98", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2876,7 +2882,7 @@ }, { "commandType": "touchTip", - "key": "b8335845-cabd-4af1-ab1b-1379c7bcd62b", + "key": "6632555e-36f1-48dd-98ce-36304ff52769", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", @@ -2891,7 +2897,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "c1d8d6b9-1a62-456f-8ca5-c4f21b3af4f3", + "key": "44dfa5fa-72bf-4ff7-a15a-7eb28641d6fa", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2904,7 +2910,7 @@ }, { "commandType": "blowOutInPlace", - "key": "8352e715-668b-4f80-aa35-0d2776137243", + "key": "46471c16-ca43-4756-a2c0-aac770de55af", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -2912,7 +2918,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "79c8d331-5c79-4f03-b8c5-4dc4b3315546", + "key": "46b7a955-be07-4d7b-be96-390cecc365de", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2926,21 +2932,21 @@ }, { "commandType": "dropTipInPlace", - "key": "52ee7e0d-ccb4-4e1e-b706-0ee8f9037bcb", + "key": "36a530a3-7a1c-4a93-8096-62e627866160", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "waitForResume", - "key": "add4e276-fc31-4b72-a3c5-612506159a10", + "key": "d326737f-cbea-478a-ada0-9f203daf4b25", "params": { "message": "Wait until user intervention" } }, { "commandType": "pickUpTip", - "key": "c3ced120-cd18-4abf-9e89-0cacea5a5da6", + "key": "6f000bcb-b2d0-4064-a68f-71760550bd06", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2949,7 +2955,7 @@ }, { "commandType": "aspirate", - "key": "cc110c4c-0d07-4373-919a-7941b288a0f8", + "key": "40646531-5cc5-4cf6-a0d0-21a5ce517ce9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2968,7 +2974,7 @@ }, { "commandType": "dispense", - "key": "61d7a6ed-1fb7-4c5f-b8c0-b8a02385a9a5", + "key": "58d50ea9-5ec1-4b21-ba19-f0ba8d3d420b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2987,7 +2993,7 @@ }, { "commandType": "aspirate", - "key": "1e1174dd-f3e9-446a-9e3d-46c68958487d", + "key": "6e151ed2-4cc1-4be3-ad2c-32457158e267", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3006,7 +3012,7 @@ }, { "commandType": "dispense", - "key": "fc92a66c-c81d-4645-9761-17b82eace5ca", + "key": "9fedc83e-e57e-40ff-9c38-13d83c803bba", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3025,7 +3031,7 @@ }, { "commandType": "aspirate", - "key": "d5ae7a38-aa11-47ea-a3a9-72dcc81bbed3", + "key": "c1815836-420a-425d-8a55-3615b34e99ea", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3044,7 +3050,7 @@ }, { "commandType": "dispense", - "key": "96411ac4-fe34-4d79-8197-69be37727d22", + "key": "0cacce9a-e295-489e-a4a9-b02a06f7110e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3063,7 +3069,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "2c6a94b7-ded9-4613-8440-07d61d1aeab9", + "key": "cdc11c6e-25ab-4829-bef8-3081c5dc7de9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3076,7 +3082,7 @@ }, { "commandType": "blowOutInPlace", - "key": "388ff506-8805-43c4-a28d-fdb1d71af2d6", + "key": "b19f51af-7b62-4943-94f7-e7a9d8126ca8", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -3084,7 +3090,7 @@ }, { "commandType": "touchTip", - "key": "e5af286f-12fb-4f6a-9ce9-fdc4a2e630df", + "key": "00297047-f664-4682-8b60-d0ff5b7fa2d5", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -3099,7 +3105,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "e2e64d0a-98f7-44b2-a30e-55f947ce383b", + "key": "60374221-4dae-45fc-9571-30981f3e54e3", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3113,14 +3119,14 @@ }, { "commandType": "dropTipInPlace", - "key": "c66dab4c-5675-468f-a202-be5136e26d97", + "key": "f4ed4d99-695e-4c33-b451-c96b3a8fe6f8", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "pickUpTip", - "key": "9b0ee879-5d40-44b4-b8d6-7de4dc308448", + "key": "2d3f2caa-2b46-450e-a5bd-ab8d2f5a1b61", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -3129,7 +3135,7 @@ }, { "commandType": "aspirate", - "key": "59c5aff6-b946-4846-84a3-68701edbd869", + "key": "1405face-d940-42a8-aa3d-c3dcfdf9f819", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3148,7 +3154,7 @@ }, { "commandType": "dispense", - "key": "4b1e2446-55b0-4503-8528-c446066b8f95", + "key": "6e29b113-6ffc-4b92-b7c9-f6639ba502ff", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3167,7 +3173,7 @@ }, { "commandType": "aspirate", - "key": "1454a903-58ab-401b-ba6e-682ee6144051", + "key": "4fa89603-362f-4526-b19a-9e8cb1c2cf9f", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3186,7 +3192,7 @@ }, { "commandType": "dispense", - "key": "b0f636be-6cce-4d2d-8526-51c80ed8fbe1", + "key": "dc862f46-d111-44e8-aeec-b8e55bba3271", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3205,7 +3211,7 @@ }, { "commandType": "aspirate", - "key": "c2ad1175-0a40-4982-9fa9-1354744ca6d4", + "key": "6fb0201b-6839-44ce-86b6-c384cd763c9b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3224,7 +3230,7 @@ }, { "commandType": "dispense", - "key": "d1147be5-d627-48ca-97a9-c92e643b313a", + "key": "f6b42a01-340b-43f7-b9fa-25cc68612df2", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3243,7 +3249,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "563170a0-0e79-4992-8f1c-830653392ef7", + "key": "48da44e2-869a-4af8-9001-d165a3b86b0e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3256,7 +3262,7 @@ }, { "commandType": "blowOutInPlace", - "key": "40f0e993-5b4b-4d9e-b9df-a7ef8a3bdf9b", + "key": "b1181ea5-9121-4bde-a3f4-fc67f4059aa6", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -3264,7 +3270,7 @@ }, { "commandType": "touchTip", - "key": "19a60b57-c610-4df1-88a2-5259038b3687", + "key": "f102022c-8365-490f-a7e4-cbc11395bd57", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -3279,7 +3285,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "f703c506-0bf4-4736-9790-7eab435672ae", + "key": "750b4051-6a23-4c0b-b999-e68a1d9285fd", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3293,7 +3299,7 @@ }, { "commandType": "dropTipInPlace", - "key": "49ded239-d74e-4a3f-944d-0b307cfa3de1", + "key": "4b4dcf1d-59e7-4691-aa73-9a159c72cd74", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } diff --git a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json index b008ecabf73..5ef201e8e50 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Fixture", "description": "Test all v4 commands", "created": 1585930833548, - "lastModified": 1738157148111, + "lastModified": 1738682299723, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -138,6 +138,12 @@ "pipetteLocationUpdate": { "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": "left" }, + "trashBinLocationUpdate": { + "8c280499-46f1-4a7c-9096-553e87fe9d1e:trashBin": "cutout12" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -194,7 +200,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "9bf036e9-ccfd-4732-80bc-d366731ce6d1:trashBin", + "blowout_location": "8c280499-46f1-4a7c-9096-553e87fe9d1e:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -219,7 +225,7 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "dropTip_location": "9bf036e9-ccfd-4732-80bc-d366731ce6d1:trashBin", + "dropTip_location": "8c280499-46f1-4a7c-9096-553e87fe9d1e:trashBin", "nozzles": null, "path": "single", "pipette": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", @@ -2640,7 +2646,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "8f11bef2-009b-4a4d-99f3-7c710ada996b", + "key": "f18c57de-1196-4656-9149-6f8f519ded50", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2649,7 +2655,7 @@ } }, { - "key": "9a510ad2-a606-4227-86e5-14635f3ec519", + "key": "f659bbae-c163-4770-ba70-94d779944e3e", "commandType": "loadModule", "params": { "model": "magneticModuleV2", @@ -2660,7 +2666,7 @@ } }, { - "key": "c98334f7-8f68-4f0b-9ff3-d98a85764e19", + "key": "211b1d23-4554-4fcb-9053-9b7620f3370a", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -2671,7 +2677,7 @@ } }, { - "key": "692d8775-0de4-472c-9e1a-0a7458e6c080", + "key": "02c8120e-ca2c-4fa2-a48c-0bf29c82d552", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2685,7 +2691,7 @@ } }, { - "key": "2f354149-0585-4fe6-ac4d-571e5d020f9a", + "key": "692d6fc7-be48-40ae-8b96-46a6ae939af3", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2699,7 +2705,7 @@ } }, { - "key": "e873508f-7a6b-472a-88cc-4d83a0d9d303", + "key": "e96ea68c-e1e6-43f2-a4b2-213372f41623", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2714,7 +2720,7 @@ }, { "commandType": "loadLiquid", - "key": "0a0b8038-bf92-4829-9d3b-cd6e950aafd1", + "key": "8e9bdf50-5ef7-451f-9d0e-95015241fc6e", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2740,7 +2746,7 @@ }, { "commandType": "magneticModule/engage", - "key": "7d74d316-4910-4827-836e-bb211eb6f9f0", + "key": "77b1d364-2ab1-4a4e-8fae-a9ecf4b88323", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType", "height": 6 @@ -2748,7 +2754,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "200de5f5-905a-4ea8-b48f-95b748597b56", + "key": "11956c88-bcad-4580-9036-869cc86a7b6b", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2756,7 +2762,7 @@ }, { "commandType": "waitForDuration", - "key": "93982f84-7c02-4609-aac0-916c85341221", + "key": "c9520683-6f9d-44ae-b158-3f5de7b1a4b5", "params": { "seconds": 62, "message": "" @@ -2764,7 +2770,7 @@ }, { "commandType": "pickUpTip", - "key": "8336f57c-7e0d-41a7-b4a7-d76b6436c073", + "key": "56cecd58-ca52-433d-aa71-98d59558d388", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2773,7 +2779,7 @@ }, { "commandType": "aspirate", - "key": "c7ada14a-1730-4237-9a6a-b9c9659cc70a", + "key": "e5f246a4-3ebf-4f73-99c9-2a69ad19f4bc", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2792,7 +2798,7 @@ }, { "commandType": "dispense", - "key": "cb1db2cb-2901-4fac-9953-84227b284de9", + "key": "fb1f0bb6-8f12-4662-be15-7e8d49368112", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2811,7 +2817,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "3b131455-38d8-4657-a72a-154e3e2e79c9", + "key": "321568ae-8d86-4c60-9ff3-2af0e73b6ab1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2825,14 +2831,14 @@ }, { "commandType": "dropTipInPlace", - "key": "7fbc3b35-82c0-4db1-83ba-f079d1b6f8a7", + "key": "d432d161-9da6-462d-a757-196de673d3d4", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "pickUpTip", - "key": "8facdb58-99b9-4838-8276-7c0e834ec587", + "key": "1fd1fdbf-592a-43f4-99ad-b1e5c3b1feab", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2841,7 +2847,7 @@ }, { "commandType": "aspirate", - "key": "3284fa14-23dd-40c2-8e93-74ccd0ebb309", + "key": "8af4e21b-c9da-4dc9-b033-3f2ae823fa4c", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2860,7 +2866,7 @@ }, { "commandType": "dispense", - "key": "f713e4a5-f9f0-4814-8856-c606f88d26e1", + "key": "6b4526b1-4738-4600-9920-53881f0735c8", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2879,7 +2885,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "b05b8e43-b996-49d3-b5fe-0197a66783e9", + "key": "0510a4d6-796d-4917-8a2f-f26a19078091", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2893,14 +2899,14 @@ }, { "commandType": "dropTipInPlace", - "key": "dc46cc37-9c1b-4da3-b8fc-60fff04b758c", + "key": "69bac7a6-d8a0-4674-9b7f-5b8b0174d765", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "temperatureModule/waitForTemperature", - "key": "d71653aa-0905-4d08-aa6c-661389fee829", + "key": "d58f0651-b95c-4997-a06d-017fab7c27e4", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2908,14 +2914,14 @@ }, { "commandType": "magneticModule/disengage", - "key": "a156c1ba-2508-46b5-8318-f735bb8b42bb", + "key": "92a4f6f7-521f-42d7-aa0a-c8553fc11333", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType" } }, { "commandType": "waitForResume", - "key": "c53a9aa2-c092-45d5-b427-2f2c6c7c9b8b", + "key": "df776ec4-c8ef-416b-be42-1b2ea7ef51bc", "params": { "message": "Wait until user intervention" } diff --git a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json index 5b51d300ff3..17257c9b64d 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1689346890165, - "lastModified": 1738157178084, + "lastModified": 1738682341234, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -120,6 +120,14 @@ "2e7c6344-58ab-465c-b542-489883cb63fe": "left", "6d1e53c3-2db3-451b-ad60-3fe13781a193": "right" }, + "trashBinLocationUpdate": { + "302cf064-0438-4a62-9ce5-a80556c04cf2:trashBin": "cutoutA3" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": { + "08c02e37-4783-4c70-89bd-1f72ddb37a37:gripper": "mounted" + }, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -211,7 +219,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", + "blowout_location": "302cf064-0438-4a62-9ce5-a80556c04cf2:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -236,7 +244,7 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "100", - "dropTip_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", + "dropTip_location": "302cf064-0438-4a62-9ce5-a80556c04cf2:trashBin", "nozzles": null, "path": "single", "pipette": "2e7c6344-58ab-465c-b542-489883cb63fe", @@ -255,13 +263,13 @@ "aspirate_flowRate": null, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", + "blowout_location": "302cf064-0438-4a62-9ce5-a80556c04cf2:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": null, - "dropTip_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", + "dropTip_location": "302cf064-0438-4a62-9ce5-a80556c04cf2:trashBin", "labware": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": false, @@ -3867,7 +3875,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "086f94d9-065f-4c44-8006-caf80b83783c", + "key": "f265d7a8-ea31-479c-8908-2e14bb0c9bd6", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3876,7 +3884,7 @@ } }, { - "key": "505163b8-41fd-4983-93a7-be71a7d6ae9c", + "key": "91f878d6-9229-4f2f-94d1-3d7ee7e9f698", "commandType": "loadPipette", "params": { "pipetteName": "p50_multi_flex", @@ -3885,7 +3893,7 @@ } }, { - "key": "aec18895-04b5-4fef-a696-77741e3aea42", + "key": "63f60970-b543-4c00-a945-957a7c4c2be3", "commandType": "loadModule", "params": { "model": "magneticBlockV1", @@ -3896,7 +3904,7 @@ } }, { - "key": "f36b8ebe-0c9b-41bc-a1c0-eb754f7648f2", + "key": "789473a8-de30-4530-852d-ad88c445ed8c", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", @@ -3907,7 +3915,7 @@ } }, { - "key": "8db7cf16-2bf4-404d-9112-08c448797f28", + "key": "9fa18898-60a7-4773-8977-545029d36c0d", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -3918,7 +3926,7 @@ } }, { - "key": "cfe53e87-ab1d-487a-b48c-d7ae8f82da0f", + "key": "2beee7c0-d00b-4e41-b301-881c2fb5cc1b", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", @@ -3929,7 +3937,7 @@ } }, { - "key": "625d5aa2-3b3e-4eea-8255-906705b30f56", + "key": "68412459-534c-461f-a207-d728cec975ae", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter", @@ -3943,7 +3951,7 @@ } }, { - "key": "01f439b9-bd14-4b2a-829a-04dc59532b28", + "key": "5bcbacbc-5cca-4bf9-805c-25c164337ac8", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Filter Tip Rack 50 µL", @@ -3957,7 +3965,7 @@ } }, { - "key": "ce2c9a52-8e8c-4499-a9f4-28d875310ddc", + "key": "1ce1022c-ecca-4cc9-bf5f-160f5bd31798", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -3971,7 +3979,7 @@ } }, { - "key": "8e919382-c46f-4715-8acc-3e89d9ad20da", + "key": "ddcf60bc-f272-4cc5-9e47-9bcac0e99991", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap", @@ -3985,7 +3993,7 @@ } }, { - "key": "e3c83855-cea3-4c64-9a83-4569d7ec6c1c", + "key": "6f98dbb8-15f2-4fe1-bde1-4e5964e610e8", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 200 µL Flat", @@ -4000,7 +4008,7 @@ }, { "commandType": "loadLiquid", - "key": "4e2f124b-fdbd-4468-b13f-ff623614c7d5", + "key": "0f2a8671-36fc-47a4-a82b-30c740665573", "params": { "liquidId": "1", "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", @@ -4011,7 +4019,7 @@ }, { "commandType": "loadLiquid", - "key": "d1b5d49e-0c3a-4fcf-8908-d5683f62ef8d", + "key": "b282401a-e28e-4f5c-a6ec-506cedfa3eb5", "params": { "liquidId": "0", "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -4029,7 +4037,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "92fc9b4c-1952-447a-a6fa-d3f8c572f74c", + "key": "eb2202f7-0004-47ff-9b37-2b914259d64b", "params": { "moduleId": "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType", "celsius": 4 @@ -4037,7 +4045,7 @@ }, { "commandType": "heaterShaker/waitForTemperature", - "key": "a0a69251-318f-42df-953f-de79a0caf8c7", + "key": "dc7697a9-0490-4327-a4e0-0d2268cee8a8", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "celsius": 4 @@ -4045,14 +4053,14 @@ }, { "commandType": "thermocycler/closeLid", - "key": "86747e7e-5adf-4739-8372-da00fd6081f0", + "key": "fa3191c0-243e-4b4c-bf7f-6bb16e6626fc", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "2c00f180-7898-461e-a7a2-d087e92812bb", + "key": "b9d2da30-cf26-41a6-8946-d2c70323ef91", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "celsius": 40 @@ -4060,14 +4068,14 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "64440fd5-a728-4ad3-b5ac-8f952d0f6a10", + "key": "3f3acf32-7d90-4a54-b20f-55ebf801519b", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/runProfile", - "key": "b5b4ff79-43a7-4ff5-91a1-fdc9e481190a", + "key": "b22bef2a-43d2-45da-ac7c-1f536ef436c6", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "profile": [ @@ -4085,28 +4093,28 @@ }, { "commandType": "thermocycler/deactivateBlock", - "key": "4105ee32-8759-4410-b87f-15d19fa555dd", + "key": "658817ba-e619-4a4b-9869-08d7b65b9c3f", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateLid", - "key": "7b8c3e27-58d7-4385-a1e9-3e4353b6c837", + "key": "84525785-eac5-49a8-a651-b1c41694bc8d", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/openLid", - "key": "155179f3-86a7-4588-ade0-7f68fe5f0254", + "key": "aba48bb7-787f-45a2-a168-b0152b4ef8dd", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "pickUpTip", - "key": "4460ed34-d392-47ec-acc1-be1b1193282e", + "key": "bbe616eb-f6b9-41d5-b493-6b0c41a39571", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4115,7 +4123,7 @@ }, { "commandType": "aspirate", - "key": "5d23683a-9a8b-4e0f-a934-faf55d04e62b", + "key": "9888f41d-7b3d-430d-8559-449bfa6040d2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4134,7 +4142,7 @@ }, { "commandType": "dispense", - "key": "2ce5f9af-f4d3-4467-92f1-4a748db40c60", + "key": "3aaaeb62-8ff0-4a8c-9373-53bf404f37db", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4153,7 +4161,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "a6c0a9ba-3986-4c58-9423-30d802dc7aa4", + "key": "23d49cfb-0387-415b-9d03-c6f67d5448d7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4167,14 +4175,14 @@ }, { "commandType": "dropTipInPlace", - "key": "0e93144b-9c3d-4444-b69e-a2aa5a731886", + "key": "fc7a5edf-6500-4a65-ad28-72d0ce576d8b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "5a636309-7090-49fc-8630-c1d00b014427", + "key": "c922a053-4b6f-4526-9447-42d907785d0e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4183,7 +4191,7 @@ }, { "commandType": "aspirate", - "key": "dfe14619-1011-4e6d-a6f5-ec4412332cb1", + "key": "56136b24-573e-4025-b491-b41d6c6771a8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4202,7 +4210,7 @@ }, { "commandType": "dispense", - "key": "d47fae77-e4b8-47bd-8749-ed3b1ae597a5", + "key": "225b7a34-db3e-4d33-9068-3edc597d5624", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4221,7 +4229,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "152e5896-8695-4805-b85c-819db216921c", + "key": "8e2e3fe7-80db-446c-9126-87590ba95471", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4235,14 +4243,14 @@ }, { "commandType": "dropTipInPlace", - "key": "a85f27c1-2384-4da8-98a8-108836e8eb71", + "key": "997fa5ed-e3e9-4187-88d2-7375cb83f16c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "d45ffd65-eff6-4a8b-bd6f-5abde6dbf388", + "key": "4fbb8d44-4c69-4ab1-874f-e357d868d1b9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4251,7 +4259,7 @@ }, { "commandType": "aspirate", - "key": "ea9a5388-329c-4587-8363-549269e6a4c8", + "key": "4f707665-6a5b-4668-a9c4-5fd00370475a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4270,7 +4278,7 @@ }, { "commandType": "dispense", - "key": "d496cd3f-2189-438e-b9d5-95c698d8a6c0", + "key": "540f30fc-b8f8-4f05-8182-0a12c3647b01", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4289,7 +4297,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "7c444a4b-626d-449c-98a9-beeaf09e9196", + "key": "9a0e07ae-4c90-4b7e-b353-3ca7fc993ca7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4303,14 +4311,14 @@ }, { "commandType": "dropTipInPlace", - "key": "168dc853-1c29-4304-aa4c-5d706d2863a9", + "key": "b4116910-b28e-4e71-8a7b-dfb41cc99204", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "3e501992-3a68-48a3-8a35-c97f6d922fb5", + "key": "c777b30d-05c8-4dc7-af5d-c41acaa617df", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4319,7 +4327,7 @@ }, { "commandType": "aspirate", - "key": "e414d931-38f5-4ca3-93e0-28ab8d09a5ce", + "key": "106c22bd-295a-44e9-8dfb-580348ba8cc2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4338,7 +4346,7 @@ }, { "commandType": "dispense", - "key": "1b30be1e-9ab1-4ad2-8528-d0aac15649be", + "key": "1316892d-4ba4-4c8d-bdc6-117478905f1e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4357,7 +4365,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "333263db-9887-48f9-9cec-5e76264d02de", + "key": "c53a4989-107d-4e0d-a12a-39ef4558abe7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4371,14 +4379,14 @@ }, { "commandType": "dropTipInPlace", - "key": "0613a633-8c69-4273-a40b-25f7d432b9ef", + "key": "b5ad828c-bd7f-4de9-b421-904c31eba20a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "dce17552-dc58-4420-9566-720bd62d2723", + "key": "be671102-5e97-4a4b-b863-f05d8aca05b8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4387,7 +4395,7 @@ }, { "commandType": "aspirate", - "key": "d102217f-33c0-4f6d-81e8-ebfa23227b3b", + "key": "ceaa9cc8-30da-4161-a76b-91946d48995b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4406,7 +4414,7 @@ }, { "commandType": "dispense", - "key": "5624dd4a-9428-4764-b72b-854c372ac9b9", + "key": "e6a5d225-a65b-4c22-b6fa-f865a64473f8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4425,7 +4433,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "c9bb306f-9769-4fdf-8425-e6ef485b8053", + "key": "b14be9e9-2970-411e-b1d1-7f1e94e52f5c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4439,14 +4447,14 @@ }, { "commandType": "dropTipInPlace", - "key": "4d34ac41-1e14-47dc-bddd-e035bc34562c", + "key": "4bff8b00-01b9-442d-88dc-3dba96e2d069", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "0737c0cc-cf01-4fa0-b624-ba162f8a5daf", + "key": "600313ef-a0a0-49f2-bc0a-f348297314f9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4455,7 +4463,7 @@ }, { "commandType": "aspirate", - "key": "d121c382-86f2-4743-b043-d8f3606186de", + "key": "74e5e835-ade4-45e3-9932-b1482d2db302", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4474,7 +4482,7 @@ }, { "commandType": "dispense", - "key": "5b3da3c8-578e-4570-a9c0-12ba4eccd8ef", + "key": "e3389ddd-33e9-4ca2-95b9-1a65fe29c086", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4493,7 +4501,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "7a73f125-8cea-4846-9503-b1c15b16ca7f", + "key": "99778c37-6113-442e-9e86-cab1d013e876", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4507,14 +4515,14 @@ }, { "commandType": "dropTipInPlace", - "key": "ad8346ba-09c0-48e5-a4e2-585992b780ff", + "key": "2355a34d-8412-4b88-8af3-916d885df3a2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "bb55a704-2741-4543-8ec9-9d7cbe646913", + "key": "65af5661-1c7e-45e5-986d-ce8daf7a3eff", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4523,7 +4531,7 @@ }, { "commandType": "aspirate", - "key": "fa987ffe-4b77-4f23-87e3-26ffff498da2", + "key": "6a847f78-42ac-445b-b19d-e1630756a5fa", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4542,7 +4550,7 @@ }, { "commandType": "dispense", - "key": "e2fead50-1166-45a6-9a7c-19239a635dcb", + "key": "6784a579-0b34-43b8-9326-77e637f8bbb2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4561,7 +4569,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "37bd2126-ea04-43d9-8153-abca7aa37bf2", + "key": "1ff4b385-ae44-4fd2-946d-46ee52afe6ac", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4575,14 +4583,14 @@ }, { "commandType": "dropTipInPlace", - "key": "f2254539-3d1c-475f-9545-2254338bc877", + "key": "4f557a9c-80da-4494-afab-d8257227e355", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "d238b33c-0a51-4593-884d-f294ca9b34bd", + "key": "eb772f74-767e-4356-bd3c-2f3b53b85668", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4591,7 +4599,7 @@ }, { "commandType": "aspirate", - "key": "d8cc4fb2-c789-4c19-a279-3ab277db620a", + "key": "d91a44ad-f6fe-43ba-a208-947b82e8bb17", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4610,7 +4618,7 @@ }, { "commandType": "dispense", - "key": "04130047-9fc1-4a1d-a437-6d35c9bbc736", + "key": "0883bc19-bb17-4e75-b825-16bf0bf608a0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4629,7 +4637,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "ea98ad61-5358-4695-aeac-5c45e45f3945", + "key": "43f04f6e-29e3-41fc-846f-70159de5b574", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4643,14 +4651,14 @@ }, { "commandType": "dropTipInPlace", - "key": "aa748779-1bee-4277-9a0b-cef4c9596db2", + "key": "12f108e2-5910-416e-8986-cd4eab636d07", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "1104a432-4c46-4048-a167-66935bcbbe46", + "key": "cc7a1825-c463-472a-93ff-01961ca421ad", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4659,7 +4667,7 @@ }, { "commandType": "aspirate", - "key": "96051ed2-d577-406e-8fcc-6d57489b8098", + "key": "5993e970-eaaa-4fff-be59-6718e4f97869", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4678,7 +4686,7 @@ }, { "commandType": "dispense", - "key": "2aa56498-12ea-4ed1-8d1f-cfc771631231", + "key": "dcfc6676-d254-44ca-80da-70f79ee7db21", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4697,7 +4705,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "feec6043-4715-4e0f-8ffb-c7e11625b8ae", + "key": "a5cfb634-c2cb-4098-8279-5c43d26e6e55", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4711,14 +4719,14 @@ }, { "commandType": "dropTipInPlace", - "key": "18c174f1-00c7-4429-a00d-1fb23fa1ab95", + "key": "27a06d31-9297-467d-a634-ad39b172fe64", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "c6e4b756-57e6-4b99-a13f-b4cc9f68007e", + "key": "8b20661a-2842-4d0c-b307-988a0ac3232f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4727,7 +4735,7 @@ }, { "commandType": "aspirate", - "key": "f2d8efcd-563d-400e-a517-19c2e5b6daff", + "key": "6f05b0af-50df-4ce8-9c29-682caa2a1c58", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4746,7 +4754,7 @@ }, { "commandType": "dispense", - "key": "a167d2fa-005b-4cd7-b877-bc9bc7118576", + "key": "717b0e93-244b-4570-b1e0-c332a5a2445d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4765,7 +4773,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "d9b25719-f389-47d7-969c-f4b9d5eac924", + "key": "dbefc2d7-4e42-497f-825c-a78fc748b7b6", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4779,14 +4787,14 @@ }, { "commandType": "dropTipInPlace", - "key": "f120bb0a-aeb5-456f-9400-61c0d086405c", + "key": "7d46b0cc-f7ca-4d0a-8bb6-bcb818533a47", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "181f302a-6f86-43ea-8bec-34787329ea91", + "key": "e3b4e5f9-e7a8-4656-8823-f4beb6770cc3", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4795,7 +4803,7 @@ }, { "commandType": "aspirate", - "key": "7af713fd-92ec-4125-9fdc-c4caf6d96881", + "key": "66ae5863-34b3-4c17-bdfb-e43ddc9b7b77", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4814,7 +4822,7 @@ }, { "commandType": "dispense", - "key": "74f0f1d4-ede7-4034-bb8a-569af6e51116", + "key": "07642783-9101-4233-b42a-aa4a09ad66f0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4833,7 +4841,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "e1062927-fbc0-43f4-aec0-2c4db796f520", + "key": "cc7a366d-b712-4871-9ce6-e3ba29d1a0f8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4847,14 +4855,14 @@ }, { "commandType": "dropTipInPlace", - "key": "4fb208b2-406f-41d9-bd75-1bb25c7b6090", + "key": "2bd9a08c-f47e-4107-846f-ac7fc0931617", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "99e371f5-ac49-40f5-b077-0ba095fb8b0e", + "key": "96bdb207-8b5d-4d7d-855c-94fed7b1047f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4863,7 +4871,7 @@ }, { "commandType": "aspirate", - "key": "36456527-abc3-46b3-9be8-d8c3e35d7589", + "key": "619cc69d-c660-4128-b0d3-91440e65332c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4882,7 +4890,7 @@ }, { "commandType": "dispense", - "key": "fcc09ee3-1280-42ad-9c96-5a35cc7e3682", + "key": "115828bc-a4f1-44db-8169-7f50d2d31957", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4901,7 +4909,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "973f8392-57e1-4436-8ff3-066370111552", + "key": "c0e44ca1-3f1a-468c-ba46-223f08885e21", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4915,14 +4923,14 @@ }, { "commandType": "dropTipInPlace", - "key": "61e589ec-3621-4296-832e-ddf05ed87d71", + "key": "18e8f523-31d1-4586-8b1b-4b91a76f89d7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "dee716cf-0a38-434f-87cf-ed2db7753f22", + "key": "fc6a5426-0655-4b8a-85ee-8f6dc1fac2f4", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4931,7 +4939,7 @@ }, { "commandType": "aspirate", - "key": "2de3cf3c-ec05-4c71-8da5-5f202dd2067d", + "key": "0fd9c8d4-e795-4ebc-9eb6-7295033e4474", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4950,7 +4958,7 @@ }, { "commandType": "dispense", - "key": "27a832fc-a5da-4c38-ba4f-53fe056a3289", + "key": "4fe712c2-b11d-48a2-976a-cc83c5d4a4d0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4969,7 +4977,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "272a9711-02c5-4290-8ef5-82c66ae6db99", + "key": "10f14f3b-098b-4250-8212-351906ee2b6d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4983,14 +4991,14 @@ }, { "commandType": "dropTipInPlace", - "key": "9b5c566f-2fb7-4803-9f87-d613609a1766", + "key": "05c86f7d-da3a-4239-bab1-95b8b898b149", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "c4e4cc2b-1151-471b-82d4-75291a5a85fc", + "key": "de4b2c5a-75a5-467d-aee0-fee7fda26f72", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4999,7 +5007,7 @@ }, { "commandType": "aspirate", - "key": "134995c4-0c67-4fbc-be2a-60c9284e30a9", + "key": "99b31e9c-bdbf-43cf-b0b8-7412322ffb47", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5018,7 +5026,7 @@ }, { "commandType": "dispense", - "key": "4db8313b-64f1-499b-9f52-4df29c5d4ca7", + "key": "8afd5122-fa7b-48a2-b976-ee1c1b27cb4f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5037,7 +5045,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "f2bbe525-de0c-4309-90c9-d09ca189f8de", + "key": "d100c5db-07fb-4ac5-a880-71d9a8666a2c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -5051,14 +5059,14 @@ }, { "commandType": "dropTipInPlace", - "key": "56125dae-842e-45c7-af67-ffdeb9fb6869", + "key": "3dce1c59-9d80-484e-be98-28609a791928", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "d2b518d3-97d0-4a59-80c7-7a73a64579d3", + "key": "11cdde60-4006-4389-8de6-ef236788f07b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -5067,7 +5075,7 @@ }, { "commandType": "aspirate", - "key": "72198d46-cbfb-4b7a-9a26-d1ea9f7dff77", + "key": "c846af6e-2991-4d0e-a77d-0e35165bd016", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5086,7 +5094,7 @@ }, { "commandType": "dispense", - "key": "138f0bf8-14f1-431b-9db6-8566a9078e83", + "key": "b1f96011-4c25-4cc3-b571-dd8727377d2e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5105,7 +5113,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "a6f012e5-f1e3-46fe-8243-4f64987786bf", + "key": "88565966-2577-4aca-9f43-7f772da64315", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -5119,14 +5127,14 @@ }, { "commandType": "dropTipInPlace", - "key": "c3f57ad8-cf7d-42ba-b009-f62e309b9c7c", + "key": "b1e8abbb-693b-4541-a72a-4ec3c49f523e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "6590c871-dbef-474b-86f8-1c4b71388df2", + "key": "8526f83f-2860-4596-8620-45063361d374", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -5135,7 +5143,7 @@ }, { "commandType": "aspirate", - "key": "ce93c608-81b7-4a26-b5fd-b6cfa4004ce4", + "key": "2ad19b06-5c41-4b4e-b546-e0bdd0f66a45", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5154,7 +5162,7 @@ }, { "commandType": "dispense", - "key": "6c20edf3-2d8e-48e1-b872-708e23b71e5d", + "key": "2cae1082-1b08-4abf-989a-c09ef7288ad7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -5173,7 +5181,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "4ae15bd8-e502-4267-a1ef-844ccd97fe73", + "key": "4a85393c-fe4a-48f1-a5ae-32174c09abac", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -5187,14 +5195,14 @@ }, { "commandType": "dropTipInPlace", - "key": "9358bb52-e112-4ac8-ac27-c75fa3a31129", + "key": "60828ffa-b38c-460e-936c-8641ad617a38", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "1e35aa06-95f7-4073-8f8f-68fdc557e3bc", + "key": "35a89a24-24a7-409f-b7b9-d30befbba26b", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -5203,7 +5211,7 @@ }, { "commandType": "configureForVolume", - "key": "1953c27c-abd9-4284-80b5-42c1df10bfa9", + "key": "c176761e-3996-47ea-ba6c-3af6e5d1a983", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10 @@ -5211,7 +5219,7 @@ }, { "commandType": "aspirate", - "key": "ae530f5a-e921-4cbb-bea2-8563e38d6966", + "key": "f0d53d5e-00de-4d4a-854d-0d074da37350", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -5230,7 +5238,7 @@ }, { "commandType": "dispense", - "key": "756cfa2f-0df6-4d73-8dd0-4869c25aaa00", + "key": "74dd1f94-3e6d-49c7-9fb1-4ae0cc859e9d", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -5249,7 +5257,7 @@ }, { "commandType": "aspirate", - "key": "e12837d4-0bc3-454e-80a5-a530a046b03c", + "key": "fcae4e04-1a58-449a-a248-2f561cbfd793", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -5268,7 +5276,7 @@ }, { "commandType": "dispense", - "key": "1435fcd2-2e3d-480b-9b3c-c606b83e1507", + "key": "62875262-eab0-4519-a11e-354b14a2793b", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -5287,7 +5295,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "3e9986af-42fe-4168-b49d-67b25072aedb", + "key": "ebb19d7f-4ccb-43b8-b60c-44db670096b1", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "addressableAreaName": "movableTrashA3", @@ -5301,14 +5309,14 @@ }, { "commandType": "dropTipInPlace", - "key": "c51cf48c-ff9f-4329-b2bb-475589c03cc8", + "key": "cfe4bc7d-4153-4d9e-ad28-61ef961835ed", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193" } }, { "commandType": "moveLabware", - "key": "ca2b894f-a4d4-425a-b85b-9954f9b61819", + "key": "08d54fbe-590c-4f7a-b585-86faf5c94af9", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -5319,7 +5327,7 @@ }, { "commandType": "waitForDuration", - "key": "4f455d59-03a6-4b79-be48-64db49d6ff59", + "key": "6fcaa53f-b9fa-4e22-9d1c-0d4b9717540e", "params": { "seconds": 60, "message": "" @@ -5327,7 +5335,7 @@ }, { "commandType": "moveLabware", - "key": "4481fc65-451f-4c8f-aa14-2b369a600312", + "key": "3a7099a7-7a2d-42c4-a739-24e8585c3aee", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -5338,21 +5346,21 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "3e22fda8-3a29-4ec1-a8c5-4a1c2311537b", + "key": "d10e7bf3-5322-4abd-9306-343d481996c1", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "68523f3c-f1be-46ec-b235-768fad253de5", + "key": "97ca52a8-e23f-457f-9015-f010f330531c", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "364c37d4-826a-4d67-ae4a-8c3a4f246577", + "key": "b315a60a-32ab-4572-8d62-f6c8dbcb7889", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "rpm": 500 @@ -5360,28 +5368,28 @@ }, { "commandType": "heaterShaker/deactivateHeater", - "key": "d5c426ba-1acc-440c-939b-9c0be548a4a3", + "key": "314fba64-2efd-4f53-b07c-917bc04dc01a", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "ff1818d5-6f75-44f5-bfd2-fe5bc202e050", + "key": "f20d8dc8-c41c-4aa8-9447-06f00854fdfa", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "497f9b04-7d40-47ae-9a87-185280821361", + "key": "a72f4873-d977-4b22-aa7f-3c18c17f334c", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "1ab82be8-439a-4c7f-ae3d-2421bc2b85a6", + "key": "bf8a31d9-23ab-4c8b-9c3d-7dc894bda46c", "params": { "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", "strategy": "manualMoveWithPause", @@ -5390,7 +5398,7 @@ }, { "commandType": "moveLabware", - "key": "6dc1e703-64ee-48ad-a5e5-451ce9eb917a", + "key": "2c067101-8353-4bfa-ad4b-869569ce4923", "params": { "labwareId": "239ceac8-23ec-4900-810a-70aeef880273:opentrons/nest_96_wellplate_200ul_flat/2", "strategy": "manualMoveWithPause", diff --git a/protocol-designer/fixtures/protocol/8/doItAllV8.json b/protocol-designer/fixtures/protocol/8/doItAllV8.json index d0323f3faf5..aaece68eb3a 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV8.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1701659107408, - "lastModified": 1738157218097, + "lastModified": 1738780362701, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Wed, 05 Feb 2025 18:32:26 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -34,17 +34,17 @@ "ingredients": { "0": { "displayName": "h20", - "displayColor": "#b925ff", "description": null, - "pythonName": "liquid_0", - "liquidGroupId": "1" + "liquidGroupId": "0", + "pythonName": "liquid_1", + "displayColor": "#b925ff" }, "1": { "displayName": "sample", - "displayColor": "#ffd600", "description": null, - "liquidGroupId": "2", - "pythonName": "liquid_1" + "liquidGroupId": "1", + "pythonName": "liquid_2", + "displayColor": "#ffd600" } }, "ingredLocations": { @@ -113,6 +113,17 @@ "pipetteLocationUpdate": { "9fcd50d9-92b2-45ac-acf1-e2cf773feffc": "left" }, + "trashBinLocationUpdate": {}, + "wasteChuteLocationUpdate": { + "9d61f642-8f9b-467d-b2f7-b67fb162fd26:wasteChute": "cutoutD3" + }, + "stagingAreaLocationUpdate": { + "f2213242-0dd4-416c-9994-38432d85e5e2:stagingArea": "cutoutB3", + "db5516ce-eb6a-47b7-8d5e-d983836679ef:stagingArea": "cutoutA3" + }, + "gripperLocationUpdate": { + "13816147-787e-46f1-b950-a925eddfd65f:gripper": "mounted" + }, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -3532,7 +3543,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "fdb1f640-85f6-4bcf-bfff-63e37f55ce27", + "key": "49fc1872-6cc3-410a-9aa7-5af54346a9fc", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3541,7 +3552,7 @@ } }, { - "key": "5913deb1-157f-4ac4-bcbc-f8915aa68fa2", + "key": "dd48f009-562a-4b60-8873-ac25455668bf", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", @@ -3552,7 +3563,7 @@ } }, { - "key": "279b491f-78fe-4147-bdbd-31469adf8c01", + "key": "48f70873-c026-439f-8588-1353aa72d88e", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", @@ -3563,7 +3574,7 @@ } }, { - "key": "d4a96fb9-9d44-444b-8eef-f69bee47b4f7", + "key": "1b2d55b6-d739-4ba1-ad73-f48e978ac550", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", @@ -3577,7 +3588,7 @@ } }, { - "key": "c3a137ef-3ecd-44c7-9221-7167c6576d5b", + "key": "0b252830-d1f1-408a-b2a6-95cc6c21f436", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", @@ -3591,7 +3602,7 @@ } }, { - "key": "83929c9c-e7b0-49a3-a369-d2061a29af8f", + "key": "d4e64cb5-fd40-4b1f-a22d-72f24219d366", "commandType": "loadLabware", "params": { "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", @@ -3605,7 +3616,7 @@ } }, { - "key": "e16a38b6-1a7a-47e0-bd3f-10f3044813dc", + "key": "3501c509-5979-420a-b7e3-dc84ebe3b032", "commandType": "loadLabware", "params": { "displayName": "Axygen 1 Well Reservoir 90 mL", @@ -3620,7 +3631,7 @@ }, { "commandType": "loadLiquid", - "key": "5eef2542-3751-49f9-a83f-cdfbdb3bcd60", + "key": "244176d2-3b89-4fe6-a7c7-590dccb09b3f", "params": { "liquidId": "1", "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", @@ -3638,7 +3649,7 @@ }, { "commandType": "loadLiquid", - "key": "347a434b-a0e3-40ab-9821-4bd8b5fa22cd", + "key": "9c34fe7c-38e4-4939-959c-3120653a51bb", "params": { "liquidId": "0", "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", @@ -3649,14 +3660,14 @@ }, { "commandType": "thermocycler/openLid", - "key": "bfc09a97-2926-4995-9fb2-0e014373d0e1", + "key": "7b08e12a-df2a-4205-925a-b7e69683e3fd", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "moveLabware", - "key": "767e876f-0cb7-4d0c-a5ff-a415585d6a62", + "key": "c543fe64-a47d-4b17-8127-0d0115d458c7", "params": { "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", "strategy": "usingGripper", @@ -3667,7 +3678,7 @@ }, { "commandType": "pickUpTip", - "key": "8d183275-f3e4-4e20-a148-1280a28be7ea", + "key": "d541acc1-ef32-4088-a8b8-d22e945bf472", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3676,7 +3687,7 @@ }, { "commandType": "aspirate", - "key": "63759336-84a5-4812-b762-1a9aebf34cfe", + "key": "58ad495c-586a-4753-8595-e9bd3ea684e0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3695,7 +3706,7 @@ }, { "commandType": "dispense", - "key": "ff8ba56e-1a2c-49d7-852b-9bad8dbf34b0", + "key": "a7759e48-c23e-478f-a605-cc8e873fd800", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3714,7 +3725,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "1b1844e7-f89f-4594-b76a-e789972a6495", + "key": "031cfe55-1318-4cf0-9fdd-85dcd3a54700", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3727,14 +3738,14 @@ }, { "commandType": "dropTipInPlace", - "key": "0bb4b9ce-c7f1-4436-be9f-682ba654c130", + "key": "7b3f4a34-e56a-4b45-a019-4b2a9e52a912", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "f6ff0fe7-1331-4c28-81ff-a35fed4ad8e5", + "key": "86dd97b7-eef2-4a17-b7d6-862a56f750bc", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3743,7 +3754,7 @@ }, { "commandType": "aspirate", - "key": "c5cd2686-6a09-4b35-b098-c57eac017185", + "key": "de7b1a56-e6f6-44de-b47c-05fb6b80db6f", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3762,7 +3773,7 @@ }, { "commandType": "dispense", - "key": "2f187fb7-9fea-4854-9e98-a311d265bcb6", + "key": "ccf526b2-2186-4c00-a882-818e1eeb1fb7", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3781,7 +3792,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "1307485b-cd41-47a5-a044-b028c8224d4f", + "key": "ca62bd2f-6a7f-44c0-98e2-0330a4642d10", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3794,14 +3805,14 @@ }, { "commandType": "dropTipInPlace", - "key": "8ade5883-8117-425e-8a60-4670efeb9883", + "key": "06623121-26be-487f-b355-2d49d3af3bbe", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "cb28e92b-993f-474e-bc73-e72764652c1a", + "key": "9baaba76-fe28-4ced-8936-c4d1c38af6a6", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3810,7 +3821,7 @@ }, { "commandType": "aspirate", - "key": "14f97753-b078-482a-bf27-204bc3ce8c61", + "key": "700f6fee-6870-446c-a7e9-3921f48f214d", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3829,7 +3840,7 @@ }, { "commandType": "dispense", - "key": "5810d6b0-8e1e-4ee8-b89d-bd298e452fbf", + "key": "01c89683-7d52-42c2-b3d1-6df5a190c494", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3848,7 +3859,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "2e29334d-4195-40ad-a423-f7200177caae", + "key": "9dd839fe-326a-4e63-985c-b68477e217cf", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3861,14 +3872,14 @@ }, { "commandType": "dropTipInPlace", - "key": "d17b7128-1a57-4ef2-b46b-280e97b564c3", + "key": "2221613f-1e5a-4a44-88c2-66e4fbfacef1", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "4e957f48-d363-48b3-ab6c-7c32c0d5ab80", + "key": "e6f8407d-1611-4d46-bfe2-8059b2b47432", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3877,7 +3888,7 @@ }, { "commandType": "aspirate", - "key": "1de52706-ab40-48ac-9114-b918de28d0ed", + "key": "bb19aeb4-024c-4df8-beba-3408c96a331a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3896,7 +3907,7 @@ }, { "commandType": "dispense", - "key": "6bdc0516-21ac-48a4-9323-2712e60afe7e", + "key": "c8cbae6d-9cb1-47e3-a7f2-b7d01756d8a3", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3915,7 +3926,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "c273367a-57a3-4879-9a2d-93d8ab671265", + "key": "e7cd3520-2abd-4fcd-a251-a62ba48e02a9", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3928,14 +3939,14 @@ }, { "commandType": "dropTipInPlace", - "key": "5e2e4629-426f-41c5-af38-4a252ef544f6", + "key": "483d5ffa-3f63-4146-ab1f-9fa0aa516e85", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "6aa9ea70-9d0c-4c9a-8b26-d168c66edcac", + "key": "571a56a0-a9ac-4782-a6a9-5305e2c91e2c", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3944,7 +3955,7 @@ }, { "commandType": "aspirate", - "key": "c1848064-ccac-4488-b658-54765b53c014", + "key": "bcbcfca7-f535-4a30-a6ab-2b9656bcb504", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3963,7 +3974,7 @@ }, { "commandType": "dispense", - "key": "79622aac-e2ae-4578-8ea8-5288d566b17b", + "key": "bf428081-b108-4791-877f-4cbccc32d9fe", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3982,7 +3993,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "0a2c66b2-97cc-45ae-ad05-d4e644b5d09d", + "key": "24890fba-56b8-4ee8-bbe1-3fdadc84e433", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3995,14 +4006,14 @@ }, { "commandType": "dropTipInPlace", - "key": "88141e29-f3e9-456a-9227-53cc3e4b7306", + "key": "27b9ed52-4dde-4188-9959-3d60064398f0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "493734a6-abb9-4e4a-bbd7-9b7b46a18b21", + "key": "30526659-9e21-4229-a300-ff5b35e86df1", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -4011,7 +4022,7 @@ }, { "commandType": "aspirate", - "key": "17284684-55c4-477a-a775-33989cccb7a7", + "key": "95b90404-e7ca-4afd-ab79-18fc5e309604", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4030,7 +4041,7 @@ }, { "commandType": "dispense", - "key": "f1acfe9d-4496-433e-b40f-1a5409ff4094", + "key": "e32849fe-bb1b-44c1-adb3-91dac3165a44", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4049,7 +4060,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "025a6244-db88-4635-95a0-14648468a844", + "key": "b0f2fcac-d86f-4221-9395-3ee3ab4af76b", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -4062,14 +4073,14 @@ }, { "commandType": "dropTipInPlace", - "key": "8257d866-81f5-4327-8fde-908c2cc58f4b", + "key": "d528da30-bd87-4719-bb1e-1c615ae0aac6", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "3f000483-4802-4332-9ed8-7986267d4bf0", + "key": "15623419-24fd-48a3-ab69-b4b083c754df", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -4078,7 +4089,7 @@ }, { "commandType": "aspirate", - "key": "cc718e17-898c-475e-8213-18a8c4e7de63", + "key": "8ab0f6a8-d0dd-4505-99f6-240d1c73c39a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4097,7 +4108,7 @@ }, { "commandType": "dispense", - "key": "9b2d6845-866c-4cbb-85c5-be29f0e59c7f", + "key": "dc325be3-9e6b-468b-84f6-b7e2efc7ddba", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4116,7 +4127,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "e204cacd-03f9-4f52-a48a-a4fba1f217c4", + "key": "1d23f50b-2735-4818-b53f-bffebcfacfeb", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -4129,14 +4140,14 @@ }, { "commandType": "dropTipInPlace", - "key": "3f3a6583-8548-4e1b-af12-c4157c573aa6", + "key": "417cfecc-87f2-468a-9164-d654f72afddc", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "3000eef7-2dbb-49b7-8242-b5f71cee8e84", + "key": "0bedaae9-376e-48fe-93ba-21d7af4447b4", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -4145,7 +4156,7 @@ }, { "commandType": "aspirate", - "key": "4e21f8b9-a480-43a5-b3bb-23a0baa99bc4", + "key": "6591d94b-b15a-42ee-a8f8-428d98c51351", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4164,7 +4175,7 @@ }, { "commandType": "dispense", - "key": "a4ed53f0-3ba5-4b30-9a8a-a0abf5f558bc", + "key": "ebade313-94ab-4438-9cbf-63a0219a1eaf", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -4183,7 +4194,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "920cc11e-1a35-4a84-ba6b-93f742bd8780", + "key": "90528e7c-da57-4747-a752-f3c591931fb0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -4196,21 +4207,21 @@ }, { "commandType": "dropTipInPlace", - "key": "b05b1f55-87ac-4989-a937-c6e63abc04fc", + "key": "67862c8f-0825-4e69-9f3a-43b97dfd076d", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "thermocycler/closeLid", - "key": "f4e356c4-5160-478d-9419-b919f411324a", + "key": "a7278a36-19b0-4842-801e-76361a8aa766", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetBlockTemperature", - "key": "bc344e58-dedd-44a1-bcbb-1108852aa188", + "key": "09d59dec-9554-4ebb-8166-c77a9395914f", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType", "celsius": 40 @@ -4218,14 +4229,14 @@ }, { "commandType": "thermocycler/waitForBlockTemperature", - "key": "b573b603-fa89-4213-a1ea-6f6d24f4f372", + "key": "731dcfcf-07ca-48fd-ae41-9a7011ede0bb", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "waitForDuration", - "key": "1e8e67b6-e2ed-476b-8f5a-f985a68fbd22", + "key": "cc242e9f-90d1-4801-bb91-97090d67f7d7", "params": { "seconds": 60, "message": "" @@ -4233,35 +4244,35 @@ }, { "commandType": "thermocycler/openLid", - "key": "165eaa13-69df-49b5-965a-83cf19c40fda", + "key": "8bb12bf8-0ef2-4725-af0a-1a398f70bf23", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateBlock", - "key": "d9c25977-9163-472b-b0e6-4840b8135b52", + "key": "00476092-d870-469d-a86c-1b3c28e33d95", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "a9591c3d-4413-447b-81ed-b10e0b64593a", + "key": "cdbb8ffd-dcba-4c2c-9900-93b9876209f6", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "8e0d13ac-d6c9-4aee-bf38-8b65cbb23cd3", + "key": "ac78164f-d06e-468c-8a2e-7f665773bf5e", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "cdbee473-2621-49d4-b233-99a80d4aa6ea", + "key": "dd7006a1-71cb-4927-9380-5869aea6cf5c", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4272,21 +4283,21 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "90f0a48f-d198-49cc-b985-8b60b9eeb97a", + "key": "8297dcfd-1dc2-48d4-a03c-e9136c6ad2c3", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "66d3b91c-6a48-4ccc-880f-8f9b00702e47", + "key": "629e702b-aade-4a3c-9967-6ebb8f8ddb6f", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "f4746eaa-e860-44ec-ba60-27c60a3f251f", + "key": "7be4d22c-bd4d-4aef-973a-54ac5e43853b", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType", "rpm": 200 @@ -4294,42 +4305,42 @@ }, { "commandType": "waitForDuration", - "key": "4f9d6581-3793-4f5e-b29b-a4f59878348b", + "key": "e8b35707-452c-490b-937a-a6f0a55b8549", "params": { "seconds": 60 } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "9a4026e4-5fb0-4cca-9cc0-09274213418d", + "key": "c70641c6-d6bc-46ad-9812-6acfdacff8be", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "0e0a6e22-6d87-457e-841e-063e74b92bcd", + "key": "86d364f1-b6a0-4069-ad7b-1973a3160488", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "43ef8004-1be7-4eec-9fca-83571590170d", + "key": "a6a78183-cefd-4c2d-ba40-e16f43b50ea2", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "d3a2cb1e-b4dd-4431-ae89-84d71ed5f900", + "key": "0ede6628-3007-453b-8dcc-088798893ac8", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "0554f9d9-5de2-4faa-bde6-a291c503379c", + "key": "c9e44bb3-3354-4350-afcb-a0574afedbb3", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4340,7 +4351,7 @@ }, { "commandType": "moveLabware", - "key": "25d91423-5565-4063-ada0-87692ca2dbbd", + "key": "7a39f8b8-d95b-47ca-bc5d-8e01bc6a4c4d", "params": { "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", "strategy": "usingGripper", diff --git a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json index 5aaf3a768f6..7e0b8eeabff 100644 --- a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Author name", "description": "Description here", "created": 1560957631666, - "lastModified": 1738256741877, + "lastModified": 1738682213024, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Thu, 30 Jan 2025 17:05:24 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -106,6 +106,12 @@ "c6f45030-92a5-11e9-ac62-1b173f839d9e": "left", "c6f47740-92a5-11e9-ac62-1b173f839d9e": "right" }, + "trashBinLocationUpdate": { + "2e4b0821-520d-46f5-af61-bf4e2db2e378:trashBin": "cutout12" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -133,7 +139,7 @@ "aspirate_y_position": 0, "blowout_checkbox": true, "blowout_flowRate": 1000, - "blowout_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", + "blowout_location": "2e4b0821-520d-46f5-af61-bf4e2db2e378:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -168,7 +174,7 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "1", - "dropTip_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", + "dropTip_location": "2e4b0821-520d-46f5-af61-bf4e2db2e378:trashBin", "nozzles": null, "path": "single", "pipette": "c6f45030-92a5-11e9-ac62-1b173f839d9e", @@ -193,7 +199,7 @@ "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": 7, - "dropTip_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", + "dropTip_location": "2e4b0821-520d-46f5-af61-bf4e2db2e378:trashBin", "labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": true, @@ -3407,7 +3413,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "653466a2-8020-453e-ab02-c005028a2f85", + "key": "b6c156db-64b4-424d-99e8-916d3323abfd", "commandType": "loadPipette", "params": { "pipetteName": "p10_single", @@ -3416,7 +3422,7 @@ } }, { - "key": "e7c4cb6c-5fb9-4657-ac3e-d88fc0d22504", + "key": "5b46cbfe-9158-4339-9373-ab5919dd45eb", "commandType": "loadPipette", "params": { "pipetteName": "p50_single", @@ -3425,7 +3431,7 @@ } }, { - "key": "88a0549f-4dc9-4ff2-8224-0840707768de", + "key": "8fff61b7-564d-4264-9ac2-287c0c61aba8", "commandType": "loadLabware", "params": { "displayName": "tiprack 10ul (1)", @@ -3439,7 +3445,7 @@ } }, { - "key": "f8177762-b4d6-4c64-829c-86c43c890013", + "key": "b77b662d-6eab-4d73-b2bf-60ea5027f84a", "commandType": "loadLabware", "params": { "displayName": "tiprack 200ul (1)", @@ -3453,7 +3459,7 @@ } }, { - "key": "dc5b0ab1-d6d8-422e-b329-6d450ed47606", + "key": "7bcef684-8950-4ce0-b7f7-9a22807014e3", "commandType": "loadLabware", "params": { "displayName": "96 deep well (1)", @@ -3468,7 +3474,7 @@ }, { "commandType": "loadLiquid", - "key": "029fb680-4e9c-4751-9f46-63bb351213b9", + "key": "76b01918-6f03-45e7-b0d3-5a50adae4475", "params": { "liquidId": "1", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3481,7 +3487,7 @@ }, { "commandType": "loadLiquid", - "key": "c528eb17-0030-4047-a762-160ca37128e9", + "key": "4e0754ed-f87f-4840-8bd7-f2f48fa252a0", "params": { "liquidId": "0", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3496,7 +3502,7 @@ }, { "commandType": "pickUpTip", - "key": "df727ce4-87e9-4ec5-bea2-6b95b046c939", + "key": "a20d621e-08b0-4536-8525-74c54dca7aa3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -3505,7 +3511,7 @@ }, { "commandType": "aspirate", - "key": "11775a09-4adc-41aa-a8e9-7c9ce4be9e27", + "key": "57aeb7aa-75b4-46f0-868c-8fbf420ce168", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3524,7 +3530,7 @@ }, { "commandType": "dispense", - "key": "28f64155-ed7b-4b7d-b28b-15a225f67256", + "key": "b3ed2e58-c3a8-4a16-a403-dcae2807c233", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3543,7 +3549,7 @@ }, { "commandType": "aspirate", - "key": "85694006-ab52-4adb-8442-ddb909a00859", + "key": "73496d06-8799-4a22-a151-f0186c1ce848", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3562,7 +3568,7 @@ }, { "commandType": "dispense", - "key": "7bf0394c-1b42-477a-b342-9c692340e3c9", + "key": "172b940a-2997-4560-8f83-6b0b1555e21f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3581,7 +3587,7 @@ }, { "commandType": "aspirate", - "key": "e4fae21c-fb4d-4d37-a95d-eae6122058b8", + "key": "47ec6a53-51c5-44ee-b493-01860b9a8b28", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3600,7 +3606,7 @@ }, { "commandType": "dispense", - "key": "bba3e2c7-abae-4c26-905a-c5bdc377563d", + "key": "28c9e028-4b32-48e2-9d1d-6ee3b7ba6631", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3619,7 +3625,7 @@ }, { "commandType": "aspirate", - "key": "44baadee-dbe5-42ba-91dc-789a37f095ec", + "key": "cfc6b018-0f01-4b7d-9a8b-e99ab361e261", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3638,7 +3644,7 @@ }, { "commandType": "touchTip", - "key": "e5f76399-cd91-4e7b-90e2-9f67b51835ff", + "key": "d4ce9260-49a8-47af-a6d9-6531a02480d8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3653,7 +3659,7 @@ }, { "commandType": "dispense", - "key": "191ca16f-1556-4c99-97c4-44a1a6ffcf69", + "key": "4ba7ff37-f2fe-47fc-bdb1-af1a374c2086", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3672,7 +3678,7 @@ }, { "commandType": "aspirate", - "key": "424d1f8d-2372-484a-bf34-51a49b4f8c1a", + "key": "777b079c-95fb-41e5-a41a-e5317979d5c9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3691,7 +3697,7 @@ }, { "commandType": "dispense", - "key": "940b80b5-eda9-4fbb-a3f2-dd89ad874b0f", + "key": "7a24e96c-16bd-41b0-88f4-87cb03a1b945", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3710,7 +3716,7 @@ }, { "commandType": "aspirate", - "key": "586dffd7-11a0-49cc-a768-842e80f7a083", + "key": "7a5c9a41-240a-4784-a4dd-a5eb3088ba0a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3729,7 +3735,7 @@ }, { "commandType": "dispense", - "key": "babc33bb-2642-4c1d-9142-5ba7e58f3219", + "key": "0dcde7d8-27aa-4dde-836f-646fea39f55a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3748,7 +3754,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "417d2cad-ae9d-44ef-8ceb-ad2d68e379cd", + "key": "ce280842-b3a4-42fa-92b2-3a5340b649c8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3761,7 +3767,7 @@ }, { "commandType": "blowOutInPlace", - "key": "8bc64b78-501e-416a-91d1-4ee65a3744d8", + "key": "7cf2f5dc-186e-49bb-a537-d136428af488", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -3769,7 +3775,7 @@ }, { "commandType": "touchTip", - "key": "b84bf61c-2878-48da-8910-de9cd9b64fde", + "key": "5e939a37-aff7-44ff-ab2c-440c713ef9d5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3784,7 +3790,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "20d90f09-623d-4c7b-b19a-d4afea3437ab", + "key": "bde57f47-6a7e-460a-8d6d-8d0c888b6b5e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3798,14 +3804,14 @@ }, { "commandType": "dropTipInPlace", - "key": "6bdd2267-a54f-4f0b-b3a9-a29fc6facd48", + "key": "8cb86963-8158-47b5-a0ce-a6c656776be1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "778e0f97-7810-4392-8816-3390e773c402", + "key": "fb168973-b02a-4fb0-9d65-9a3d5b994966", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -3814,7 +3820,7 @@ }, { "commandType": "aspirate", - "key": "488ed1c9-5e31-4abf-ac13-7739170f7055", + "key": "e7074256-07bc-4a56-970c-11aab79dd2f2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3833,7 +3839,7 @@ }, { "commandType": "dispense", - "key": "8fffd70f-f145-4550-8a8b-75ef67c62713", + "key": "90e02d3e-7ec4-4f0b-b490-058fe0145f0a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3852,7 +3858,7 @@ }, { "commandType": "aspirate", - "key": "53a14ffd-8bcd-4478-a175-c6ccbbc99138", + "key": "28d9526c-26f6-48df-be3c-37f8a4d87911", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3871,7 +3877,7 @@ }, { "commandType": "dispense", - "key": "d6f5bfc6-b873-4d72-8b23-ff761a428189", + "key": "0075638c-85cb-4f75-a762-6e2d3e242388", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3890,7 +3896,7 @@ }, { "commandType": "aspirate", - "key": "8c27405f-c328-419a-889d-9045d58e4e33", + "key": "488fc2f2-8408-417e-aa19-074945e961e7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3909,7 +3915,7 @@ }, { "commandType": "dispense", - "key": "1bb1272d-ce76-41f2-9d53-c1273303880e", + "key": "0052650f-0ddd-4af5-bfbc-8385560bb42e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3928,7 +3934,7 @@ }, { "commandType": "aspirate", - "key": "b941dbde-54a4-445e-a29d-543e159bedbf", + "key": "9e201efb-f4b2-4445-9e76-85eed025788b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3947,7 +3953,7 @@ }, { "commandType": "touchTip", - "key": "ff5bb79b-e077-4d94-9475-d1ca50852284", + "key": "347111ba-db00-4cb8-89c2-a615757e60a7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3962,7 +3968,7 @@ }, { "commandType": "dispense", - "key": "14bf5fb9-d05b-4e51-b74a-ef627109d257", + "key": "58d5e6d2-522f-45f7-a4a2-e8fbfc098acb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3981,7 +3987,7 @@ }, { "commandType": "aspirate", - "key": "dfba6f40-6a41-4a3e-bf7e-49f63414e6ef", + "key": "45ad8b88-b830-4ec8-9c87-d06a54312cad", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4000,7 +4006,7 @@ }, { "commandType": "dispense", - "key": "73686f51-4623-488c-ae1d-cf954e67ac2a", + "key": "8e07b1e1-c481-4708-8360-35b19960b0c2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4019,7 +4025,7 @@ }, { "commandType": "aspirate", - "key": "87b23803-be29-44ff-b464-53bc9e7ec9d4", + "key": "88e873c5-db3f-4434-b526-abd2d34ce72d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4038,7 +4044,7 @@ }, { "commandType": "dispense", - "key": "01d936c2-c68f-4da4-9e58-47c505a479c7", + "key": "840c2cce-dab2-4d73-96b6-e268a9fa88d9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4057,7 +4063,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "e575881c-12c0-4291-aee7-a9838ae46669", + "key": "9f6f8ae6-94cc-4abd-9df0-6467e82e97f6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4070,7 +4076,7 @@ }, { "commandType": "blowOutInPlace", - "key": "3208e8c0-5a0f-457c-9344-7f2966b44d47", + "key": "21869e3d-fe14-4ee1-843b-b7f791d74e3d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4078,7 +4084,7 @@ }, { "commandType": "touchTip", - "key": "c356873a-300c-4e28-855a-b265ced0e7f2", + "key": "11428031-e985-4122-82aa-594da85fa23b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4093,7 +4099,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "0377b295-3529-4f46-8e16-c368ab6ebe49", + "key": "2a6c179f-997d-49de-af12-1cdc546c849e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4107,14 +4113,14 @@ }, { "commandType": "dropTipInPlace", - "key": "07e93710-93cc-4dde-9e14-9ae43d132da3", + "key": "c4d14c1c-0d84-45a7-aea7-464720456231", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "12083522-572b-42ae-8e29-cc269f844dda", + "key": "6202eb05-3a13-409c-a2be-f2a8611f13dd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4123,7 +4129,7 @@ }, { "commandType": "aspirate", - "key": "b44b017d-8793-4916-ba75-a0fcf17941a6", + "key": "c4baf2d7-4d99-494f-abc9-45c837b984f3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4142,7 +4148,7 @@ }, { "commandType": "dispense", - "key": "71ee0966-e142-4748-b9ed-c222e9240495", + "key": "0532430f-294c-4e0f-9836-2537bd9d334b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4161,7 +4167,7 @@ }, { "commandType": "aspirate", - "key": "52b3c2fd-fb1f-4ed8-8a55-cef464e285c8", + "key": "4c0ea920-56dd-4b5c-aaa7-064d9da947c1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4180,7 +4186,7 @@ }, { "commandType": "dispense", - "key": "09e89c72-abf8-4763-a17e-f0b68451e4bb", + "key": "faa87389-c3e3-4550-863d-129175764d55", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4199,7 +4205,7 @@ }, { "commandType": "aspirate", - "key": "b5a4c0be-90a7-44de-9471-81e0057718bb", + "key": "f413ce0a-41e8-4b34-a191-d679e5d23387", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4218,7 +4224,7 @@ }, { "commandType": "dispense", - "key": "a1ee83f2-5933-4d3e-98b6-84aa33b24e5b", + "key": "d4c158a0-80a1-4d3b-9c57-426c514068d8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4237,7 +4243,7 @@ }, { "commandType": "aspirate", - "key": "8ba0eb8b-3090-41b4-a1b3-aad2f50187ff", + "key": "dba81a82-52e8-4341-a883-d63e43b5b9aa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4256,7 +4262,7 @@ }, { "commandType": "touchTip", - "key": "86d7ea41-8ecf-402a-8b4d-25809005e4ba", + "key": "c9c708f9-aad2-47fe-ac4a-83d37fc2f0ee", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4271,7 +4277,7 @@ }, { "commandType": "dispense", - "key": "577ce715-206f-4a51-b121-cacdb1160ec3", + "key": "dd91b34e-0d1e-4a25-812b-51974152257f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4290,7 +4296,7 @@ }, { "commandType": "aspirate", - "key": "4e900e98-c62e-49b7-b617-298684c919f0", + "key": "0526d9c4-c94e-4f76-b9b9-3f7f00b389fd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4309,7 +4315,7 @@ }, { "commandType": "dispense", - "key": "7e39af6a-1a82-435a-98d8-c652bb734836", + "key": "40e0f8b6-5270-4a61-8b85-4474a30e9662", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4328,7 +4334,7 @@ }, { "commandType": "aspirate", - "key": "6a4d013b-e5ae-4c00-ab32-d255cbe3199c", + "key": "0fce3b34-b179-462d-808c-e3fd6ff34148", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4347,7 +4353,7 @@ }, { "commandType": "dispense", - "key": "50bc592a-7d11-44db-87d1-c1fac3f33aca", + "key": "6c39cac0-874b-49a5-8a56-fd5f73440a54", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4366,7 +4372,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "b07dc9b0-ae2b-4e6d-a2f2-7689c53c3865", + "key": "c7f399ce-e23a-4bd9-b593-4fae8bfb51a5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4379,7 +4385,7 @@ }, { "commandType": "blowOutInPlace", - "key": "99375975-5737-4632-acf3-a1e4ea1034ca", + "key": "e30b2754-065e-4656-91ab-aef8f3fd8cb2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4387,7 +4393,7 @@ }, { "commandType": "touchTip", - "key": "e643590b-d941-4660-972f-e73f013cf923", + "key": "620fa759-c780-4ec4-9778-0f758bbdf816", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4402,7 +4408,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "33f25151-526c-400e-9c36-02257a6b02b9", + "key": "d88909c0-fde0-4ae7-9072-d361a400bbb3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4416,14 +4422,14 @@ }, { "commandType": "dropTipInPlace", - "key": "0f621a52-7ac3-49b1-a732-4a4547737217", + "key": "ead98234-1143-4f73-80b7-e00eb5176abf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "25ecc88a-bb2d-40aa-b03d-8c070b64bcfc", + "key": "b70c8c23-bc75-4943-8199-75aeeb0e98b4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4432,7 +4438,7 @@ }, { "commandType": "aspirate", - "key": "1bec23d2-cf63-4e75-a758-c8035f509adc", + "key": "77ffe4f4-96f7-484a-8df8-abdc081a005a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4451,7 +4457,7 @@ }, { "commandType": "dispense", - "key": "84b0d168-b6e6-4bdd-a1b2-714bc49a92b6", + "key": "a1766c9a-08b0-4636-afcc-566618839c42", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4470,7 +4476,7 @@ }, { "commandType": "aspirate", - "key": "75c1c612-a887-4f27-87da-0f43823d416a", + "key": "95a0f7eb-4c13-4e66-9f47-2b3f56c9566c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4489,7 +4495,7 @@ }, { "commandType": "dispense", - "key": "d168f003-f78d-46fd-9e5a-4f9eda0b3118", + "key": "9601d22b-9cba-4187-94cd-cc5e5e52cf3b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4508,7 +4514,7 @@ }, { "commandType": "aspirate", - "key": "b78fd127-21c8-49b0-aed2-0805c8be3e86", + "key": "ed294942-e998-4f02-a945-85d2a6bf8ff7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4527,7 +4533,7 @@ }, { "commandType": "dispense", - "key": "344402c1-a8fd-43e1-ac66-9432edb241f5", + "key": "1fbffe57-ecd7-4244-ba04-1a0621cbf311", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4546,7 +4552,7 @@ }, { "commandType": "aspirate", - "key": "02347dbb-2094-4e01-b8b6-d01581dde145", + "key": "d6711159-63a5-470d-a88a-e80a75d656d2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4565,7 +4571,7 @@ }, { "commandType": "touchTip", - "key": "975cd29b-7803-4784-afb4-803f0f0d423e", + "key": "12adcc53-2ece-4e50-8e81-bd27349b6053", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4580,7 +4586,7 @@ }, { "commandType": "dispense", - "key": "b7f1a73a-8831-4a44-9ba7-b5cb519bb215", + "key": "0f7a13fb-99c7-4cd7-bb4b-6f615dbcf0b3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4599,7 +4605,7 @@ }, { "commandType": "aspirate", - "key": "4cc4dd8d-096e-46c1-b679-5350affd8b8a", + "key": "0ca8c2f1-3f53-4309-ab08-5fc2232bcc44", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4618,7 +4624,7 @@ }, { "commandType": "dispense", - "key": "53c53d98-c333-4071-8b9c-7ddd30af9156", + "key": "bcbf6cf0-0387-4f32-ac2f-09f5cf0b4f61", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4637,7 +4643,7 @@ }, { "commandType": "aspirate", - "key": "99bf4d65-85f8-4759-9ba9-97e2aa2e7c0d", + "key": "79c82d3c-0f3c-40ab-acde-0ddec69fb452", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4656,7 +4662,7 @@ }, { "commandType": "dispense", - "key": "aca6fcb1-3f17-444c-9ec8-f15a8abfcfc0", + "key": "0a6b23c1-510f-4e14-9703-f547c95229aa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4675,7 +4681,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "03e1fe26-33b6-44b6-be58-0287e71c28f3", + "key": "d1a4a476-c7a6-43f5-ae9c-b535eaa75085", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4688,7 +4694,7 @@ }, { "commandType": "blowOutInPlace", - "key": "5a2c56e4-bc46-4855-8c5e-9bfce14ae3b9", + "key": "e1d91545-60cb-424f-b312-e2ab186ed231", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4696,7 +4702,7 @@ }, { "commandType": "touchTip", - "key": "6d85e783-0eca-4bb3-a3a2-166d2071ebe8", + "key": "464f544c-bbdd-4356-af91-609b34a051a0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4711,7 +4717,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "41c7dd1d-0e8a-4586-8ba1-f1daf5e749e6", + "key": "7173b1e3-ba16-4e2f-bc37-5e6f3a8fcf05", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4725,14 +4731,14 @@ }, { "commandType": "dropTipInPlace", - "key": "eb5b780c-0a3e-411e-b596-0e32558910a0", + "key": "adb1abc6-ae8a-40b5-91b2-86e58b2a8e86", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "d797963b-39f7-4720-a4c1-8d81f4f9c472", + "key": "d87cf05c-e6f8-4c28-b9e4-84c15a7e9888", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4741,7 +4747,7 @@ }, { "commandType": "aspirate", - "key": "5c224719-928e-4af8-b7aa-f10b65946c11", + "key": "0842af17-ba02-4040-b97b-f9f6d9e384f9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4760,7 +4766,7 @@ }, { "commandType": "dispense", - "key": "1aba110d-735e-46ad-a5e6-020663d29ebc", + "key": "f38338b8-f3c8-4d47-b449-e39eb5699e80", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4779,7 +4785,7 @@ }, { "commandType": "aspirate", - "key": "7254a835-c333-43a6-b9e1-25ef28edbad5", + "key": "5eab1add-4039-4253-b96b-10a0c62fffa4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4798,7 +4804,7 @@ }, { "commandType": "dispense", - "key": "0450994c-9de9-4f5e-9c26-710421e396d6", + "key": "46346f68-fca5-4cff-906b-ca50596f2ad3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4817,7 +4823,7 @@ }, { "commandType": "aspirate", - "key": "d1b342f4-62d8-49a8-be58-2dd480edd145", + "key": "6a4aef6d-88f1-416a-b49f-95f2980e65bc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4836,7 +4842,7 @@ }, { "commandType": "dispense", - "key": "032db156-a716-4fa2-8683-99cd424483c6", + "key": "4c21f952-f8a3-4174-b49d-8211605c8623", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4855,7 +4861,7 @@ }, { "commandType": "aspirate", - "key": "0c4b6581-62ce-49f2-8916-1086071c579b", + "key": "97710ca5-fee5-41e6-8e5f-dd2dbcaef1a0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4874,7 +4880,7 @@ }, { "commandType": "touchTip", - "key": "b4a66d40-394a-4350-ad29-0a3b7bbde31b", + "key": "e0203037-a9f1-4438-89d3-43568ff0a69c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -4889,7 +4895,7 @@ }, { "commandType": "dispense", - "key": "8409f328-898c-48d5-b2f0-14334072d2a2", + "key": "052412a5-94a2-4179-9a81-57f06ac6143c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4908,7 +4914,7 @@ }, { "commandType": "aspirate", - "key": "3f6459ee-02d6-499e-ba89-f0ebffb48d88", + "key": "df97f1f7-65c1-4bd7-ba7e-1dbc63f432f3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4927,7 +4933,7 @@ }, { "commandType": "dispense", - "key": "1bf54eb3-f3ba-43f7-9ccc-43c83b1fcf13", + "key": "0d0a7e80-8576-46dc-be69-ca24544b02f2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4946,7 +4952,7 @@ }, { "commandType": "aspirate", - "key": "8166d4a6-0a41-4a2c-bccb-043859a9f1d8", + "key": "aba04cf1-2028-492b-a28a-f629eeab5f65", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4965,7 +4971,7 @@ }, { "commandType": "dispense", - "key": "47d7fd68-05b0-41f6-9c4c-7a37aa7bcb13", + "key": "de937cbb-c4aa-45fb-9548-d0f84e4dda28", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4984,7 +4990,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "3809644f-92fa-4da0-9db5-542c0a181e8c", + "key": "235df24b-9d44-4d15-96ca-42c5e632251f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4997,7 +5003,7 @@ }, { "commandType": "blowOutInPlace", - "key": "929ce1cb-82cb-4c39-92a3-39c628b019c9", + "key": "2e49a1a0-3885-45ed-a8a1-1e5cd3ff9846", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5005,7 +5011,7 @@ }, { "commandType": "touchTip", - "key": "6d135454-0d51-49df-bf4c-4e2bb813f1d2", + "key": "587f7545-ddaa-41fa-abdd-0fbce07e1fc6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5020,7 +5026,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "349625a9-aa2b-4d35-b40b-8ef14e586a51", + "key": "5319b473-6b31-4be2-af1e-01e14fff25ba", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5034,14 +5040,14 @@ }, { "commandType": "dropTipInPlace", - "key": "444440c9-00d5-4348-99a9-1a3cb1f742fd", + "key": "8ac985b6-3686-4bec-9491-303aa2d4e5a0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "4c52ae1d-70b1-4dc9-83e7-02b3af2c200e", + "key": "b092ef81-4360-4ad7-a444-c6d9307446ab", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5050,7 +5056,7 @@ }, { "commandType": "aspirate", - "key": "5640b654-9339-4845-9b40-a6beba046904", + "key": "2c6a096e-59de-4662-8cc2-dab696f55064", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5069,7 +5075,7 @@ }, { "commandType": "dispense", - "key": "592654fb-22db-4ace-b2a7-f68f56a9967b", + "key": "f18e7e75-783b-407e-a84a-3e1ecfa9cb01", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5088,7 +5094,7 @@ }, { "commandType": "aspirate", - "key": "3d039399-6e83-4a41-a3d1-2ab1c5482824", + "key": "9f68dfdd-f18f-4d29-823c-3554ca017e0c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5107,7 +5113,7 @@ }, { "commandType": "dispense", - "key": "d0fe6ba1-5037-4b30-a5c5-22efa87fa431", + "key": "46f31d39-b423-48c5-ab1f-29555f2e1957", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5126,7 +5132,7 @@ }, { "commandType": "aspirate", - "key": "df2ba6f0-4d77-430b-97fc-5ce88b1f3947", + "key": "61713144-9c70-493d-8207-118892ae1afb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5145,7 +5151,7 @@ }, { "commandType": "dispense", - "key": "85078a16-bdf9-471d-9b07-4938634c49c9", + "key": "d6e61857-d24c-49c5-b590-17e7e16ce460", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5164,7 +5170,7 @@ }, { "commandType": "aspirate", - "key": "bc04ada5-ca7f-4bc5-bf00-d85e82360ab8", + "key": "64ff64a6-62a9-4612-8e4d-adc40254a760", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5183,7 +5189,7 @@ }, { "commandType": "touchTip", - "key": "2cc0af02-6209-4482-9436-4a3cbf4e52d6", + "key": "9525512e-10c3-46bc-bd51-e82af933a363", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5198,7 +5204,7 @@ }, { "commandType": "dispense", - "key": "6d084361-fbed-49c1-af3e-28e58e8e60b7", + "key": "f600f10b-b5e6-44aa-92f1-ddefb91eefc1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5217,7 +5223,7 @@ }, { "commandType": "aspirate", - "key": "dd665ee5-3242-4c63-afe0-e2083810ee37", + "key": "8a6d29a0-8555-4f87-b859-adf93b9ec598", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5236,7 +5242,7 @@ }, { "commandType": "dispense", - "key": "7ef70d87-4be3-4260-8098-39599f8a1fb0", + "key": "0fb0c6c9-d7fe-46cf-959d-84e23d164236", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5255,7 +5261,7 @@ }, { "commandType": "aspirate", - "key": "588334ee-930e-4a6d-a1ab-69c145197023", + "key": "f35ecbf2-32c7-478d-a273-3c924f3ca7ee", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5274,7 +5280,7 @@ }, { "commandType": "dispense", - "key": "857d9f81-2181-4ca2-9389-cad3fa9aee70", + "key": "a1043e5a-83ae-47a1-ad43-a1dae2089850", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5293,7 +5299,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "ad2d67a4-625c-437b-96c8-e48fd7918577", + "key": "687ea83a-9c5f-45ad-acb0-356d80b8ac5a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5306,7 +5312,7 @@ }, { "commandType": "blowOutInPlace", - "key": "2d154de5-d3e3-4641-a1e3-5c006d810006", + "key": "06d1f4d9-c932-4c58-9182-aea2232cae42", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5314,7 +5320,7 @@ }, { "commandType": "touchTip", - "key": "6b0659e9-1856-4550-8279-fb82fc2e94a7", + "key": "30da32b8-1d0f-449a-8ad6-c8d2ab8f21d6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5329,7 +5335,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "cec99b96-c228-4e2a-a143-fbbbfb50901e", + "key": "9e5c1bee-e858-4c05-bd23-d76bf3e9905b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5343,14 +5349,14 @@ }, { "commandType": "dropTipInPlace", - "key": "15825029-3fab-4e68-9469-560e148e7ced", + "key": "cf676e27-7b50-4441-9503-54799055c61c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "161b384c-5c92-4056-8015-2719ee427475", + "key": "31187b3d-8c42-469b-af23-7cdce6d06b44", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5359,7 +5365,7 @@ }, { "commandType": "aspirate", - "key": "08f3fb64-eaf8-4416-aa23-baba231efed0", + "key": "f9e1a43e-8959-4640-8f08-3fa850c84f0c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5378,7 +5384,7 @@ }, { "commandType": "dispense", - "key": "651d97ff-dc34-41cd-8dd4-c0b94f21c674", + "key": "c7913d86-ff26-453a-9032-88d3674b4439", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5397,7 +5403,7 @@ }, { "commandType": "aspirate", - "key": "ca22a85d-6732-4c43-a8ea-4a857065ddd2", + "key": "34831446-bce1-440f-a765-9c53571e9c65", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5416,7 +5422,7 @@ }, { "commandType": "dispense", - "key": "f16da0ca-bba1-4ee1-a2ed-f68fdbeee204", + "key": "caa88df0-25b6-40de-a25b-aa147369c086", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5435,7 +5441,7 @@ }, { "commandType": "aspirate", - "key": "c91c5044-4c23-420e-9892-a4067215d78d", + "key": "b9900e0a-2149-4ebb-9182-5446ddcf999b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5454,7 +5460,7 @@ }, { "commandType": "dispense", - "key": "47346096-1081-4817-96c9-77d799327011", + "key": "6affd104-4b47-4419-a1d4-8afcc93b88e6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5473,7 +5479,7 @@ }, { "commandType": "aspirate", - "key": "35813192-b966-4cbd-95a9-9d87cae07adc", + "key": "eec6bd80-d9c6-4001-ac19-c521246f008a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5492,7 +5498,7 @@ }, { "commandType": "touchTip", - "key": "eac2a4b2-65cc-4c8d-b8d8-01b2c9bf2a20", + "key": "7c9a3c45-e6ee-42db-8c31-1f75c89042c4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5507,7 +5513,7 @@ }, { "commandType": "dispense", - "key": "194be867-02d5-48d1-a19f-9c01fb832068", + "key": "0fd7e858-2609-4a4b-aa94-04c8b7663452", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5526,7 +5532,7 @@ }, { "commandType": "aspirate", - "key": "99ffbb3c-e5a2-48f4-a4a4-811b6839aeea", + "key": "8a310593-cab4-4874-aa09-f5fc3b5d1aca", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5545,7 +5551,7 @@ }, { "commandType": "dispense", - "key": "78a477c6-5414-480e-8953-0ba4bb94f220", + "key": "9baf1ed3-b439-41cf-ad6b-c501b155dbda", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5564,7 +5570,7 @@ }, { "commandType": "aspirate", - "key": "1f7e8e1b-8f71-4782-b731-266da9db63ff", + "key": "d463c700-dac1-463b-8dd2-8667f3eb037e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5583,7 +5589,7 @@ }, { "commandType": "dispense", - "key": "7e06c384-46d3-40af-b820-96c86d8a5da5", + "key": "61fba73d-bf33-46c6-b569-637c01ef1395", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5602,7 +5608,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "fca397e0-65a0-48d6-83fe-05132b2ddc24", + "key": "62e22ade-d8fd-4877-ae72-a3316e2e0608", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5615,7 +5621,7 @@ }, { "commandType": "blowOutInPlace", - "key": "8f53ee29-11fb-441b-9719-97c132f275b5", + "key": "0dc6e24a-18ca-4793-9059-084b040e3c7e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5623,7 +5629,7 @@ }, { "commandType": "touchTip", - "key": "0699658d-fb6c-4b56-b803-00dd96940cc4", + "key": "6c4dca23-1208-4e35-9dce-17b90f9da4db", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5638,7 +5644,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9b306194-770b-49ef-bcd3-95c64244679e", + "key": "63591b00-dc8d-413b-afb4-925431ba0fef", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5652,14 +5658,14 @@ }, { "commandType": "dropTipInPlace", - "key": "0c9714a3-0018-44fa-a531-8dcf9c168d1a", + "key": "65010ce3-901b-4608-968b-ae7b1726512d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "e13d0327-a840-4de7-b7ce-fbde43257c34", + "key": "670b61af-2f95-4e23-a5c1-ad6155244add", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5668,7 +5674,7 @@ }, { "commandType": "aspirate", - "key": "2a19acac-8b2f-4f28-8eee-826a8d6bff15", + "key": "47bca455-b34f-4333-ac30-47768fa98ff0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5687,7 +5693,7 @@ }, { "commandType": "dispense", - "key": "88afadcf-1256-437e-856c-4f615ccb4a72", + "key": "5c1930a8-cf8a-49b8-b7ee-51205d0afb1b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5706,7 +5712,7 @@ }, { "commandType": "aspirate", - "key": "d8319c46-7fd0-4f68-82d1-6a761556ec85", + "key": "384a6802-77fe-4b0e-ad14-709c2fdbe1cb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5725,7 +5731,7 @@ }, { "commandType": "dispense", - "key": "5e18da13-4b92-4733-9e9c-26f57a5eb5b4", + "key": "77a0e5bf-9892-4998-b775-b45ea8032e51", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5744,7 +5750,7 @@ }, { "commandType": "aspirate", - "key": "18fb939f-0390-4741-9fee-50b1911936c0", + "key": "71c0d2ab-505f-4e7d-9681-76c98fc7670a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5763,7 +5769,7 @@ }, { "commandType": "dispense", - "key": "40da27db-1412-440d-bbd0-5148b6f64ed7", + "key": "1992b40f-0ded-4cbb-8feb-3345771cc685", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5782,7 +5788,7 @@ }, { "commandType": "aspirate", - "key": "9f504ffd-465d-495b-a656-109d35cfe9b1", + "key": "7cc44132-fc06-4808-91fa-977efa07b01c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5801,7 +5807,7 @@ }, { "commandType": "touchTip", - "key": "394d2f74-5e28-4e6f-b815-c97087c89691", + "key": "a7d6848f-621b-4e5a-a1cf-f11fca3f448c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5816,7 +5822,7 @@ }, { "commandType": "dispense", - "key": "8cb558bd-2ea6-497c-b070-af6e41664a26", + "key": "9096cb20-4e87-4249-9da3-327a7f746d5c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5835,7 +5841,7 @@ }, { "commandType": "aspirate", - "key": "3274dd59-0600-4c2a-890a-fecfac8b5862", + "key": "91c83d69-771c-48c1-920b-951664d66df1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5854,7 +5860,7 @@ }, { "commandType": "dispense", - "key": "21d4fc28-b92e-4e45-a1ef-cccee395e3ec", + "key": "45e2a957-49b1-4f9e-9c97-f6ff470457c8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5873,7 +5879,7 @@ }, { "commandType": "aspirate", - "key": "7d9b7d52-8963-41bd-869a-afb3273ad34e", + "key": "78cd4847-b928-43df-b2df-ec89a3211243", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5892,7 +5898,7 @@ }, { "commandType": "dispense", - "key": "35a3b1ab-efa8-4f6b-b074-b5bedb66f827", + "key": "1de06143-7e09-4030-bb53-d2b769690b95", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5911,7 +5917,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "9acfc10b-c99c-4f11-a270-0f5eec661be5", + "key": "ae8c36f1-2af0-43c3-892f-af8f7a057e99", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5924,7 +5930,7 @@ }, { "commandType": "blowOutInPlace", - "key": "e3135725-cb6f-45a1-9fe0-d19f04f27656", + "key": "a2dc3be0-b847-4fc0-a2c7-529794908f2b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5932,7 +5938,7 @@ }, { "commandType": "touchTip", - "key": "96673cd7-fd03-4c0a-bb2a-b14a0ffb0ccb", + "key": "0017585f-5ff6-49c7-84c5-dccfae364cbd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -5947,7 +5953,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "2132f0ae-ea2e-443b-a971-5c79ee30f789", + "key": "b287747c-81fc-4c6a-a422-705377142116", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5961,14 +5967,14 @@ }, { "commandType": "dropTipInPlace", - "key": "9c328923-a752-40b1-9270-ed97a3a0c553", + "key": "0551b764-b82f-4ae2-beb2-c7adf2dc6b54", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "988563f5-56c4-4e21-a92b-b6e2dfb8bde5", + "key": "1e0289a4-61cf-4990-ba90-2f385a213079", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5977,7 +5983,7 @@ }, { "commandType": "aspirate", - "key": "c98f3b96-fd38-40f2-9794-828ff525969c", + "key": "8709c899-db94-42fa-b1dc-f3c97733abdc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5996,7 +6002,7 @@ }, { "commandType": "dispense", - "key": "576cd475-ef5a-4016-a705-efd349d2e442", + "key": "d826a43b-5440-4ba1-bc27-048c59c48821", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -6015,7 +6021,7 @@ }, { "commandType": "aspirate", - "key": "e7ee52ac-8fcf-44ba-82a2-1db637e376be", + "key": "60f35226-94d0-4bc1-b529-144945af67bc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -6034,7 +6040,7 @@ }, { "commandType": "dispense", - "key": "77016b31-a245-40fc-a52e-c83b3004b81f", + "key": "dd214b0c-cc5b-403d-8ae1-e41d946521e4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -6053,7 +6059,7 @@ }, { "commandType": "aspirate", - "key": "7db3ab8a-5903-4960-bbdc-26497da191ad", + "key": "cc898a43-afd4-4a11-96ae-0fba6c8e3e3f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -6072,7 +6078,7 @@ }, { "commandType": "dispense", - "key": "910d7439-52d6-4a16-a6a5-0b71e3c32696", + "key": "e99ba431-0662-427f-ae20-fbbcb1ecc454", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -6091,7 +6097,7 @@ }, { "commandType": "aspirate", - "key": "39bfaad3-fdc2-42d1-8f12-d2684d0a9bbf", + "key": "e3a612d0-1a8a-4b89-bd2e-8c94b646e5a0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -6110,7 +6116,7 @@ }, { "commandType": "touchTip", - "key": "44f4d1a4-26c3-435e-810c-ecaad59a55ab", + "key": "b196c957-003b-4d2b-b0e0-9fabbb467015", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -6125,7 +6131,7 @@ }, { "commandType": "dispense", - "key": "ddc2756d-38e4-4d42-81a1-ad531797ec79", + "key": "186ff8c9-57c9-43a2-9dd3-12c886d85c6e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -6144,7 +6150,7 @@ }, { "commandType": "aspirate", - "key": "23ecb712-813c-4221-92b5-b7ad0df7c91e", + "key": "92958a8f-18cf-4770-a5c7-520578a9e1ac", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -6163,7 +6169,7 @@ }, { "commandType": "dispense", - "key": "020d2f92-da37-4230-9041-0d746dbc81c8", + "key": "81269d20-c06b-4e6d-ac0b-28beaa42e84d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -6182,7 +6188,7 @@ }, { "commandType": "aspirate", - "key": "9493caea-f0ee-459a-b286-b656c540fa19", + "key": "944816f0-75fa-427a-91e6-241a17d335ef", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -6201,7 +6207,7 @@ }, { "commandType": "dispense", - "key": "2fd36c9a-4387-4e0d-b96b-c095c325450c", + "key": "50baa2c8-09cb-4457-a88f-d4bf2025ab62", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -6220,7 +6226,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "c5c15d57-b094-4344-8a9d-ef55442e587c", + "key": "f6860db4-02f6-42de-9c5e-952861986160", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -6233,7 +6239,7 @@ }, { "commandType": "blowOutInPlace", - "key": "9f3a5bc5-d27e-47f3-996c-873edee7e793", + "key": "b3a42537-456b-4d2e-9909-aa6050280bdf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -6241,7 +6247,7 @@ }, { "commandType": "touchTip", - "key": "817158fe-bf57-4d1e-a6a4-020cfd8d79ab", + "key": "6eb19d13-f030-4b84-a68d-4be98fa8d1c4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -6256,7 +6262,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "30538d0c-d451-46fe-a19d-56f564b351e5", + "key": "83acf0f8-37fc-4b46-8788-0125b35d79c7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -6270,14 +6276,14 @@ }, { "commandType": "dropTipInPlace", - "key": "08f1c64b-09d5-4ac2-a5c3-3d152da7cad2", + "key": "33cdfe7e-00c2-4deb-a276-57e41a25c689", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "45323d95-f2a6-47a2-8854-62e54e92585b", + "key": "40946613-5d56-490f-892f-4570ce6dc494", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -6286,7 +6292,7 @@ }, { "commandType": "aspirate", - "key": "befaaff7-d4e1-4b3c-9c0c-d40c2b956962", + "key": "7a975917-cb11-4947-82d4-ec0fb6ff48e4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6305,7 +6311,7 @@ }, { "commandType": "dispense", - "key": "bac1ea10-10c5-41ca-96ce-781304f8675e", + "key": "a82ee50c-437b-4861-bfa7-1a390fc3e19b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6324,7 +6330,7 @@ }, { "commandType": "aspirate", - "key": "f37e217e-4939-44e2-9671-9b05ad14786d", + "key": "8a93c248-0c06-49fe-a39e-7b0111d52112", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6343,7 +6349,7 @@ }, { "commandType": "dispense", - "key": "c159f36c-e926-4875-b99b-4add3525c4e3", + "key": "6a94836c-c4d7-422e-b79f-e42accd7ce7d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6362,7 +6368,7 @@ }, { "commandType": "aspirate", - "key": "25ae2b7c-b305-4e87-840d-42de7ded3b4b", + "key": "871678da-eed3-42d1-bff6-ec89a3ce578d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6381,7 +6387,7 @@ }, { "commandType": "dispense", - "key": "23397b4a-4383-42ed-b8f4-e44f3a010a71", + "key": "79880e8a-41d3-4b67-ac46-b133f6c06877", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -6400,7 +6406,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "890a6535-a85d-466f-8505-64405697b5a0", + "key": "ec7ec1b4-d6e9-437d-802a-9b9df4fe39f5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -6413,7 +6419,7 @@ }, { "commandType": "blowOutInPlace", - "key": "c8253121-dac9-4f54-93f9-f5db77f7c879", + "key": "4aa188ff-d2c1-4484-a43f-91164ab987b2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -6421,7 +6427,7 @@ }, { "commandType": "touchTip", - "key": "57b65cb0-810c-44f2-b3bb-9a4c9d7e829d", + "key": "e62327c7-e230-410a-8304-a1c37ff4708e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -6436,7 +6442,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "0d13cd12-8ca0-4ead-bfbd-debe41d9a00e", + "key": "3bcc74cd-956f-428d-8978-dd359c7ed802", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -6450,14 +6456,14 @@ }, { "commandType": "dropTipInPlace", - "key": "087b6b54-6e37-48c3-aeda-91ee0b43febc", + "key": "59c39c03-fd02-4e7a-b26e-c99ec30d0aaa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "waitForDuration", - "key": "f1e0270b-15e2-4ba6-adaa-4369bd92c271", + "key": "74d10946-d37d-456f-bf79-afaada065939", "params": { "seconds": 3723, "message": "Delay plz" diff --git a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json index 0676e730b1c..b3f37e7e9b5 100644 --- a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json +++ b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json @@ -36,6 +36,9 @@ }, "pipetteLocationUpdate": { "pipetteId": "left" }, "moduleLocationUpdate": {}, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, diff --git a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json index 90e2e0a5f52..eeb2cd9765c 100644 --- a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json +++ b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1714565695341, - "lastModified": 1738157367073, + "lastModified": 1738682506391, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -48,6 +48,12 @@ "pipetteLocationUpdate": { "21087f15-4c03-4587-8a2b-1ba0b5a501a0": "left" }, + "trashBinLocationUpdate": { + "20ab923c-1290-402e-8476-bba30991f24e:trashBin": "cutoutA3" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -110,8 +116,8 @@ "stepType": "moveLiquid", "stepName": "transfer", "stepDetails": "", - "id": "292e8b18-f59e-4c63-b0f3-e242bf50094b", - "dispense_touchTip_mmfromTop": null + "dispense_touchTip_mmfromTop": null, + "id": "292e8b18-f59e-4c63-b0f3-e242bf50094b" }, "960c2d3b-9cf9-49b0-ab4c-af4113f6671a": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", @@ -3591,7 +3597,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "bc9f6354-a7a7-407a-86fa-d764fed37892", + "key": "4e81978e-27c9-4d5c-b3af-0548d0356a69", "commandType": "loadPipette", "params": { "pipetteName": "p50_single_flex", @@ -3600,7 +3606,7 @@ } }, { - "key": "5653381b-77ed-49c5-b13a-a897108e25b2", + "key": "edcdab68-334b-4b49-ac81-af0741538f44", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -3611,7 +3617,7 @@ } }, { - "key": "9b05da10-4b23-4e6b-82f0-03d078c0aafc", + "key": "d408749c-8240-491e-9397-05cb9d0e117f", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -3622,7 +3628,7 @@ } }, { - "key": "c195d07a-ca33-4a3c-a33d-1f5df2f3b906", + "key": "9a607dd5-2a6c-4f65-befb-1927ab1d96c3", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Well Aluminum Block", @@ -3636,7 +3642,7 @@ } }, { - "key": "cad83091-9a60-4df4-aaa8-86316b44e6b4", + "key": "c461976c-2b67-405b-a5b4-30d8e843aa59", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -3650,7 +3656,7 @@ } }, { - "key": "3128ec57-5aed-4824-8b91-f9a3f7a9ea1f", + "key": "69314eb3-f57f-4a63-b1db-bf3e874d7de7", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap", @@ -3664,7 +3670,7 @@ } }, { - "key": "d70bb67b-f388-4eda-84a5-51accd89c534", + "key": "9b6120d9-1d75-4bbb-b165-03c22541c92f", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -3679,7 +3685,7 @@ }, { "commandType": "pickUpTip", - "key": "5535c00b-3931-43b4-bd39-6f7498ac3739", + "key": "5ad19fa0-44d6-46f9-9d7c-834a8c1daa2a", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "labwareId": "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -3688,7 +3694,7 @@ }, { "commandType": "configureForVolume", - "key": "a35a7664-c44a-41fb-9e67-08b01f2339f7", + "key": "214ad986-39fd-4fd8-a3d1-11e7a3fee49f", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10 @@ -3696,7 +3702,7 @@ }, { "commandType": "aspirate", - "key": "d7a2bb3f-4158-41c2-83fa-95c33f02c076", + "key": "1677354b-365b-478f-902a-2356d7caffdb", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10, @@ -3715,7 +3721,7 @@ }, { "commandType": "dispense", - "key": "5c6fc843-d3e9-46ba-88a7-34f88771010a", + "key": "eb29cc00-3d96-484f-9c5c-36b3f6d3b2f6", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10, @@ -3734,7 +3740,7 @@ }, { "commandType": "blowout", - "key": "e53ccf8f-b3e3-4a63-a84e-b000457162e6", + "key": "dd09a42d-78d0-451f-9ad8-00a2573fe98a", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "labwareId": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -3750,7 +3756,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "287251ef-d8dc-4ae5-ad72-ac84cd81e5b6", + "key": "442a0535-ed1d-42b0-a98c-5234fd4a8570", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "addressableAreaName": "movableTrashA3", @@ -3764,14 +3770,14 @@ }, { "commandType": "dropTipInPlace", - "key": "ea735ed4-a2c6-41af-ae6e-7eb223db25bf", + "key": "8e3e6a32-3a2c-4b8e-a2d3-d028e952fd9e", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0" } }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "c45ee0b8-08fa-4854-8a0d-e65f513c2f08", + "key": "97e3e319-2254-4842-8280-551a35f40f30", "params": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", "celsius": 40 @@ -3779,7 +3785,7 @@ }, { "commandType": "temperatureModule/waitForTemperature", - "key": "f994033a-27cf-4ce1-999b-242edae5538e", + "key": "3bb0e089-4a38-4bcc-b92c-19957bef78a2", "params": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", "celsius": 40 @@ -3787,7 +3793,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "6ceb2f9e-7ac4-4807-ada9-5d1d3cd316ce", + "key": "b758e33e-4c6d-46d6-be6f-807e9da90dfb", "params": { "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", "celsius": 4 @@ -3795,7 +3801,7 @@ }, { "commandType": "temperatureModule/waitForTemperature", - "key": "e090a25b-48ec-4a2e-8744-23df852efee2", + "key": "76613ed5-1871-465b-aaf8-8b0de51e9265", "params": { "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", "celsius": 4 diff --git a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json index 52a16c9b234..f38b1eb287b 100644 --- a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json +++ b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1701805621086, - "lastModified": 1738157515738, + "lastModified": 1738682533383, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -47,6 +47,12 @@ "pipetteLocationUpdate": { "de7da440-95ec-43e8-8723-851321fbd6f9": "left" }, + "trashBinLocationUpdate": { + "1e553651-9e4d-44b1-a31b-92459642bfd7:trashBin": "cutoutA3" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -109,8 +115,8 @@ "stepType": "moveLiquid", "stepName": "transfer", "stepDetails": "", - "id": "83a095fa-b649-4105-99d4-177f1a3f363a", - "dispense_touchTip_mmfromTop": null + "dispense_touchTip_mmfromTop": null, + "id": "83a095fa-b649-4105-99d4-177f1a3f363a" }, "f5ea3139-1585-4848-9d5f-832eb88c99ca": { "aspirate_airGap_checkbox": false, @@ -171,8 +177,8 @@ "stepType": "moveLiquid", "stepName": "transfer", "stepDetails": "", - "id": "f5ea3139-1585-4848-9d5f-832eb88c99ca", - "dispense_touchTip_mmfromTop": null + "dispense_touchTip_mmfromTop": null, + "id": "f5ea3139-1585-4848-9d5f-832eb88c99ca" } }, "orderedStepIds": [ @@ -2306,7 +2312,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "261b6dcd-ec1c-405c-bc13-bdca44557a4c", + "key": "8b0499d8-e1c0-4f8d-8e1f-fb8f5ca968f0", "commandType": "loadPipette", "params": { "pipetteName": "p1000_96", @@ -2315,7 +2321,7 @@ } }, { - "key": "4889f04d-e1fb-49ba-9f10-a0030c68ac7f", + "key": "6d18b281-8a99-427f-8e7f-6a5f1d75c691", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack Adapter", @@ -2329,7 +2335,7 @@ } }, { - "key": "60a8ced3-f7bb-44db-a492-aa2d102cc465", + "key": "25bf1936-d9af-4554-9ac9-f3d125c71505", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2343,7 +2349,7 @@ } }, { - "key": "608c4a16-9751-44c8-96f8-eec999611c79", + "key": "31a2baad-d37a-4502-8ca8-7217746b5eec", "commandType": "loadLabware", "params": { "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", @@ -2357,7 +2363,7 @@ } }, { - "key": "9905fa02-358f-4d23-b936-8711b2bf5600", + "key": "b1030040-9a1d-409c-824d-fb3c1c5e74fe", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2372,7 +2378,7 @@ }, { "commandType": "configureNozzleLayout", - "key": "e8d646ad-3046-4186-803f-a01e329cef97", + "key": "92de0faf-c381-4f9a-a3e5-bdd8dfbdc9a7", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "configurationParams": { @@ -2382,7 +2388,7 @@ }, { "commandType": "pickUpTip", - "key": "ecf30773-7a3c-47c3-8c79-6b1f91bf20b2", + "key": "17719786-baf8-404b-8de3-05bcc1e86259", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "75aa666f-98d8-4af9-908e-963ced428580:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2391,7 +2397,7 @@ }, { "commandType": "aspirate", - "key": "bb5f9927-b5a2-4e5e-8015-a93d808aa3ea", + "key": "7ac552fa-97ce-4144-b18d-86624511f04d", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2410,7 +2416,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "efd35098-e1b1-4353-b5e9-9cc8c87e66df", + "key": "0d5de06e-b28f-41c6-8087-3eef54823651", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2423,7 +2429,7 @@ }, { "commandType": "dispenseInPlace", - "key": "b2da7fa8-1359-40fb-ab30-92e21fb879de", + "key": "061e56ac-b3b1-4632-85bc-bf98f5b3e440", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2432,7 +2438,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9cdf6b7f-3fe4-455d-82db-2b0f3a8179bc", + "key": "bfbec11e-831f-48cd-8766-c40bcd77c33a", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2446,14 +2452,14 @@ }, { "commandType": "dropTipInPlace", - "key": "335acc42-668d-4159-9943-df822419adae", + "key": "151289b6-cccd-47e7-b519-c0b327c69b63", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } }, { "commandType": "configureNozzleLayout", - "key": "1950c1e6-1eb6-46c8-ba4b-c7c38c825094", + "key": "26a8d10e-40dc-4915-88fb-7131a4e0191a", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "configurationParams": { @@ -2464,7 +2470,7 @@ }, { "commandType": "pickUpTip", - "key": "34b5dc55-8096-445d-b77c-40918b657c9f", + "key": "472ff857-edd5-4225-b555-2aa07ff4d6d9", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2473,7 +2479,7 @@ }, { "commandType": "aspirate", - "key": "42132ae0-4321-4251-9b12-5aec2a398617", + "key": "02833246-8dd6-408f-9481-9408551727a7", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2492,7 +2498,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "e6468d3a-d076-40be-bc49-da13f38c7e4e", + "key": "992c6b3c-ccef-409a-ab4b-a55b0cfcd549", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2505,7 +2511,7 @@ }, { "commandType": "dispenseInPlace", - "key": "acbf26f8-2025-48df-85a8-8696815906f6", + "key": "f0e4d408-47ae-45f3-a7fc-d88dd2b42a35", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2514,7 +2520,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "0e00ce33-ab8f-4600-9a4c-72677d2d4408", + "key": "dce3b716-77e3-4b80-82dd-2a6a61a57a17", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2528,7 +2534,7 @@ }, { "commandType": "dropTipInPlace", - "key": "bfba211e-b4a7-475d-88ce-134c134dc7a1", + "key": "93d69b14-2d41-4272-bcac-78d5810db8f0", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } diff --git a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json index 8a5e9916bb7..d08d93857e8 100644 --- a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Hopia", "description": "testing a thermocycler on OT-2", "created": 1731356664582, - "lastModified": 1738157325544, + "lastModified": 1738683623686, "category": null, "subcategory": null, "tags": [] @@ -15,7 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", + "_internalAppBuildDate": "Tue, 04 Feb 2025 15:40:12 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -95,6 +95,12 @@ "pipetteLocationUpdate": { "733ba018-3550-476c-9fa3-0b5259d1a1d6": "left" }, + "trashBinLocationUpdate": { + "dc2c4599-29b3-4ec8-adff-56677ac0821e:trashBin": "cutout12" + }, + "wasteChuteLocationUpdate": {}, + "stagingAreaLocationUpdate": {}, + "gripperLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, @@ -2260,7 +2266,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "01d12a6f-a134-41ad-8a96-0f1db1caa648", + "key": "06942533-7498-4507-9a3e-a80640e0b11b", "commandType": "loadPipette", "params": { "pipetteName": "p20_single_gen2", @@ -2269,7 +2275,7 @@ } }, { - "key": "984a7baa-bf2d-4b9b-8d22-7fa864d443d5", + "key": "2d40fefe-7a97-4885-9813-745e87b558d3", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV1", @@ -2280,7 +2286,7 @@ } }, { - "key": "70bd414e-8191-4c73-a79d-ec514a775cdd", + "key": "b6313d6a-b046-4c83-bd79-171ab2267d4a", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2295,7 +2301,7 @@ }, { "commandType": "loadLiquid", - "key": "6eeecce1-bf14-4ba9-ac27-99d4a45c1352", + "key": "2ae9cd8f-caaf-4236-8fa5-f389fdc11c61", "params": { "liquidId": "0", "labwareId": "ac928a51-a248-4304-be43-e9cb19c34fa9:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -2313,14 +2319,14 @@ }, { "commandType": "thermocycler/closeLid", - "key": "b3f3d0ef-d186-451b-b019-92170d4c54b0", + "key": "689eb7ee-b3ef-4fd0-ace8-6a095dc8079e", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "a61991d4-e5ca-4828-88e1-16121263e580", + "key": "460e9a31-986e-491f-bf71-a3f93bfbd8f5", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "celsius": 50 @@ -2328,14 +2334,14 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "5433a727-f2fc-49ef-a7b2-f88e426fa310", + "key": "0ecc6124-c69d-4627-b5db-4955291473fe", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "cd2d7b9e-c308-4efd-9cbd-cca366abbe2d", + "key": "ac9e312f-077c-40b8-8962-3cc2f48c9e90", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "celsius": 40 @@ -2343,14 +2349,14 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "ea9d18cd-d9a3-461e-96c1-ac41436474d6", + "key": "175ed209-4a23-4a8a-ae23-c896c1b45acc", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/runProfile", - "key": "5d773732-71d8-45af-83f7-be31f4f89689", + "key": "541e8c3a-a19e-48e9-8f67-56898f309a95", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "profile": [ @@ -2388,14 +2394,14 @@ }, { "commandType": "thermocycler/deactivateBlock", - "key": "49c7e428-7a42-4bc0-93a8-8c30c375fe58", + "key": "55aad3e0-0854-408a-a46d-c8834cc5a601", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateLid", - "key": "3358c263-9ce4-4a02-846f-26faf626ed50", + "key": "d878f02b-dda5-4bdd-8c8b-344493e498eb", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } diff --git a/protocol-designer/src/constants.ts b/protocol-designer/src/constants.ts index 7e782f6eee3..d7dbe1fb971 100644 --- a/protocol-designer/src/constants.ts +++ b/protocol-designer/src/constants.ts @@ -193,3 +193,5 @@ export const ABSORBANCE_READER_COLOR_BY_WAVELENGTH: Record = { 600: 'Orange', 650: 'Red', } + +export const GRIPPER_LOCATION: 'mounted' = 'mounted' diff --git a/protocol-designer/src/file-types.ts b/protocol-designer/src/file-types.ts index f8923d7a9e1..8a19aac0108 100644 --- a/protocol-designer/src/file-types.ts +++ b/protocol-designer/src/file-types.ts @@ -5,12 +5,13 @@ import type { ProtocolFile as ProtocolFileV3 } from '@opentrons/shared-data/prot import type { ProtocolFile as ProtocolFileV4 } from '@opentrons/shared-data/protocol/types/schemaV4' import type { ProtocolFile as ProtocolFileV5 } from '@opentrons/shared-data/protocol/types/schemaV5' import type { ProtocolFile as ProtocolFileV6 } from '@opentrons/shared-data/protocol/types/schemaV6' +import type { LiquidEntities } from '@opentrons/step-generation' export interface PDMetadata { // pipetteId to tiprackModel pipetteTiprackAssignments: Record dismissedWarnings: DismissRoot['dismissedWarnings'] - ingredients: IngredRoot['ingredients'] + ingredients: LiquidEntities ingredLocations: IngredRoot['ingredLocations'] savedStepForms: StepformRoot['savedStepForms'] orderedStepIds: StepformRoot['orderedStepIds'] diff --git a/protocol-designer/src/load-file/migration/8_5_0.ts b/protocol-designer/src/load-file/migration/8_5_0.ts index 55cd6e0baeb..6cf583da9ae 100644 --- a/protocol-designer/src/load-file/migration/8_5_0.ts +++ b/protocol-designer/src/load-file/migration/8_5_0.ts @@ -1,7 +1,8 @@ import floor from 'lodash/floor' import { swatchColors } from '../../organisms/DefineLiquidsModal/swatchColors' +import { getMigratedPositionFromTop } from './utils/getMigrationPositionFromTop' +import { getAdditionalEquipmentLocationUpdate } from './utils/getAdditionalEquipmentLocationUpdate' import type { - LabwareDefinition2, LoadLabwareCreateCommand, ProtocolFile, } from '@opentrons/shared-data' @@ -9,51 +10,16 @@ import type { LiquidEntities } from '@opentrons/step-generation' import type { DesignerApplicationDataV8_5 } from '../../file-data/selectors' import type { DesignerApplicationData } from './utils/getLoadLiquidCommands' -const getMigratedPositionFromTop = ( - labwareDefinitions: { - [definitionId: string]: LabwareDefinition2 - }, - loadLabwareCommands: LoadLabwareCreateCommand[], - labware: string, - type: 'aspirate' | 'dispense' | 'mix' -): number => { - const matchingLoadLabware = loadLabwareCommands.find( - command => - command.commandType === 'loadLabware' && - command.params.labwareId === labware - ) - if (matchingLoadLabware == null) { - console.error( - `expected to find matching ${type} labware load command but could not with ${type}_labware from form data as ${labware}` - ) - } - const labwareUri = - matchingLoadLabware != null - ? `${matchingLoadLabware.params.namespace}/${matchingLoadLabware.params.loadName}/${matchingLoadLabware.params.version}` - : '' - - // early exit for dispense_labware equaling trashBin or wasteChute - if (labwareDefinitions[labwareUri] == null) { - return 0 - } - - const matchingLabwareWellDepth = labwareUri - ? labwareDefinitions[labwareUri].wells.A1.depth - : 0 - - if (matchingLabwareWellDepth === 0) { - console.error( - `error in finding the ${type} labware well depth with labware uri ${labwareUri}` - ) - } - return matchingLabwareWellDepth -} - export const migrateFile = ( appData: ProtocolFile ): ProtocolFile => { - const { designerApplication, commands, labwareDefinitions, liquids } = appData - + const { + designerApplication, + commands, + labwareDefinitions, + liquids, + robot, + } = appData if (designerApplication == null || designerApplication?.data == null) { throw Error('The designerApplication key in your file is corrupt.') } @@ -170,6 +136,26 @@ export const migrateFile = ( {} ) + const updatedInitialStep = Object.values(savedStepForms).reduce( + (acc, form) => { + const { id } = form + if (id === '__INITIAL_DECK_SETUP_STEP__') { + return { + ...acc, + [id]: { + ...form, + ...getAdditionalEquipmentLocationUpdate( + commands, + robot.model, + savedStepForms + ), + }, + } + } + return acc + }, + {} + ) return { ...appData, designerApplication: { @@ -179,6 +165,7 @@ export const migrateFile = ( ingredients: migratedIngredients, savedStepForms: { ...designerApplication.data.savedStepForms, + ...updatedInitialStep, ...savedStepsWithUpdatedMoveLiquidFields, ...savedStepsWithUpdatedMixFields, }, diff --git a/protocol-designer/src/load-file/migration/utils/getAdditionalEquipmentLocationUpdate.ts b/protocol-designer/src/load-file/migration/utils/getAdditionalEquipmentLocationUpdate.ts new file mode 100644 index 00000000000..e6ea20e8c93 --- /dev/null +++ b/protocol-designer/src/load-file/migration/utils/getAdditionalEquipmentLocationUpdate.ts @@ -0,0 +1,270 @@ +import { + WASTE_CHUTE_ADDRESSABLE_AREAS, + FLEX_ROBOT_TYPE, + OT2_ROBOT_TYPE, + MOVABLE_TRASH_ADDRESSABLE_AREAS, + WASTE_CHUTE_CUTOUT, +} from '@opentrons/shared-data' +import { COLUMN_4_SLOTS, uuid } from '@opentrons/step-generation' +import { getUnoccupiedSlotForTrash } from '../../../step-forms' +import { getCutoutIdByAddressableArea } from '../../../utils' +import { GRIPPER_LOCATION } from '../../../constants' +import type { + AddressableAreaName, + CreateCommand, + LoadLabwareCreateCommand, + MoveLabwareCreateCommand, + MoveToAddressableAreaCreateCommand, + MoveToAddressableAreaForDropTipCreateCommand, + RobotType, +} from '@opentrons/shared-data' +import type { SavedStepFormState } from '../../../step-forms' + +export type LocationUpdate = Record + +export interface AdditionalEquipmentLocationUpdate { + trashBinLocationUpdate: LocationUpdate + wasteChuteLocationUpdate: LocationUpdate + stagingAreaLocationUpdate: LocationUpdate + gripperLocationUpdate: LocationUpdate +} + +const findTrashBinId = (savedStepForms: SavedStepFormState): string | null => { + if (!savedStepForms) { + return null + } + + for (const stepForm of Object.values(savedStepForms)) { + if (stepForm.stepType === 'moveLiquid') { + if (stepForm.dispense_labware.toLowerCase().includes('trash')) { + return stepForm.dispense_labware + } + if (stepForm.dropTip_location.toLowerCase().includes('trash')) { + return stepForm.dropTip_location + } + if (stepForm.blowout_location?.toLowerCase().includes('trash')) { + return stepForm.blowout_location + } + } + if (stepForm.stepType === 'mix') { + if (stepForm.dropTip_location.toLowerCase().includes('trash')) { + return stepForm.dropTip_location + } else if (stepForm.blowout_location?.toLowerCase().includes('trash')) { + return stepForm.blowout_location + } + } + } + + return null +} + +const getStagingAreaSlotNames = ( + commands: CreateCommand[], + commandType: 'moveLabware' | 'loadLabware', + locationKey: 'newLocation' | 'location' +): AddressableAreaName[] => { + return ( + Object.values(commands) + .filter( + ( + command + ): command is MoveLabwareCreateCommand | LoadLabwareCreateCommand => + command.commandType === commandType && + // @ts-expect-error: ts doesn't trust that locationkey is actually found in the command params + command.params[locationKey] !== 'offDeck' && + // @ts-expect-error + command.params[locationKey] !== 'systemLocation' && + // @ts-expect-error + 'addressableAreaName' in command.params[locationKey] && + COLUMN_4_SLOTS.includes( + // @ts-expect-error + command.params[locationKey] + .addressableAreaName as AddressableAreaName + ) + ) + // @ts-expect-error + .map(command => command.params[locationKey].addressableAreaName) + ) +} + +export const getAdditionalEquipmentLocationUpdate = ( + commands: CreateCommand[], + robotType: RobotType, + savedStepForms: SavedStepFormState +): AdditionalEquipmentLocationUpdate => { + const isFlex = robotType === FLEX_ROBOT_TYPE + + const hasGripperCommands = Object.values(commands).some( + (command): command is MoveLabwareCreateCommand => + (command.commandType === 'moveLabware' && + command.params.strategy === 'usingGripper') || + command.commandType === 'absorbanceReader/closeLid' || + command.commandType === 'absorbanceReader/openLid' + ) + const hasWasteChuteCommands = Object.values(commands).some( + command => + (command.commandType === 'moveToAddressableArea' && + WASTE_CHUTE_ADDRESSABLE_AREAS.includes( + command.params.addressableAreaName as AddressableAreaName + )) || + (command.commandType === 'moveLabware' && + command.params.newLocation !== 'offDeck' && + command.params.newLocation !== 'systemLocation' && + 'addressableAreaName' in command.params.newLocation && + WASTE_CHUTE_ADDRESSABLE_AREAS.includes( + command.params.newLocation.addressableAreaName as AddressableAreaName + )) + ) + + const stagingAreaSlotNames = [ + ...new Set([ + ...getStagingAreaSlotNames(commands, 'moveLabware', 'newLocation'), + ...getStagingAreaSlotNames(commands, 'loadLabware', 'location'), + ]), + ] + + const unoccupiedSlotForTrash = hasWasteChuteCommands + ? '' + : getUnoccupiedSlotForTrash( + commands, + hasWasteChuteCommands, + stagingAreaSlotNames + ) + + const trashBinCommand = Object.values(commands).find( + ( + command + ): command is + | MoveToAddressableAreaCreateCommand + | MoveToAddressableAreaForDropTipCreateCommand => + (command.commandType === 'moveToAddressableArea' && + (MOVABLE_TRASH_ADDRESSABLE_AREAS.includes( + command.params.addressableAreaName as AddressableAreaName + ) || + command.params.addressableAreaName === 'fixedTrash')) || + command.commandType === 'moveToAddressableAreaForDropTip' + ) + + const trashAddressableAreaName = trashBinCommand?.params.addressableAreaName + + const trashBinId = findTrashBinId(savedStepForms) + const trashCutoutId = + trashAddressableAreaName != null + ? getCutoutIdByAddressableArea( + trashAddressableAreaName as AddressableAreaName, + isFlex ? 'trashBinAdapter' : 'fixedTrashSlot', + isFlex ? FLEX_ROBOT_TYPE : OT2_ROBOT_TYPE + ) + : null + + const moveLiquidStepWasteChute = + savedStepForms != null + ? Object.values(savedStepForms).find( + stepForm => + stepForm.stepType === 'moveLiquid' && + (stepForm.aspirate_labware.includes('wasteChute') || + stepForm.dispense_labware.includes('wasteChute') || + stepForm.dropTip_location.includes('wasteChute') || + stepForm.blowout_location?.includes('wasteChute')) + ) + : null + + let wasteChuteId: string | null = null + if (hasWasteChuteCommands && moveLiquidStepWasteChute != null) { + if (moveLiquidStepWasteChute.aspirate_labware.includes('wasteChute')) { + wasteChuteId = moveLiquidStepWasteChute.aspirate_labware + } else if ( + moveLiquidStepWasteChute.dispense_labware.includes('wasteChute') + ) { + wasteChuteId = moveLiquidStepWasteChute.dispense_labware + } else if ( + moveLiquidStepWasteChute.dropTip_location.includes('wasteChute') + ) { + wasteChuteId = moveLiquidStepWasteChute.dropTip_location + } else if ( + moveLiquidStepWasteChute.blowOut_location?.includes('wasteChute') + ) { + wasteChuteId = moveLiquidStepWasteChute.blowOut_location + } + // new wasteChuteId generated for if there are only moveLabware commands + } else if (hasWasteChuteCommands && moveLiquidStepWasteChute == null) { + wasteChuteId = `${uuid()}:wasteChute` + } + + let wasteChuteLocationUpdate: LocationUpdate = + hasWasteChuteCommands && wasteChuteId != null + ? { + [wasteChuteId]: WASTE_CHUTE_CUTOUT, + } + : {} + + const gripperId = `${uuid()}:gripper` + const gripperLocationUpdate: LocationUpdate = hasGripperCommands + ? { + [gripperId]: GRIPPER_LOCATION, + } + : {} + + const hardcodedTrashBinIdOt2 = `${uuid()}:trashBin` + const hardcodedTrashBinOt2 = { + [hardcodedTrashBinIdOt2]: getCutoutIdByAddressableArea( + 'fixedTrash' as AddressableAreaName, + 'fixedTrashSlot', + OT2_ROBOT_TYPE + ), + } + + let trashBinLocationUpdate: LocationUpdate = hasWasteChuteCommands + ? {} + : hardcodedTrashBinOt2 + + if (trashAddressableAreaName != null && trashBinId != null) { + trashBinLocationUpdate = { + [trashBinId]: trashCutoutId as string, + } + // in case the user has no pipetting steps, auto-generate a trashBin or wasteChute entity for Flex + } else if (isFlex && !hasWasteChuteCommands) { + const hardCodedTrashIdFlex = `${uuid()}:movableTrash${unoccupiedSlotForTrash}` + const hardCodedWasteChuteId = `${uuid()}:wasteChute` + + trashBinLocationUpdate = + unoccupiedSlotForTrash === WASTE_CHUTE_CUTOUT + ? {} + : { + [hardCodedTrashIdFlex]: getCutoutIdByAddressableArea( + `movableTrash${unoccupiedSlotForTrash}` as AddressableAreaName, + 'trashBinAdapter', + FLEX_ROBOT_TYPE + ), + } + wasteChuteLocationUpdate = + unoccupiedSlotForTrash === WASTE_CHUTE_CUTOUT + ? { + [hardCodedWasteChuteId]: WASTE_CHUTE_CUTOUT, + } + : {} + } + + const stagingAreaLocationUpdate: LocationUpdate = stagingAreaSlotNames.reduce( + (acc, slot) => { + const stagingAreaId = `${uuid()}:stagingArea` + const cutoutId = getCutoutIdByAddressableArea( + slot, + 'stagingAreaRightSlot', + isFlex ? FLEX_ROBOT_TYPE : OT2_ROBOT_TYPE + ) + return { + ...acc, + [stagingAreaId]: cutoutId, + } + }, + {} + ) + + return { + stagingAreaLocationUpdate, + gripperLocationUpdate, + wasteChuteLocationUpdate, + trashBinLocationUpdate, + } +} diff --git a/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts b/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts new file mode 100644 index 00000000000..f7a5b7d3f15 --- /dev/null +++ b/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts @@ -0,0 +1,44 @@ +import type { + LabwareDefinition2, + LoadLabwareCreateCommand, +} from '@opentrons/shared-data' + +export const getMigratedPositionFromTop = ( + labwareDefinitions: { + [definitionId: string]: LabwareDefinition2 + }, + loadLabwareCommands: LoadLabwareCreateCommand[], + labware: string, + type: 'aspirate' | 'dispense' | 'mix' +): number => { + const matchingLoadLabware = loadLabwareCommands.find( + command => + command.commandType === 'loadLabware' && + command.params.labwareId === labware + ) + if (matchingLoadLabware == null) { + console.error( + `expected to find matching ${type} labware load command but could not with ${type}_labware from form data as ${labware}` + ) + } + const labwareUri = + matchingLoadLabware != null + ? `${matchingLoadLabware.params.namespace}/${matchingLoadLabware.params.loadName}/${matchingLoadLabware.params.version}` + : '' + + // early exit for dispense_labware equaling trashBin or wasteChute + if (labwareDefinitions[labwareUri] == null) { + return 0 + } + + const matchingLabwareWellDepth = labwareUri + ? labwareDefinitions[labwareUri].wells.A1.depth + : 0 + + if (matchingLabwareWellDepth === 0) { + console.error( + `error in finding the ${type} labware well depth with labware uri ${labwareUri}` + ) + } + return matchingLabwareWellDepth +} diff --git a/protocol-designer/src/organisms/EditInstrumentsModal/PipetteOverview.tsx b/protocol-designer/src/organisms/EditInstrumentsModal/PipetteOverview.tsx index b058901c07f..67fefb2d40c 100644 --- a/protocol-designer/src/organisms/EditInstrumentsModal/PipetteOverview.tsx +++ b/protocol-designer/src/organisms/EditInstrumentsModal/PipetteOverview.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' import mapValues from 'lodash/mapValues' import { @@ -36,6 +36,7 @@ import type { } from '../../step-forms' import type { ThunkDispatch } from '../../types' import type { PipetteConfig } from './usePipetteConfig' +import { getAdditionalEquipmentEntities } from '../../step-forms/selectors' interface Gripper { name: AdditionalEquipmentName @@ -66,6 +67,12 @@ export function PipetteOverview({ }: PipetteOverviewProps): JSX.Element { const { t } = useTranslation(['create_new_protocol', 'protocol_overview']) const dispatch = useDispatch>() + const additionalEquipmentEntities = useSelector( + getAdditionalEquipmentEntities + ) + const gripperId = Object.values(additionalEquipmentEntities).find( + ae => ae.name === 'gripper' + )?.id const swapPipetteUpdate = mapValues(pipettes, pipette => { if (!pipette.mount) return pipette.mount @@ -228,7 +235,7 @@ export function PipetteOverview({ textDecoration={TYPOGRAPHY.textDecorationUnderline} padding={SPACING.spacing4} onClick={() => { - dispatch(toggleIsGripperRequired()) + dispatch(toggleIsGripperRequired(gripperId)) }} > diff --git a/protocol-designer/src/step-forms/actions/additionalItems.ts b/protocol-designer/src/step-forms/actions/additionalItems.ts index f9dbd78c45d..5458fad852f 100644 --- a/protocol-designer/src/step-forms/actions/additionalItems.ts +++ b/protocol-designer/src/step-forms/actions/additionalItems.ts @@ -2,10 +2,14 @@ import { uuid } from '../../utils' export interface ToggleIsGripperRequiredAction { type: 'TOGGLE_IS_GRIPPER_REQUIRED' + payload: { id: string } } -export const toggleIsGripperRequired = (): ToggleIsGripperRequiredAction => ({ +export const toggleIsGripperRequired = ( + id?: string +): ToggleIsGripperRequiredAction => ({ type: 'TOGGLE_IS_GRIPPER_REQUIRED', + payload: { id: id != null ? id : `${uuid()}:gripper` }, }) export type DeckFixture = 'wasteChute' | 'stagingArea' | 'trashBin' diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index 4be96492923..b1888f28970 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -5,21 +5,19 @@ import merge from 'lodash/merge' import omit from 'lodash/omit' import reduce from 'lodash/reduce' import { - FLEX_ROBOT_TYPE, - OT2_ROBOT_TYPE, getLabwareDefaultEngageHeight, getLabwareDefURI, getModuleType, MAGNETIC_MODULE_TYPE, MAGNETIC_MODULE_V1, THERMOCYCLER_MODULE_TYPE, - WASTE_CHUTE_ADDRESSABLE_AREAS, - MOVABLE_TRASH_ADDRESSABLE_AREAS, - WASTE_CHUTE_CUTOUT, } from '@opentrons/shared-data' import { rootReducer as labwareDefsRootReducer } from '../../labware-defs' -import { getCutoutIdByAddressableArea, uuid } from '../../utils' -import { INITIAL_DECK_SETUP_STEP_ID, SPAN7_8_10_11_SLOT } from '../../constants' +import { + GRIPPER_LOCATION, + INITIAL_DECK_SETUP_STEP_ID, + SPAN7_8_10_11_SLOT, +} from '../../constants' import { getPDMetadata } from '../../file-types' import { getDefaultsForStepType, @@ -29,7 +27,6 @@ import { PRESAVED_STEP_ID } from '../../steplist/types' import { getLabwareIsCompatible } from '../../utils/labwareModuleCompatibility' import { getLabwareOnModule } from '../../ui/modules/utils' import { nestedCombineReducers } from './nestedCombineReducers' -import { COLUMN_4_SLOTS } from '@opentrons/step-generation' import { _getPipetteEntitiesRootState, _getLabwareEntitiesRootState, @@ -40,7 +37,6 @@ import { createPresavedStepForm, getDeckItemIdInSlot, getIdsInRange, - getUnoccupiedSlotForTrash, } from '../utils' import type { Reducer } from 'redux' @@ -53,11 +49,7 @@ import type { LoadLabwareCreateCommand, LoadModuleCreateCommand, LoadPipetteCreateCommand, - MoveLabwareCreateCommand, - MoveToAddressableAreaCreateCommand, - MoveToAddressableAreaForDropTipCreateCommand, PipetteName, - AddressableAreaName, } from '@opentrons/shared-data' import type { RootState as LabwareDefsRootState } from '../../labware-defs' import type { LoadFileAction } from '../../load-file' @@ -108,6 +100,10 @@ import type { SelectMultipleStepsAction, } from '../../ui/steps/actions/types' import type { Action } from '../../types' +import type { + AdditionalEquipmentLocationUpdate, + LocationUpdate, +} from '../../load-file/migration/utils/getAdditionalEquipmentLocationUpdate' import type { NormalizedLabware, NormalizedLabwareById, @@ -243,6 +239,10 @@ export const initialDeckSetupStepForm: FormData = { labwareLocationUpdate: {}, pipetteLocationUpdate: {}, moduleLocationUpdate: {}, + trashBinLocationUpdate: {}, + wasteChuteLocationUpdate: {}, + stagingAreaLocationUpdate: {}, + gripperLocationUpdate: {}, } export const initialSavedStepFormsState: SavedStepFormState = { [INITIAL_DECK_SETUP_STEP_ID]: initialDeckSetupStepForm, @@ -372,6 +372,71 @@ export const savedStepForms = ( ...stepForm, })) } + case 'CREATE_DECK_FIXTURE': { + const { id, location, name } = action.payload + const prevInitialDeckSetupStep = + savedStepForms[INITIAL_DECK_SETUP_STEP_ID] + const locationUpdate = `${name}LocationUpdate` + return { + ...savedStepForms, + [INITIAL_DECK_SETUP_STEP_ID]: { + ...prevInitialDeckSetupStep, + [locationUpdate]: { + ...prevInitialDeckSetupStep[locationUpdate], + [id]: location, + }, + }, + } + } + case 'DELETE_DECK_FIXTURE': { + const { id } = action.payload + const name = id.split(':')[1] + const locationUpdate = `${name}LocationUpdate` + + return mapValues( + savedStepForms, + (form: FormData): FormData => { + const updatedLocation = omit(form[locationUpdate] || {}, id) + + return { + ...form, + [locationUpdate]: + Object.keys(updatedLocation).length > 0 ? updatedLocation : {}, + } + } + ) + } + case 'TOGGLE_IS_GRIPPER_REQUIRED': { + const { id } = action.payload + const prevInitialDeckSetupStep = + savedStepForms[INITIAL_DECK_SETUP_STEP_ID] + const gripperLocationUpdate: LocationUpdate = + prevInitialDeckSetupStep.gripperLocationUpdate + const gripperKey = Object.entries(gripperLocationUpdate).find( + ([_, value]) => value === GRIPPER_LOCATION + )?.[0] + + if (gripperKey == null) { + return { + ...savedStepForms, + [INITIAL_DECK_SETUP_STEP_ID]: { + ...prevInitialDeckSetupStep, + gripperLocationUpdate: { + ...gripperLocationUpdate, + [id]: GRIPPER_LOCATION, + }, + }, + } + } else { + return { + ...savedStepForms, + [INITIAL_DECK_SETUP_STEP_ID]: { + ...prevInitialDeckSetupStep, + gripperLocationUpdate: {}, + }, + } + } + } case 'DUPLICATE_LABWARE': case 'CREATE_CONTAINER': { // auto-update initial deck setup state. @@ -663,6 +728,8 @@ export const savedStepForms = ( (form.stepType === 'magnet' || form.stepType === 'temperature' || form.stepType === 'heaterShaker' || + form.stepType === 'absorbanceReader' || + form.stepType === 'thermocycler' || form.stepType === 'pause') && form.moduleId === moduleId ) { @@ -1109,293 +1176,80 @@ export const additionalEquipmentInvariantProperties = handleActions { const { file } = action.payload - const isFlex = file.robot.model === FLEX_ROBOT_TYPE - - const hasGripperCommands = Object.values(file.commands).some( - (command): command is MoveLabwareCreateCommand => - (command.commandType === 'moveLabware' && - command.params.strategy === 'usingGripper') || - command.commandType === 'absorbanceReader/closeLid' || - command.commandType === 'absorbanceReader/openLid' - ) - const hasWasteChuteCommands = Object.values(file.commands).some( - command => - (command.commandType === 'moveToAddressableArea' && - WASTE_CHUTE_ADDRESSABLE_AREAS.includes( - command.params.addressableAreaName as AddressableAreaName - )) || - (command.commandType === 'moveLabware' && - command.params.newLocation !== 'offDeck' && - 'addressableAreaName' in command.params.newLocation && - WASTE_CHUTE_ADDRESSABLE_AREAS.includes( - command.params.newLocation - .addressableAreaName as AddressableAreaName - )) - ) - const getStagingAreaSlotNames = ( - commandType: 'moveLabware' | 'loadLabware', - locationKey: 'newLocation' | 'location' - ): AddressableAreaName[] => { - return Object.values(file.commands) - .filter( - command => - command.commandType === commandType && - command.params[locationKey] !== 'offDeck' && - 'addressableAreaName' in command.params[locationKey] && - COLUMN_4_SLOTS.includes( - command.params[locationKey] - .addressableAreaName as AddressableAreaName - ) - ) - .map(command => command.params[locationKey].addressableAreaName) - } - - const stagingAreaSlotNames = [ - ...new Set([ - ...getStagingAreaSlotNames('moveLabware', 'newLocation'), - ...getStagingAreaSlotNames('loadLabware', 'location'), - ]), - ] - - const unoccupiedSlotForTrash = hasWasteChuteCommands - ? '' - : getUnoccupiedSlotForTrash( - file, - hasWasteChuteCommands, - stagingAreaSlotNames - ) - - const stagingAreas = stagingAreaSlotNames.reduce((acc, slot) => { - const stagingAreaId = `${uuid()}:stagingArea` - const cutoutId = getCutoutIdByAddressableArea( - slot, - 'stagingAreaRightSlot', - isFlex ? FLEX_ROBOT_TYPE : OT2_ROBOT_TYPE - ) - return { - ...acc, - [stagingAreaId]: { - name: 'stagingArea' as const, - id: stagingAreaId, - location: cutoutId, - }, - } - }, {}) - - const trashBinCommand = Object.values(file.commands).find( - ( - command - ): command is - | MoveToAddressableAreaCreateCommand - | MoveToAddressableAreaForDropTipCreateCommand => - (command.commandType === 'moveToAddressableArea' && - (MOVABLE_TRASH_ADDRESSABLE_AREAS.includes( - command.params.addressableAreaName as AddressableAreaName - ) || - command.params.addressableAreaName === 'fixedTrash')) || - command.commandType === 'moveToAddressableAreaForDropTip' - ) - - const trashAddressableAreaName = - trashBinCommand?.params.addressableAreaName const savedStepForms = file.designerApplication?.data?.savedStepForms - - const findTrashBinId = (): string | null => { - if (!savedStepForms) { - return null - } - - for (const stepForm of Object.values(savedStepForms)) { - if (stepForm.stepType === 'moveLiquid') { - if (stepForm.dispense_labware.toLowerCase().includes('trash')) { - return stepForm.dispense_labware - } - if (stepForm.dropTip_location.toLowerCase().includes('trash')) { - return stepForm.dropTip_location - } - if (stepForm.blowout_location?.toLowerCase().includes('trash')) { - return stepForm.blowout_location - } - } - if (stepForm.stepType === 'mix') { - if (stepForm.dropTip_location.toLowerCase().includes('trash')) { - return stepForm.dropTip_location - } else if ( - stepForm.blowout_location?.toLowerCase().includes('trash') - ) { - return stepForm.blowout_location - } - } + const initialDeckSetup: AdditionalEquipmentLocationUpdate = savedStepForms?.[ + INITIAL_DECK_SETUP_STEP_ID + ] as any + const { + gripperLocationUpdate, + trashBinLocationUpdate, + wasteChuteLocationUpdate, + stagingAreaLocationUpdate, + } = initialDeckSetup + + let gripper + if (Object.keys(gripperLocationUpdate).length > 0) { + const id = Object.keys(gripperLocationUpdate)[0] + gripper = { + [id]: { + name: 'gripper' as const, + id, + location: GRIPPER_LOCATION, + }, } - - return null } - - const trashBinId = findTrashBinId() - const trashCutoutId = - trashAddressableAreaName != null - ? getCutoutIdByAddressableArea( - trashAddressableAreaName as AddressableAreaName, - isFlex ? 'trashBinAdapter' : 'fixedTrashSlot', - isFlex ? FLEX_ROBOT_TYPE : OT2_ROBOT_TYPE - ) - : null - - const trashBin = - trashAddressableAreaName != null && trashBinId != null - ? { - [trashBinId]: { - name: 'trashBin' as const, - id: trashBinId, - // TODO(should be type cutoutId when location is type cutoutId) - location: trashCutoutId as string, - }, - } - : null - - if (trashBinCommand == null && file.robot.model === OT2_ROBOT_TYPE) { - console.error( - 'expected to find a fixedTrash command for the OT-2 but could not' - ) + let trashBin + if (Object.keys(trashBinLocationUpdate).length > 0) { + const id = Object.keys(trashBinLocationUpdate)[0] + trashBin = { + [id]: { + name: 'trashBin' as const, + id, + location: Object.values(trashBinLocationUpdate)[0], + }, + } } - - const moveLiquidStepWasteChute = - savedStepForms != null - ? Object.values(savedStepForms).find( - stepForm => - stepForm.stepType === 'moveLiquid' && - (stepForm.aspirate_labware.includes('wasteChute') || - stepForm.dispense_labware.includes('wasteChute') || - stepForm.dropTip_location.includes('wasteChute') || - stepForm.blowout_location?.includes('wasteChute')) - ) - : null - - let wasteChuteId: string | null = null - if (hasWasteChuteCommands && moveLiquidStepWasteChute != null) { - if (moveLiquidStepWasteChute.aspirate_labware.includes('wasteChute')) { - wasteChuteId = moveLiquidStepWasteChute.aspirate_labware - } else if ( - moveLiquidStepWasteChute.dispense_labware.includes('wasteChute') - ) { - wasteChuteId = moveLiquidStepWasteChute.dispense_labware - } else if ( - moveLiquidStepWasteChute.dropTip_location.includes('wasteChute') - ) { - wasteChuteId = moveLiquidStepWasteChute.dropTip_location - } else if ( - moveLiquidStepWasteChute.blowOut_location?.includes('wasteChute') - ) { - wasteChuteId = moveLiquidStepWasteChute.blowOut_location + let wasteChute + if (Object.keys(wasteChuteLocationUpdate).length > 0) { + const id = Object.keys(wasteChuteLocationUpdate)[0] + wasteChute = { + [id]: { + name: 'wasteChute' as const, + id, + location: Object.values(wasteChuteLocationUpdate)[0], + }, } - // new wasteChuteId generated for if there are only moveLabware commands - } else if (hasWasteChuteCommands && moveLiquidStepWasteChute == null) { - wasteChuteId = `${uuid()}:wasteChute` } - - const wasteChute = - hasWasteChuteCommands && wasteChuteId != null - ? { - [wasteChuteId]: { - name: 'wasteChute' as const, - id: wasteChuteId, - location: 'cutoutD3', - }, - } - : {} - - const gripperId = `${uuid()}:gripper` - const gripper = hasGripperCommands - ? { - [gripperId]: { - name: 'gripper' as const, - id: gripperId, + let stagingArea + if (Object.keys(stagingAreaLocationUpdate).length > 0) { + stagingArea = Object.entries(stagingAreaLocationUpdate).reduce( + (acc, [id, location]) => ({ + ...acc, + [id]: { + name: 'stagingArea' as const, + id, + location, }, - } - : {} - const hardcodedTrashBinIdOt2 = `${uuid()}:fixedTrash` - const hardcodedTrashBinOt2 = { - [hardcodedTrashBinIdOt2]: { - name: 'trashBin' as const, - id: hardcodedTrashBinIdOt2, - location: getCutoutIdByAddressableArea( - 'fixedTrash' as AddressableAreaName, - 'fixedTrashSlot', - OT2_ROBOT_TYPE - ), - }, + }), + {} + ) } - const hardcodedTrashAddressableAreaName = - unoccupiedSlotForTrash === WASTE_CHUTE_CUTOUT - ? 'wasteChute' - : `movableTrash${unoccupiedSlotForTrash}` - - const hardcodedTrashIdFlex = `${uuid()}:${hardcodedTrashAddressableAreaName}` - - const hardCodedTrashLocation = - unoccupiedSlotForTrash === '' - ? '' - : unoccupiedSlotForTrash === WASTE_CHUTE_CUTOUT - ? WASTE_CHUTE_CUTOUT - : getCutoutIdByAddressableArea( - hardcodedTrashAddressableAreaName as AddressableAreaName, - 'trashBinAdapter', - FLEX_ROBOT_TYPE - ) - const hardcodedTrashFlex = { - [hardcodedTrashIdFlex]: { - name: - unoccupiedSlotForTrash === WASTE_CHUTE_CUTOUT - ? ('wasteChute' as const) - : ('trashBin' as const), - id: hardcodedTrashIdFlex, - location: hasWasteChuteCommands ? '' : hardCodedTrashLocation, - }, - } - if (isFlex) { - if (trashBin != null) { - return { - ...state, - ...gripper, - ...trashBin, - ...wasteChute, - ...stagingAreas, - } - } else if (trashBin == null && !hasWasteChuteCommands) { - // always hardcode a trash bin or waste chute when no pipetting command is provided since return tip - // is not supported - return { - ...state, - ...gripper, - ...hardcodedTrashFlex, - ...wasteChute, - ...stagingAreas, - } - } else { - return { - ...state, - ...gripper, - ...wasteChute, - ...stagingAreas, - } - } - } else { - if (trashBin != null) { - return { ...state, ...trashBin } - } else { - // always hardcode a trash bin when no pipetting command is provided since no trash for - // OT-2 is not supported - return { ...state, ...hardcodedTrashBinOt2 } - } + return { + ...state, + ...trashBin, + ...wasteChute, + ...gripper, + ...stagingArea, } }, - + // @ts-expect-error TOGGLE_IS_GRIPPER_REQUIRED: ( - state: NormalizedAdditionalEquipmentById + state: NormalizedAdditionalEquipmentById, + action: ToggleIsGripperRequiredAction ): NormalizedAdditionalEquipmentById => { let updatedEquipment = { ...state } - const gripperId = `${uuid()}:gripper` + const id = action.payload.id const gripperKey = Object.keys(updatedEquipment).find( key => updatedEquipment[key].name === 'gripper' ) @@ -1405,9 +1259,9 @@ export const additionalEquipmentInvariantProperties = handleActions { - if ( - ae.name === 'wasteChute' || - ae.name === 'stagingArea' || - ae.name === 'trashBin' - ) { + if (ae.name !== 'gripper') { aeEntities[ae.id] = ae } return aeEntities diff --git a/protocol-designer/src/step-forms/test/utils.test.ts b/protocol-designer/src/step-forms/test/utils.test.ts index f6cad4e12a3..8468f1428d8 100644 --- a/protocol-designer/src/step-forms/test/utils.test.ts +++ b/protocol-designer/src/step-forms/test/utils.test.ts @@ -34,347 +34,342 @@ describe('getIdsInRange', () => { }) describe('getUnoccupiedSlotForTrash', () => { it('returns slot C1 when all other slots are occupied by modules, labware, moveLabware, and staging areas', () => { - const mockPDFile: any = { - commands: [ - { - key: '7353ae60-c85e-45c4-8d69-59ff3a97debd', - commandType: 'loadModule', - params: { - model: 'thermocyclerModuleV2', - location: { slotName: 'B1' }, - moduleId: - '771f390f-01a9-4615-9c4e-4dbfc95844b5:thermocyclerModuleType', - }, + const mockCreateCommands: CreateCommand[] = [ + { + key: '7353ae60-c85e-45c4-8d69-59ff3a97debd', + commandType: 'loadModule', + params: { + model: 'thermocyclerModuleV2', + location: { slotName: 'B1' }, + moduleId: + '771f390f-01a9-4615-9c4e-4dbfc95844b5:thermocyclerModuleType', }, - { - key: '82e5d08f-ceae-4eb8-8600-b61a973d47d9', - commandType: 'loadModule', - params: { - model: 'heaterShakerModuleV1', - location: { slotName: 'D1' }, - moduleId: - 'b9df03af-3844-4ae8-a1cf-cae61a6b4992:heaterShakerModuleType', - }, + }, + { + key: '82e5d08f-ceae-4eb8-8600-b61a973d47d9', + commandType: 'loadModule', + params: { + model: 'heaterShakerModuleV1', + location: { slotName: 'D1' }, + moduleId: + 'b9df03af-3844-4ae8-a1cf-cae61a6b4992:heaterShakerModuleType', }, - { - key: '49bc2a29-a7d2-42a6-8610-e07a9ad166df', - commandType: 'loadModule', - params: { - model: 'temperatureModuleV2', - location: { slotName: 'D3' }, - moduleId: - '52bea856-eea6-473c-80df-b316f3559692:temperatureModuleType', - }, + }, + { + key: '49bc2a29-a7d2-42a6-8610-e07a9ad166df', + commandType: 'loadModule', + params: { + model: 'temperatureModuleV2', + location: { slotName: 'D3' }, + moduleId: + '52bea856-eea6-473c-80df-b316f3559692:temperatureModuleType', }, - { - key: '864fadd7-f2c1-400a-b2ef-24d0c887a3c8', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Tip Rack 50 µL', - labwareId: - '88881828-037c-4445-ba57-121164f4a53a:opentrons/opentrons_flex_96_tiprack_50ul/1', - loadName: 'opentrons_flex_96_tiprack_50ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'C2' }, - }, + }, + { + key: '864fadd7-f2c1-400a-b2ef-24d0c887a3c8', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL', + labwareId: + '88881828-037c-4445-ba57-121164f4a53a:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'C2' }, }, - { - key: '79994418-d664-4884-9441-4b0fa62bd143', - commandType: 'loadLabware', - params: { - displayName: 'Bio-Rad 96 Well Plate 200 µL PCR', - labwareId: - '733c04a8-ae8c-449f-a1f9-ca3783fdda58:opentrons/biorad_96_wellplate_200ul_pcr/2', - loadName: 'biorad_96_wellplate_200ul_pcr', - namespace: 'opentrons', - version: 2, - location: { addressableAreaName: 'A4' }, - }, + }, + { + key: '79994418-d664-4884-9441-4b0fa62bd143', + commandType: 'loadLabware', + params: { + displayName: 'Bio-Rad 96 Well Plate 200 µL PCR', + labwareId: + '733c04a8-ae8c-449f-a1f9-ca3783fdda58:opentrons/biorad_96_wellplate_200ul_pcr/2', + loadName: 'biorad_96_wellplate_200ul_pcr', + namespace: 'opentrons', + version: 2, + location: { addressableAreaName: 'A4' }, + }, + }, + { + key: 'b2170a2c-d202-4129-9cd7-ffa4e35d57bb', + commandType: 'loadLabware', + params: { + displayName: 'Corning 24 Well Plate 3.4 mL Flat', + labwareId: + '32e97c67-866e-4153-bcb7-2b86b1d3f1fe:opentrons/corning_24_wellplate_3.4ml_flat/2', + loadName: 'corning_24_wellplate_3.4ml_flat', + namespace: 'opentrons', + version: 2, + location: { slotName: 'B3' }, }, - { - key: 'b2170a2c-d202-4129-9cd7-ffa4e35d57bb', - commandType: 'loadLabware', - params: { - displayName: 'Corning 24 Well Plate 3.4 mL Flat', + }, + { + key: 'fb1807fe-ca16-4f75-b44d-803d704c7d98', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL', + labwareId: + '11fdsa8b1-bf4b-4a6c-80cb-b8e5bdfe309b:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { labwareId: '32e97c67-866e-4153-bcb7-2b86b1d3f1fe:opentrons/corning_24_wellplate_3.4ml_flat/2', - loadName: 'corning_24_wellplate_3.4ml_flat', - namespace: 'opentrons', - version: 2, - location: { slotName: 'B3' }, }, }, - { - key: 'fb1807fe-ca16-4f75-b44d-803d704c7d98', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Tip Rack 50 µL', - labwareId: - '11fdsa8b1-bf4b-4a6c-80cb-b8e5bdfe309b:opentrons/opentrons_flex_96_tiprack_50ul/1', - loadName: 'opentrons_flex_96_tiprack_50ul', - namespace: 'opentrons', - version: 1, - location: { - labwareId: - '32e97c67-866e-4153-bcb7-2b86b1d3f1fe:opentrons/corning_24_wellplate_3.4ml_flat/2', - }, - }, + }, + { + commandType: 'moveLabware', + key: '1395243a-958f-4305-9687-52cdaf39f2b6', + params: { + labwareId: + '733c04a8-ae8c-449f-a1f9-ca3783fdda58:opentrons/biorad_96_wellplate_200ul_pcr/2', + strategy: 'usingGripper', + newLocation: { slotName: 'C1' }, }, - { - commandType: 'moveLabware', - key: '1395243a-958f-4305-9687-52cdaf39f2b6', - params: { - labwareId: - '733c04a8-ae8c-449f-a1f9-ca3783fdda58:opentrons/biorad_96_wellplate_200ul_pcr/2', - strategy: 'usingGripper', - newLocation: { slotName: 'C1' }, - }, + }, + { + commandType: 'moveLabware', + key: '4e39e7ec-4ada-4e3c-8369-1ff7421061a9', + params: { + labwareId: + '32e97c67-866e-4153-bcb7-2b86b1d3f1fe:opentrons/corning_24_wellplate_3.4ml_flat/2', + strategy: 'usingGripper', + newLocation: { addressableAreaName: 'A4' }, }, - { - commandType: 'moveLabware', - key: '4e39e7ec-4ada-4e3c-8369-1ff7421061a9', - params: { - labwareId: - '32e97c67-866e-4153-bcb7-2b86b1d3f1fe:opentrons/corning_24_wellplate_3.4ml_flat/2', - strategy: 'usingGripper', - newLocation: { addressableAreaName: 'A4' }, - }, - }, - ] as CreateCommand[], - } + }, + ] const mockStagingAreaSlotNames: AddressableAreaName[] = ['A4', 'B4'] const mockHasWasteChuteCommands = false expect( getUnoccupiedSlotForTrash( - mockPDFile, + mockCreateCommands, mockHasWasteChuteCommands, mockStagingAreaSlotNames ) ).toStrictEqual('C3') }) it('returns cutoutD3 for waste chute when every slot is occupied except for D3 on a staging area', () => { - const mockPDFile: any = { - commands: [ - { - key: '159e778d-0fc5-4d24-a662-b1e59a7babda', - commandType: 'loadModule', - params: { - model: 'thermocyclerModuleV2', - location: { slotName: 'B1' }, - moduleId: - '8932e104-7d57-42cf-88e4-ade334c84a76:thermocyclerModuleType', - }, + const mockCommands: CreateCommand[] = [ + { + key: '159e778d-0fc5-4d24-a662-b1e59a7babda', + commandType: 'loadModule', + params: { + model: 'thermocyclerModuleV2', + location: { slotName: 'B1' }, + moduleId: + '8932e104-7d57-42cf-88e4-ade334c84a76:thermocyclerModuleType', }, - { - key: '7d1fdcce-fa27-4520-8f97-a901751a4396', - commandType: 'loadModule', - params: { - model: 'temperatureModuleV2', - location: { slotName: 'C1' }, + }, + { + key: '7d1fdcce-fa27-4520-8f97-a901751a4396', + commandType: 'loadModule', + params: { + model: 'temperatureModuleV2', + location: { slotName: 'C1' }, + moduleId: + '2944a6a5-45f7-4d96-a4a2-d2853206a9f0:temperatureModuleType', + }, + }, + { + key: '1c223945-bfa3-4174-9923-5ed84afd1820', + commandType: 'loadModule', + params: { + model: 'heaterShakerModuleV1', + location: { slotName: 'D1' }, + moduleId: + '528620a6-6eb9-4000-bce3-a58809e16d4c:heaterShakerModuleType', + }, + }, + { + key: 'e06d0fd5-2ca8-4d0a-bcfd-4121849604da', + commandType: 'loadModule', + params: { + model: 'magneticBlockV1', + location: { slotName: 'D2' }, + moduleId: 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', + }, + }, + { + key: 'f49ebdff-9780-4ca0-994c-2d2dd7c04b1d', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons 96 Well Aluminum Block', + labwareId: + 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', + loadName: 'opentrons_96_well_aluminum_block', + namespace: 'opentrons', + version: 1, + location: { moduleId: '2944a6a5-45f7-4d96-a4a2-d2853206a9f0:temperatureModuleType', }, }, - { - key: '1c223945-bfa3-4174-9923-5ed84afd1820', - commandType: 'loadModule', - params: { - model: 'heaterShakerModuleV1', - location: { slotName: 'D1' }, + }, + { + key: 'dda244f9-ff80-4ede-a585-1a546a88ee77', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons 96 PCR Heater-Shaker Adapter', + labwareId: + '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', + loadName: 'opentrons_96_pcr_adapter', + namespace: 'opentrons', + version: 1, + location: { moduleId: '528620a6-6eb9-4000-bce3-a58809e16d4c:heaterShakerModuleType', }, }, - { - key: 'e06d0fd5-2ca8-4d0a-bcfd-4121849604da', - commandType: 'loadModule', - params: { - model: 'magneticBlockV1', - location: { slotName: 'D2' }, - moduleId: 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', - }, + }, + { + key: '8c28ac95-c8d0-4481-8204-26b1babb54bf', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL', + labwareId: + 'c80cffe7-d89d-430e-ba96-3c12f879e993:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'C3' }, }, - { - key: 'f49ebdff-9780-4ca0-994c-2d2dd7c04b1d', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons 96 Well Aluminum Block', - labwareId: - 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', - loadName: 'opentrons_96_well_aluminum_block', - namespace: 'opentrons', - version: 1, - location: { - moduleId: - '2944a6a5-45f7-4d96-a4a2-d2853206a9f0:temperatureModuleType', - }, - }, + }, + { + key: 'f0357fde-125a-464c-98ed-b1b9492daab8', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (1)', + labwareId: + '0a2d4b6f-a43d-428a-98f2-284809596776:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'A3' }, }, - { - key: 'dda244f9-ff80-4ede-a585-1a546a88ee77', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons 96 PCR Heater-Shaker Adapter', - labwareId: - '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', - loadName: 'opentrons_96_pcr_adapter', - namespace: 'opentrons', - version: 1, - location: { - moduleId: - '528620a6-6eb9-4000-bce3-a58809e16d4c:heaterShakerModuleType', - }, - }, - }, - { - key: '8c28ac95-c8d0-4481-8204-26b1babb54bf', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Tip Rack 50 µL', - labwareId: - 'c80cffe7-d89d-430e-ba96-3c12f879e993:opentrons/opentrons_flex_96_tiprack_50ul/1', - loadName: 'opentrons_flex_96_tiprack_50ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'C3' }, - }, - }, - { - key: 'f0357fde-125a-464c-98ed-b1b9492daab8', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (1)', - labwareId: - '0a2d4b6f-a43d-428a-98f2-284809596776:opentrons/opentrons_flex_96_filtertiprack_200ul/1', - loadName: 'opentrons_flex_96_filtertiprack_200ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'A3' }, - }, - }, - { - key: 'e27ba758-8d28-486f-a443-6e2276842ad0', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (2)', - labwareId: - '417a6bb2-8831-4b4d-840b-7d9329606865:opentrons/opentrons_flex_96_filtertiprack_200ul/1', - loadName: 'opentrons_flex_96_filtertiprack_200ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'B3' }, - }, + }, + { + key: 'e27ba758-8d28-486f-a443-6e2276842ad0', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (2)', + labwareId: + '417a6bb2-8831-4b4d-840b-7d9329606865:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'B3' }, }, - { - key: '37848c2a-4a1b-44f0-851a-d264368c47f8', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (3)', - labwareId: - 'ebb13651-0a60-4f42-ab85-f7084aeb0c08:opentrons/opentrons_flex_96_filtertiprack_200ul/1', - loadName: 'opentrons_flex_96_filtertiprack_200ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'A2' }, - }, + }, + { + key: '37848c2a-4a1b-44f0-851a-d264368c47f8', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (3)', + labwareId: + 'ebb13651-0a60-4f42-ab85-f7084aeb0c08:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'A2' }, }, - { - key: '768626df-b249-4d68-8f95-193b03113457', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (4)', - labwareId: - 'b17e8c1b-a308-4eaa-a852-10ad300ddea8:opentrons/opentrons_flex_96_filtertiprack_200ul/1', - loadName: 'opentrons_flex_96_filtertiprack_200ul', - namespace: 'opentrons', - version: 1, - location: { slotName: 'B2' }, - }, + }, + { + key: '768626df-b249-4d68-8f95-193b03113457', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (4)', + labwareId: + 'b17e8c1b-a308-4eaa-a852-10ad300ddea8:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'B2' }, }, - { - key: 'b12a4e6e-7ffc-421f-a2b6-44ae49d6f7bf', - commandType: 'loadLabware', - params: { - displayName: 'Reagent Plate', + }, + { + key: 'b12a4e6e-7ffc-421f-a2b6-44ae49d6f7bf', + commandType: 'loadLabware', + params: { + displayName: 'Reagent Plate', + labwareId: + 'aab3280f-6e7b-4e60-8326-c1d38999e08f:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', + namespace: 'opentrons', + version: 2, + location: { labwareId: - 'aab3280f-6e7b-4e60-8326-c1d38999e08f:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', - loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', - namespace: 'opentrons', - version: 2, - location: { - labwareId: - 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', - }, + 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', }, }, - { - key: 'e6863a1e-8aa0-4484-9aff-74ea9195a815', - commandType: 'loadLabware', - params: { - displayName: 'Sample Plate 1', + }, + { + key: 'e6863a1e-8aa0-4484-9aff-74ea9195a815', + commandType: 'loadLabware', + params: { + displayName: 'Sample Plate 1', + labwareId: + '8e755287-33cb-483f-b525-fff876893754:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', + namespace: 'opentrons', + version: 2, + location: { labwareId: - '8e755287-33cb-483f-b525-fff876893754:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', - loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', - namespace: 'opentrons', - version: 2, - location: { - labwareId: - '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', - }, + '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', }, }, - { - key: 'b29f48ef-3b20-457e-8499-df709818c47f', - commandType: 'loadLabware', - params: { - displayName: 'NEST 96 Deep Well Plate 2mL', - labwareId: - 'f0d30267-b0f6-493a-b0ea-70303428fa83:opentrons/nest_96_wellplate_2ml_deep/2', - loadName: 'nest_96_wellplate_2ml_deep', - namespace: 'opentrons', - version: 2, - location: { - moduleId: - 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', - }, + }, + { + key: 'b29f48ef-3b20-457e-8499-df709818c47f', + commandType: 'loadLabware', + params: { + displayName: 'NEST 96 Deep Well Plate 2mL', + labwareId: + 'f0d30267-b0f6-493a-b0ea-70303428fa83:opentrons/nest_96_wellplate_2ml_deep/2', + loadName: 'nest_96_wellplate_2ml_deep', + namespace: 'opentrons', + version: 2, + location: { + moduleId: 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', }, }, - { - key: '50be2f72-c7bc-4fd4-b10c-2054b90f922d', - commandType: 'loadLabware', - params: { - displayName: 'NEST 12 Well Reservoir 15 mL', - labwareId: - 'b60bbc39-cd82-4ede-b744-e88777a32b62:opentrons/nest_12_reservoir_15ml/1', - loadName: 'nest_12_reservoir_15ml', - namespace: 'opentrons', - version: 1, - location: { slotName: 'C2' }, - }, + }, + { + key: '50be2f72-c7bc-4fd4-b10c-2054b90f922d', + commandType: 'loadLabware', + params: { + displayName: 'NEST 12 Well Reservoir 15 mL', + labwareId: + 'b60bbc39-cd82-4ede-b744-e88777a32b62:opentrons/nest_12_reservoir_15ml/1', + loadName: 'nest_12_reservoir_15ml', + namespace: 'opentrons', + version: 1, + location: { slotName: 'C2' }, }, - { - key: 'a2f0c011-9983-46d9-a3ae-763a04856651', - commandType: 'loadLabware', - params: { - displayName: 'Opentrons Flex 96 Tip Rack 50 µL (1)', - labwareId: - '0d3d02a6-6501-4f28-81b9-12b2fe66998b:opentrons/opentrons_flex_96_tiprack_50ul/1', - loadName: 'opentrons_flex_96_tiprack_50ul', - namespace: 'opentrons', - version: 1, - location: { addressableAreaName: 'D4' }, - }, + }, + { + key: 'a2f0c011-9983-46d9-a3ae-763a04856651', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL (1)', + labwareId: + '0d3d02a6-6501-4f28-81b9-12b2fe66998b:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { addressableAreaName: 'D4' }, }, - ], - } + }, + ] const mockStagingAreaSlotNames: AddressableAreaName[] = ['D4'] const mockHasWasteChuteCommands = false expect( getUnoccupiedSlotForTrash( - mockPDFile, + mockCommands, mockHasWasteChuteCommands, mockStagingAreaSlotNames ) diff --git a/protocol-designer/src/step-forms/utils/index.ts b/protocol-designer/src/step-forms/utils/index.ts index 9529cc09245..4090598868b 100644 --- a/protocol-designer/src/step-forms/utils/index.ts +++ b/protocol-designer/src/step-forms/utils/index.ts @@ -17,6 +17,7 @@ import { getCutoutIdByAddressableArea } from '../../utils' import type { LabwareDefByDefURI } from '../../labware-defs' import type { AddressableAreaName, + CreateCommand, CutoutId, DeckSlotId, LoadLabwareCreateCommand, @@ -34,7 +35,6 @@ import type { } from '@opentrons/step-generation' import type { DeckSlot } from '../../types' import type { FormData, HydratedFormData } from '../../form-types' -import type { PDProtocolFile } from '../../file-types' import type { AdditionalEquipmentOnDeck, InitialDeckSetup, @@ -296,7 +296,7 @@ export function getHydratedForm( } export const getUnoccupiedSlotForTrash = ( - file: PDProtocolFile, + commands: CreateCommand[], hasWasteChuteCommands: boolean, stagingAreaSlotNames: AddressableAreaName[] ): string => { @@ -308,7 +308,7 @@ export const getUnoccupiedSlotForTrash = ( FLEX_ROBOT_TYPE ) ) - const allLoadLabwareSlotNames = Object.values(file.commands) + const allLoadLabwareSlotNames = Object.values(commands) .filter( (command): command is LoadLabwareCreateCommand => command.commandType === 'loadLabware' @@ -326,7 +326,7 @@ export const getUnoccupiedSlotForTrash = ( return acc }, []) - const allLoadModuleSlotNames = Object.values(file.commands) + const allLoadModuleSlotNames = Object.values(commands) .filter( (command): command is LoadModuleCreateCommand => command.commandType === 'loadModule' @@ -340,7 +340,7 @@ export const getUnoccupiedSlotForTrash = ( } }) - const allMoveLabwareLocations = Object.values(file.commands) + const allMoveLabwareLocations = Object.values(commands) .filter( (command): command is MoveLabwareCreateCommand => command.commandType === 'moveLabware' diff --git a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts index 4344adc75ed..1d3b43d5a85 100644 --- a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts +++ b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts @@ -135,6 +135,10 @@ export function getDefaultsForStepType( labwareLocationUpdate: {}, moduleLocationUpdate: {}, pipetteLocationUpdate: {}, + trashBinLocationUpdate: {}, + wasteChuteLocationUpdate: {}, + stagingAreaLocationUpdate: {}, + gripperLocationUpdate: {}, } case 'magnet': diff --git a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts index 6601817e2c7..f65c0d0ec1a 100644 --- a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts +++ b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts @@ -132,6 +132,10 @@ describe('getDefaultsForStepType', () => { labwareLocationUpdate: {}, pipetteLocationUpdate: {}, moduleLocationUpdate: {}, + trashBinLocationUpdate: {}, + wasteChuteLocationUpdate: {}, + stagingAreaLocationUpdate: {}, + gripperLocationUpdate: {}, }) }) }) From 476c0a33360ea592e607de01236f02b78528d9ba Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Wed, 5 Feb 2025 14:53:42 -0500 Subject: [PATCH 52/81] feat(protocol-designer): utility functions for Python generation (#17419) # Overview These are utility functions for rendering basic objects into Python, to be used for Python code generation from Protocol Designer. AUTH-1385 ## Test Plan and Hands on Testing Added unit tests for all the JavaScript -> Python types we support. I'm also using this code in my private branch. ## Review requests Is this the right directory for a utils file? I noticed that there's both: - `step-generation/src/utils` - `step-generation/lib/utils` What's the difference? I'm planning to use these functions from both `protocol-designer` and `step-generation`. ## Risk assessment Low: nothing calls this code right now. --------- Co-authored-by: Jethary Alcid <66035149+jerader@users.noreply.github.com> --- .../src/__tests__/pythonFormat.test.ts | 49 ++++++++++++++ step-generation/src/utils/index.ts | 1 + step-generation/src/utils/pythonFormat.ts | 65 +++++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 step-generation/src/__tests__/pythonFormat.test.ts create mode 100644 step-generation/src/utils/pythonFormat.ts diff --git a/step-generation/src/__tests__/pythonFormat.test.ts b/step-generation/src/__tests__/pythonFormat.test.ts new file mode 100644 index 00000000000..ae0a6e828f7 --- /dev/null +++ b/step-generation/src/__tests__/pythonFormat.test.ts @@ -0,0 +1,49 @@ +import { describe, it, expect } from 'vitest' +import { formatPyStr, formatPyValue } from '../utils/pythonFormat' + +describe('pythonFormat utils', () => { + it('format string', () => { + expect( + formatPyStr(`Funky quotes " '\nNewline\tUnicode µ, Backslash\\`) + ).toEqual(`"Funky quotes \\" '\\nNewline\\tUnicode µ, Backslash\\\\"`) + }) + + it('format number', () => { + expect(formatPyValue(3.14)).toBe('3.14') + expect(formatPyValue(-1e-10)).toBe('-1e-10') + // this is the valid way to write these values in Python: + expect(formatPyValue(-1 / 0)).toBe('float("-Infinity")') + expect(formatPyValue(0 / 0)).toBe('float("NaN")') + }) + + it('format boolean', () => { + expect(formatPyValue(true)).toBe('True') + expect(formatPyValue(false)).toBe('False') + }) + + it('format list', () => { + expect( + formatPyValue(['hello', 'world', 2.71828, true, false, undefined]) + ).toBe('["hello", "world", 2.71828, True, False, None]') + }) + + it('format dict', () => { + // null: + expect(formatPyValue(null)).toBe('None') + // zero entries: + expect(formatPyValue({})).toBe('{}') + // one entry: + expect(formatPyValue({ one: 'two' })).toBe('{"one": "two"}') + expect(formatPyValue({ 3: 4 })).toBe('{"3": 4}') + // multiple entries: + expect(formatPyValue({ yes: true, no: false })).toBe( + '{\n "yes": True,\n "no": False,\n}' + ) + // nested entries: + expect( + formatPyValue({ hello: 'world', nested: { inner: 5, extra: 6 } }) + ).toBe( + '{\n "hello": "world",\n "nested": {\n "inner": 5,\n "extra": 6,\n },\n}' + ) + }) +}) diff --git a/step-generation/src/utils/index.ts b/step-generation/src/utils/index.ts index a4cee60e039..18d2ff703e4 100644 --- a/step-generation/src/utils/index.ts +++ b/step-generation/src/utils/index.ts @@ -27,4 +27,5 @@ export * from './safePipetteMovements' export * from './wasteChuteCommandsUtil' export * from './createTimelineFromRunCommands' export * from './constructInvariantContextFromRunCommands' +export * from './pythonFormat' export const uuid: () => string = uuidv4 diff --git a/step-generation/src/utils/pythonFormat.ts b/step-generation/src/utils/pythonFormat.ts new file mode 100644 index 00000000000..6efc6557542 --- /dev/null +++ b/step-generation/src/utils/pythonFormat.ts @@ -0,0 +1,65 @@ +/** Utility functions for Python code generation. */ + +const INDENT = ' ' + +/** Indent each of the lines in `text`. */ +export function indentPyLines(text: string): string { + return text + .split('\n') + .map(line => (line ? INDENT + line : line)) + .join('\n') +} + +/** Render an arbitrary JavaScript value to Python. */ +export function formatPyValue(value: any): string { + switch (typeof value) { + case 'undefined': + return 'None' + case 'boolean': + return value ? 'True' : 'False' + case 'number': + // `float("Infinity")` and `float("NaN")` is how you write those values in Python + return Number.isFinite(value) ? `${value}` : `float("${value}")` + case 'string': + return formatPyStr(value) + case 'object': + if (value === null) { + return 'None' + } else if (Array.isArray(value)) { + return formatPyList(value) + } else { + return formatPyDict(value as Record) + } + default: + throw Error('Cannot render value as Python', { cause: value }) + } +} + +/** Render the string value to Python. */ +export function formatPyStr(str: string): string { + // Later, we can do something more elegant like outputting 'single-quoted' if str contains + // double-quotes, but for now stringify() produces a valid and properly escaped Python string. + return JSON.stringify(str) +} + +/** Render an array value as a Python list. */ +export function formatPyList(list: any[]): string { + return `[${list.map(value => formatPyValue(value)).join(', ')}]` +} + +/** Render an object as a Python dict. */ +export function formatPyDict(dict: Record): string { + const dictEntries = Object.entries(dict) + // Render dict on single line if it has 1 entry, else render 1 entry per line. + if (dictEntries.length <= 1) { + return `{${dictEntries + .map(([key, value]) => `${formatPyStr(key)}: ${formatPyValue(value)}`) + .join(', ')}}` + } else { + return `{\n${indentPyLines( + dictEntries + .map(([key, value]) => `${formatPyStr(key)}: ${formatPyValue(value)}`) + .join(',\n') + )},\n}` + } +} From f16f6a0d2900be1511e3ff37ae7da698b375cb9b Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:05:26 -0500 Subject: [PATCH 53/81] =?UTF-8?q?feat(protocol-designer):=20add=20designer?= =?UTF-8?q?Application=20labware,=20pipettes,=20m=E2=80=A6=20(#17432)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …odules keys closes AUTH-1407 This PR introduces `designerApplication` top level keys for `modules`, `labware`, and `pipettes`. Then when you import a protocol, the migration will grab that info from the load commands and the `load-file` reducer will use that info to populate the `labwareEntities`, `pipetteEntities`, and `moduleEntities`. Additionally, this pr deprecates the `defaultValues` key that was not in use at all --- .../protocol/8/doItAllV3MigratedToV8.json | 30 ++++-- .../protocol/8/doItAllV4MigratedToV8.json | 37 +++++-- .../protocol/8/doItAllV7MigratedToV8.json | 54 ++++++++-- .../fixtures/protocol/8/doItAllV8.json | 41 +++++-- .../protocol/8/example_1_1_0MigratedToV8.json | 33 ++++-- .../fixtures/protocol/8/mix_8_0_0.json | 26 +++-- .../8/newAdvancedSettingsAndMultiTemp.json | 41 +++++-- .../8/ninetySixChannelFullAndColumn.json | 34 ++++-- .../8/thermocyclerOnOt2V7MigratedToV8.json | 26 +++-- .../src/file-data/__tests__/utils.test.tsx | 82 ++++++++++++++ .../src/file-data/selectors/fileCreator.ts | 43 ++------ .../src/file-data/selectors/utils.ts | 47 +++++++- protocol-designer/src/file-types.ts | 41 ++++--- .../src/load-file/migration/8_5_0.ts | 11 +- .../getEquipmentLoadInfoFromCommands.test.tsx | 67 ++++++++++++ .../utils/getEquipmentLoadInfoFromCommands.ts | 101 ++++++++++++++++++ .../src/step-forms/reducers/index.ts | 98 +++++------------ 17 files changed, 613 insertions(+), 199 deletions(-) create mode 100644 protocol-designer/src/file-data/__tests__/utils.test.tsx create mode 100644 protocol-designer/src/load-file/migration/utils/__tests__/getEquipmentLoadInfoFromCommands.test.tsx create mode 100644 protocol-designer/src/load-file/migration/utils/getEquipmentLoadInfoFromCommands.ts diff --git a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json index bfe4767cdff..48c933990a4 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": [ "opentrons/opentrons_96_tiprack_300ul/1" @@ -266,7 +260,27 @@ "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", "54dc3200-75c7-11ea-b42f-4b64e50f43e5", "a4cee9a0-75dc-11ea-b42f-4b64e50f43e5" - ] + ], + "pipettes": { + "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": { + "pipetteName": "p300_single_gen2" + } + }, + "modules": {}, + "labware": { + "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1": { + "displayName": "Opentrons 96 Tip Rack 300 µL", + "labwareDefURI": "opentrons/opentrons_96_tiprack_300ul/1" + }, + "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareDefURI": "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1" + }, + "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1": { + "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", + "labwareDefURI": "opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json index 5ef201e8e50..ea1d1cb31f3 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": [ "opentrons/opentrons_96_tiprack_300ul/1" @@ -288,7 +282,34 @@ "4f4057e0-75c7-11ea-b42f-4b64e50f43e5", "54dc3200-75c7-11ea-b42f-4b64e50f43e5", "80c00130-75c7-11ea-b42f-4b64e50f43e5" - ] + ], + "pipettes": { + "0b3f2210-75c7-11ea-b42f-4b64e50f43e5": { + "pipetteName": "p300_single_gen2" + } + }, + "modules": { + "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType": { + "model": "magneticModuleV2" + }, + "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType": { + "model": "temperatureModuleV2" + } + }, + "labware": { + "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1": { + "displayName": "Opentrons 96 Tip Rack 300 µL", + "labwareDefURI": "opentrons/opentrons_96_tiprack_300ul/1" + }, + "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareDefURI": "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1" + }, + "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1": { + "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", + "labwareDefURI": "opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json index 17257c9b64d..5ceb1bedabb 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "2e7c6344-58ab-465c-b542-489883cb63fe": [ "opentrons/opentrons_flex_96_filtertiprack_50ul/1" @@ -409,7 +403,51 @@ "7747287c-abea-4855-843e-d61b272124b2", "dcc6a6c7-2db8-417b-a1aa-3927abccfadd", "2f862881-7ce3-4d20-b0ef-53c8244f6ef3" - ] + ], + "pipettes": { + "2e7c6344-58ab-465c-b542-489883cb63fe": { + "pipetteName": "p1000_single_flex" + }, + "6d1e53c3-2db3-451b-ad60-3fe13781a193": { + "pipetteName": "p50_multi_flex" + } + }, + "modules": { + "1be16305-74e7-4bdb-9737-61ec726d2b44:magneticBlockType": { + "model": "magneticBlockV1" + }, + "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType": { + "model": "heaterShakerModuleV1" + }, + "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType": { + "model": "temperatureModuleV2" + }, + "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType": { + "model": "thermocyclerModuleV2" + } + }, + "labware": { + "d95bb3be-b453-457c-a947-bd03dc8e56b9:opentrons/opentrons_96_flat_bottom_adapter/1": { + "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter", + "labwareDefURI": "opentrons/opentrons_96_flat_bottom_adapter/1" + }, + "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1": { + "displayName": "Opentrons Flex 96 Filter Tip Rack 50 µL", + "labwareDefURI": "opentrons/opentrons_flex_96_filtertiprack_50ul/1" + }, + "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareDefURI": "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2" + }, + "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1": { + "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap", + "labwareDefURI": "opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1" + }, + "239ceac8-23ec-4900-810a-70aeef880273:opentrons/nest_96_wellplate_200ul_flat/2": { + "displayName": "NEST 96 Well Plate 200 µL Flat", + "labwareDefURI": "opentrons/nest_96_wellplate_200ul_flat/2" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/doItAllV8.json b/protocol-designer/fixtures/protocol/8/doItAllV8.json index aaece68eb3a..7015a8a0c94 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 05 Feb 2025 18:32:26 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "9fcd50d9-92b2-45ac-acf1-e2cf773feffc": [ "opentrons/opentrons_flex_96_tiprack_1000ul/1" @@ -358,7 +352,38 @@ "2b8f84e2-b079-41e8-a66e-ff8d9c5dfe1d", "07dd4472-3ea4-475c-8fd3-18819519b401", "ed84f11e-db82-4039-9e04-e619b03af42f" - ] + ], + "pipettes": { + "9fcd50d9-92b2-45ac-acf1-e2cf773feffc": { + "pipetteName": "p1000_single_flex" + } + }, + "modules": { + "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType": { + "model": "heaterShakerModuleV1" + }, + "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType": { + "model": "thermocyclerModuleV2" + } + }, + "labware": { + "7c4d59fa-0e50-442f-adce-9e4b0c7f0b88:opentrons/opentrons_96_pcr_adapter/1": { + "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", + "labwareDefURI": "opentrons/opentrons_96_pcr_adapter/1" + }, + "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1": { + "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", + "labwareDefURI": "opentrons/opentrons_flex_96_tiprack_1000ul/1" + }, + "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2": { + "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", + "labwareDefURI": "opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2" + }, + "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1": { + "displayName": "Axygen 1 Well Reservoir 90 mL", + "labwareDefURI": "opentrons/axygen_1_reservoir_90ml/1" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json index 7e0b8eeabff..dde560281b0 100644 --- a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Thu, 30 Jan 2025 17:05:24 GMT", "pipetteTiprackAssignments": { "c6f45030-92a5-11e9-ac62-1b173f839d9e": [ "opentrons/opentrons_96_tiprack_10ul/1" @@ -235,7 +229,30 @@ "e7d36200-92a5-11e9-ac62-1b173f839d9e", "18113c80-92a6-11e9-ac62-1b173f839d9e", "2e622080-92a6-11e9-ac62-1b173f839d9e" - ] + ], + "pipettes": { + "c6f45030-92a5-11e9-ac62-1b173f839d9e": { + "pipetteName": "p10_single" + }, + "c6f47740-92a5-11e9-ac62-1b173f839d9e": { + "pipetteName": "p50_single" + } + }, + "modules": {}, + "labware": { + "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1": { + "displayName": "tiprack 10ul (1)", + "labwareDefURI": "opentrons/opentrons_96_tiprack_10ul/1" + }, + "c6f51380-92a5-11e9-ac62-1b173f839d9e:tiprack-200ul:opentrons/tipone_96_tiprack_200ul/1": { + "displayName": "tiprack 200ul (1)", + "labwareDefURI": "opentrons/tipone_96_tiprack_200ul/1" + }, + "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1": { + "displayName": "96 deep well (1)", + "labwareDefURI": "opentrons/usascientific_96_wellplate_2.4ml_deep/1" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json index b3f37e7e9b5..b55b9b94478 100644 --- a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json +++ b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json @@ -13,15 +13,9 @@ }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, "pipetteTiprackAssignments": { "pipetteId": ["opentrons/opentrons_96_tiprack_10ul/1"] }, @@ -91,7 +85,23 @@ "orderedStepIds": [ "f59ea8e0-fc3a-11ea-8809-e959e7d61d96", "fc4dc7c0-fc3a-11ea-8809-e959e7d61d96" - ] + ], + "pipettes": { + "pipetteId": { + "pipetteName": "p20_single_gen2" + } + }, + "modules": {}, + "labware": { + "f1c677c0-fc3a-11ea-8809-e959e7d61d96:opentrons/opentrons_96_tiprack_10ul/1": { + "displayName": "Opentrons OT-2 96 Tip Rack 10 µL", + "labwareDefURI": "opentrons/opentrons_96_tiprack_10ul/1" + }, + "fe572c50-fc3a-11ea-8809-e959e7d61d96:opentrons/biorad_96_wellplate_200ul_pcr/1": { + "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", + "labwareDefURI": "opentrons/biorad_96_wellplate_200ul_pcr/1" + } + } } }, "robot": { "model": "OT-2 Standard", "deckId": "ot2_standard" }, diff --git a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json index eeb2cd9765c..e41bc40b181 100644 --- a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json +++ b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "21087f15-4c03-4587-8a2b-1ba0b5a501a0": [ "opentrons/opentrons_flex_96_tiprack_50ul/1" @@ -186,7 +180,38 @@ "c72b4af9-7488-4109-8221-15a5433f4fd8", "ffb0d1ff-8146-409c-9248-2065a3b27c4d", "eab2ec89-6d11-4246-ae91-d451cb3a5b1d" - ] + ], + "pipettes": { + "21087f15-4c03-4587-8a2b-1ba0b5a501a0": { + "pipetteName": "p50_single_flex" + } + }, + "modules": { + "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType": { + "model": "temperatureModuleV2" + }, + "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType": { + "model": "temperatureModuleV2" + } + }, + "labware": { + "32b596f6-79bb-4ad8-a34a-c44620fdb68f:opentrons/opentrons_96_well_aluminum_block/1": { + "displayName": "Opentrons 96 Well Aluminum Block", + "labwareDefURI": "opentrons/opentrons_96_well_aluminum_block/1" + }, + "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1": { + "displayName": "Opentrons Flex 96 Tip Rack 50 µL", + "labwareDefURI": "opentrons/opentrons_flex_96_tiprack_50ul/1" + }, + "c3c4e3fd-069f-4f3d-9b70-016a20f36de7:opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1": { + "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap", + "labwareDefURI": "opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1" + }, + "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareDefURI": "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json index f38b1eb287b..763f62e6c27 100644 --- a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json +++ b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:16:30 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "de7da440-95ec-43e8-8723-851321fbd6f9": [ "opentrons/opentrons_flex_96_tiprack_50ul/1" @@ -184,7 +178,31 @@ "orderedStepIds": [ "83a095fa-b649-4105-99d4-177f1a3f363a", "f5ea3139-1585-4848-9d5f-832eb88c99ca" - ] + ], + "pipettes": { + "de7da440-95ec-43e8-8723-851321fbd6f9": { + "pipetteName": "p1000_96" + } + }, + "modules": {}, + "labware": { + "ec850fd3-cf7c-44c5-b358-fba3a30315c9:opentrons/opentrons_flex_96_tiprack_adapter/1": { + "displayName": "Opentrons Flex 96 Tip Rack Adapter", + "labwareDefURI": "opentrons/opentrons_flex_96_tiprack_adapter/1" + }, + "75aa666f-98d8-4af9-908e-963ced428580:opentrons/opentrons_flex_96_tiprack_50ul/1": { + "displayName": "Opentrons Flex 96 Tip Rack 50 µL", + "labwareDefURI": "opentrons/opentrons_flex_96_tiprack_50ul/1" + }, + "fe1942b1-1b75-4d3a-9c12-d23004958a12:opentrons/biorad_96_wellplate_200ul_pcr/2": { + "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", + "labwareDefURI": "opentrons/biorad_96_wellplate_200ul_pcr/2" + }, + "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1": { + "displayName": "Opentrons Flex 96 Tip Rack 50 µL", + "labwareDefURI": "opentrons/opentrons_flex_96_tiprack_50ul/1" + } + } } }, "robot": { diff --git a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json index d08d93857e8..0fdb37a057e 100644 --- a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json @@ -15,13 +15,7 @@ "name": "opentrons/protocol-designer", "version": "8.5.0", "data": { - "_internalAppBuildDate": "Tue, 04 Feb 2025 15:40:12 GMT", - "defaultValues": { - "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 1, - "touchTip_mmFromTop": -1, - "blowout_mmFromTop": 0 - }, + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "pipetteTiprackAssignments": { "733ba018-3550-476c-9fa3-0b5259d1a1d6": [ "opentrons/opentrons_96_tiprack_20ul/1" @@ -187,7 +181,23 @@ "orderedStepIds": [ "f07a86fc-8373-427b-b159-89ec8d20b9a6", "72b79c80-00e4-48ce-b42a-35b0ba17664c" - ] + ], + "pipettes": { + "733ba018-3550-476c-9fa3-0b5259d1a1d6": { + "pipetteName": "p20_single_gen2" + } + }, + "modules": { + "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType": { + "model": "thermocyclerModuleV1" + } + }, + "labware": { + "ac928a51-a248-4304-be43-e9cb19c34fa9:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareDefURI": "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2" + } + } } }, "robot": { diff --git a/protocol-designer/src/file-data/__tests__/utils.test.tsx b/protocol-designer/src/file-data/__tests__/utils.test.tsx new file mode 100644 index 00000000000..34d08ca6f4b --- /dev/null +++ b/protocol-designer/src/file-data/__tests__/utils.test.tsx @@ -0,0 +1,82 @@ +import { describe, it, expect } from 'vitest' +import { + fixture96Plate, + fixtureP1000SingleV2Specs, +} from '@opentrons/shared-data' +import { + getLabwareLoadInfo, + getModulesLoadInfo, + getPipettesLoadInfo, +} from '../selectors/utils' +import type { LabwareDefinition2, PipetteName } from '@opentrons/shared-data' + +describe('getPipettesLoadInfo', () => { + it('returns pipettes from pipette entities', () => { + const pipId = '1' + const results = { + [pipId]: { + pipetteName: fixtureP1000SingleV2Specs.displayName, + }, + } + expect( + getPipettesLoadInfo({ + pipId: { + spec: fixtureP1000SingleV2Specs, + tiprackLabwareDef: [], + name: fixtureP1000SingleV2Specs.displayName as PipetteName, + id: pipId, + tiprackDefURI: [], + }, + }) + ).toEqual(results) + }) +}) + +describe('getModuleLoadInfo', () => { + it('returns modules from module entities', () => { + const moduleId = '1' + const results = { + [moduleId]: { + model: 'magneticModuleV2', + }, + } + expect( + getModulesLoadInfo({ + moduleId: { + id: moduleId, + model: 'magneticModuleV2', + type: 'magneticModuleType', + }, + }) + ).toEqual(results) + }) +}) + +describe('getLabwareLoadInfo', () => { + it('returns labwares from labware entities', () => { + const labwareId = '1' + const uri = 'mockUri' + const results = { + [labwareId]: { + displayName: 'nick name', + labwareDefURI: uri, + }, + } + const labwareNicknamesById: Record = { + [labwareId]: 'nick name', + } + + expect( + getLabwareLoadInfo( + { + labwareId: { + id: labwareId, + labwareDefURI: uri, + def: fixture96Plate as LabwareDefinition2, + }, + }, + labwareNicknamesById + ) + ).toEqual(results) + }) +}) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index d63501dbc1e..23d78185b11 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -17,22 +17,21 @@ import { selectors as ingredSelectors } from '../../labware-ingred/selectors' import { selectors as stepFormSelectors } from '../../step-forms' import { selectors as uiLabwareSelectors } from '../../ui/labware' import { swatchColors } from '../../organisms/DefineLiquidsModal/swatchColors' -import { - DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP, - DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, - DEFAULT_MM_OFFSET_FROM_BOTTOM, -} from '../../constants' import { getStepGroups } from '../../step-forms/selectors' import { getFileMetadata, getRobotType } from './fileFields' import { getInitialRobotState, getRobotStateTimeline } from './commands' -import { getLoadCommands } from './utils' +import { + getLabwareLoadInfo, + getLoadCommands, + getModulesLoadInfo, + getPipettesLoadInfo, +} from './utils' import type { SecondOrderCommandAnnotation } from '@opentrons/shared-data/commandAnnotation/types' import type { PipetteEntity, LabwareEntities, PipetteEntities, - LiquidEntities, } from '@opentrons/step-generation' import type { CommandAnnotationV1Mixin, @@ -45,23 +44,9 @@ import type { ProtocolBase, ProtocolFile, } from '@opentrons/shared-data' -import type { DismissedWarningState } from '../../dismiss/reducers' import type { LabwareDefByDefURI } from '../../labware-defs' import type { Selector } from '../../types' - -// DesignerApplication type for version 8_5 -export interface DesignerApplicationDataV8_5 { - ingredients: LiquidEntities - ingredLocations: { - [labwareId: string]: { - [wellName: string]: { [liquidId: string]: { volume: number } } - } - } - savedStepForms: Record - orderedStepIds: string[] - pipetteTiprackAssignments: Record - dismissedWarnings: DismissedWarningState -} +import type { PDMetadata } from '../../file-types' // TODO: BC: 2018-02-21 uncomment this assert, causes test failures // console.assert(!isEmpty(process.env.OT_PD_VERSION), 'Could not find application version!') @@ -159,15 +144,6 @@ export const createFile: Selector = createSelector( version: applicationVersion, data: { _internalAppBuildDate, - defaultValues: { - // TODO: Ian 2019-06-13 load these into redux and always get them from redux, not constants.js - // This `defaultValues` key is not yet read by anything, but is populated here for auditability - // and so that later we can do #3587 without a PD migration - aspirate_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - dispense_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - touchTip_mmFromTop: DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP, - blowout_mmFromTop: DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, - }, pipetteTiprackAssignments: mapValues( pipetteEntities, (p: typeof pipetteEntities[keyof typeof pipetteEntities]): string[] => @@ -178,6 +154,9 @@ export const createFile: Selector = createSelector( ingredLocations, savedStepForms, orderedStepIds: savedOrderedStepIds, + pipettes: getPipettesLoadInfo(pipetteEntities), + modules: getModulesLoadInfo(moduleEntities), + labware: getLabwareLoadInfo(labwareEntities, labwareNicknamesById), }, } @@ -268,7 +247,7 @@ export const createFile: Selector = createSelector( commandAnnotations, } - const protocolBase: ProtocolBase = { + const protocolBase: ProtocolBase = { $otSharedSchema: '#/protocol/schemas/8', schemaVersion: 8, metadata: { diff --git a/protocol-designer/src/file-data/selectors/utils.ts b/protocol-designer/src/file-data/selectors/utils.ts index 8d852731fad..c8f6e3ff1f2 100644 --- a/protocol-designer/src/file-data/selectors/utils.ts +++ b/protocol-designer/src/file-data/selectors/utils.ts @@ -3,7 +3,6 @@ import map from 'lodash/map' import reduce from 'lodash/reduce' import { getLoadLiquidCommands } from '../../load-file/migration/utils/getLoadLiquidCommands' import { COLUMN_4_SLOTS, uuid } from '@opentrons/step-generation' - import type { AddressableAreaName, CreateCommand, @@ -21,9 +20,13 @@ import type { ModuleEntities, TimelineFrame, LiquidEntities, + PipetteEntity, + ModuleEntity, + LabwareEntity, } from '@opentrons/step-generation' +import type { Labware, Modules, Pipettes } from '../../file-types' -interface Pipettes { +interface MappedPipettes { [pipetteId: string]: { name: PipetteName } } @@ -36,7 +39,7 @@ export const getLoadCommands = ( liquidEntities: LiquidEntities, ingredLocations: LabwareLiquidState ): CreateCommand[] => { - const pipettes: Pipettes = mapValues( + const pipettes: MappedPipettes = mapValues( initialRobotState.pipettes, ( pipette: typeof initialRobotState.pipettes[keyof typeof initialRobotState.pipettes], @@ -196,3 +199,41 @@ export const getLoadCommands = ( ...loadLiquidCommands, ] } + +export const getPipettesLoadInfo = ( + pipetteEntities: PipetteEntities +): Pipettes => { + return Object.values(pipetteEntities).reduce( + (acc, pipetteEntity: PipetteEntity) => ({ + ...acc, + [pipetteEntity.id]: { pipetteName: pipetteEntity.name }, + }), + {} + ) +} + +export const getModulesLoadInfo = (moduleEntities: ModuleEntities): Modules => { + return Object.values(moduleEntities).reduce( + (acc, moduleEntity: ModuleEntity) => ({ + ...acc, + [moduleEntity.id]: { model: moduleEntity.model }, + }), + {} + ) +} + +export const getLabwareLoadInfo = ( + labwareEntities: LabwareEntities, + labwareNicknamesById: Record +): Labware => { + return Object.values(labwareEntities).reduce( + (acc, labwareEntity: LabwareEntity) => ({ + ...acc, + [labwareEntity.id]: { + displayName: labwareNicknamesById[labwareEntity.id], + labwareDefURI: labwareEntity.labwareDefURI, + }, + }), + {} + ) +} diff --git a/protocol-designer/src/file-types.ts b/protocol-designer/src/file-types.ts index 8a19aac0108..41d7a9fe076 100644 --- a/protocol-designer/src/file-types.ts +++ b/protocol-designer/src/file-types.ts @@ -1,12 +1,26 @@ +import type { + ModuleModel, + PipetteName, + ProtocolFile, +} from '@opentrons/shared-data' +import type { LiquidEntities } from '@opentrons/step-generation' import type { RootState as IngredRoot } from './labware-ingred/reducers' import type { RootState as StepformRoot } from './step-forms' import type { RootState as DismissRoot } from './dismiss' -import type { ProtocolFile as ProtocolFileV3 } from '@opentrons/shared-data/protocol/types/schemaV3' -import type { ProtocolFile as ProtocolFileV4 } from '@opentrons/shared-data/protocol/types/schemaV4' -import type { ProtocolFile as ProtocolFileV5 } from '@opentrons/shared-data/protocol/types/schemaV5' -import type { ProtocolFile as ProtocolFileV6 } from '@opentrons/shared-data/protocol/types/schemaV6' -import type { LiquidEntities } from '@opentrons/step-generation' +export interface PipetteLoadInfo { + pipetteName: PipetteName +} +export interface ModuleLoadInfo { + model: ModuleModel +} +export interface LabwareLoadInfo { + displayName: string // either labwareDef displayName or user defined nickName + labwareDefURI: string // the labware definition URI +} +export type Pipettes = Record +export type Modules = Record +export type Labware = Record export interface PDMetadata { // pipetteId to tiprackModel pipetteTiprackAssignments: Record @@ -15,19 +29,12 @@ export interface PDMetadata { ingredLocations: IngredRoot['ingredLocations'] savedStepForms: StepformRoot['savedStepForms'] orderedStepIds: StepformRoot['orderedStepIds'] - defaultValues: { - aspirate_mmFromBottom: number | null - dispense_mmFromBottom: number | null - touchTip_mmFromTop: number | null - blowout_mmFromTop: number | null - } + pipettes: Pipettes + modules: Modules + labware: Labware } -// NOTE: PD currently supports saving both v3 and v4, depending on whether it has modules -export type PDProtocolFile = - | ProtocolFileV3 - | ProtocolFileV4 - | ProtocolFileV5 - | ProtocolFileV6 + +export type PDProtocolFile = ProtocolFile export function getPDMetadata(file: PDProtocolFile): PDMetadata { const metadata = file.designerApplication?.data diff --git a/protocol-designer/src/load-file/migration/8_5_0.ts b/protocol-designer/src/load-file/migration/8_5_0.ts index 6cf583da9ae..bbf2fda4c62 100644 --- a/protocol-designer/src/load-file/migration/8_5_0.ts +++ b/protocol-designer/src/load-file/migration/8_5_0.ts @@ -2,17 +2,18 @@ import floor from 'lodash/floor' import { swatchColors } from '../../organisms/DefineLiquidsModal/swatchColors' import { getMigratedPositionFromTop } from './utils/getMigrationPositionFromTop' import { getAdditionalEquipmentLocationUpdate } from './utils/getAdditionalEquipmentLocationUpdate' +import { getEquipmentLoadInfoFromCommands } from './utils/getEquipmentLoadInfoFromCommands' import type { LoadLabwareCreateCommand, ProtocolFile, } from '@opentrons/shared-data' import type { LiquidEntities } from '@opentrons/step-generation' -import type { DesignerApplicationDataV8_5 } from '../../file-data/selectors' import type { DesignerApplicationData } from './utils/getLoadLiquidCommands' +import type { PDMetadata } from '../../file-types' export const migrateFile = ( appData: ProtocolFile -): ProtocolFile => { +): ProtocolFile => { const { designerApplication, commands, @@ -20,6 +21,7 @@ export const migrateFile = ( liquids, robot, } = appData + if (designerApplication == null || designerApplication?.data == null) { throw Error('The designerApplication key in your file is corrupt.') } @@ -156,6 +158,10 @@ export const migrateFile = ( }, {} ) + const equipmentLoadInfoFromCommands = getEquipmentLoadInfoFromCommands( + commands, + labwareDefinitions + ) return { ...appData, designerApplication: { @@ -163,6 +169,7 @@ export const migrateFile = ( data: { ...designerApplication.data, ingredients: migratedIngredients, + ...equipmentLoadInfoFromCommands, savedStepForms: { ...designerApplication.data.savedStepForms, ...updatedInitialStep, diff --git a/protocol-designer/src/load-file/migration/utils/__tests__/getEquipmentLoadInfoFromCommands.test.tsx b/protocol-designer/src/load-file/migration/utils/__tests__/getEquipmentLoadInfoFromCommands.test.tsx new file mode 100644 index 00000000000..66e265b1cbf --- /dev/null +++ b/protocol-designer/src/load-file/migration/utils/__tests__/getEquipmentLoadInfoFromCommands.test.tsx @@ -0,0 +1,67 @@ +import { describe, it, expect } from 'vitest' +import doItAllV7 from '../../../../../fixtures/protocol/7/doItAllV7.json' +import { getEquipmentLoadInfoFromCommands } from '../getEquipmentLoadInfoFromCommands' +import type { CreateCommand, LabwareDefinition2 } from '@opentrons/shared-data' +import type { EquipmentLoadInfoFromCommands } from '../getEquipmentLoadInfoFromCommands' + +describe('getEquipmentLoadInfoFromCommands', () => { + it('properly returns the pipettes, modules, and labware info for doItAllV7 fixture', () => { + const results: EquipmentLoadInfoFromCommands = { + labware: { + '239ceac8-23ec-4900-810a-70aeef880273:opentrons/nest_96_wellplate_200ul_flat/2': { + displayName: 'NEST 96 Well Plate 200 µL Flat', + labwareDefURI: 'opentrons/nest_96_wellplate_200ul_flat/2', + }, + '23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1': { + displayName: 'Opentrons Flex 96 Filter Tip Rack 50 µL', + labwareDefURI: 'opentrons/opentrons_flex_96_filtertiprack_50ul/1', + }, + 'a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1': { + displayName: + 'Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap', + labwareDefURI: + 'opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1', + }, + 'd95bb3be-b453-457c-a947-bd03dc8e56b9:opentrons/opentrons_96_flat_bottom_adapter/1': { + displayName: 'Opentrons 96 Flat Bottom Heater-Shaker Adapter', + labwareDefURI: 'opentrons/opentrons_96_flat_bottom_adapter/1', + }, + 'fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2': { + displayName: 'NEST 96 Well Plate 100 µL PCR Full Skirt', + labwareDefURI: 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2', + }, + }, + modules: { + '1be16305-74e7-4bdb-9737-61ec726d2b44:magneticBlockType': { + model: 'magneticBlockV1', + }, + '627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType': { + model: 'thermocyclerModuleV2', + }, + 'c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType': { + model: 'heaterShakerModuleV1', + }, + 'ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType': { + model: 'temperatureModuleV2', + }, + }, + pipettes: { + '2e7c6344-58ab-465c-b542-489883cb63fe': { + pipetteName: 'p1000_single_flex', + }, + '6d1e53c3-2db3-451b-ad60-3fe13781a193': { + pipetteName: 'p50_multi_flex', + }, + }, + } + + expect( + getEquipmentLoadInfoFromCommands( + doItAllV7.commands as CreateCommand[], + doItAllV7.labwareDefinitions as { + [definitionId: string]: LabwareDefinition2 + } + ) + ).toEqual(results) + }) +}) diff --git a/protocol-designer/src/load-file/migration/utils/getEquipmentLoadInfoFromCommands.ts b/protocol-designer/src/load-file/migration/utils/getEquipmentLoadInfoFromCommands.ts new file mode 100644 index 00000000000..864479c3801 --- /dev/null +++ b/protocol-designer/src/load-file/migration/utils/getEquipmentLoadInfoFromCommands.ts @@ -0,0 +1,101 @@ +import type { + CreateCommand, + LabwareDefinition2, + LoadLabwareCreateCommand, + LoadModuleCreateCommand, + LoadPipetteCreateCommand, + PipetteName, +} from '@opentrons/shared-data' +import type { Labware, Modules, Pipettes } from '../../../file-types' + +export interface EquipmentLoadInfoFromCommands { + pipettes: Pipettes + modules: Modules + labware: Labware +} +export const getEquipmentLoadInfoFromCommands = ( + commands: CreateCommand[], + labwareDefinitions: { + [definitionId: string]: LabwareDefinition2 + } +): EquipmentLoadInfoFromCommands => { + const loadPipetteCommands = commands.filter( + (command): command is LoadPipetteCreateCommand => + command.commandType === 'loadPipette' + ) + const loadLabwareCommands = commands.filter( + (command): command is LoadLabwareCreateCommand => + command.commandType === 'loadLabware' + ) + const loadModuleCommands = commands.filter( + (command): command is LoadModuleCreateCommand => + command.commandType === 'loadModule' + ) + + const pipettes = loadPipetteCommands.reduce( + (acc, loadPipette: LoadPipetteCreateCommand) => ({ + ...acc, + [loadPipette.params.pipetteId]: { + pipetteName: loadPipette.params.pipetteName as PipetteName, + }, + }), + {} + ) + + const labware = loadLabwareCommands.reduce( + (acc, loadLabware: LoadLabwareCreateCommand) => { + const { params } = loadLabware + const { + displayName: nickName, + loadName, + version, + namespace, + labwareId, + } = params + const labwareDefURI = `${namespace}/${loadName}/${version}` + + if (labwareId == null) { + console.error( + `expected to find a labwareId from loadLabware command but could not with labwareDefURI ${labwareDefURI}` + ) + } + if (labwareDefinitions[labwareDefURI] == null) { + console.error( + `expected to find matching labware definition with loadname ${loadName} but could not` + ) + } + const id = labwareId ?? 'unknown id' + const displayName = labwareDefinitions[labwareDefURI].metadata.displayName + + return { + ...acc, + [id]: { + displayName: nickName ?? displayName, + labwareDefURI, + }, + } + }, + {} + ) + + const modules = loadModuleCommands.reduce( + (acc, loadModule: LoadModuleCreateCommand) => { + const { params } = loadModule + const { moduleId, model } = params + if (moduleId == null) { + console.error( + `expected to find moduleId from loadModule command wth model ${model} but could not` + ) + } + const id = moduleId ?? 'unknown id' + return { + ...acc, + [id]: { + model, + }, + } + }, + {} + ) + return { pipettes, modules, labware } +} diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index b1888f28970..ef2b30ed303 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -45,12 +45,7 @@ import type { NormalizedAdditionalEquipmentById, NormalizedPipetteById, } from '@opentrons/step-generation' -import type { - LoadLabwareCreateCommand, - LoadModuleCreateCommand, - LoadPipetteCreateCommand, - PipetteName, -} from '@opentrons/shared-data' +import type { PipetteName } from '@opentrons/shared-data' import type { RootState as LabwareDefsRootState } from '../../labware-defs' import type { LoadFileAction } from '../../load-file' import type { SaveStepFormAction } from '../../ui/steps/actions/thunks' @@ -100,6 +95,7 @@ import type { SelectMultipleStepsAction, } from '../../ui/steps/actions/types' import type { Action } from '../../types' +import type { ModuleLoadInfo, PipetteLoadInfo } from '../../file-types' import type { AdditionalEquipmentLocationUpdate, LocationUpdate, @@ -995,41 +991,8 @@ export const labwareInvariantProperties: Reducer< action: LoadFileAction ): NormalizedLabwareById => { const { file } = action.payload - const loadLabwareCommands = Object.values(file.commands).filter( - (command): command is LoadLabwareCreateCommand => - command.commandType === 'loadLabware' - ) - const labware = { - ...loadLabwareCommands.reduce( - (acc: NormalizedLabwareById, command: LoadLabwareCreateCommand) => { - const { labwareId, loadName, namespace, version } = command.params - const labwareDefinitionMatch = Object.entries( - file.labwareDefinitions - ).find( - ([definitionUri, labwareDef]) => - labwareDef.parameters.loadName === loadName && - labwareDef.namespace === namespace && - labwareDef.version === version - ) - if (labwareDefinitionMatch == null) { - console.error( - `expected to find labware definition match with loadname ${loadName} but could not` - ) - } - const labwareDefURI = - labwareDefinitionMatch != null ? labwareDefinitionMatch[0] : '' - const id = labwareId ?? '' - return { - ...acc, - [id]: { - labwareDefURI, - }, - } - }, - {} - ), - } - return { ...labware, ...state } + const metadata = getPDMetadata(file) + return { ...metadata.labware, ...state } }, REPLACE_CUSTOM_LABWARE_DEF: ( state: NormalizedLabwareById, @@ -1085,30 +1048,22 @@ export const moduleInvariantProperties: Reducer< action: LoadFileAction ): ModuleEntities => { const { file } = action.payload - const loadModuleCommands = Object.values(file.commands).filter( - (command): command is LoadModuleCreateCommand => - command.commandType === 'loadModule' - ) - const modules = loadModuleCommands.reduce( - (acc: ModuleEntities, command: LoadModuleCreateCommand) => { - const { moduleId, model, location } = command.params - if (moduleId == null) { - console.error( - `expected module ${model} in location ${location.slotName} to have an id, but id does not` - ) - return acc - } - return { - ...acc, - [moduleId]: { - id: moduleId, - type: getModuleType(model), - model, - }, + const metadata = getPDMetadata(file) + const modules: ModuleEntities = Object.entries(metadata.modules).reduce( + ( + acc: ModuleEntities, + [id, moduleLoadInfo]: [string, ModuleLoadInfo] + ) => { + acc[id] = { + id: id, + type: getModuleType(moduleLoadInfo.model), + model: moduleLoadInfo.model, } + return acc }, {} ) + return Object.keys(modules).length > 0 ? modules : state }, }, @@ -1119,7 +1074,6 @@ export const pipetteInvariantProperties: Reducer< NormalizedPipetteById, any // @ts-expect-error(sa, 2021-6-10): cannot use string literals as action type - // TODO IMMEDIATELY: refactor this to the old fashioned way if we cannot have type safety: https://github.com/redux-utilities/redux-actions/issues/282#issuecomment-595163081 > = handleActions( { LOAD_FILE: ( @@ -1128,20 +1082,18 @@ export const pipetteInvariantProperties: Reducer< ): NormalizedPipetteById => { const { file } = action.payload const metadata = getPDMetadata(file) - const loadPipetteCommands = Object.values(file.commands).filter( - (command): command is LoadPipetteCreateCommand => - command.commandType === 'loadPipette' - ) - const pipettes = loadPipetteCommands.reduce( - (acc: NormalizedPipetteById, command) => { - const { pipetteName, pipetteId } = command.params - const tiprackDefURI = metadata.pipetteTiprackAssignments[pipetteId] + const pipettes = Object.entries(metadata.pipettes).reduce( + ( + acc: NormalizedPipetteById, + [id, pipetteLoadInfo]: [string, PipetteLoadInfo] + ) => { + const tiprackDefURI = metadata.pipetteTiprackAssignments[id] return { ...acc, - [pipetteId]: { - id: pipetteId, - name: pipetteName as PipetteName, + [id]: { + id, + name: pipetteLoadInfo.pipetteName as PipetteName, tiprackDefURI, }, } From 0ceaefdcc1f05033c5021885ccd7b22e4adedd8b Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Wed, 5 Feb 2025 16:52:45 -0500 Subject: [PATCH 54/81] chore(app): change default labware view to map (#17422) --- .../__tests__/ProtocolSetupLabware.test.tsx | 10 ++++++++-- .../ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/__tests__/ProtocolSetupLabware.test.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/__tests__/ProtocolSetupLabware.test.tsx index 0f34b8ebd9e..13ae9f8b04c 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/__tests__/ProtocolSetupLabware.test.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/__tests__/ProtocolSetupLabware.test.tsx @@ -101,6 +101,7 @@ describe('ProtocolSetupLabware', () => { it('renders the Labware Setup page', () => { render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) screen.getByText('Labware') screen.getByText('Labware name') screen.getByText('Location') @@ -115,9 +116,10 @@ describe('ProtocolSetupLabware', () => { it('should toggle between map view and list view', () => { render() + expect(screen.queryByText('Map View')).toBeNull() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) expect(screen.queryByText('List View')).toBeNull() fireEvent.click(screen.getByRole('button', { name: 'Map View' })) - expect(screen.queryByText('Map View')).toBeNull() fireEvent.click(screen.getByRole('button', { name: 'List View' })) screen.getByText('Labware') screen.getByText('Labware name') @@ -126,6 +128,7 @@ describe('ProtocolSetupLabware', () => { it('sends a latch-close command when the labware latch is open and the button is clicked', () => { render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) fireEvent.click(screen.getByText('Labware Latch')) expect(mockCreateLiveCommand).toHaveBeenCalledWith({ command: { @@ -144,6 +147,7 @@ describe('ProtocolSetupLabware', () => { refetch: mockRefetch, } as any) render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) fireEvent.click(screen.getByText('Labware Latch')) expect(mockCreateLiveCommand).toHaveBeenCalledWith({ command: { @@ -162,6 +166,7 @@ describe('ProtocolSetupLabware', () => { ) render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) screen.getByText('Opening...') }) @@ -169,8 +174,8 @@ describe('ProtocolSetupLabware', () => { vi.mocked(useModulesQuery).mockReturnValue( mockUseModulesQueryClosing as any ) - render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) screen.getByText('Closing...') }) @@ -180,6 +185,7 @@ describe('ProtocolSetupLabware', () => { ) render() + fireEvent.click(screen.getByRole('button', { name: 'List View' })) screen.getByText('Open') }) }) diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx index e98a48924e7..804db6be9dc 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx @@ -83,7 +83,7 @@ export function ProtocolSetupLabware({ setIsConfirmed, }: ProtocolSetupLabwareProps): JSX.Element { const { t } = useTranslation('protocol_setup') - const [showMapView, setShowMapView] = useState(false) + const [showMapView, setShowMapView] = useState(true) const [ showLabwareDetailsModal, setShowLabwareDetailsModal, From 926b5cd676f79fa57e1256f3ae4af7af1c7fda80 Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 6 Feb 2025 10:28:35 -0500 Subject: [PATCH 55/81] chore: update ubuntu version in workflows of frontend (#17445) * chore: update ubuntu version in workflows of frontend --- .github/workflows/app-test-build-deploy.yaml | 4 ++-- .github/workflows/components-test-build-deploy.yaml | 6 +++--- .github/workflows/js-check.yaml | 2 +- .github/workflows/ll-test-build-deploy.yaml | 8 ++++---- .github/workflows/opentrons-ai-client-test.yaml | 2 +- .github/workflows/react-api-client-test.yaml | 2 +- .github/workflows/step-generation-test.yaml | 2 +- .github/workflows/usb-bridge-lint-test.yaml | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/app-test-build-deploy.yaml b/.github/workflows/app-test-build-deploy.yaml index 873bfe65c07..13a2051c767 100644 --- a/.github/workflows/app-test-build-deploy.yaml +++ b/.github/workflows/app-test-build-deploy.yaml @@ -52,7 +52,7 @@ env: jobs: js-unit-test: # unit tests for the app's view layer (not the node layer) - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' name: 'opentrons app frontend unit tests' timeout-minutes: 60 steps: @@ -386,7 +386,7 @@ jobs: deploy-release-app: name: 'Deploy built app artifacts to S3' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' needs: ['js-unit-test', 'backend-unit-test', 'build-app', 'determine-build-type'] if: contains(fromJSON(needs.determine-build-type.outputs.variants), 'release') || contains(fromJSON(needs.determine-build-type.outputs.variants), 'internal-release') diff --git a/.github/workflows/components-test-build-deploy.yaml b/.github/workflows/components-test-build-deploy.yaml index 2b10617c283..aa9bfb7d342 100644 --- a/.github/workflows/components-test-build-deploy.yaml +++ b/.github/workflows/components-test-build-deploy.yaml @@ -41,7 +41,7 @@ jobs: js-unit-test: name: 'components unit tests' timeout-minutes: 30 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-node@v4' @@ -75,7 +75,7 @@ jobs: build-components-storybook: name: 'build components artifact' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' if: github.event_name != 'pull_request' needs: ['js-unit-test'] steps: @@ -135,7 +135,7 @@ jobs: deploy-components: name: 'deploy components storybook artifact to S3' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' needs: ['js-unit-test', 'build-components-storybook', 'determine-build-type'] if: needs.determine-build-type.outputs.type != 'none' diff --git a/.github/workflows/js-check.yaml b/.github/workflows/js-check.yaml index 807d4a2570c..fa117227fdc 100644 --- a/.github/workflows/js-check.yaml +++ b/.github/workflows/js-check.yaml @@ -39,7 +39,7 @@ env: jobs: checks: name: 'js checks' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' timeout-minutes: 20 steps: - uses: 'actions/checkout@v4' diff --git a/.github/workflows/ll-test-build-deploy.yaml b/.github/workflows/ll-test-build-deploy.yaml index 35cbc96eced..8027399ffbd 100644 --- a/.github/workflows/ll-test-build-deploy.yaml +++ b/.github/workflows/ll-test-build-deploy.yaml @@ -40,7 +40,7 @@ jobs: js-unit-test: name: 'labware library unit tests' timeout-minutes: 20 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-node@v4' @@ -83,7 +83,7 @@ jobs: name: 'labware library e2e tests' needs: ['js-unit-test'] timeout-minutes: 30 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' # https://github.com/actions/checkout/issues/290 @@ -123,7 +123,7 @@ jobs: name: 'build labware library artifact' needs: ['js-unit-test'] timeout-minutes: 30 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' if: github.event_name != 'pull_request' steps: - uses: 'actions/checkout@v4' @@ -170,7 +170,7 @@ jobs: path: labware-library/dist deploy-ll: name: 'deploy LL artifact to S3' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' needs: ['js-unit-test', 'e2e-test', 'build-ll'] if: github.event_name != 'pull_request' steps: diff --git a/.github/workflows/opentrons-ai-client-test.yaml b/.github/workflows/opentrons-ai-client-test.yaml index 0a78cf73da3..9187667d504 100644 --- a/.github/workflows/opentrons-ai-client-test.yaml +++ b/.github/workflows/opentrons-ai-client-test.yaml @@ -35,7 +35,7 @@ env: jobs: js-unit-test: - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' name: 'opentrons ai frontend unit tests' timeout-minutes: 60 steps: diff --git a/.github/workflows/react-api-client-test.yaml b/.github/workflows/react-api-client-test.yaml index 8a8759f12e1..c9bb0fcc6dd 100644 --- a/.github/workflows/react-api-client-test.yaml +++ b/.github/workflows/react-api-client-test.yaml @@ -34,7 +34,7 @@ jobs: js-unit-test: name: 'api-client and react-api-client unit tests' timeout-minutes: 30 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-node@v4' diff --git a/.github/workflows/step-generation-test.yaml b/.github/workflows/step-generation-test.yaml index ac435cf999d..4dd540eccb8 100644 --- a/.github/workflows/step-generation-test.yaml +++ b/.github/workflows/step-generation-test.yaml @@ -32,7 +32,7 @@ env: jobs: js-unit-test: name: 'step generation unit tests' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' timeout-minutes: 30 steps: - uses: 'actions/checkout@v4' diff --git a/.github/workflows/usb-bridge-lint-test.yaml b/.github/workflows/usb-bridge-lint-test.yaml index bfe11aed61b..7957e898d3c 100644 --- a/.github/workflows/usb-bridge-lint-test.yaml +++ b/.github/workflows/usb-bridge-lint-test.yaml @@ -39,7 +39,7 @@ jobs: lint: name: 'usb-bridge linting' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -60,7 +60,7 @@ jobs: name: 'usb-bridge package tests' timeout-minutes: 10 needs: [lint] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: From a693b6c4ad127be2f8bd0158923ed6400782e8dc Mon Sep 17 00:00:00 2001 From: Andy Sigler Date: Thu, 6 Feb 2025 10:30:08 -0500 Subject: [PATCH 56/81] fix(api): correctionVolume can be negative (#17413) --- .../protocol_engine/commands/pipetting_common.py | 2 -- shared-data/command/schemas/12.json | 8 -------- 2 files changed, 10 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/pipetting_common.py b/api/src/opentrons/protocol_engine/commands/pipetting_common.py index c0bca3c428a..d240b1fafea 100644 --- a/api/src/opentrons/protocol_engine/commands/pipetting_common.py +++ b/api/src/opentrons/protocol_engine/commands/pipetting_common.py @@ -48,7 +48,6 @@ class AspirateVolumeMixin(BaseModel): correctionVolume: Optional[float] = Field( None, description="The correction volume in uL.", - ge=0, ) @@ -65,7 +64,6 @@ class DispenseVolumeMixin(BaseModel): correctionVolume: Optional[float] = Field( None, description="The correction volume in uL.", - ge=0, ) diff --git a/shared-data/command/schemas/12.json b/shared-data/command/schemas/12.json index 2e40c357c7d..08c86764882 100644 --- a/shared-data/command/schemas/12.json +++ b/shared-data/command/schemas/12.json @@ -67,7 +67,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -176,7 +175,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -215,7 +213,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -413,7 +410,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -1521,7 +1517,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -1565,7 +1560,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -1651,7 +1645,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { @@ -1914,7 +1907,6 @@ "correctionVolume": { "anyOf": [ { - "minimum": 0.0, "type": "number" }, { From aae2bfab3b783e34f7ae717d1e189b3de94c6720 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:56:08 -0500 Subject: [PATCH 57/81] fix(protocol-designer, step-generation): update prewet behavior in PD (#17433) This PR adds prewet to distribute, and updates the logic for when to use prewet for all compound liquid handling command creators. The prewet volume should always be set to the volume of the aspiration that is about to be called (including disposal volume for `distribute`). Prewet commands should be emmitted anytime a new tip is used for an aspiration. Also, I update the UI for the prewet form field in MoveLiquidTools Closes AUTH-908 --- .../src/assets/localization/en/tooltip.json | 2 +- .../molecules/ToggleStepFormField/index.tsx | 36 ++-- .../StepForm/PipetteFields/LabwareField.tsx | 1 + .../StepForm/StepFormToolbox.tsx | 1 + .../StepTools/MoveLiquidTools/index.tsx | 12 +- .../src/__tests__/distribute.test.ts | 198 ++++++++++++++++++ .../commandCreators/compound/distribute.ts | 27 +++ .../src/commandCreators/compound/transfer.ts | 2 +- .../src/fixtures/commandFixtures.ts | 23 +- 9 files changed, 277 insertions(+), 25 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/tooltip.json b/protocol-designer/src/assets/localization/en/tooltip.json index 849844a0c34..1445cedf0bd 100644 --- a/protocol-designer/src/assets/localization/en/tooltip.json +++ b/protocol-designer/src/assets/localization/en/tooltip.json @@ -65,7 +65,7 @@ "newLocation": "New location to move the selected labware", "nozzles": "Partial pickup requires a tip rack directly on the deck. Full rack pickup requires the Flex 96 Tip Rack Adapter.", "pipette": "Select the pipette you want to use", - "preWetTip": "Pre-wet by aspirating and dispensing 2/3 of the tip’s max volume", + "preWetTip": "Pre-wet by aspirating and dispensing the total aspiration volume", "setTemperature": "Select the temperature to set your module to", "wells": "Select wells", "volume": "Volume to dispense in each well" diff --git a/protocol-designer/src/molecules/ToggleStepFormField/index.tsx b/protocol-designer/src/molecules/ToggleStepFormField/index.tsx index ad609acf0b9..3068f4e0e69 100644 --- a/protocol-designer/src/molecules/ToggleStepFormField/index.tsx +++ b/protocol-designer/src/molecules/ToggleStepFormField/index.tsx @@ -1,5 +1,6 @@ import { ALIGN_CENTER, + Check, COLORS, DIRECTION_COLUMN, Flex, @@ -16,12 +17,13 @@ import { ToggleButton } from '../../atoms/ToggleButton' interface ToggleStepFormFieldProps { title: string isSelected: boolean - onLabel: string - offLabel: string toggleUpdateValue: (value: unknown) => void toggleValue: unknown tooltipContent: string | null - isDisabled: boolean + isDisabled?: boolean + onLabel?: string + offLabel?: string + toggleElement?: 'toggle' | 'checkbox' } export function ToggleStepFormField( props: ToggleStepFormFieldProps @@ -34,7 +36,8 @@ export function ToggleStepFormField( toggleUpdateValue, toggleValue, tooltipContent, - isDisabled, + isDisabled = false, + toggleElement = 'toggle', } = props const [targetProps, tooltipProps] = useHoverTooltip() @@ -42,7 +45,7 @@ export function ToggleStepFormField( <> { if (!isDisabled) { toggleUpdateValue(!toggleValue) @@ -50,11 +53,7 @@ export function ToggleStepFormField( }} disabled={isDisabled} > - {tooltipContent != null ? ( - {tooltipContent} - ) : null} - - + {title} @@ -72,15 +72,21 @@ export function ToggleStepFormField( > {isSelected ? onLabel : offLabel} - + {toggleElement === 'toggle' ? ( + + ) : ( + + )} + {tooltipContent != null ? ( + {tooltipContent} + ) : null} ) } diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/LabwareField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/LabwareField.tsx index 07e08b8a299..00f68dcd46c 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/LabwareField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/LabwareField.tsx @@ -31,6 +31,7 @@ export function LabwareField(props: FieldProps): JSX.Element { onExit={() => { dispatch(hoverSelection({ id: null, text: null })) }} + width="100%" /> ) } diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx index 253889423ca..45eee9219f8 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx @@ -360,6 +360,7 @@ export function StepFormToolbox(props: StepFormToolboxProps): JSX.Element { } + width="21.875rem" >
{tab === 'aspirate' ? ( - ) : null} = ( ] : [] const aspirateDisposalVolumeOnce = chunkIndex === 0 ? disposalVolume : 0 + // if changeTip is 'once' or 'never', only prewet for first aspiration + // if changeTip is 'always', pre-wet for each chunk + const preWetTipCommands = + args.preWetTip && + (args.changeTip === 'always' ? true : chunkIndex === 0) + ? mixUtil({ + pipette: args.pipette, + labware: args.sourceLabware, + well: args.sourceWell, + volume: + args.volume * destWellChunk.length + + (args.changeTip === 'always' + ? disposalVolume + : aspirateDisposalVolumeOnce), + times: 1, + offsetFromBottomMm: aspirateOffsetFromBottomMm, + aspirateFlowRateUlSec, + dispenseFlowRateUlSec, + aspirateDelaySeconds: aspirateDelay?.seconds, + dispenseDelaySeconds: dispenseDelay?.seconds, + tipRack: args.tipRack, + xOffset: aspirateXOffset, + yOffset: aspirateYOffset, + nozzles, + }) + : [] return [ ...tipCommands, + ...preWetTipCommands, ...configureForVolumeCommand, ...mixBeforeAspirateCommands, curryCommandCreator(aspirate, { diff --git a/step-generation/src/commandCreators/compound/transfer.ts b/step-generation/src/commandCreators/compound/transfer.ts index c4b3d183ea2..282b92ad3e1 100644 --- a/step-generation/src/commandCreators/compound/transfer.ts +++ b/step-generation/src/commandCreators/compound/transfer.ts @@ -286,7 +286,7 @@ export const transfer: CommandCreator = ( pipette: args.pipette, labware: args.sourceLabware, well: sourceWell, - volume: Math.max(subTransferVol), + volume: subTransferVol, times: 1, offsetFromBottomMm: aspirateOffsetFromBottomMm, aspirateFlowRateUlSec, diff --git a/step-generation/src/fixtures/commandFixtures.ts b/step-generation/src/fixtures/commandFixtures.ts index 37e4ed07a44..056ad5114cd 100644 --- a/step-generation/src/fixtures/commandFixtures.ts +++ b/step-generation/src/fixtures/commandFixtures.ts @@ -138,7 +138,12 @@ export const makeAspirateHelper: MakeAspDispHelper = bakedP ...params, }, }) -export const makeMoveToWellHelper = (wellName: string, labwareId?: string) => ({ +export const makeMoveToWellHelper = ( + wellName: string, + labwareId?: string, + forceDirect?: boolean, + minimumZHeight?: number +) => ({ commandType: 'moveToWell', key: expect.any(String), params: { @@ -153,6 +158,8 @@ export const makeMoveToWellHelper = (wellName: string, labwareId?: string) => ({ z: 11.54, }, }, + forceDirect, + minimumZHeight, }, }) export const makeAirGapHelper = (volume: number) => ({ @@ -268,18 +275,25 @@ export const makeTouchTipHelper: MakeTouchTipHelper = bakedParams => ( key: expect.any(String), params: { ..._defaultTouchTipParams, ...bakedParams, wellName, ...params }, }) -export const delayCommand = (seconds: number): CreateCommand => ({ +export const delayCommand = ( + seconds: number, + message?: string +): CreateCommand => ({ commandType: 'waitForDuration', key: expect.any(String), params: { seconds: seconds, + message, }, }) export const delayWithOffset = ( wellName: string, labwareId: string, seconds?: number, - zOffset?: number + zOffset?: number, + forceDirect?: boolean, + minimumZHeight?: number, + message?: string ): CreateCommand[] => [ { commandType: 'moveToWell', @@ -296,6 +310,8 @@ export const delayWithOffset = ( z: zOffset || 14, }, }, + forceDirect, + minimumZHeight, }, }, { @@ -303,6 +319,7 @@ export const delayWithOffset = ( key: expect.any(String), params: { seconds: seconds ?? 12, + message, }, }, ] From ba079631618172694a33d31b29459732cb7c73ed Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Thu, 6 Feb 2025 11:10:46 -0500 Subject: [PATCH 58/81] feat(robot-server): Allow adding multiple labware offsets in a single request (#17436) --- api-client/src/runs/createLabwareOffset.ts | 24 +++-- .../runs/useCreateLabwareOffsetMutation.ts | 33 +++---- .../robot_server/labware_offsets/router.py | 76 +++++++++++----- .../maintenance_runs/router/labware_router.py | 38 ++++++-- .../runs/router/labware_router.py | 42 +++++++-- .../robot_server/service/dependencies.py | 22 ++++- .../http_api/test_labware_offsets.tavern.yaml | 90 +++++++++++++++++++ .../router/test_labware_router.py | 52 +++++++++-- .../tests/runs/router/test_labware_router.py | 50 +++++++++-- 9 files changed, 345 insertions(+), 82 deletions(-) diff --git a/api-client/src/runs/createLabwareOffset.ts b/api-client/src/runs/createLabwareOffset.ts index 0b91566cf46..e1c125f8254 100644 --- a/api-client/src/runs/createLabwareOffset.ts +++ b/api-client/src/runs/createLabwareOffset.ts @@ -2,17 +2,25 @@ import { POST, request } from '../request' import type { ResponsePromise } from '../request' import type { HostConfig } from '../types' -import type { LegacyLabwareOffsetCreateData, Run } from './types' +import type { LabwareOffset, LegacyLabwareOffsetCreateData } from './types' export function createLabwareOffset( config: HostConfig, runId: string, data: LegacyLabwareOffsetCreateData -): ResponsePromise { - return request( - POST, - `/runs/${runId}/labware_offsets`, - { data }, - config - ) +): ResponsePromise +export function createLabwareOffset( + config: HostConfig, + runId: string, + data: LegacyLabwareOffsetCreateData[] +): ResponsePromise +export function createLabwareOffset( + config: HostConfig, + runId: string, + data: LegacyLabwareOffsetCreateData | LegacyLabwareOffsetCreateData[] +): ResponsePromise { + return request< + LabwareOffset | LabwareOffset[], + { data: LegacyLabwareOffsetCreateData | LegacyLabwareOffsetCreateData[] } + >(POST, `/runs/${runId}/labware_offsets`, { data }, config) } diff --git a/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts b/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts index f1b04505b30..28628da1555 100644 --- a/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts +++ b/react-api-client/src/runs/useCreateLabwareOffsetMutation.ts @@ -3,8 +3,8 @@ import { createLabwareOffset } from '@opentrons/api-client' import { useHost } from '../api' import type { HostConfig, - Run, LegacyLabwareOffsetCreateData, + LabwareOffset, } from '@opentrons/api-client' import type { UseMutationResult, UseMutateAsyncFunction } from 'react-query' @@ -14,12 +14,12 @@ interface CreateLabwareOffsetParams { } export type UseCreateLabwareOffsetMutationResult = UseMutationResult< - Run, + LabwareOffset, unknown, CreateLabwareOffsetParams > & { createLabwareOffset: UseMutateAsyncFunction< - Run, + LabwareOffset, unknown, CreateLabwareOffsetParams > @@ -29,19 +29,22 @@ export function useCreateLabwareOffsetMutation(): UseCreateLabwareOffsetMutation const host = useHost() const queryClient = useQueryClient() - const mutation = useMutation( - ({ runId, data }) => - createLabwareOffset(host as HostConfig, runId, data) - .then(response => { - queryClient.invalidateQueries([host, 'runs']).catch((e: Error) => { - console.error(`error invalidating runs query: ${e.message}`) - }) - return response.data - }) - .catch((e: Error) => { - console.error(`error creating labware offsets: ${e.message}`) - throw e + const mutation = useMutation< + LabwareOffset, + unknown, + CreateLabwareOffsetParams + >(({ runId, data }) => + createLabwareOffset(host as HostConfig, runId, data) + .then(response => { + queryClient.invalidateQueries([host, 'runs']).catch((e: Error) => { + console.error(`error invalidating runs query: ${e.message}`) }) + return response.data + }) + .catch((e: Error) => { + console.error(`error creating labware offsets: ${e.message}`) + throw e + }) ) return { diff --git a/robot-server/robot_server/labware_offsets/router.py b/robot-server/robot_server/labware_offsets/router.py index 4ebf532d657..7d00fbc68d6 100644 --- a/robot-server/robot_server/labware_offsets/router.py +++ b/robot-server/robot_server/labware_offsets/router.py @@ -12,7 +12,10 @@ from opentrons.protocol_engine import ModuleModel from robot_server.labware_offsets.models import LabwareOffsetNotFound -from robot_server.service.dependencies import get_current_time, get_unique_id +from robot_server.service.dependencies import ( + UniqueIDFactory, + get_current_time, +) from robot_server.service.json_api.request import RequestModel from robot_server.service.json_api.response import ( MultiBodyMeta, @@ -42,42 +45,67 @@ @PydanticResponse.wrap_route( router.post, path="/labwareOffsets", - summary="Store a labware offset", + summary="Store labware offsets", description=textwrap.dedent( """\ - Store a labware offset for later retrieval through `GET /labwareOffsets`. + Store labware offsets for later retrieval through `GET /labwareOffsets`. On its own, this does not affect robot motion. - To do that, you must add the offset to a run, through the `/runs` endpoints. + To do that, you must add the offsets to a run, through the `/runs` endpoints. + + The response body's `data` will either be a single offset or a list of offsets, + depending on whether you provided a single offset or a list in the request body's `data`. """ ), status_code=201, include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) -async def post_labware_offset( # noqa: D103 +async def post_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], - new_offset_id: Annotated[str, fastapi.Depends(get_unique_id)], + new_offset_id_factory: Annotated[UniqueIDFactory, fastapi.Depends(UniqueIDFactory)], new_offset_created_at: Annotated[datetime, fastapi.Depends(get_current_time)], - request_body: Annotated[RequestModel[StoredLabwareOffsetCreate], fastapi.Body()], -) -> PydanticResponse[SimpleBody[StoredLabwareOffset]]: - new_offset = IncomingStoredLabwareOffset( - id=new_offset_id, - createdAt=new_offset_created_at, - definitionUri=request_body.data.definitionUri, - locationSequence=request_body.data.locationSequence, - vector=request_body.data.vector, + request_body: Annotated[ + RequestModel[StoredLabwareOffsetCreate | list[StoredLabwareOffsetCreate]], + fastapi.Body(), + ], +) -> PydanticResponse[SimpleBody[StoredLabwareOffset | list[StoredLabwareOffset]]]: + new_offsets = [ + IncomingStoredLabwareOffset( + id=new_offset_id_factory.get(), + createdAt=new_offset_created_at, + definitionUri=request_body_element.definitionUri, + locationSequence=request_body_element.locationSequence, + vector=request_body_element.vector, + ) + for request_body_element in ( + request_body.data + if isinstance(request_body.data, list) + else [request_body.data] + ) + ] + + for new_offset in new_offsets: + store.add(new_offset) + + stored_offsets = [ + StoredLabwareOffset.model_construct( + id=incoming.id, + createdAt=incoming.createdAt, + definitionUri=incoming.definitionUri, + locationSequence=incoming.locationSequence, + vector=incoming.vector, + ) + for incoming in new_offsets + ] + + # Return a list if the client POSTed a list, or an object if the client POSTed an object. + # For some reason, mypy needs to be given the type annotation explicitly. + response_data: StoredLabwareOffset | list[StoredLabwareOffset] = ( + stored_offsets if isinstance(request_body.data, list) else stored_offsets[0] ) - store.add(new_offset) + return await PydanticResponse.create( - content=SimpleBody.model_construct( - data=StoredLabwareOffset( - id=new_offset_id, - createdAt=new_offset_created_at, - definitionUri=request_body.data.definitionUri, - locationSequence=request_body.data.locationSequence, - vector=request_body.data.vector, - ) - ), + content=SimpleBody.model_construct(data=response_data), status_code=201, ) diff --git a/robot-server/robot_server/maintenance_runs/router/labware_router.py b/robot-server/robot_server/maintenance_runs/router/labware_router.py index c64e8b7db97..1271710de1e 100644 --- a/robot-server/robot_server/maintenance_runs/router/labware_router.py +++ b/robot-server/robot_server/maintenance_runs/router/labware_router.py @@ -36,33 +36,57 @@ "There is no matching `GET /maintenance_runs/{runId}/labware_offsets` endpoint." " To read the list of labware offsets currently on the run," " see the run's `labwareOffsets` field." + "\n\n" + "The response body's `data` will either be a single offset or a list of offsets," + " depending on whether you provided a single offset or a list in the request body's `data`." ), status_code=status.HTTP_201_CREATED, responses={ - status.HTTP_201_CREATED: {"model": SimpleBody[LabwareOffset]}, + status.HTTP_201_CREATED: { + "model": SimpleBody[LabwareOffset | list[LabwareOffset]] + }, status.HTTP_404_NOT_FOUND: {"model": ErrorBody[RunNotFound]}, status.HTTP_409_CONFLICT: {"model": ErrorBody[RunNotIdle]}, }, ) async def add_labware_offset( - request_body: RequestModel[LabwareOffsetCreate | LegacyLabwareOffsetCreate], + request_body: RequestModel[ + LabwareOffsetCreate + | LegacyLabwareOffsetCreate + | list[LabwareOffsetCreate | LegacyLabwareOffsetCreate] + ], run_orchestrator_store: Annotated[ MaintenanceRunOrchestratorStore, Depends(get_maintenance_run_orchestrator_store) ], run: Annotated[MaintenanceRun, Depends(get_run_data_from_url)], -) -> PydanticResponse[SimpleBody[LabwareOffset]]: - """Add a labware offset to a maintenance run. +) -> PydanticResponse[SimpleBody[LabwareOffset | list[LabwareOffset]]]: + """Add labware offsets to a maintenance run. Args: request_body: New labware offset request data from request body. run_orchestrator_store: Engine storage interface. run: Run response data by ID from URL; ensures 404 if run not found. """ - added_offset = run_orchestrator_store.add_labware_offset(request_body.data) - log.info(f'Added labware offset "{added_offset.id}"' f' to run "{run.id}".') + offsets_to_add = ( + request_body.data + if isinstance(request_body.data, list) + else [request_body.data] + ) + + added_offsets: list[LabwareOffset] = [] + for offset_to_add in offsets_to_add: + added_offset = run_orchestrator_store.add_labware_offset(offset_to_add) + added_offsets.append(added_offset) + log.info(f'Added labware offset "{added_offset.id}" to run "{run.id}".') + + # Return a list if the client POSTed a list, or an object if the client POSTed an object. + # For some reason, mypy needs to be given the type annotation explicitly. + response_data: LabwareOffset | list[LabwareOffset] = ( + added_offsets if isinstance(request_body.data, list) else added_offsets[0] + ) return await PydanticResponse.create( - content=SimpleBody.model_construct(data=added_offset), + content=SimpleBody.model_construct(data=response_data), status_code=status.HTTP_201_CREATED, ) diff --git a/robot-server/robot_server/runs/router/labware_router.py b/robot-server/robot_server/runs/router/labware_router.py index 78c880a2df5..970af7415c3 100644 --- a/robot-server/robot_server/runs/router/labware_router.py +++ b/robot-server/robot_server/runs/router/labware_router.py @@ -35,29 +35,38 @@ @PydanticResponse.wrap_route( labware_router.post, path="/runs/{runId}/labware_offsets", - summary="Add a labware offset to a run", + summary="Add labware offsets to a run", description=( - "Add a labware offset to an existing run, returning the created offset." + "Add labware offsets to an existing run, returning the created offsets." "\n\n" "There is no matching `GET /runs/{runId}/labware_offsets` endpoint." " To read the list of labware offsets currently on the run," " see the run's `labwareOffsets` field." + "\n\n" + "The response body's `data` will either be a single offset or a list of offsets," + " depending on whether you provided a single offset or a list in the request body's `data`." ), status_code=status.HTTP_201_CREATED, responses={ - status.HTTP_201_CREATED: {"model": SimpleBody[LabwareOffset]}, + status.HTTP_201_CREATED: { + "model": SimpleBody[LabwareOffset | list[LabwareOffset]] + }, status.HTTP_404_NOT_FOUND: {"model": ErrorBody[RunNotFound]}, status.HTTP_409_CONFLICT: {"model": ErrorBody[Union[RunStopped, RunNotIdle]]}, }, ) async def add_labware_offset( - request_body: RequestModel[LegacyLabwareOffsetCreate | LabwareOffsetCreate], + request_body: RequestModel[ + LegacyLabwareOffsetCreate + | LabwareOffsetCreate + | list[LegacyLabwareOffsetCreate | LabwareOffsetCreate] + ], run_orchestrator_store: Annotated[ RunOrchestratorStore, Depends(get_run_orchestrator_store) ], run: Annotated[Run, Depends(get_run_data_from_url)], -) -> PydanticResponse[SimpleBody[LabwareOffset]]: - """Add a labware offset to a run. +) -> PydanticResponse[SimpleBody[LabwareOffset | list[LabwareOffset]]]: + """Add labware offsets to a run. Args: request_body: New labware offset request data from request body. @@ -69,11 +78,26 @@ async def add_labware_offset( status.HTTP_409_CONFLICT ) - added_offset = run_orchestrator_store.add_labware_offset(request_body.data) - log.info(f'Added labware offset "{added_offset.id}"' f' to run "{run.id}".') + offsets_to_add = ( + request_body.data + if isinstance(request_body.data, list) + else [request_body.data] + ) + + added_offsets: list[LabwareOffset] = [] + for offset_to_add in offsets_to_add: + added_offset = run_orchestrator_store.add_labware_offset(offset_to_add) + added_offsets.append(added_offset) + log.info(f'Added labware offset "{added_offset.id}" to run "{run.id}".') + + # Return a list if the client POSTed a list, or an object if the client POSTed an object. + # For some reason, mypy needs to be given the type annotation explicitly. + response_data: LabwareOffset | list[LabwareOffset] = ( + added_offsets if isinstance(request_body.data, list) else added_offsets[0] + ) return await PydanticResponse.create( - content=SimpleBody.model_construct(data=added_offset), + content=SimpleBody.model_construct(data=response_data), status_code=status.HTTP_201_CREATED, ) diff --git a/robot-server/robot_server/service/dependencies.py b/robot-server/robot_server/service/dependencies.py index b27e014a3e9..80d811616c9 100644 --- a/robot-server/robot_server/service/dependencies.py +++ b/robot-server/robot_server/service/dependencies.py @@ -35,7 +35,27 @@ async def get_session_manager( async def get_unique_id() -> str: """Get a unique ID string to use as a resource identifier.""" - return str(uuid4()) + return UniqueIDFactory().get() + + +class UniqueIDFactory: + """ + This is equivalent to the `get_unique_id()` free function. Wrapping it in a factory + class makes things easier for FastAPI endpoint functions that need multiple unique + IDs. They can do: + + unique_id_factory: UniqueIDFactory = fastapi.Depends(UniqueIDFactory) + + And then: + + unique_id_1 = await unique_id_factory.get() + unique_id_2 = await unique_id_factory.get() + """ + + @staticmethod + def get() -> str: + """Get a unique ID to use as a resource identifier.""" + return str(uuid4()) async def get_current_time() -> datetime: diff --git a/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml b/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml index 0745f10a2ae..754a20df132 100644 --- a/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml +++ b/robot-server/tests/integration/http_api/test_labware_offsets.tavern.yaml @@ -150,14 +150,98 @@ stages: cursor: 0 totalLength: 0 +--- +test_name: Test POSTing multiple offsets in a single request + +marks: + - usefixtures: + - ot3_server_base_url + +stages: + - name: POST multiple offsets and check the response + request: + method: POST + url: '{ot3_server_base_url}/labwareOffsets' + json: + data: + - definitionUri: testNamespace/loadName1/1 + locationSequence: + - kind: onAddressableArea + addressableAreaName: A1 + vector: + x: 1 + y: 1 + z: 1 + - definitionUri: testNamespace/loadName2/1 + locationSequence: + - kind: onAddressableArea + addressableAreaName: A2 + vector: + x: 2 + y: 2 + z: 2 + response: + status_code: 201 + json: + data: + - id: !anystr + createdAt: !anystr + definitionUri: testNamespace/loadName1/1 + locationSequence: + - kind: onAddressableArea + addressableAreaName: A1 + vector: + x: 1 + y: 1 + z: 1 + - id: !anystr + createdAt: !anystr + definitionUri: testNamespace/loadName2/1 + locationSequence: + - kind: onAddressableArea + addressableAreaName: A2 + vector: + x: 2 + y: 2 + z: 2 + save: + json: + offset_1_data: data[0] + offset_2_data: data[1] + + - name: POST an empty list of offsets and check the response + request: + method: POST + url: '{ot3_server_base_url}/labwareOffsets' + json: + data: [] + response: + status_code: 201 + json: + data: [] + + - name: Make sure all offsets got stored + request: + url: '{ot3_server_base_url}/labwareOffsets' + response: + json: + data: + - !force_format_include '{offset_1_data}' + - !force_format_include '{offset_2_data}' + meta: + cursor: 0 + totalLength: 2 + --- # Some of the filter query parameters can have `null` values or be omitted, # with different semantics between the two. That distinction takes a bit of care to # preserve across our code, so here we test it specifically. test_name: Test null vs. omitted filter query parameters + marks: - usefixtures: - ot3_server_base_url + stages: - name: POST test offset 1 request: @@ -180,6 +264,7 @@ stages: save: json: offset_1_data: data + - name: POST test offset 2 request: method: POST @@ -202,6 +287,7 @@ stages: save: json: offset_2_data: data + - name: POST test offset 3 request: method: POST @@ -224,6 +310,7 @@ stages: save: json: offset_3_data: data + - name: POST test offset 4 request: method: POST @@ -247,6 +334,7 @@ stages: save: json: offset_4_data: data + - name: Test no filters request: url: '{ot3_server_base_url}/labwareOffsets' @@ -258,6 +346,7 @@ stages: - !force_format_include '{offset_3_data}' - !force_format_include '{offset_4_data}' meta: !anydict + - name: Test filtering on locationModuleModel=null request: url: '{ot3_server_base_url}/labwareOffsets?locationModuleModel=null' @@ -267,6 +356,7 @@ stages: - !force_format_include '{offset_1_data}' - !force_format_include '{offset_3_data}' meta: !anydict + - name: Test filtering on locationDefinitionUri=null request: url: '{ot3_server_base_url}/labwareOffsets?locationDefinitionUri=null' diff --git a/robot-server/tests/maintenance_runs/router/test_labware_router.py b/robot-server/tests/maintenance_runs/router/test_labware_router.py index 72b1e95e2f7..e1691c1b26b 100644 --- a/robot-server/tests/maintenance_runs/router/test_labware_router.py +++ b/robot-server/tests/maintenance_runs/router/test_labware_router.py @@ -50,20 +50,32 @@ def labware_definition(minimal_labware_def: LabwareDefDict) -> LabwareDefinition return LabwareDefinition.model_validate(minimal_labware_def) -async def test_add_labware_offset( +async def test_add_labware_offsets( decoy: Decoy, mock_maintenance_run_orchestrator_store: MaintenanceRunOrchestratorStore, run: MaintenanceRun, ) -> None: - """It should add the labware offset to the engine, assuming the run is current.""" - labware_offset_request = pe_types.LegacyLabwareOffsetCreate( + """It should add the labware offsets to the engine, assuming the run is current.""" + labware_offset_request_1 = pe_types.LegacyLabwareOffsetCreate( definitionUri="namespace_1/load_name_1/123", location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), vector=pe_types.LabwareOffsetVector(x=1, y=2, z=3), ) + labware_offset_request_2 = pe_types.LegacyLabwareOffsetCreate( + definitionUri="namespace_1/load_name_2/123", + location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), + vector=pe_types.LabwareOffsetVector(x=1, y=2, z=3), + ) - labware_offset = pe_types.LabwareOffset( - id="labware-offset-id", + labware_offset_1 = pe_types.LabwareOffset( + id="labware-offset-id-1", + createdAt=datetime(year=2022, month=2, day=2), + definitionUri="labware-definition-uri", + location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), + vector=pe_types.LabwareOffsetVector(x=0, y=0, z=0), + ) + labware_offset_2 = pe_types.LabwareOffset( + id="labware-offset-id-2", createdAt=datetime(year=2022, month=2, day=2), definitionUri="labware-definition-uri", location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), @@ -72,17 +84,39 @@ async def test_add_labware_offset( decoy.when( mock_maintenance_run_orchestrator_store.add_labware_offset( - labware_offset_request + labware_offset_request_1 + ) + ).then_return(labware_offset_1) + decoy.when( + mock_maintenance_run_orchestrator_store.add_labware_offset( + labware_offset_request_2 ) - ).then_return(labware_offset) + ).then_return(labware_offset_2) result = await add_labware_offset( - request_body=RequestModel(data=labware_offset_request), + request_body=RequestModel(data=labware_offset_request_1), run_orchestrator_store=mock_maintenance_run_orchestrator_store, run=run, ) + assert result.content == SimpleBody(data=labware_offset_1) + assert result.status_code == 201 - assert result.content == SimpleBody(data=labware_offset) + result = await add_labware_offset( + request_body=RequestModel( + data=[labware_offset_request_1, labware_offset_request_2] + ), + run_orchestrator_store=mock_maintenance_run_orchestrator_store, + run=run, + ) + assert result.content == SimpleBody(data=[labware_offset_1, labware_offset_2]) + assert result.status_code == 201 + + result = await add_labware_offset( + request_body=RequestModel(data=[]), + run_orchestrator_store=mock_maintenance_run_orchestrator_store, + run=run, + ) + assert result.content == SimpleBody(data=[]) assert result.status_code == 201 diff --git a/robot-server/tests/runs/router/test_labware_router.py b/robot-server/tests/runs/router/test_labware_router.py index 2b55b4097f6..e8304784fbf 100644 --- a/robot-server/tests/runs/router/test_labware_router.py +++ b/robot-server/tests/runs/router/test_labware_router.py @@ -53,20 +53,32 @@ def labware_definition(minimal_labware_def: LabwareDefDict) -> LabwareDefinition return LabwareDefinition.model_validate(minimal_labware_def) -async def test_add_labware_offset( +async def test_add_labware_offsets( decoy: Decoy, mock_run_orchestrator_store: RunOrchestratorStore, run: Run, ) -> None: - """It should add the labware offset to the engine, assuming the run is current.""" - labware_offset_request = pe_types.LegacyLabwareOffsetCreate( + """It should add the labware offsets to the engine, assuming the run is current.""" + labware_offset_request_1 = pe_types.LegacyLabwareOffsetCreate( definitionUri="namespace_1/load_name_1/123", location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), vector=pe_types.LabwareOffsetVector(x=1, y=2, z=3), ) + labware_offset_request_2 = pe_types.LegacyLabwareOffsetCreate( + definitionUri="namespace_1/load_name_2/123", + location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), + vector=pe_types.LabwareOffsetVector(x=1, y=2, z=3), + ) - labware_offset = pe_types.LabwareOffset( - id="labware-offset-id", + labware_offset_1 = pe_types.LabwareOffset( + id="labware-offset-id-1", + createdAt=datetime(year=2022, month=2, day=2), + definitionUri="labware-definition-uri", + location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), + vector=pe_types.LabwareOffsetVector(x=0, y=0, z=0), + ) + labware_offset_2 = pe_types.LabwareOffset( + id="labware-offset-id-2", createdAt=datetime(year=2022, month=2, day=2), definitionUri="labware-definition-uri", location=pe_types.LegacyLabwareOffsetLocation(slotName=DeckSlotName.SLOT_1), @@ -74,16 +86,36 @@ async def test_add_labware_offset( ) decoy.when( - mock_run_orchestrator_store.add_labware_offset(labware_offset_request) - ).then_return(labware_offset) + mock_run_orchestrator_store.add_labware_offset(labware_offset_request_1) + ).then_return(labware_offset_1) + decoy.when( + mock_run_orchestrator_store.add_labware_offset(labware_offset_request_2) + ).then_return(labware_offset_2) result = await add_labware_offset( - request_body=RequestModel(data=labware_offset_request), + request_body=RequestModel(data=labware_offset_request_1), run_orchestrator_store=mock_run_orchestrator_store, run=run, ) + assert result.content == SimpleBody(data=labware_offset_1) + assert result.status_code == 201 - assert result.content == SimpleBody(data=labware_offset) + result = await add_labware_offset( + request_body=RequestModel( + data=[labware_offset_request_1, labware_offset_request_2] + ), + run_orchestrator_store=mock_run_orchestrator_store, + run=run, + ) + assert result.content == SimpleBody(data=[labware_offset_1, labware_offset_2]) + assert result.status_code == 201 + + result = await add_labware_offset( + request_body=RequestModel(data=[]), + run_orchestrator_store=mock_run_orchestrator_store, + run=run, + ) + assert result.content == SimpleBody(data=[]) assert result.status_code == 201 From ff9f365a06a868c1f08134605290999f7ac9a17b Mon Sep 17 00:00:00 2001 From: emilyburghardt Date: Thu, 6 Feb 2025 10:21:10 -0700 Subject: [PATCH 59/81] API 2.22 docs versioning update (#17400) # Overview Adding API 2.22 to our PAPI versioning page. Now, we document API 2.22 for customers, but it's clear that this version only contains changes for our commercial partners. ## Test Plan and Hands on Testing Needs to be built ## Changelog -update versions table -add a simple version description for API 2.22 ## Review requests ## Risk assessment low --- api/docs/v2/versioning.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/docs/v2/versioning.rst b/api/docs/v2/versioning.rst index 935011f61dd..9f615ed04ff 100644 --- a/api/docs/v2/versioning.rst +++ b/api/docs/v2/versioning.rst @@ -84,6 +84,8 @@ This table lists the correspondence between Protocol API versions and robot soft +-------------+------------------------------+ | API Version | Introduced in Robot Software | +=============+==============================+ +| 2.22 | 8.3.0 | ++-------------+------------------------------+ | 2.21 | 8.2.0 | +-------------+------------------------------+ | 2.20 | 8.0.0 | @@ -136,6 +138,10 @@ This table lists the correspondence between Protocol API versions and robot soft Changes in API Versions ======================= +Version 2.22 +------------- +This version includes beta features for our commercial partners. + Version 2.21 ------------ - Adds :py:class:`.AbsorbanceReaderContext` to support the :ref:`Absorbance Plate Reader Module `. Use the load name ``absorbanceReaderV1`` with :py:meth:`.ProtocolContext.load_module` to add an Absorbance Plate Reader to a protocol. From 73b70f44648d8d4369d882c9f4de28565fbe509c Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Thu, 6 Feb 2025 12:20:41 -0600 Subject: [PATCH 60/81] chore(ci): adjust codecov settings and update step-generation workflow (#17424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Most js projects were not uploading to codecov before the change in #17406 to produce lcov output. - Now that they are, we don't want ❌ everywhere so let us adjust the patch threshold and catch up the ignore list. - Tackle any specific areas of coverage deficit strategically. - In addition convert `.github/workflows/step-generation-test.yaml` to the pattern of PD like in #17406 --- .codecov.yml | 66 +++++++++++++++------ .github/workflows/step-generation-test.yaml | 38 ++++-------- NOTICE | 2 +- step-generation/Makefile | 4 +- 4 files changed, 62 insertions(+), 48 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index 4eb13688110..0ec55aa6462 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,27 +1,55 @@ +version: 2.0 + +coverage: + status: + project: + default: + target: auto + threshold: '10' + patch: + default: + target: auto + threshold: 0 + +comment: + layout: 'reach, diff, flags, files' + ignore: - - '**/node_modules' - - 'webpack-config' - - 'hardware-testing' - - '**/*.md' - - '**/*.yaml' + - 'webpack-config/**' + - 'hardware-testing/**' + - 'abr-testing/**' + - 'test-data-generation/**' + - 'performance-metrics/**' + - 'package-testing/**' + - 'opentrons-ai-server/**' + - 'opentrons-ai-client/**' + - 'g-code-testing/**' + - 'api-client/**' + - 'analyses-snapshot-testing/**' + - '.storybook/**' + - 'react-api-client/**' + - 'scripts/**' + - '.github/**' + - '**/build/**' + - '**/dist/**' + - '**/node_modules/**' + - '**/{test,tests,__tests__,__mocks__,mocks}/**' + - '**/*.{md,yaml,yml,json,rst}' - '**/Makefile' - - '**/*.in' - - '**/*.json' - - '**/*.config.js' + - '**/*.{in,ini,lock,toml,cfg}' + - '**/setup.py' + - '**/requirements.txt' + - '**/.flake8' + - '**/.coveragerc' + - '**/.prettierrc.js' + - '**/.eslintrc.js' + - '**/Pipfile' + - '**/Dockerfile*' + - '**/*.{config.js,config.ts}' - '**/*.mk' - '**/*.stories.tsx' - -comment: - # add flags to `layout` configuration to show up in the PR comment - layout: 'reach, diff, flags, files' + - '**/*.{mjs,css,cjs,mts}' flag_management: default_rules: carryforward: true - -coverage: - status: - project: - default: - target: auto - threshold: 10 diff --git a/.github/workflows/step-generation-test.yaml b/.github/workflows/step-generation-test.yaml index 4dd540eccb8..c589223e452 100644 --- a/.github/workflows/step-generation-test.yaml +++ b/.github/workflows/step-generation-test.yaml @@ -9,12 +9,18 @@ on: - 'shared-data/**' - 'package.json' - '.github/workflows/step-generation-test.yaml' + - '.github/actions/js/setup/action.yml' + - '.github/actions/git/resolve-tag/action.yml' + - '.github/actions/environment/complex-variables/action.yml' push: paths: - 'step-generation/**' - 'shared-data/**' - 'package.json' - '.github/workflows/step-generation-test.yaml' + - '.github/actions/js/setup/action.yml' + - '.github/actions/git/resolve-tag/action.yml' + - '.github/actions/environment/complex-variables/action.yml' branches: - '*' @@ -33,35 +39,15 @@ jobs: js-unit-test: name: 'step generation unit tests' runs-on: 'ubuntu-24.04' - timeout-minutes: 30 + timeout-minutes: 20 steps: - - uses: 'actions/checkout@v4' - - uses: 'actions/setup-node@v4' - with: - node-version: '22.11.0' - - name: 'install udev for usb-detection' - run: | - # WORKAROUND: Remove microsoft debian repo due to https://github.com/microsoft/linux-package-repositories/issues/130. Remove line below after it is resolved - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - sudo apt-get update && sudo apt-get install libudev-dev - - name: 'cache yarn cache' - uses: actions/cache@v3 - with: - path: | - ${{ github.workspace }}/.yarn-cache - ${{ github.workspace }}/.npm-cache - key: js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} - restore-keys: | - js-${{ secrets.GH_CACHE_VERSION }}-${{ runner.os }}-yarn- - - name: 'setup-js' - run: | - npm config set cache ./.npm-cache - yarn config set cache-folder ./.yarn-cache - make setup-js + - name: 'Checkout Repository' + uses: actions/checkout@v4 + - uses: ./.github/actions/js/setup - name: 'run step generation unit tests' run: make -C step-generation test-cov - name: 'Upload coverage report' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v5 with: - files: ./coverage/lcov.info flags: step-generation + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/NOTICE b/NOTICE index 3d2de27433a..88a30e2a338 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,5 @@ Opentrons Platform -Copyright 2015-2020 Opentrons Labworks, Inc. +Copyright 2015-2025 Opentrons Labworks, Inc. The source code in this repository is licensed under the Apache License, Version 2.0 (the "License"); you may not use this code except in diff --git a/step-generation/Makefile b/step-generation/Makefile index fb32b39b756..9d3d98b40bf 100644 --- a/step-generation/Makefile +++ b/step-generation/Makefile @@ -3,10 +3,10 @@ # using bash instead of /bin/bash in SHELL prevents macOS optimizing away our PATH update SHELL := bash -# These variables can be overriden when make is invoked to customize the +# These variables can be overridden when make is invoked to customize the # behavior of jest tests ?= -cov_opts ?= --coverage=true +cov_opts ?= --coverage --pool=threads test_opts ?= .PHONY: test From cdb7802bd14cead5b64574faf269d79b2f160b5f Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Thu, 6 Feb 2025 14:27:49 -0500 Subject: [PATCH 61/81] docs(robot-server): Include `/labwareOffsets` endpoints in docs again (#17441) These HTTP API endpoints were hidden from the docs because they were incomplete and we didn't want the soon-to-be-released v8.3.0 software to advertise them. v8.3.0 is in its own branch now, so we can undo that, so the docs match the in-development state of v8.4.0. Reverts commit 5f869ea04c29cb6d1b2e4884af8d859dbbd88149, PR #17219. --- robot-server/robot_server/labware_offsets/router.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/robot-server/robot_server/labware_offsets/router.py b/robot-server/robot_server/labware_offsets/router.py index 7d00fbc68d6..c388046dad2 100644 --- a/robot-server/robot_server/labware_offsets/router.py +++ b/robot-server/robot_server/labware_offsets/router.py @@ -58,7 +58,6 @@ """ ), status_code=201, - include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def post_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -119,7 +118,6 @@ async def post_labware_offsets( # noqa: D103 " Filters are ANDed together." " Results are returned in order from oldest to newest." ), - include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def get_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -211,7 +209,6 @@ async def get_labware_offsets( # noqa: D103 path="/labwareOffsets/{id}", summary="Delete a single labware offset", description="Delete a single labware offset. The deleted offset is returned.", - include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def delete_labware_offset( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], @@ -234,7 +231,6 @@ async def delete_labware_offset( # noqa: D103 router.delete, path="/labwareOffsets", summary="Delete all labware offsets", - include_in_schema=False, # todo(mm, 2025-01-08): Include for v8.4.0. ) async def delete_all_labware_offsets( # noqa: D103 store: Annotated[LabwareOffsetStore, fastapi.Depends(get_labware_offset_store)], From 94bd0e94a66154e2a3eb1c59725a04dddef15cdf Mon Sep 17 00:00:00 2001 From: Sanniti Pimpley Date: Thu, 6 Feb 2025 15:16:13 -0500 Subject: [PATCH 62/81] docs(api): clarify in docs that Well.has_tip checks only for unused tips (#17412) Closes RQA-3790 # Overview `Well.has_tip` property has been checking for only clean/ unused tips since API v2.2 but the docstrings don't mention that. That has understandably caused some confusion in protocol behaviors. This PR helps mitigate that issue by clarifying the exact behavior of this property ## Risk assessment None. --------- Co-authored-by: Max Marrone --- api/src/opentrons/protocol_api/labware.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/api/src/opentrons/protocol_api/labware.py b/api/src/opentrons/protocol_api/labware.py index 57472641969..19a707867b7 100644 --- a/api/src/opentrons/protocol_api/labware.py +++ b/api/src/opentrons/protocol_api/labware.py @@ -117,8 +117,23 @@ def parent(self) -> Labware: @property @requires_version(2, 0) def has_tip(self) -> bool: - """Whether this well contains a tip. Always ``False`` if the parent labware - isn't a tip rack.""" + """Whether this well contains an unused tip. + + From API v2.2 on: + + - Returns ``False`` if: + + - the well has no tip present, or + - the well has a tip that's been used by the protocol previously + + - Returns ``True`` if the well has an unused tip. + + Before API v2.2: + + - Returns ``True`` as long as the well has a tip, even if it is used. + + Always ``False`` if the parent labware isn't a tip rack. + """ return self._core.has_tip() @has_tip.setter From db4640f8a266b282c8f274a70d575a3035ac2daa Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 6 Feb 2025 17:08:10 -0500 Subject: [PATCH 63/81] feat(app): Implement LPC Redesign Header on ODD (#17449) Closes EXEC-1131 --- .../en/labware_position_check.json | 6 + .../LabwarePositionCheck/ExitConfirmation.tsx | 150 --------------- .../LPCContentContainer.tsx | 47 +++++ .../LabwarePositionCheck/LPCErrorModal.tsx | 95 +++++---- .../LPCProbeNotAttached.tsx | 37 ++++ .../LabwarePositionCheck/LPCRobotInMotion.tsx | 65 +++++++ .../LabwarePositionCheck/LPCWizardFlex.tsx | 89 ++++----- .../RobotMotionLoader.tsx | 54 ------ .../__fixtures__/mockLPCContentProps.ts | 10 + .../__tests__/LPCContentContainer.test.tsx | 59 ++++++ .../LabwarePositionCheck/__tests__/utils.ts | 7 + .../__tests__/useLPCHeaderCommands.test.tsx | 181 ++++++++++++++++++ .../hooks/useLPCCommands/index.ts | 6 +- ...ditionalCleanup.ts => useHandleCleanup.ts} | 31 +-- .../useLPCCommands/useHandleProbeCommands.ts | 14 +- .../useLPCCommands/useLPCHeaderCommands.ts | 76 ++++++++ .../hooks/useLPCInitialState/index.ts | 1 + .../steps/AttachProbe.tsx | 138 +++---------- .../steps/BeforeBeginning/index.tsx | 95 +++++---- .../steps/DetachProbe.tsx | 101 ++-------- .../steps/HandleLabware/index.tsx | 22 +++ .../steps/LPCComplete/index.tsx | 21 +- .../LabwarePositionCheck/types/content.ts | 14 +- .../organisms/ODD/ChildNavigation/index.tsx | 2 +- app/src/redux/protocol-runs/actions/lpc.ts | 14 +- .../protocol-runs/constants/lpc/actions.ts | 2 +- app/src/redux/protocol-runs/reducer/index.ts | 2 +- app/src/redux/protocol-runs/reducer/lpc.ts | 44 +++-- .../protocol-runs/selectors/lpc/steps.ts | 14 +- app/src/redux/protocol-runs/types/lpc.ts | 6 +- 30 files changed, 793 insertions(+), 610 deletions(-) delete mode 100644 app/src/organisms/LabwarePositionCheck/ExitConfirmation.tsx create mode 100644 app/src/organisms/LabwarePositionCheck/LPCContentContainer.tsx create mode 100644 app/src/organisms/LabwarePositionCheck/LPCProbeNotAttached.tsx create mode 100644 app/src/organisms/LabwarePositionCheck/LPCRobotInMotion.tsx delete mode 100644 app/src/organisms/LabwarePositionCheck/RobotMotionLoader.tsx create mode 100644 app/src/organisms/LabwarePositionCheck/__fixtures__/mockLPCContentProps.ts create mode 100644 app/src/organisms/LabwarePositionCheck/__tests__/LPCContentContainer.test.tsx create mode 100644 app/src/organisms/LabwarePositionCheck/__tests__/utils.ts create mode 100644 app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/__tests__/useLPCHeaderCommands.test.tsx rename app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/{useHandleConditionalCleanup.ts => useHandleCleanup.ts} (54%) create mode 100644 app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands.ts diff --git a/app/src/assets/localization/en/labware_position_check.json b/app/src/assets/localization/en/labware_position_check.json index 7cdd8cce2d1..73f4263a4c5 100644 --- a/app/src/assets/localization/en/labware_position_check.json +++ b/app/src/assets/localization/en/labware_position_check.json @@ -23,13 +23,17 @@ "confirm_detached": "Confirm removal", "confirm_pick_up_tip_modal_title": "Did the pipette pick up a tip successfully?", "confirm_pick_up_tip_modal_try_again_text": "No, try again", + "confirm_placement": "Confirm placement", "confirm_position_and_move": "Confirm position, move to slot {{next_slot}}", "confirm_position_and_pick_up_tip": "Confirm position, pick up tip", "confirm_position_and_return_tip": "Confirm position, return tip to Slot {{next_slot}} and home", + "confirm_removal": "Confirm removal", + "continue": "Continue", "default_labware_offset": "Default Labware Offset", "detach_probe": "Remove calibration probe", "ensure_nozzle_position_desktop": "Ensure that the {{tip_type}} is centered above and level with {{item_location}}. If it isn't, use the controls below or your keyboard to jog the pipette until it is properly aligned.", "ensure_nozzle_position_odd": "Ensure that the {{tip_type}} is centered above and level with {{item_location}}. If it isn't, tap Move pipette and then jog the pipette until it is properly aligned.", + "exit": "Exit", "exit_screen_confirm_exit": "Exit and discard all labware offsets", "exit_screen_go_back": "Go back to labware position check", "exit_screen_subtitle": "If you exit now, all labware offsets will be discarded. This cannot be undone.", @@ -104,6 +108,7 @@ "robot_in_motion": "Stand back, robot is in motion.", "run": "Run", "run_labware_position_check": "run labware position check", + "save": "Save", "secondary_pipette_tipracks_section": "Check tip racks with {{secondary_mount}} Pipette", "see_how_offsets_work": "See how labware offsets work", "select_labware_from_list": "Select a labware from the list to check its stored offset data", @@ -115,6 +120,7 @@ "stored_offsets_for_this_protocol": "Stored Labware Offset data that applies to this protocol", "table_view": "Table View", "tip_rack": "tip rack", + "try_again": "Try again", "view_current_offsets": "view current offsets", "view_data": "View data", "what_is_labware_offset_data": "What is labware offset data?" diff --git a/app/src/organisms/LabwarePositionCheck/ExitConfirmation.tsx b/app/src/organisms/LabwarePositionCheck/ExitConfirmation.tsx deleted file mode 100644 index d5dbd072d04..00000000000 --- a/app/src/organisms/LabwarePositionCheck/ExitConfirmation.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import styled, { css } from 'styled-components' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' - -import { - AlertPrimaryButton, - ALIGN_CENTER, - COLORS, - DIRECTION_COLUMN, - Flex, - Icon, - JUSTIFY_CENTER, - JUSTIFY_FLEX_END, - RESPONSIVENESS, - SecondaryButton, - SIZE_3, - SPACING, - LegacyStyledText, - TEXT_ALIGN_CENTER, - TYPOGRAPHY, -} from '@opentrons/components' - -import { SmallButton } from '/app/atoms/buttons' -import { getIsOnDevice } from '/app/redux/config' - -import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' - -export function ExitConfirmation({ - commandUtils, -}: LPCWizardContentProps): JSX.Element { - const { i18n, t } = useTranslation(['labware_position_check', 'shared']) - const { confirmExitLPC, cancelExitLPC, toggleRobotMoving } = commandUtils - const isOnDevice = useSelector(getIsOnDevice) - - const handleConfirmExit = (): void => { - toggleRobotMoving(true).then(() => { - confirmExitLPC() - }) - } - - return ( - - - - {isOnDevice ? ( - <> - - {t('remove_probe_before_exit')} - - - - {t('exit_screen_subtitle')} - - - - ) : ( - <> - - {t('remove_probe_before_exit')} - - - {t('exit_screen_subtitle')} - - - )} - - {isOnDevice ? ( - - - - - ) : ( - - - - {t('shared:go_back')} - - - {t('remove_calibration_probe')} - - - - )} - - ) -} - -const CONTAINER_STYLE = css` - flex-direction: ${DIRECTION_COLUMN}; - padding: ${SPACING.spacing32}; - min-height: 29.5rem; -` - -const CONTENT_CONTAINER_STYLE = css` - flex: 1; - flex-direction: ${DIRECTION_COLUMN}; - justify-content: ${JUSTIFY_CENTER}; - align-items: ${ALIGN_CENTER}; - padding-left: ${SPACING.spacing32}; - padding-right: ${SPACING.spacing32}; -` - -const BUTTON_CONTAINER_STYLE = css` - width: 100%; - margin-top: ${SPACING.spacing32}; - justify-content: ${JUSTIFY_FLEX_END}; - align-items: ${ALIGN_CENTER}; -` - -const BUTTON_CONTAINER_STYLE_ODD = css` - width: 100%; - justify-content: ${JUSTIFY_FLEX_END}; - align-items: ${ALIGN_CENTER}; - grid-gap: ${SPACING.spacing8}; -` - -const ConfirmationHeader = styled.h1` - margin-top: ${SPACING.spacing24}; - ${TYPOGRAPHY.h1Default} - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level4HeaderSemiBold} - } -` - -const ConfirmationHeaderODD = styled.h1` - margin-top: ${SPACING.spacing24}; - ${TYPOGRAPHY.level3HeaderBold} - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level4HeaderSemiBold} - } -` - -const ConfirmationBodyODD = styled.h1` - ${TYPOGRAPHY.level4HeaderRegular} - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level4HeaderRegular} - } - color: ${COLORS.grey60}; -` diff --git a/app/src/organisms/LabwarePositionCheck/LPCContentContainer.tsx b/app/src/organisms/LabwarePositionCheck/LPCContentContainer.tsx new file mode 100644 index 00000000000..aaf94add565 --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/LPCContentContainer.tsx @@ -0,0 +1,47 @@ +import { css } from 'styled-components' + +import { DIRECTION_COLUMN, Flex, SPACING } from '@opentrons/components' + +import { StepMeter } from '/app/atoms/StepMeter' +// TODO(jh, 02-05-25): Move ChildNavigation to molecules. +// eslint-disable-next-line opentrons/no-imports-across-applications +import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import { useSelector } from 'react-redux' +import { selectStepInfo } from '/app/redux/protocol-runs' + +// eslint-disable-next-line opentrons/no-imports-across-applications +import type { ChildNavigationProps } from '/app/organisms/ODD/ChildNavigation' +import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' + +type LPCContentContainerProps = LPCWizardContentProps & + Partial & { + children: JSX.Element + header: string + } + +export function LPCContentContainer({ + children, + runId, + ...rest +}: LPCContentContainerProps): JSX.Element { + const { currentStepIndex, totalStepCount } = useSelector( + selectStepInfo(runId) + ) + + return ( + <> + + + {children} + + ) +} + +// TODO(jh, 02-05-25): Investigate whether we can remove the position: fixed styling from ChildNav. +const CHILD_NAV_STYLE = css` + top: ${SPACING.spacing8}; +` +const CHILDREN_CONTAINER_STYLE = css` + margin-top: 7.75rem; + flex-direction: ${DIRECTION_COLUMN}; +` diff --git a/app/src/organisms/LabwarePositionCheck/LPCErrorModal.tsx b/app/src/organisms/LabwarePositionCheck/LPCErrorModal.tsx index 88a3e2b01de..af3e81ad7ac 100644 --- a/app/src/organisms/LabwarePositionCheck/LPCErrorModal.tsx +++ b/app/src/organisms/LabwarePositionCheck/LPCErrorModal.tsx @@ -22,62 +22,61 @@ import { import { i18n } from '/app/i18n' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' const SUPPORT_EMAIL = 'support@opentrons.com' -export function LPCErrorModal({ - commandUtils, - onCloseClick, -}: LPCWizardContentProps): JSX.Element { +export function LPCErrorModal(props: LPCWizardContentProps): JSX.Element { const { t } = useTranslation(['labware_position_check', 'shared', 'branded']) - const { errorMessage, toggleRobotMoving } = commandUtils - - const handleClose = (): void => { - void toggleRobotMoving(true).then(() => { - onCloseClick() - }) - } + const { errorMessage, headerCommands } = props.commandUtils return ( - - - - {i18n.format(t('shared:something_went_wrong'), 'sentenceCase')} - - - - {t('remove_probe_before_exit')} - - - {t('branded:help_us_improve_send_error_report', { - support_email: SUPPORT_EMAIL, - })} - - - - - {t('shared:exit')} - - + + + {i18n.format(t('shared:something_went_wrong'), 'sentenceCase')} + + + + {t('remove_probe_before_exit')} + + + {t('branded:help_us_improve_send_error_report', { + support_email: SUPPORT_EMAIL, + })} + + + + + {t('shared:exit')} + + + ) } diff --git a/app/src/organisms/LabwarePositionCheck/LPCProbeNotAttached.tsx b/app/src/organisms/LabwarePositionCheck/LPCProbeNotAttached.tsx new file mode 100644 index 00000000000..ac58206358e --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/LPCProbeNotAttached.tsx @@ -0,0 +1,37 @@ +import { useSelector } from 'react-redux' +import { useTranslation } from 'react-i18next' + +import { ProbeNotAttached } from '/app/organisms/PipetteWizardFlows/ProbeNotAttached' +import { getIsOnDevice } from '/app/redux/config' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' + +import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' + +// TODO(jh, 02-05-25): EXEC-1190. +export function LPCProbeNotAttached(props: LPCWizardContentProps): JSX.Element { + const { t } = useTranslation('labware_position_check') + const { commandUtils } = props + const { setShowUnableToDetect, headerCommands } = commandUtils + const isOnDevice = useSelector(getIsOnDevice) + + return ( + + null} + setShowUnableToDetect={setShowUnableToDetect} + isOnDevice={isOnDevice} + /> + + ) +} diff --git a/app/src/organisms/LabwarePositionCheck/LPCRobotInMotion.tsx b/app/src/organisms/LabwarePositionCheck/LPCRobotInMotion.tsx new file mode 100644 index 00000000000..d08b2f69005 --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/LPCRobotInMotion.tsx @@ -0,0 +1,65 @@ +import styled, { css } from 'styled-components' +import { + ALIGN_CENTER, + COLORS, + DIRECTION_COLUMN, + Flex, + Icon, + JUSTIFY_CENTER, + RESPONSIVENESS, + SIZE_4, + SPACING, + LegacyStyledText, + TYPOGRAPHY, +} from '@opentrons/components' + +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' + +import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' +import { useTranslation } from 'react-i18next' + +interface RobotMotionLoaderProps extends LPCWizardContentProps { + header?: string + body?: string +} + +export function LPCRobotInMotion(props: RobotMotionLoaderProps): JSX.Element { + const { header, body } = props + const { t } = useTranslation('labware_position_check') + + return ( + + + + {header != null ? {header} : null} + {body != null ? ( + {body} + ) : null} + + + ) +} + +const LoadingText = styled.h1` + ${TYPOGRAPHY.h1Default} + + p { + text-transform: lowercase; + } + + p::first-letter { + text-transform: uppercase; + } + + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + ${TYPOGRAPHY.level4HeaderSemiBold} + } +` + +const CONTAINER_STYLE = css` + flex-direction: ${DIRECTION_COLUMN}; + justify-content: ${JUSTIFY_CENTER}; + align-items: ${ALIGN_CENTER}; + min-height: 29.5rem; + grid-gap: ${SPACING.spacing24}; +` diff --git a/app/src/organisms/LabwarePositionCheck/LPCWizardFlex.tsx b/app/src/organisms/LabwarePositionCheck/LPCWizardFlex.tsx index 805b2071227..8d753023def 100644 --- a/app/src/organisms/LabwarePositionCheck/LPCWizardFlex.tsx +++ b/app/src/organisms/LabwarePositionCheck/LPCWizardFlex.tsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' @@ -12,42 +13,43 @@ import { DetachProbe, LPCComplete, } from '/app/organisms/LabwarePositionCheck/steps' -import { ExitConfirmation } from './ExitConfirmation' -import { RobotMotionLoader } from './RobotMotionLoader' -import { WizardHeader } from '/app/molecules/WizardHeader' +import { LPCRobotInMotion } from './LPCRobotInMotion' import { LPCErrorModal } from './LPCErrorModal' +import { LPCProbeNotAttached } from './LPCProbeNotAttached' import { useLPCCommands, useLPCInitialState, } from '/app/organisms/LabwarePositionCheck/hooks' import { closeLPC, - proceedStep, + proceedStep as proceedStepDispatch, + goBackLastStep as goBackStepDispatch, LPC_STEP, selectCurrentStep, } from '/app/redux/protocol-runs' import { getIsOnDevice } from '/app/redux/config' +import { useLPCHeaderCommands } from '/app/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands' import type { LPCFlowsProps } from '/app/organisms/LabwarePositionCheck/LPCFlows' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' -import type { State } from '/app/redux/types' -import { useEffect } from 'react' +import type { LPCStep } from '/app/redux/protocol-runs' export interface LPCWizardFlexProps extends Omit {} export function LPCWizardFlex(props: LPCWizardFlexProps): JSX.Element { const { onCloseClick, ...rest } = props - const proceed = (): void => { - dispatch(proceedStep(props.runId)) + const proceedStep = (toStep?: LPCStep): void => { + dispatch(proceedStepDispatch(props.runId, toStep)) } - const onCloseClickDispatch = (): void => { - onCloseClick() + const goBackLastStep = (): void => { + dispatch(goBackStepDispatch(props.runId)) } + const dispatch = useDispatch() const LPCHandlerUtils = useLPCCommands({ ...props, - onCloseClick: onCloseClickDispatch, + onCloseClick, }) useLPCInitialState({ ...rest }) @@ -59,12 +61,19 @@ export function LPCWizardFlex(props: LPCWizardFlexProps): JSX.Element { } }, []) + const headerCommands = useLPCHeaderCommands({ + ...props, + LPCHandlerUtils, + proceedStep, + goBackLastStep, + }) + return ( ) } @@ -74,12 +83,11 @@ function LPCWizardFlexComponent(props: LPCWizardContentProps): JSX.Element { return isOnDevice ? ( <> - ) : ( createPortal( - }> + , getTopPortalEl() @@ -87,56 +95,25 @@ function LPCWizardFlexComponent(props: LPCWizardContentProps): JSX.Element { ) } -function LPCWizardHeader({ - runId, - commandUtils, -}: LPCWizardContentProps): JSX.Element { - const { t } = useTranslation('labware_position_check') - const { currentStepIndex, totalStepCount } = useSelector((state: State) => ({ - currentStepIndex: - state.protocolRuns[runId]?.lpc?.steps.currentStepIndex ?? 0, - totalStepCount: state.protocolRuns[runId]?.lpc?.steps.totalStepCount ?? 0, - })) - const { - errorMessage, - showExitConfirmation, - isExiting, - confirmExitLPC, - } = commandUtils - - // TODO(jh 01-15-24): Revisit the onExit conditions. Can we simplify? - return ( - - ) -} - function LPCWizardContent(props: LPCWizardContentProps): JSX.Element { const { t } = useTranslation('shared') const currentStep = useSelector(selectCurrentStep(props.runId)) - const { - isRobotMoving, - errorMessage, - showExitConfirmation, - } = props.commandUtils + const { isRobotMoving, errorMessage, unableToDetect } = props.commandUtils // Handle special cases that are shared by multiple steps first. if (isRobotMoving) { - return + return ( + + ) } if (errorMessage != null) { return } - if (showExitConfirmation) { - return + if (unableToDetect) { + return } if (currentStep == null) { console.error('LPC store not properly initialized.') diff --git a/app/src/organisms/LabwarePositionCheck/RobotMotionLoader.tsx b/app/src/organisms/LabwarePositionCheck/RobotMotionLoader.tsx deleted file mode 100644 index 5b83f147b8b..00000000000 --- a/app/src/organisms/LabwarePositionCheck/RobotMotionLoader.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import styled, { css } from 'styled-components' -import { - ALIGN_CENTER, - COLORS, - DIRECTION_COLUMN, - Flex, - Icon, - JUSTIFY_CENTER, - RESPONSIVENESS, - SIZE_4, - SPACING, - LegacyStyledText, - TYPOGRAPHY, -} from '@opentrons/components' - -interface RobotMotionLoaderProps { - header?: string - body?: string -} - -export function RobotMotionLoader(props: RobotMotionLoaderProps): JSX.Element { - const { header, body } = props - return ( - - - {header != null ? {header} : null} - {body != null ? {body} : null} - - ) -} - -const LoadingText = styled.h1` - ${TYPOGRAPHY.h1Default} - - p { - text-transform: lowercase; - } - - p::first-letter { - text-transform: uppercase; - } - - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level4HeaderSemiBold} - } -` - -const CONTAINER_STYLE = css` - flex-direction: ${DIRECTION_COLUMN}; - justify-content: ${JUSTIFY_CENTER}; - align-items: ${ALIGN_CENTER}; - min-height: 29.5rem; - grid-gap: ${SPACING.spacing24}; -` diff --git a/app/src/organisms/LabwarePositionCheck/__fixtures__/mockLPCContentProps.ts b/app/src/organisms/LabwarePositionCheck/__fixtures__/mockLPCContentProps.ts new file mode 100644 index 00000000000..80c1d49a23a --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/__fixtures__/mockLPCContentProps.ts @@ -0,0 +1,10 @@ +import { vi } from 'vitest' + +import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' + +export const mockLPCContentProps: LPCWizardContentProps = { + runId: 'MOCK_RUN_ID', + commandUtils: {} as any, + proceedStep: vi.fn(), + goBackLastStep: vi.fn(), +} diff --git a/app/src/organisms/LabwarePositionCheck/__tests__/LPCContentContainer.test.tsx b/app/src/organisms/LabwarePositionCheck/__tests__/LPCContentContainer.test.tsx new file mode 100644 index 00000000000..e9596fabefc --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/__tests__/LPCContentContainer.test.tsx @@ -0,0 +1,59 @@ +import { describe, beforeEach, afterEach, it, vi } from 'vitest' +import { screen } from '@testing-library/react' +import { useSelector } from 'react-redux' +import { renderWithProviders } from '/app/__testing-utils__' +import { i18n } from '/app/i18n' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' +// eslint-disable-next-line opentrons/no-imports-across-applications +import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import { StepMeter } from '/app/atoms/StepMeter' +import { mockLPCContentProps } from '/app/organisms/LabwarePositionCheck/__fixtures__/mockLPCContentProps' + +import type { ComponentProps } from 'react' + +vi.mock('react-redux', async importOriginal => { + const actual = await importOriginal() + return { + ...actual, + useSelector: vi.fn(), + } +}) +vi.mock('/app/organisms/ODD/ChildNavigation') +vi.mock('/app/atoms/StepMeter') + +const render = (props: ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('LPCContentContainer', () => { + let props: ComponentProps + + beforeEach(() => { + props = { + header: 'MOCK_HEADER', + ...mockLPCContentProps, + children:
MOCK_CHILDREN
, + } + + vi.mocked(ChildNavigation).mockReturnValue(
MOCK_CHILD_NAV
) + vi.mocked(StepMeter).mockReturnValue(
MOCK_STEP_METER
) + vi.mocked(useSelector).mockReturnValue({ + currentStepIndex: 1, + totalStepCount: 5, + }) + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + it('renders correct content and children', () => { + render(props) + + screen.getByText('MOCK_CHILDREN') + screen.getByText('MOCK_CHILD_NAV') + screen.getByText('MOCK_STEP_METER') + }) +}) diff --git a/app/src/organisms/LabwarePositionCheck/__tests__/utils.ts b/app/src/organisms/LabwarePositionCheck/__tests__/utils.ts new file mode 100644 index 00000000000..63fa87d046b --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/__tests__/utils.ts @@ -0,0 +1,7 @@ +import { screen, fireEvent } from '@testing-library/react' + +// TODO(jh, 02-06-25): Find a good place for testing utils. This is also used in Error Recovery. +export function clickButtonLabeled(label: string): void { + const buttons = screen.getAllByRole('button', { name: label }) + fireEvent.click(buttons[0]) +} diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/__tests__/useLPCHeaderCommands.test.tsx b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/__tests__/useLPCHeaderCommands.test.tsx new file mode 100644 index 00000000000..4e7915eb708 --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/__tests__/useLPCHeaderCommands.test.tsx @@ -0,0 +1,181 @@ +import { describe, beforeEach, afterEach, it, vi, expect } from 'vitest' +import { renderHook, act, waitFor } from '@testing-library/react' +import { useSelector, Provider } from 'react-redux' +import { createStore } from 'redux' +import { I18nextProvider } from 'react-i18next' + +import { i18n } from '/app/i18n' +import { LPC_STEP } from '/app/redux/protocol-runs' +import { useLPCHeaderCommands } from '../useLPCHeaderCommands' + +import type { FunctionComponent, ReactNode } from 'react' +import type { UseLPCCommandsResult } from '/app/organisms/LabwarePositionCheck/hooks' +import type { UseLPCHeaderCommandsProps } from '../useLPCHeaderCommands' +import type { State } from '/app/redux/types' +import type { Store } from 'redux' + +vi.mock('react-redux', async importOriginal => { + const actual = await importOriginal() + return { + ...actual, + useSelector: vi.fn(), + } +}) + +let props: UseLPCHeaderCommandsProps +let mockLPCHandlerUtils: UseLPCCommandsResult +let wrapper: FunctionComponent<{ children: ReactNode }> +let store: Store +let toggleRobotMovingPromise: Promise +let handleStartLPCPromise: Promise +let handleProbeAttachmentPromise: Promise +let handleValidMoveToMaintenancePositionPromise: Promise +let handleCleanUpAndClosePromise: Promise + +describe('useLPCHeaderCommands', () => { + const mockPipette = { id: 'mock-pipette' } + const mockRunId = 'mock-run-id' + const mockProceedStep = vi.fn() + + beforeEach(() => { + toggleRobotMovingPromise = Promise.resolve() + handleStartLPCPromise = Promise.resolve() + handleProbeAttachmentPromise = Promise.resolve() + handleValidMoveToMaintenancePositionPromise = Promise.resolve() + handleCleanUpAndClosePromise = Promise.resolve() + + mockLPCHandlerUtils = { + toggleRobotMoving: vi.fn(() => toggleRobotMovingPromise), + handleStartLPC: vi.fn(() => handleStartLPCPromise), + handleProbeAttachment: vi.fn(() => handleProbeAttachmentPromise), + handleValidMoveToMaintenancePosition: vi.fn( + () => handleValidMoveToMaintenancePositionPromise + ), + handleCleanUpAndClose: vi.fn(() => handleCleanUpAndClosePromise), + } as any + + props = { + LPCHandlerUtils: mockLPCHandlerUtils, + proceedStep: mockProceedStep, + goBackLastStep: vi.fn(), + runId: mockRunId, + } + + store = createStore(vi.fn(), {}) + store.dispatch = vi.fn() + + wrapper = ({ children }) => ( + + {children} + + ) + + vi.mocked(useSelector).mockImplementation(() => { + return mockPipette + }) + }) + + afterEach(() => { + vi.clearAllMocks() + }) + + it('should execute handleProceed commands in correct sequence', async () => { + const { result } = renderHook(() => useLPCHeaderCommands(props), { + wrapper, + }) + + await act(async () => { + result.current.handleProceed() + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(true) + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.handleStartLPC).toHaveBeenCalledWith( + mockPipette, + mockProceedStep + ) + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(false) + }) + }) + + it('should execute handleAttachProbeCheck commands in correct sequence', async () => { + const { result } = renderHook(() => useLPCHeaderCommands(props), { + wrapper, + }) + + await act(async () => { + result.current.handleAttachProbeCheck() + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(true) + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.handleProbeAttachment).toHaveBeenCalledWith( + mockPipette, + mockProceedStep + ) + }) + + await waitFor(() => { + expect(mockProceedStep).toHaveBeenCalled() + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(false) + }) + }) + + it('should execute handleNavToDetachProbe commands in correct sequence', async () => { + const { result } = renderHook(() => useLPCHeaderCommands(props), { + wrapper, + }) + + await act(async () => { + result.current.handleNavToDetachProbe() + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(true) + }) + + await waitFor(() => { + expect( + mockLPCHandlerUtils.handleValidMoveToMaintenancePosition + ).toHaveBeenCalledWith(mockPipette) + }) + + await waitFor(() => { + expect(mockProceedStep).toHaveBeenCalledWith(LPC_STEP.DETACH_PROBE) + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(false) + }) + }) + + it('should execute handleClose commands in correct sequence', async () => { + const { result } = renderHook(() => useLPCHeaderCommands(props), { + wrapper, + }) + + await act(async () => { + result.current.handleClose() + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.toggleRobotMoving).toHaveBeenCalledWith(true) + }) + + await waitFor(() => { + expect(mockLPCHandlerUtils.handleCleanUpAndClose).toHaveBeenCalled() + }) + }) +}) diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/index.ts b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/index.ts index 606d25a7e45..b8c21262e3d 100644 --- a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/index.ts +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/index.ts @@ -2,7 +2,7 @@ import { useState } from 'react' import { useApplyLPCOffsets } from './useApplyLPCOffsets' import { useHandleJog } from './useHandleJog' -import { useHandleConditionalCleanup } from './useHandleConditionalCleanup' +import { useHandleCleanup } from './useHandleCleanup' import { useChainMaintenanceCommands } from '/app/resources/maintenance_runs' import { useHandleProbeCommands } from './useHandleProbeCommands' import { useHandleStartLPC } from './useHandleStartLPC' @@ -16,7 +16,7 @@ import { useHandleValidMoveToMaintenancePosition } from './useHandleValidMoveToM import type { CreateCommand } from '@opentrons/shared-data' import type { CommandData } from '@opentrons/api-client' import type { UseProbeCommandsResult } from './useHandleProbeCommands' -import type { UseHandleConditionalCleanupResult } from './useHandleConditionalCleanup' +import type { UseHandleConditionalCleanupResult } from './useHandleCleanup' import type { UseHandleJogResult } from './useHandleJog' import type { UseApplyLPCOffsetsResult } from './useApplyLPCOffsets' import type { UseHandleStartLPCResult } from './useHandleStartLPC' @@ -76,7 +76,7 @@ export function useLPCCommands( const applyLPCOffsetsUtils = useApplyLPCOffsets({ ...props, setErrorMessage }) const buildLPCOffsets = useBuildOffsetsToApply({ ...props, setErrorMessage }) const handleJogUtils = useHandleJog({ ...props, setErrorMessage }) - const handleConditionalCleanupUtils = useHandleConditionalCleanup(props) + const handleConditionalCleanupUtils = useHandleCleanup(props) const handleProbeCommands = useHandleProbeCommands({ ...props, chainLPCCommands, diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleConditionalCleanup.ts b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleCleanup.ts similarity index 54% rename from app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleConditionalCleanup.ts rename to app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleCleanup.ts index 63af35de66e..787eae57f08 100644 --- a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleConditionalCleanup.ts +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleCleanup.ts @@ -1,7 +1,4 @@ import { useState } from 'react' - -import { useConditionalConfirm } from '@opentrons/components' - import { useChainMaintenanceCommands } from '/app/resources/maintenance_runs' import { retractSafelyAndHomeCommands } from './commands' @@ -10,36 +7,28 @@ import type { CreateCommand } from '@opentrons/shared-data' export interface UseHandleConditionalCleanupResult { isExiting: boolean - showExitConfirmation: boolean - confirmExitLPC: () => void - cancelExitLPC: () => void + handleCleanUpAndClose: () => Promise } -export function useHandleConditionalCleanup({ +export function useHandleCleanup({ onCloseClick, maintenanceRunId, }: UseLPCCommandChildProps): UseHandleConditionalCleanupResult { const [isExiting, setIsExiting] = useState(false) - const { chainRunCommands } = useChainMaintenanceCommands() - const handleCleanUpAndClose = (): void => { + const handleCleanUpAndClose = (): Promise => { setIsExiting(true) - const cleanupCommands: CreateCommand[] = [...retractSafelyAndHomeCommands()] - void chainRunCommands(maintenanceRunId, cleanupCommands, true).finally( - () => { + return chainRunCommands(maintenanceRunId, cleanupCommands, true) + .then(() => { + onCloseClick() + }) + .catch(() => { onCloseClick() - } - ) + }) } - const { - confirm: confirmExitLPC, - showConfirmation: showExitConfirmation, - cancel: cancelExitLPC, - } = useConditionalConfirm(handleCleanUpAndClose, true) - - return { isExiting, confirmExitLPC, cancelExitLPC, showExitConfirmation } + return { isExiting, handleCleanUpAndClose } } diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleProbeCommands.ts b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleProbeCommands.ts index 9c3abf18996..d825747dc63 100644 --- a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleProbeCommands.ts +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useHandleProbeCommands.ts @@ -1,9 +1,11 @@ -import { useState } from 'react' +import { useState, useEffect } from 'react' +import { useSelector } from 'react-redux' import { retractPipetteAxesSequentiallyCommands, verifyProbeAttachmentAndHomeCommands, } from './commands' +import { LPC_STEP, selectCurrentStep } from '/app/redux/protocol-runs' import type { CreateCommand, LoadedPipette } from '@opentrons/shared-data' import type { UseLPCCommandWithChainRunChildProps } from './types' @@ -23,8 +25,18 @@ export interface UseProbeCommandsResult { export function useHandleProbeCommands({ chainLPCCommands, + runId, }: UseLPCCommandWithChainRunChildProps): UseProbeCommandsResult { const [showUnableToDetect, setShowUnableToDetect] = useState(false) + const currentStep = useSelector(selectCurrentStep(runId)) + + // We only care about probe detection on the "attach probe" step. When that + // step is not active, do not permit redirection to the "probe not attached" view. + useEffect(() => { + if (currentStep !== LPC_STEP.ATTACH_PROBE && showUnableToDetect) { + setShowUnableToDetect(false) + } + }, [currentStep, showUnableToDetect]) const handleProbeAttachment = ( pipette: LoadedPipette | null, diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands.ts b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands.ts new file mode 100644 index 00000000000..e4d6b90864f --- /dev/null +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands.ts @@ -0,0 +1,76 @@ +import { useSelector } from 'react-redux' + +import { LPC_STEP, selectActivePipette } from '/app/redux/protocol-runs' + +import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' +import type { UseLPCCommandsResult } from '/app/organisms/LabwarePositionCheck/hooks' + +export type UseLPCHeaderCommandsProps = Omit< + LPCWizardContentProps, + 'commandUtils' +> & { + LPCHandlerUtils: UseLPCCommandsResult +} + +export interface UseLPCHeaderCommandsResult { + handleProceed: () => void + handleAttachProbeCheck: () => void + handleNavToDetachProbe: () => void + handleClose: () => void +} + +// Wraps core LPC command functionality, since the header component reuses many of the same commands. +export function useLPCHeaderCommands({ + LPCHandlerUtils, + proceedStep, + runId, +}: UseLPCHeaderCommandsProps): UseLPCHeaderCommandsResult { + const activePipette = useSelector(selectActivePipette(runId)) + const pipette = useSelector(selectActivePipette(runId)) + + const { + handleStartLPC, + toggleRobotMoving, + handleValidMoveToMaintenancePosition, + handleCleanUpAndClose, + handleProbeAttachment, + } = LPCHandlerUtils + + const handleProceed = (): void => { + void toggleRobotMoving(true) + .then(() => handleStartLPC(activePipette, proceedStep)) + .finally(() => toggleRobotMoving(false)) + } + + // If the maintenance run fails, we cannot move the gantry, so just clean up LPC. + const handleClose = (): void => { + void toggleRobotMoving(true).then(() => { + void handleCleanUpAndClose() + }) + } + + const handleAttachProbeCheck = (): void => { + void toggleRobotMoving(true) + .then(() => handleProbeAttachment(pipette, proceedStep)) + .then(() => { + proceedStep() + }) + .finally(() => toggleRobotMoving(false)) + } + + const handleNavToDetachProbe = (): void => { + void toggleRobotMoving(true) + .then(() => handleValidMoveToMaintenancePosition(pipette)) + .then(() => { + proceedStep(LPC_STEP.DETACH_PROBE) + }) + .finally(() => toggleRobotMoving(false)) + } + + return { + handleProceed, + handleAttachProbeCheck, + handleNavToDetachProbe, + handleClose, + } +} diff --git a/app/src/organisms/LabwarePositionCheck/hooks/useLPCInitialState/index.ts b/app/src/organisms/LabwarePositionCheck/hooks/useLPCInitialState/index.ts index 9362a9e8319..555ba37f0be 100644 --- a/app/src/organisms/LabwarePositionCheck/hooks/useLPCInitialState/index.ts +++ b/app/src/organisms/LabwarePositionCheck/hooks/useLPCInitialState/index.ts @@ -30,6 +30,7 @@ export function useLPCInitialState({ currentStepIndex: 0, totalStepCount: LPC_STEPS.length, all: LPC_STEPS, + lastStepIndices: null, }, } diff --git a/app/src/organisms/LabwarePositionCheck/steps/AttachProbe.tsx b/app/src/organisms/LabwarePositionCheck/steps/AttachProbe.tsx index da84e634b34..7ceac091428 100644 --- a/app/src/organisms/LabwarePositionCheck/steps/AttachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/steps/AttachProbe.tsx @@ -1,120 +1,30 @@ -import { Trans, useTranslation } from 'react-i18next' -import styled from 'styled-components' -import { useSelector } from 'react-redux' +import { useTranslation } from 'react-i18next' -import { - RESPONSIVENESS, - SPACING, - LegacyStyledText, - TYPOGRAPHY, -} from '@opentrons/components' - -import { ProbeNotAttached } from '/app/organisms/PipetteWizardFlows/ProbeNotAttached' -import { GenericWizardTile } from '/app/molecules/GenericWizardTile' -import { - selectActivePipette, - selectActivePipetteChannelCount, -} from '/app/redux/protocol-runs' -import { getIsOnDevice } from '/app/redux/config' - -import attachProbe1 from '/app/assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_1.webm' -import attachProbe8 from '/app/assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_8.webm' -import attachProbe96 from '/app/assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_96.webm' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' -const StyledVideo = styled.video` - padding-top: ${SPACING.spacing4}; - width: 100%; - min-height: 18rem; -` - -const StyledBody = styled(LegacyStyledText)` - ${TYPOGRAPHY.pRegular}; - - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - font-size: 1.275rem; - line-height: 1.75rem; - } -` - -export function AttachProbe({ - runId, - proceed, - commandUtils, -}: LPCWizardContentProps): JSX.Element { - const { t, i18n } = useTranslation(['labware_position_check', 'shared']) - const isOnDevice = useSelector(getIsOnDevice) - const pipette = useSelector(selectActivePipette(runId)) +export function AttachProbe(props: LPCWizardContentProps): JSX.Element { const { - handleProbeAttachment, - toggleRobotMoving, - setShowUnableToDetect, - unableToDetect, - } = commandUtils - const channels = useSelector(selectActivePipetteChannelCount(runId)) - - const { probeLocation, probeVideoSrc } = ((): { - probeLocation: string - probeVideoSrc: string - } => { - switch (channels) { - case 1: - return { probeLocation: '', probeVideoSrc: attachProbe1 } - case 8: - return { probeLocation: t('backmost'), probeVideoSrc: attachProbe8 } - case 96: - return { - probeLocation: t('ninety_six_probe_location'), - probeVideoSrc: attachProbe96, - } - } - })() - - const handleProbeCheck = (): void => { - void toggleRobotMoving(true) - .then(() => handleProbeAttachment(pipette, proceed)) - .finally(() => toggleRobotMoving(false)) - } - - const handleProceed = (): void => { - void toggleRobotMoving(true) - .then(() => handleProbeAttachment(pipette, proceed)) - .finally(() => toggleRobotMoving(false)) - } - - if (unableToDetect) { - return ( - - ) - } else { - return ( - - - - } - bodyText={ - - , - }} - /> - - } - proceedButtonText={i18n.format(t('shared:continue'), 'capitalize')} - proceed={handleProceed} - /> - ) - } + handleAttachProbeCheck, + handleNavToDetachProbe, + } = props.commandUtils.headerCommands + const { t } = useTranslation('labware_position_check') + + return ( + +
PLACEHOLDER ATTACH PROBE
+
+ ) } diff --git a/app/src/organisms/LabwarePositionCheck/steps/BeforeBeginning/index.tsx b/app/src/organisms/LabwarePositionCheck/steps/BeforeBeginning/index.tsx index cfda3476d6b..40540e9c56d 100644 --- a/app/src/organisms/LabwarePositionCheck/steps/BeforeBeginning/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/steps/BeforeBeginning/index.tsx @@ -18,6 +18,7 @@ import { selectActivePipette, selectLabwareOffsetsForAllLw, } from '/app/redux/protocol-runs' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' import type { State } from '/app/redux/types' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' @@ -25,19 +26,16 @@ import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/ // TODO(BC, 09/01/23): replace updated support article link for LPC on OT-2/Flex const SUPPORT_PAGE_URL = 'https://support.opentrons.com/s/ot2-calibration' -export function BeforeBeginning({ - runId, - proceed, - commandUtils, -}: LPCWizardContentProps): JSX.Element { +export function BeforeBeginning(props: LPCWizardContentProps): JSX.Element { const { t, i18n } = useTranslation(['labware_position_check', 'shared']) + const { runId, proceedStep, commandUtils } = props const isOnDevice = useSelector(getIsOnDevice) const activePipette = useSelector(selectActivePipette(runId)) const existingOffsets = useSelector(selectLabwareOffsetsForAllLw(runId)) const { protocolName, labwareDefs } = useSelector( (state: State) => state.protocolRuns[runId]?.lpc ) ?? { protocolName: '', labwareDefs: [] } - const { handleStartLPC, toggleRobotMoving } = commandUtils + const { handleStartLPC, toggleRobotMoving, headerCommands } = commandUtils const requiredEquipmentList = [ { @@ -52,45 +50,58 @@ export function BeforeBeginning({ const handleProceed = (): void => { void toggleRobotMoving(true) - .then(() => handleStartLPC(activePipette, proceed)) + .then(() => handleStartLPC(activePipette, proceedStep)) .finally(() => toggleRobotMoving(false)) } return ( - }} - /> - } - rightElement={ - - } - footer={ - - {isOnDevice ? ( - - ) : ( - - )} - {isOnDevice ? ( - - ) : ( - - {i18n.format(t('shared:get_started'), 'capitalize')} - - )} - - } - /> + + }} + /> + } + rightElement={ + + } + footer={ + + {isOnDevice ? ( + + ) : ( + + )} + {isOnDevice ? ( + + ) : ( + + {i18n.format(t('shared:get_started'), 'capitalize')} + + )} + + } + /> + ) } diff --git a/app/src/organisms/LabwarePositionCheck/steps/DetachProbe.tsx b/app/src/organisms/LabwarePositionCheck/steps/DetachProbe.tsx index d6261151e7a..88838d6ccae 100644 --- a/app/src/organisms/LabwarePositionCheck/steps/DetachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/steps/DetachProbe.tsx @@ -1,95 +1,24 @@ -import { useEffect } from 'react' import { useTranslation } from 'react-i18next' -import styled from 'styled-components' -import { useSelector } from 'react-redux' -import { - LegacyStyledText, - RESPONSIVENESS, - SPACING, - TYPOGRAPHY, -} from '@opentrons/components' - -import { GenericWizardTile } from '/app/molecules/GenericWizardTile' -import { - selectActivePipette, - selectActivePipetteChannelCount, -} from '/app/redux/protocol-runs' - -import detachProbe1 from '/app/assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_1.webm' -import detachProbe8 from '/app/assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_8.webm' -import detachProbe96 from '/app/assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_96.webm' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' -const StyledVideo = styled.video` - padding-top: ${SPACING.spacing4}; - width: 100%; - min-height: 18rem; -` - -const StyledBody = styled(LegacyStyledText)` - ${TYPOGRAPHY.pRegular}; - - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - font-size: 1.275rem; - line-height: 1.75rem; - } -` - -export const DetachProbe = ({ - runId, - proceed, - commandUtils, -}: LPCWizardContentProps): JSX.Element => { - const { t, i18n } = useTranslation(['labware_position_check', 'shared']) - const { - handleProbeDetachment, - toggleRobotMoving, - handleValidMoveToMaintenancePosition, - } = commandUtils - const pipette = useSelector(selectActivePipette(runId)) - const channels = useSelector(selectActivePipetteChannelCount(runId)) - - // TODO(jh, 01-30-25): This will break the flows, but currently, DetachProbe is inaccessible. - // This onClick behavior should be tied directly to the "exit" button. - useEffect(() => { - void toggleRobotMoving(true) - .then(() => handleValidMoveToMaintenancePosition(pipette)) - .finally(() => toggleRobotMoving(false)) - }, []) - - const probeVideoSrc = ((): string => { - switch (channels) { - case 1: - return detachProbe1 - case 8: - return detachProbe8 - case 96: - return detachProbe96 - } - })() - - const handleProceed = (): void => { - void toggleRobotMoving(true) - .then(() => handleProbeDetachment(pipette, proceed)) - .finally(() => toggleRobotMoving(false)) - } +export function DetachProbe(props: LPCWizardContentProps): JSX.Element { + const { proceedStep, goBackLastStep } = props + const { t } = useTranslation('labware_position_check') return ( - - - - } - bodyText={ - {i18n.format(t('remove_probe'), 'capitalize')} - } - proceedButtonText={t('confirm_detached')} - proceed={handleProceed} - /> + { + proceedStep() + }} + onClickBack={goBackLastStep} + > +
PLACEHOLDER DETACH PROBE
+
) } diff --git a/app/src/organisms/LabwarePositionCheck/steps/HandleLabware/index.tsx b/app/src/organisms/LabwarePositionCheck/steps/HandleLabware/index.tsx index e168b19df09..df324cbcfe1 100644 --- a/app/src/organisms/LabwarePositionCheck/steps/HandleLabware/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/steps/HandleLabware/index.tsx @@ -1,4 +1,5 @@ import { useSelector } from 'react-redux' +import { useTranslation } from 'react-i18next' import { selectSelectedLabwareFlowType, @@ -7,18 +8,39 @@ import { import { CheckItem } from './CheckItem' import { LPCLabwareList } from './LPCLabwareList' import { LPCLabwareDetails } from './LPCLabwareDetails' +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' export function HandleLabware(props: LPCWizardContentProps): JSX.Element { + const { t } = useTranslation('labware_position_check') + + // TODO(jh, 02-05-25): EXEC-1119. Use header overrides for the substeps. + return ( + + + + ) +} + +function HandleLabwareContent(props: LPCWizardContentProps): JSX.Element { const selectedLw = useSelector(selectSelectedLabwareInfo(props.runId)) const offsetFlowType = useSelector(selectSelectedLabwareFlowType(props.runId)) + // These routes are one step, since the progress bar remains static during the core LPC flow. if (selectedLw == null) { + // The general labware list view. return } else if (selectedLw.offsetLocationDetails == null) { + // The offset view for a singular labware geometry. return } else { + // The core flow for updating an offset for a singular labware geometry. switch (offsetFlowType) { case 'default': return diff --git a/app/src/organisms/LabwarePositionCheck/steps/LPCComplete/index.tsx b/app/src/organisms/LabwarePositionCheck/steps/LPCComplete/index.tsx index f40e117dba0..18bc52bc680 100644 --- a/app/src/organisms/LabwarePositionCheck/steps/LPCComplete/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/steps/LPCComplete/index.tsx @@ -1,13 +1,20 @@ -import { useEffect } from 'react' +import { useTranslation } from 'react-i18next' + +import { LPCContentContainer } from '/app/organisms/LabwarePositionCheck/LPCContentContainer' import type { LPCWizardContentProps } from '/app/organisms/LabwarePositionCheck/types' export function LPCComplete(props: LPCWizardContentProps): JSX.Element { - useEffect(() => { - setTimeout(() => { - props.onCloseClick() - }, 5000) - }, []) + const { t } = useTranslation('labware_position_check') - return <>LPC COMPLETE + return ( + +
PLACEHOLDER LPC COMPLETE
+
+ ) } diff --git a/app/src/organisms/LabwarePositionCheck/types/content.ts b/app/src/organisms/LabwarePositionCheck/types/content.ts index d32b02191bb..7dd7ec301dc 100644 --- a/app/src/organisms/LabwarePositionCheck/types/content.ts +++ b/app/src/organisms/LabwarePositionCheck/types/content.ts @@ -1,10 +1,12 @@ import type { UseLPCCommandsResult } from '/app/organisms/LabwarePositionCheck/hooks' import type { LPCWizardFlexProps } from '/app/organisms/LabwarePositionCheck/LPCWizardFlex' +import type { LPCStep } from '/app/redux/protocol-runs' +import type { UseLPCHeaderCommandsResult } from '/app/organisms/LabwarePositionCheck/hooks/useLPCCommands/useLPCHeaderCommands' -export type LPCWizardContentProps = Pick< - LPCWizardFlexProps, - 'onCloseClick' | 'runId' -> & { - proceed: () => void - commandUtils: UseLPCCommandsResult +export type LPCWizardContentProps = Pick & { + proceedStep: (toStep?: LPCStep) => void + goBackLastStep: () => void + commandUtils: UseLPCCommandsResult & { + headerCommands: UseLPCHeaderCommandsResult + } } diff --git a/app/src/organisms/ODD/ChildNavigation/index.tsx b/app/src/organisms/ODD/ChildNavigation/index.tsx index ff1ebed1c95..0376b4ffa21 100644 --- a/app/src/organisms/ODD/ChildNavigation/index.tsx +++ b/app/src/organisms/ODD/ChildNavigation/index.tsx @@ -28,7 +28,7 @@ import type { SmallButtonTypes, } from '/app/atoms/buttons/SmallButton' -interface ChildNavigationProps extends StyleProps { +export interface ChildNavigationProps extends StyleProps { header: string onClickBack?: MouseEventHandler buttonText?: ReactNode diff --git a/app/src/redux/protocol-runs/actions/lpc.ts b/app/src/redux/protocol-runs/actions/lpc.ts index d5a90ec07b5..ba54e6cf1a0 100644 --- a/app/src/redux/protocol-runs/actions/lpc.ts +++ b/app/src/redux/protocol-runs/actions/lpc.ts @@ -4,7 +4,7 @@ import { SET_FINAL_POSITION, START_LPC, FINISH_LPC, - GO_BACK_STEP, + GO_BACK_LAST_STEP, SET_SELECTED_LABWARE, CLEAR_SELECTED_LABWARE, SET_SELECTED_LABWARE_NAME, @@ -25,15 +25,19 @@ import type { SelectedLabwareNameAction, OffsetLocationDetails, ApplyOffsetAction, + LPCStep, } from '../types' -export const proceedStep = (runId: string): ProceedStepAction => ({ +export const proceedStep = ( + runId: string, + toStep?: LPCStep +): ProceedStepAction => ({ type: PROCEED_STEP, - payload: { runId }, + payload: { runId, toStep }, }) -export const goBackStep = (runId: string): GoBackStepAction => ({ - type: GO_BACK_STEP, +export const goBackLastStep = (runId: string): GoBackStepAction => ({ + type: GO_BACK_LAST_STEP, payload: { runId }, }) diff --git a/app/src/redux/protocol-runs/constants/lpc/actions.ts b/app/src/redux/protocol-runs/constants/lpc/actions.ts index 6fd006a9759..7c3849d0fba 100644 --- a/app/src/redux/protocol-runs/constants/lpc/actions.ts +++ b/app/src/redux/protocol-runs/constants/lpc/actions.ts @@ -1,7 +1,7 @@ export const START_LPC = 'START_LPC' export const FINISH_LPC = 'FINISH_LPC' export const PROCEED_STEP = 'PROCEED_STEP' -export const GO_BACK_STEP = 'GO_BACK_STEP' +export const GO_BACK_LAST_STEP = 'GO_BACK_LAST_STEP' export const SET_SELECTED_LABWARE_NAME = 'SET_SELECTED_LABWARE_NAME' export const SET_SELECTED_LABWARE = 'SET_SELECTED_LABWARE' export const CLEAR_SELECTED_LABWARE = 'CLEAR_SELECTED_LABWARE' diff --git a/app/src/redux/protocol-runs/reducer/index.ts b/app/src/redux/protocol-runs/reducer/index.ts index 6626b30bc0b..22c5a7ad74e 100644 --- a/app/src/redux/protocol-runs/reducer/index.ts +++ b/app/src/redux/protocol-runs/reducer/index.ts @@ -32,7 +32,7 @@ export const protocolRunReducer: Reducer = ( case Constants.START_LPC: case Constants.FINISH_LPC: case Constants.PROCEED_STEP: - case Constants.GO_BACK_STEP: + case Constants.GO_BACK_LAST_STEP: case Constants.SET_SELECTED_LABWARE_NAME: case Constants.SET_SELECTED_LABWARE: case Constants.CLEAR_SELECTED_LABWARE: diff --git a/app/src/redux/protocol-runs/reducer/lpc.ts b/app/src/redux/protocol-runs/reducer/lpc.ts index 60c766b7295..73df299c2ae 100644 --- a/app/src/redux/protocol-runs/reducer/lpc.ts +++ b/app/src/redux/protocol-runs/reducer/lpc.ts @@ -5,10 +5,11 @@ import { SET_FINAL_POSITION, FINISH_LPC, START_LPC, - GO_BACK_STEP, + GO_BACK_LAST_STEP, SET_SELECTED_LABWARE_NAME, CLEAR_SELECTED_LABWARE, APPLY_OFFSET, + LPC_STEPS, } from '../constants' import { updateOffsetsForURI } from './transforms' @@ -31,30 +32,51 @@ export function LPCReducer( } else { switch (action.type) { case PROCEED_STEP: { - const { currentStepIndex, totalStepCount } = state.steps - const newStepIdx = - currentStepIndex + 1 < totalStepCount - ? currentStepIndex + 1 - : currentStepIndex + const { + currentStepIndex, + lastStepIndices, + totalStepCount, + } = state.steps + const { toStep } = action.payload + + const newStepIdx = (): number => { + if (toStep == null) { + return currentStepIndex + 1 < totalStepCount + ? currentStepIndex + 1 + : currentStepIndex + } else { + const newIdx = LPC_STEPS.findIndex(step => step === toStep) + + if (newIdx === -1) { + console.error(`Unexpected routing to step: ${toStep}`) + return 0 + } else { + return newIdx + } + } + } return { ...state, steps: { ...state.steps, - currentStepIndex: newStepIdx, + currentStepIndex: newStepIdx(), + lastStepIndices: [...(lastStepIndices ?? []), currentStepIndex], }, } } - case GO_BACK_STEP: { - const { currentStepIndex } = state.steps - const newStepIdx = currentStepIndex > 0 ? currentStepIndex - 1 : 0 + case GO_BACK_LAST_STEP: { + const { lastStepIndices } = state.steps + const lastStep = lastStepIndices?.[lastStepIndices.length - 1] ?? 0 return { ...state, steps: { ...state.steps, - currentStepIndex: newStepIdx, + currentStepIndex: lastStep, + lastStepIndices: + lastStepIndices?.slice(0, lastStepIndices.length - 1) ?? null, }, } } diff --git a/app/src/redux/protocol-runs/selectors/lpc/steps.ts b/app/src/redux/protocol-runs/selectors/lpc/steps.ts index a4d34160140..c8d524a0dd3 100644 --- a/app/src/redux/protocol-runs/selectors/lpc/steps.ts +++ b/app/src/redux/protocol-runs/selectors/lpc/steps.ts @@ -4,7 +4,7 @@ import { LPC_STEP } from '/app/redux/protocol-runs' import type { Selector } from 'reselect' import type { State } from '../../../types' -import type { LPCStep } from '/app/redux/protocol-runs' +import type { LPCStep, StepInfo } from '/app/redux/protocol-runs' export const selectCurrentStep = (runId: string): Selector => createSelector( @@ -13,3 +13,15 @@ export const selectCurrentStep = (runId: string): Selector => (currentIdx, allSteps) => allSteps?.[currentIdx ?? 0] ?? LPC_STEP.BEFORE_BEGINNING ) + +export const selectStepInfo = (runId: string): Selector => + createSelector( + (state: State) => state.protocolRuns[runId]?.lpc?.steps, + stepInfo => + stepInfo ?? { + currentStepIndex: 0, + totalStepCount: 0, + all: [], + lastStepIndices: null, + } + ) diff --git a/app/src/redux/protocol-runs/types/lpc.ts b/app/src/redux/protocol-runs/types/lpc.ts index 843ae3e8aaf..9cc6f713a72 100644 --- a/app/src/redux/protocol-runs/types/lpc.ts +++ b/app/src/redux/protocol-runs/types/lpc.ts @@ -19,6 +19,8 @@ export interface StepInfo { currentStepIndex: number totalStepCount: number all: LPCStep[] + /* The last step idx in the user's routing history - not necessarily the previous step idx. */ + lastStepIndices: number[] | null } export interface ExistingOffset { @@ -111,11 +113,11 @@ export interface FinishLPCAction { export interface ProceedStepAction { type: 'PROCEED_STEP' - payload: { runId: string } + payload: { runId: string; toStep?: LPCStep } } export interface GoBackStepAction { - type: 'GO_BACK_STEP' + type: 'GO_BACK_LAST_STEP' payload: { runId: string } } From 193993ff71815a0b79647502aa187f9cb9e72cab Mon Sep 17 00:00:00 2001 From: Andy Sigler Date: Fri, 7 Feb 2025 09:39:17 -0500 Subject: [PATCH 64/81] chore(hardware-testing): Pipette assembly QC script uses default OT3API.liquid_probe() settings (#17462) --- .../pipette_assembly_qc_ot3/__main__.py | 51 +------------------ 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py b/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py index 6be7cc92fab..8f276919610 100644 --- a/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py +++ b/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py @@ -18,7 +18,6 @@ from opentrons_hardware.firmware_bindings.messages.messages import MessageDefinition from opentrons_hardware.firmware_bindings.constants import SensorType, SensorId -from opentrons.config.types import LiquidProbeSettings from opentrons.hardware_control.types import ( TipStateType, FailedTipStateCheck, @@ -1324,41 +1323,6 @@ async def _test_tip_presence_flag( return pick_up_result and drop_result and wiggle_passed -@dataclass -class _LiqProbeCfg: - mount_speed: float - plunger_speed: float - sensor_threshold_pascals: float - - -PROBE_SETTINGS: Dict[int, Dict[int, _LiqProbeCfg]] = { - 50: { - 50: _LiqProbeCfg( - mount_speed=11, - plunger_speed=21, - sensor_threshold_pascals=150, - ), - }, - 1000: { - 50: _LiqProbeCfg( - mount_speed=5, - plunger_speed=10, - sensor_threshold_pascals=200, - ), - 200: _LiqProbeCfg( - mount_speed=5, - plunger_speed=10, - sensor_threshold_pascals=200, - ), - 1000: _LiqProbeCfg( - mount_speed=5, - plunger_speed=11, - sensor_threshold_pascals=150, - ), - }, -} - - async def _test_liquid_probe( api: OT3API, mount: OT3Mount, @@ -1368,7 +1332,6 @@ async def _test_liquid_probe( ) -> Dict[InstrumentProbeType, List[float]]: pip = api.hardware_pipettes[mount.to_mount()] assert pip - pip_vol = int(pip.working_volume) trial_results: Dict[InstrumentProbeType, List[float]] = { probe: [] for probe in probes } @@ -1383,20 +1346,8 @@ async def _test_liquid_probe( await _pick_up_tip_for_tip_volume(api, mount, tip_volume) for probe in probes: await _move_to_above_plate_liquid(api, mount, probe, height_mm=hover_mm) - probe_cfg = PROBE_SETTINGS[pip_vol][tip_volume] - probe_settings = LiquidProbeSettings( - mount_speed=probe_cfg.mount_speed, - plunger_speed=probe_cfg.plunger_speed, - plunger_impulse_time=0.2, - sensor_threshold_pascals=probe_cfg.sensor_threshold_pascals, - aspirate_while_sensing=False, - z_overlap_between_passes_mm=0.1, - plunger_reset_offset=2.0, - samples_for_baselining=20, - sample_time_sec=0.004, - ) end_z = await api.liquid_probe( - mount, max_z_distance_machine_coords, probe_settings, probe=probe + mount, max_z_distance_machine_coords, probe=probe ) if probe == InstrumentProbeType.PRIMARY: pz = CALIBRATED_LABWARE_LOCATIONS.plate_primary.z From 08d9dd24e0151b6285bd425377d53fcf24a466d0 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Fri, 7 Feb 2025 12:01:17 -0500 Subject: [PATCH 65/81] fix(hardware): correct duration calculation from the change in z-raise post LLD success (#17434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …as still raising too far out of the well # Overview We had updated the distance that the z raises after an LLD success but did not update the duration calculation so the z was still raising too far out of the liquid. ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../hardware_control/tool_sensors.py | 2 +- .../hardware_control/test_tool_sensors.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/hardware/opentrons_hardware/hardware_control/tool_sensors.py b/hardware/opentrons_hardware/hardware_control/tool_sensors.py index 9df634f11b1..e0e82f1e0f8 100644 --- a/hardware/opentrons_hardware/hardware_control/tool_sensors.py +++ b/hardware/opentrons_hardware/hardware_control/tool_sensors.py @@ -337,7 +337,7 @@ async def liquid_probe( distance={head_node: float64(z_offset_for_plunger_prep)}, velocity={head_node: float64(-1 * mount_speed)}, acceleration={}, - duration=float64(max_z_distance / mount_speed), + duration=float64(z_offset_for_plunger_prep / mount_speed), present_nodes=[head_node], ) diff --git a/hardware/tests/opentrons_hardware/hardware_control/test_tool_sensors.py b/hardware/tests/opentrons_hardware/hardware_control/test_tool_sensors.py index ebcfcc5f05a..b5c73c4bd34 100644 --- a/hardware/tests/opentrons_hardware/hardware_control/test_tool_sensors.py +++ b/hardware/tests/opentrons_hardware/hardware_control/test_tool_sensors.py @@ -10,6 +10,7 @@ ReadFromSensorResponse, Acknowledgement, BindSensorOutputRequest, + AddLinearMoveRequest, ) from opentrons_hardware.firmware_bindings.messages import MessageDefinition from opentrons_hardware.firmware_bindings.messages.payloads import ( @@ -49,6 +50,7 @@ SensorThresholdMode, SensorOutputBinding, ) +from opentrons_hardware.hardware_control.constants import interrupts_per_sec from opentrons_hardware.sensors.scheduler import SensorScheduler from opentrons_hardware.sensors.sensor_driver import SensorDriver from opentrons_hardware.sensors.types import SensorDataType @@ -214,6 +216,11 @@ def get_responder() -> Iterator[ yield check_third_move responder_getter = get_responder() + z_offset_for_plunger_prep = 2.0 + mount_speed = 10.0 + expected_raise_duration = ( + interrupts_per_sec * z_offset_for_plunger_prep / mount_speed + ) def move_responder( node_id: NodeId, message: MessageDefinition @@ -223,6 +230,12 @@ def move_responder( responder = next(responder_getter) return responder(node_id, message) else: + if isinstance(message, AddLinearMoveRequest): + if message.payload.velocity_mm.value < 0: + # value < 0 means the raise z move + assert message.payload.duration.value == expected_raise_duration + velocity = int(-1 * mount_speed / interrupts_per_sec * 2**31) + assert message.payload.velocity_mm.value == velocity return [] message_send_loopback.add_responder(move_responder) @@ -232,12 +245,12 @@ def move_responder( tool=target_node, head_node=motor_node, max_p_distance=70, - mount_speed=10, + mount_speed=mount_speed, plunger_speed=8, threshold_pascals=threshold_pascals, plunger_impulse_time=0.2, num_baseline_reads=20, - z_offset_for_plunger_prep=2.0, + z_offset_for_plunger_prep=z_offset_for_plunger_prep, sensor_id=SensorId.S0, ) assert position[motor_node].positions_only()[0] == 14 From 18865c522378593599e6be83d1048f37aedd2521 Mon Sep 17 00:00:00 2001 From: koji Date: Fri, 7 Feb 2025 12:15:29 -0500 Subject: [PATCH 66/81] =?UTF-8?q?chore:=20=F0=9F=A4=96=20update=20ubuntu?= =?UTF-8?q?=20version=20(#17461)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update ubuntu version --- .github/workflows/api-test-lint-deploy.yaml | 4 ++-- .github/workflows/docs-build.yaml | 2 +- .github/workflows/g-code-confirm-tests.yaml | 2 +- .github/workflows/g-code-testing-lint-test.yaml | 2 +- .github/workflows/http-docs-build.yaml | 2 +- .../opentrons-ai-client-staging-continuous-deploy.yaml | 6 +++--- .github/workflows/opentrons-ai-production-deploy.yaml | 4 ++-- .github/workflows/robot-server-lint-test.yaml | 2 +- .github/workflows/server-utils-lint-test.yaml | 4 ++-- .github/workflows/shared-data-test-lint-deploy.yaml | 6 +++--- .github/workflows/system-server-lint-test.yaml | 4 ++-- .github/workflows/tag-releases.yaml | 2 +- .github/workflows/update-server-lint-test.yaml | 4 ++-- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/api-test-lint-deploy.yaml b/.github/workflows/api-test-lint-deploy.yaml index e1790f28f20..29565dc6019 100644 --- a/.github/workflows/api-test-lint-deploy.yaml +++ b/.github/workflows/api-test-lint-deploy.yaml @@ -49,7 +49,7 @@ jobs: lint: name: 'opentrons package linting' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -183,7 +183,7 @@ jobs: deploy: name: 'deploy opentrons package' needs: [test] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' if: github.event_name == 'push' steps: - uses: 'actions/checkout@v4' diff --git a/.github/workflows/docs-build.yaml b/.github/workflows/docs-build.yaml index 6a4f49f0d20..eb8de2eda84 100644 --- a/.github/workflows/docs-build.yaml +++ b/.github/workflows/docs-build.yaml @@ -38,7 +38,7 @@ defaults: jobs: build: name: opentrons documentation build - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/g-code-confirm-tests.yaml b/.github/workflows/g-code-confirm-tests.yaml index 9c43bfe16d8..cb2795fdbe2 100644 --- a/.github/workflows/g-code-confirm-tests.yaml +++ b/.github/workflows/g-code-confirm-tests.yaml @@ -33,7 +33,7 @@ jobs: matrix: command: ['2-modules', 'swift-smoke', 'swift-turbo', 'omega', 'fast'] name: 'Confirm G-Code (${{ matrix.command }})' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/g-code-testing-lint-test.yaml b/.github/workflows/g-code-testing-lint-test.yaml index 9da53b78182..65b1f75a8f3 100644 --- a/.github/workflows/g-code-testing-lint-test.yaml +++ b/.github/workflows/g-code-testing-lint-test.yaml @@ -40,7 +40,7 @@ defaults: jobs: lint-test: name: 'g-code-testing package linting and tests' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/http-docs-build.yaml b/.github/workflows/http-docs-build.yaml index f2c21368d5e..a0ed3b17925 100644 --- a/.github/workflows/http-docs-build.yaml +++ b/.github/workflows/http-docs-build.yaml @@ -38,7 +38,7 @@ defaults: jobs: build: name: HTTP API reference build - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/opentrons-ai-client-staging-continuous-deploy.yaml b/.github/workflows/opentrons-ai-client-staging-continuous-deploy.yaml index 88c7c70d3ec..a596fe64fdf 100644 --- a/.github/workflows/opentrons-ai-client-staging-continuous-deploy.yaml +++ b/.github/workflows/opentrons-ai-client-staging-continuous-deploy.yaml @@ -16,7 +16,7 @@ env: jobs: js-unit-test: - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' permissions: id-token: write contents: read @@ -53,8 +53,8 @@ jobs: make setup-js - name: 'build' env: - # inject dev id since this is for staging - OT_AI_CLIENT_MIXPANEL_ID: ${{ secrets.OT_AI_CLIENT_MIXPANEL_DEV_ID }} + # inject dev id since this is for staging + OT_AI_CLIENT_MIXPANEL_ID: ${{ secrets.OT_AI_CLIENT_MIXPANEL_DEV_ID }} run: | make -C opentrons-ai-client build-staging - name: Configure AWS Credentials diff --git a/.github/workflows/opentrons-ai-production-deploy.yaml b/.github/workflows/opentrons-ai-production-deploy.yaml index 1850400bbd0..c131c8c5d2c 100644 --- a/.github/workflows/opentrons-ai-production-deploy.yaml +++ b/.github/workflows/opentrons-ai-production-deploy.yaml @@ -16,7 +16,7 @@ jobs: concurrency: group: ${{ github.workflow }}-ai-client@ cancel-in-progress: true - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' permissions: id-token: write contents: read @@ -53,7 +53,7 @@ jobs: make setup-js - name: 'build' env: - OT_AI_CLIENT_MIXPANEL_ID: ${{ secrets.OT_AI_CLIENT_MIXPANEL_ID }} + OT_AI_CLIENT_MIXPANEL_ID: ${{ secrets.OT_AI_CLIENT_MIXPANEL_ID }} run: | make -C opentrons-ai-client build-production - name: Configure AWS Credentials diff --git a/.github/workflows/robot-server-lint-test.yaml b/.github/workflows/robot-server-lint-test.yaml index 6735ab36136..f72caf7ecc7 100644 --- a/.github/workflows/robot-server-lint-test.yaml +++ b/.github/workflows/robot-server-lint-test.yaml @@ -51,7 +51,7 @@ jobs: lint-test: name: 'robot server package linting and tests' timeout-minutes: 40 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' strategy: matrix: with-ot-hardware: ['true', 'false'] diff --git a/.github/workflows/server-utils-lint-test.yaml b/.github/workflows/server-utils-lint-test.yaml index 9c8f37b6c79..1119061b0eb 100644 --- a/.github/workflows/server-utils-lint-test.yaml +++ b/.github/workflows/server-utils-lint-test.yaml @@ -39,7 +39,7 @@ jobs: lint: name: 'server-utils linting' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -60,7 +60,7 @@ jobs: name: 'server-utils package tests' timeout-minutes: 10 needs: [lint] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/shared-data-test-lint-deploy.yaml b/.github/workflows/shared-data-test-lint-deploy.yaml index c5858d5da0e..c334a398b54 100644 --- a/.github/workflows/shared-data-test-lint-deploy.yaml +++ b/.github/workflows/shared-data-test-lint-deploy.yaml @@ -44,7 +44,7 @@ jobs: python-lint: name: 'shared-data package python lint' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -112,7 +112,7 @@ jobs: js-test: name: 'shared-data JS tests' - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' timeout-minutes: 30 steps: - uses: 'actions/checkout@v4' @@ -149,7 +149,7 @@ jobs: python-deploy: name: 'shared-data package deploy' needs: [python-test] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' if: github.event_name == 'push' steps: - uses: 'actions/checkout@v4' diff --git a/.github/workflows/system-server-lint-test.yaml b/.github/workflows/system-server-lint-test.yaml index ffd526c6834..eb7c18fe41f 100644 --- a/.github/workflows/system-server-lint-test.yaml +++ b/.github/workflows/system-server-lint-test.yaml @@ -41,7 +41,7 @@ jobs: lint: name: 'system-server linting' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -62,7 +62,7 @@ jobs: name: 'system-server package tests' timeout-minutes: 10 needs: [lint] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: diff --git a/.github/workflows/tag-releases.yaml b/.github/workflows/tag-releases.yaml index 1f8c3ee153a..0547ee4555c 100644 --- a/.github/workflows/tag-releases.yaml +++ b/.github/workflows/tag-releases.yaml @@ -10,7 +10,7 @@ on: jobs: create-release: - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' name: 'Create changelogs and release' steps: # this could be improved by replacing this checkout with something like diff --git a/.github/workflows/update-server-lint-test.yaml b/.github/workflows/update-server-lint-test.yaml index 1d3164a63cf..bc80dcd38b5 100644 --- a/.github/workflows/update-server-lint-test.yaml +++ b/.github/workflows/update-server-lint-test.yaml @@ -39,7 +39,7 @@ jobs: lint: name: 'update server linting' timeout-minutes: 10 - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: @@ -60,7 +60,7 @@ jobs: name: 'update server package tests' timeout-minutes: 10 needs: [lint] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: 'actions/checkout@v4' with: From f8a5436bc151536f4bb6a99f265459f1d76f507f Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:23:34 -0500 Subject: [PATCH 67/81] feat(protocol-designer): start wiring up "Export Python" button to generate Python (#17453) # Overview Make the "Export Python" button start generating the skeleton of a Python protocol file. This just generates the `metadata` section right now. AUTH-1091 AUTH-1393 AUTH-1385 I tried to follow the structure of the existing `createFile()` function. Eventually, the `createPythonFile()` function is just going to replace `createFile()`, so that's why I'm reusing the existing `SAVE_PROTOCOL_FILE` action rather than defining a bunch of new Python-specific constants and interfaces. ## Test Plan and Hands on Testing Added unit tests for both the top-level file creator, and for the specific metadata fields. I also tested the button in my browser. ## Risk assessment Low. This is all hidden behind a feature flag, and doesn't interact with any existing functionality. --- .../file-data/__tests__/createFile.test.ts | 28 ++++++++++++++++- .../file-data/__tests__/pythonFile.test.ts | 31 +++++++++++++++++++ .../src/file-data/selectors/fileCreator.ts | 16 ++++++++++ .../src/file-data/selectors/pythonFile.ts | 31 +++++++++++++++++++ protocol-designer/src/load-file/actions.ts | 22 ++++++++++++- protocol-designer/src/load-file/utils.ts | 6 ++++ .../src/pages/ProtocolOverview/index.tsx | 4 +-- 7 files changed, 134 insertions(+), 4 deletions(-) create mode 100644 protocol-designer/src/file-data/__tests__/pythonFile.test.ts create mode 100644 protocol-designer/src/file-data/selectors/pythonFile.ts diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index a25f77524ea..6c50a9f02df 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -14,7 +14,11 @@ import { fixture_tiprack_300_ul, } from '@opentrons/shared-data/labware/fixtures/2' import { getLoadLiquidCommands } from '../../load-file/migration/utils/getLoadLiquidCommands' -import { createFile, getLabwareDefinitionsInUse } from '../selectors' +import { + createFile, + createPythonFile, + getLabwareDefinitionsInUse, +} from '../selectors' import { fileMetadata, dismissedWarnings, @@ -92,7 +96,29 @@ describe('createFile selector', () => { ingredLocations ) }) + + it('should return a valid Python protocol file', () => { + // @ts-expect-error(sa, 2021-6-15): resultFunc not part of Selector type + const result = createPythonFile.resultFunc(fileMetadata, {}) + // This is just a quick smoke test to make sure createPythonFile() produces + // something that looks like a Python file. The individual sections of the + // generated Python will be tested in separate unit tests. + expect(result).toBe( + ` +from contextlib import nullcontext as pd_step +from opentrons import protocol_api + +metadata = { + "protocolName": "Test Protocol", + "author": "The Author", + "description": "Protocol description", + "created": "2020-02-25T21:48:32.515Z", +} +`.trimStart() + ) + }) }) + describe('getLabwareDefinitionsInUse util', () => { it('should exclude definitions that are neither on the deck nor assigned to a pipette', () => { const assignedTiprackOnDeckDef = fixture_tiprack_10_ul diff --git a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts new file mode 100644 index 00000000000..aab11d116c4 --- /dev/null +++ b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts @@ -0,0 +1,31 @@ +import { describe, it, expect } from 'vitest' +import { pythonMetadata } from '../selectors/pythonFile' + +describe('pythonMetadata', () => { + it('should generate metadata section', () => { + expect( + pythonMetadata({ + protocolName: 'Name of Protocol', + author: 'Some Author', + description: 'The description.', + created: 1000000000000, + lastModified: 1000000001000, + category: 'PCR', + subcategory: 'PCR Prep', + tags: ['wombat', 'kangaroo', 'wallaby'], + }) + ).toBe( + ` +metadata = { + "protocolName": "Name of Protocol", + "author": "Some Author", + "description": "The description.", + "created": "2001-09-09T01:46:40.000Z", + "lastModified": "2001-09-09T01:46:41.000Z", + "category": "PCR", + "subcategory": "PCR Prep", + "tags": "wombat, kangaroo, wallaby", +}`.trimStart() + ) + }) +}) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index 23d78185b11..2695cfbc58d 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -26,6 +26,7 @@ import { getModulesLoadInfo, getPipettesLoadInfo, } from './utils' +import { pythonImports, pythonMetadata } from './pythonFile' import type { SecondOrderCommandAnnotation } from '@opentrons/shared-data/commandAnnotation/types' import type { @@ -274,3 +275,18 @@ export const createFile: Selector = createSelector( } } ) + +export const createPythonFile: Selector = createSelector( + getFileMetadata, + fileMetadata => { + return ( + [ + // Here are the sections of the Python file: + pythonImports(), + pythonMetadata(fileMetadata), + ] + .filter(section => section) // skip any blank sections + .join('\n\n') + '\n' + ) + } +) diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts new file mode 100644 index 00000000000..8af7707dc08 --- /dev/null +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -0,0 +1,31 @@ +/** Generate sections of the Python file for fileCreator.ts */ + +import { formatPyDict } from '@opentrons/step-generation' +import type { FileMetadataFields } from '../types' + +export function pythonImports(): string { + return [ + 'from contextlib import nullcontext as pd_step', + 'from opentrons import protocol_api', + ].join('\n') +} + +export function pythonMetadata(fileMetadata: FileMetadataFields): string { + // FileMetadataFields has timestamps, lists, etc., but Python metadata dict can only contain strings + function formatTimestamp(timestamp: number | null | undefined): string { + return timestamp ? new Date(timestamp).toISOString() : '' + } + const stringifiedMetadata = Object.fromEntries( + Object.entries({ + protocolName: fileMetadata.protocolName, + author: fileMetadata.author, + description: fileMetadata.description, + created: formatTimestamp(fileMetadata.created), + lastModified: formatTimestamp(fileMetadata.lastModified), + category: fileMetadata.category, + subcategory: fileMetadata.subcategory, + tags: fileMetadata.tags?.length && fileMetadata.tags.join(', '), + }).filter(([key, value]) => value) // drop blank entries + ) + return `metadata = ${formatPyDict(stringifiedMetadata)}` +} diff --git a/protocol-designer/src/load-file/actions.ts b/protocol-designer/src/load-file/actions.ts index a42a998edc2..da14e209246 100644 --- a/protocol-designer/src/load-file/actions.ts +++ b/protocol-designer/src/load-file/actions.ts @@ -1,6 +1,6 @@ import { migration } from './migration' import { selectors as fileDataSelectors } from '../file-data' -import { saveFile } from './utils' +import { saveFile, savePythonFile } from './utils' import type { SyntheticEvent } from 'react' import type { PDProtocolFile } from '../file-types' @@ -112,3 +112,23 @@ export const saveProtocolFile: () => ThunkAction = () => const fileName = `${protocolName}.json` saveFile(fileData, fileName) } +// Eventually this will replace saveProtocolFile: +export const savePythonProtocolFile: () => ThunkAction = () => ( + dispatch, + getState +) => { + // dispatching this should update the state, eg lastModified timestamp + dispatch({ + type: 'SAVE_PROTOCOL_FILE', + }) + const state = getState() + const fileData = fileDataSelectors.createPythonFile(state) + const protocolName = + fileDataSelectors.getFileMetadata(state).protocolName || 'untitled' + // unlike JSON files, Python filenames can't have funny characters + const fileName = `${protocolName + .trim() + .replace(/\S+/g, '_') + .replace(/[^A-Za-z0-9_]/g, '')}.py` + savePythonFile(fileData, fileName) +} diff --git a/protocol-designer/src/load-file/utils.ts b/protocol-designer/src/load-file/utils.ts index 0d90087a4dd..2da3e8664f5 100644 --- a/protocol-designer/src/load-file/utils.ts +++ b/protocol-designer/src/load-file/utils.ts @@ -6,3 +6,9 @@ export const saveFile = (fileData: ProtocolFile, fileName: string): void => { }) saveAs(blob, fileName) } +export const savePythonFile = (fileData: string, fileName: string): void => { + const blob = new Blob([fileData], { type: 'text/x-python;charset=UTF-8' }) + // For now, show the generated Python in a new window instead of saving it to a file. + // (A saved Python file wouldn't be runnable anyway until we finish this project.) + window.open(URL.createObjectURL(blob), '_blank') +} diff --git a/protocol-designer/src/pages/ProtocolOverview/index.tsx b/protocol-designer/src/pages/ProtocolOverview/index.tsx index bfd2b2c5f80..f06fee7f216 100644 --- a/protocol-designer/src/pages/ProtocolOverview/index.tsx +++ b/protocol-designer/src/pages/ProtocolOverview/index.tsx @@ -301,9 +301,9 @@ export function ProtocolOverview(): JSX.Element { {enablePythonExport ? ( { - console.log('wire this up') + dispatch(loadFileActions.savePythonProtocolFile()) }} whiteSpace={NO_WRAP} height="3.5rem" From f687a3a52137d5a1df7f5315cd3bd685bfba5d09 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Fri, 7 Feb 2025 16:21:17 -0500 Subject: [PATCH 68/81] feat(protocol-designer, step-generation, app): introduce pythonName to each entity (#17463) closes AUTH-1383 For python/pd interop, we want to add a `pythonName` to `liquidEntity`, `labwareEntity`, `moduleEntity`, and `pipetteEntity`. This PR does that by adding them in redux, that way, the `pythonName` is not polluting the JSON structure. For Quick Transfer, the `pythonName` is generated in `generateQuickTransferArgs`. The python name patterning is as follows: - modules: moduleType minus `Type` in snake case plus the number so `heater_shaker_module_1` and then `heater_shaker_module_2` for 2 heater-shaker modules - pipettes: `pipette_left` or `pipette_right` - labware: the labware displayCategory in snake case plus the number. So 2 well plates and 1 reservoir would be `well_plate_1`, `well_plate_2`, `reservoir_1` - liquids: just liquid with the number so `liquid_1`, `liquid_2`, etc. --- .../utils/createQuickTransferFile.ts | 2 +- .../utils/generateQuickTransferArgs.ts | 15 ++ .../protocol/8/doItAllV3MigratedToV8.json | 1 - .../protocol/8/doItAllV4MigratedToV8.json | 1 - .../protocol/8/doItAllV7MigratedToV8.json | 2 - .../fixtures/protocol/8/doItAllV8.json | 2 - .../protocol/8/example_1_1_0MigratedToV8.json | 2 - .../8/thermocyclerOnOt2V7MigratedToV8.json | 1 - .../__fixtures__/createFile/commonFields.ts | 4 + .../__fixtures__/createFile/engageMagnet.ts | 1 + .../file-data/__tests__/createFile.test.ts | 2 + .../src/file-data/__tests__/utils.test.tsx | 3 + .../src/file-data/selectors/fileCreator.ts | 26 ++- protocol-designer/src/file-types.ts | 4 +- .../labware-ingred/__tests__/actions.test.ts | 3 + .../src/labware-ingred/actions/actions.ts | 27 +-- .../src/labware-ingred/actions/thunks.ts | 82 ++++++++- .../src/labware-ingred/reducers/index.ts | 20 ++- .../src/labware-ingred/selectors.ts | 7 +- protocol-designer/src/labware-ingred/types.ts | 6 +- .../src/load-file/migration/8_5_0.ts | 7 +- .../src/modules/__tests__/moduleData.test.tsx | 2 + protocol-designer/src/modules/thunks.ts | 64 ++++++- .../organisms/DefineLiquidsModal/index.tsx | 12 +- .../__tests__/utils.test.ts | 2 + .../EditInstrumentsModal/editPipettes.ts | 2 +- .../__tests__/MaterialsListModal.test.tsx | 2 + .../__tests__/SelectWellsModal.test.tsx | 2 + .../pages/CreateNewProtocolWizard/index.tsx | 2 +- .../Designer/DeckSetup/DeckSetupTools.tsx | 4 +- .../Designer/DeckSetup/SlotOverflowMenu.tsx | 4 +- .../__tests__/DeckSetupTools.test.tsx | 7 +- .../DeckSetup/__tests__/LabwareTools.test.tsx | 1 + .../__tests__/SelectedHoveredItems.test.tsx | 3 + .../__tests__/SlotOverflowMenu.test.tsx | 9 +- .../DeckSetup/__tests__/utils.test.ts | 2 + .../Offdeck/__tests__/OffDeckDetails.test.tsx | 1 + .../StepTools/__tests__/MagnetTools.test.tsx | 3 + .../Timeline/__tests__/AddStepButton.test.tsx | 4 + .../__tests__/StepOverflowMenu.test.tsx | 2 + .../pages/Designer/__tests__/utils.test.ts | 8 + .../__tests__/DeckThumbnail.test.tsx | 1 + .../__tests__/OffdeckThumbnail.test.tsx | 1 + .../src/step-forms/actions/modules.ts | 6 - .../src/step-forms/reducers/index.ts | 168 ++++++++++++++---- .../src/step-forms/selectors/index.ts | 23 ++- .../src/step-forms/test/reducers.test.ts | 31 ++-- protocol-designer/src/step-forms/types.ts | 2 + .../src/step-forms/utils/index.ts | 5 +- .../getNextDefaultTemperatureModuleId.test.ts | 3 + ...getNextDefaultThermocyclerModuleId.test.ts | 5 + .../handleFormChange/test/moveLiquid.test.ts | 2 + .../steplist/formLevel/test/warnings.test.ts | 6 + protocol-designer/src/ui/modules/utils.ts | 6 +- .../__tests__/addAndSelectStep.test.ts | 10 ++ .../labwareModuleCompatibility.test.ts | 1 + protocol-designer/src/utils/index.ts | 22 +++ .../fixtureGeneration.test.ts.snap | 15 ++ .../absorbanceReaderCloseInitialize.test.ts | 1 + .../absorbanceReaderCloseLid.test.ts | 1 + .../absorbanceReaderCloseRead.test.ts | 1 + .../__tests__/absorbanceReaderOpenLid.test.ts | 1 + .../src/__tests__/disengageMagnet.test.ts | 1 + .../dispenseUpdateLiquidState.test.ts | 1 + .../src/__tests__/engageMagnet.test.ts | 1 + .../getIsSafePipetteMovement.test.ts | 7 + .../src/__tests__/heaterShaker.test.ts | 1 + .../__tests__/heaterShakerOpenLatch.test.ts | 1 + .../src/__tests__/heaterShakerUpdates.test.ts | 1 + .../__tests__/modulePipetteCollision.test.ts | 1 + .../src/__tests__/moveLabware.test.ts | 1 + .../src/__tests__/robotStateSelectors.test.ts | 1 + .../src/__tests__/thermocyclerUpdates.test.ts | 1 + .../__tests__/updateMagneticModule.test.ts | 1 + step-generation/src/__tests__/utils.test.ts | 10 ++ .../src/fixtures/robotStateFixtures.ts | 30 ++-- step-generation/src/types.ts | 8 + ...onstructInvariantContextFromRunCommands.ts | 4 + 78 files changed, 591 insertions(+), 144 deletions(-) diff --git a/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts b/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts index 09fa2348f39..614acb18753 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts +++ b/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts @@ -204,7 +204,7 @@ export function createQuickTransferFile( }, designerApplication: { name: 'opentrons/quick-transfer', - version: '1.0.0', + version: '1.1.0', data: quickTransferState, }, } diff --git a/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts b/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts index c541a498e3e..75cb1d606d7 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts +++ b/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts @@ -67,6 +67,7 @@ function getInvariantContextAndRobotState( tiprackDefURI: [tipRackDefURI], tiprackLabwareDef: [quickTransferState.tipRack], spec: quickTransferState.pipette, + pythonName: 'pipette_left', }, } const pipetteLocations: RobotState['pipettes'] = { @@ -88,6 +89,7 @@ function getInvariantContextAndRobotState( id: adapterId, labwareDefURI: adapter96ChannelDefUri, def: getAllDefinitions()[adapter96ChannelDefUri], + pythonName: 'adapter_1', }, } labwareLocations = { @@ -96,6 +98,14 @@ function getInvariantContextAndRobotState( }, } } + const sourceDisplayCategory = + quickTransferState.source.metadata.displayCategory + const destDisplayCategory = + quickTransferState.destination !== 'source' + ? quickTransferState.destination.metadata.displayCategory + : sourceDisplayCategory + + const isSameDisplayCategory = sourceDisplayCategory === destDisplayCategory labwareEntities = { ...labwareEntities, @@ -103,11 +113,13 @@ function getInvariantContextAndRobotState( id: tipRackId, labwareDefURI: tipRackDefURI, def: quickTransferState.tipRack, + pythonName: 'tip_rack_1', }, [sourceLabwareId]: { id: sourceLabwareId, labwareDefURI: sourceLabwareURI, def: quickTransferState.source, + pythonName: `${sourceDisplayCategory}_1`, }, } labwareLocations = { @@ -129,6 +141,9 @@ function getInvariantContextAndRobotState( id: destLabwareId, labwareDefURI: destLabwareURI, def: quickTransferState.destination, + pythonName: isSameDisplayCategory + ? `${destDisplayCategory}_2` + : `${destDisplayCategory}_1`, }, } labwareLocations = { diff --git a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json index 48c933990a4..fccdb5ede4a 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json @@ -30,7 +30,6 @@ "displayName": "Water", "displayColor": "#b925ff", "description": null, - "pythonName": "liquid_1", "liquidGroupId": "0" } }, diff --git a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json index ea1d1cb31f3..3edfb77be96 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json @@ -30,7 +30,6 @@ "displayName": "Water", "displayColor": "#b925ff", "description": null, - "pythonName": "liquid_1", "liquidGroupId": "0" } }, diff --git a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json index 5ceb1bedabb..ed361a2ca8c 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json @@ -33,14 +33,12 @@ "displayName": "Water", "displayColor": "#b925ff", "description": null, - "pythonName": "liquid_1", "liquidGroupId": "0" }, "1": { "displayName": "Samples", "displayColor": "#ffd600", "description": null, - "pythonName": "liquid_2", "liquidGroupId": "1" } }, diff --git a/protocol-designer/fixtures/protocol/8/doItAllV8.json b/protocol-designer/fixtures/protocol/8/doItAllV8.json index 7015a8a0c94..048620440ac 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV8.json @@ -30,14 +30,12 @@ "displayName": "h20", "description": null, "liquidGroupId": "0", - "pythonName": "liquid_1", "displayColor": "#b925ff" }, "1": { "displayName": "sample", "description": null, "liquidGroupId": "1", - "pythonName": "liquid_2", "displayColor": "#ffd600" } }, diff --git a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json index dde560281b0..39c9fa91a5c 100644 --- a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json @@ -33,13 +33,11 @@ "displayName": "samples", "description": null, "displayColor": "#b925ff", - "pythonName": "liquid_1", "liquidGroupId": "0" }, "1": { "displayName": "dna", "description": null, - "pythonName": "liquid_2", "displayColor": "#ffd600", "liquidGroupId": "1" } diff --git a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json index 0fdb37a057e..454f54396b1 100644 --- a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json @@ -30,7 +30,6 @@ "displayName": "123", "displayColor": "#b925ff", "description": null, - "pythonName": "liquid_1", "liquidGroupId": "0" } }, diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts b/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts index 14ae24e1001..4e271ce146e 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts @@ -40,16 +40,19 @@ export const labwareEntities: LabwareEntities = { labwareDefURI: 'opentrons/opentrons_1_trash_1100ml_fixed/1', id: 'fixedTrash', def: fixtureTrash, + pythonName: 'mockPythonName', }, tiprackId: { labwareDefURI: 'opentrons/opentrons_96_tiprack_10ul/1', id: 'tiprackId', def: fixtureTiprack10ul, + pythonName: 'mockPythonName', }, plateId: { labwareDefURI: 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1', id: 'plateId', def: fixture96Plate, + pythonName: 'mockPythonName', }, } export const pipetteEntities: PipetteEntities = { @@ -59,6 +62,7 @@ export const pipetteEntities: PipetteEntities = { spec: fixtureP10SingleV2Specs, tiprackDefURI: ['opentrons/opentrons_96_tiprack_10ul/1'], tiprackLabwareDef: [fixtureTiprack10ul], + pythonName: 'mockPythonName', }, } export const labwareNicknamesById: Record = { diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts b/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts index fc32b152c91..95589f0d774 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/engageMagnet.ts @@ -87,5 +87,6 @@ export const moduleEntities: ModuleEntities = { id: 'magneticModuleId', type: 'magneticModuleType', model: 'magneticModuleV1', + pythonName: 'mockPythonName', }, } diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 6c50a9f02df..34428f5c70b 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -132,11 +132,13 @@ describe('getLabwareDefinitionsInUse util', () => { id: 'someLabwareId', def: assignedTiprackOnDeckDef as LabwareDefinition2, labwareDefURI: 'assignedTiprackOnDeckURI', + pythonName: 'mockPythonName', }, otherLabwareId: { id: 'otherLabwareId', def: nonTiprackLabwareOnDeckDef as LabwareDefinition2, labwareDefURI: 'nonTiprackLabwareOnDeckURI', + pythonName: 'mockPythonName', }, } const allLabwareDefsByURI: LabwareDefByDefURI = { diff --git a/protocol-designer/src/file-data/__tests__/utils.test.tsx b/protocol-designer/src/file-data/__tests__/utils.test.tsx index 34d08ca6f4b..61d533414b5 100644 --- a/protocol-designer/src/file-data/__tests__/utils.test.tsx +++ b/protocol-designer/src/file-data/__tests__/utils.test.tsx @@ -26,6 +26,7 @@ describe('getPipettesLoadInfo', () => { name: fixtureP1000SingleV2Specs.displayName as PipetteName, id: pipId, tiprackDefURI: [], + pythonName: 'mockPythonName', }, }) ).toEqual(results) @@ -46,6 +47,7 @@ describe('getModuleLoadInfo', () => { id: moduleId, model: 'magneticModuleV2', type: 'magneticModuleType', + pythonName: 'mockPythonName', }, }) ).toEqual(results) @@ -73,6 +75,7 @@ describe('getLabwareLoadInfo', () => { id: labwareId, labwareDefURI: uri, def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, }, labwareNicknamesById diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index 2695cfbc58d..b990d367b64 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -33,6 +33,7 @@ import type { PipetteEntity, LabwareEntities, PipetteEntities, + Ingredients, } from '@opentrons/step-generation' import type { CommandAnnotationV1Mixin, @@ -140,6 +141,29 @@ export const createFile: Selector = createSelector( const savedOrderedStepIds = orderedStepIds.filter( stepId => savedStepForms[stepId] ) + + const ingredients: Ingredients = Object.entries(liquidEntities).reduce( + (acc: Ingredients, [liquidId, liquidData]) => { + const { + displayName, + description, + displayColor, + liquidGroupId, + liquidClass, + } = liquidData + + acc[liquidId] = { + displayName, + description, + displayColor, + liquidGroupId, + liquidClass, + } + return acc + }, + {} + ) + const designerApplication = { name: 'opentrons/protocol-designer', version: applicationVersion, @@ -151,7 +175,7 @@ export const createFile: Selector = createSelector( p.tiprackDefURI ), dismissedWarnings, - ingredients: liquidEntities, + ingredients, ingredLocations, savedStepForms, orderedStepIds: savedOrderedStepIds, diff --git a/protocol-designer/src/file-types.ts b/protocol-designer/src/file-types.ts index 41d7a9fe076..58923b3ef85 100644 --- a/protocol-designer/src/file-types.ts +++ b/protocol-designer/src/file-types.ts @@ -3,7 +3,7 @@ import type { PipetteName, ProtocolFile, } from '@opentrons/shared-data' -import type { LiquidEntities } from '@opentrons/step-generation' +import type { Ingredients } from '@opentrons/step-generation' import type { RootState as IngredRoot } from './labware-ingred/reducers' import type { RootState as StepformRoot } from './step-forms' import type { RootState as DismissRoot } from './dismiss' @@ -25,7 +25,7 @@ export interface PDMetadata { // pipetteId to tiprackModel pipetteTiprackAssignments: Record dismissedWarnings: DismissRoot['dismissedWarnings'] - ingredients: LiquidEntities + ingredients: Ingredients ingredLocations: IngredRoot['ingredLocations'] savedStepForms: StepformRoot['savedStepForms'] orderedStepIds: StepformRoot['orderedStepIds'] diff --git a/protocol-designer/src/labware-ingred/__tests__/actions.test.ts b/protocol-designer/src/labware-ingred/__tests__/actions.test.ts index 7610de0702f..be7b4953134 100644 --- a/protocol-designer/src/labware-ingred/__tests__/actions.test.ts +++ b/protocol-designer/src/labware-ingred/__tests__/actions.test.ts @@ -118,6 +118,7 @@ describe('createContainer', () => { id: 'fakeUuid:someLabwareDefURI', labwareDefURI: 'someLabwareDefURI', slot: '4', + displayCategory: 'wellPlate', }, }, ] @@ -163,6 +164,7 @@ describe('createContainer', () => { id: 'fakeUuid:someLabwareDefURI', labwareDefURI: 'someLabwareDefURI', slot: '3', + displayCategory: 'wellPlate', }, }, ] @@ -254,6 +256,7 @@ describe('createContainer', () => { id: 'fakeUuid:someLabwareDefURI', labwareDefURI: 'someLabwareDefURI', slot: '4', + displayCategory: 'tipRack', }, }, { diff --git a/protocol-designer/src/labware-ingred/actions/actions.ts b/protocol-designer/src/labware-ingred/actions/actions.ts index ea6e606415a..12f8b93b6a4 100644 --- a/protocol-designer/src/labware-ingred/actions/actions.ts +++ b/protocol-designer/src/labware-ingred/actions/actions.ts @@ -4,7 +4,12 @@ import { selectors } from '../selectors' import type { StepFieldName } from '../../form-types' import type { DeckSlot, ThunkAction } from '../../types' import type { Fixture, IngredInputs } from '../types' -import type { CutoutId, ModuleModel } from '@opentrons/shared-data' +import type { + CutoutId, + LabwareDisplayCategory, + ModuleModel, +} from '@opentrons/shared-data' +import type { LiquidEntities, LiquidEntity } from '@opentrons/step-generation' // ===== Labware selector actions ===== export interface OpenAddLabwareModalAction { @@ -69,6 +74,7 @@ export interface CreateContainerAction { payload: CreateContainerArgs & { slot: DeckSlot id: string + displayCategory: LabwareDisplayCategory } } export interface DeleteContainerAction { @@ -77,10 +83,6 @@ export interface DeleteContainerAction { labwareId: string } } -// @ts-expect-error(sa, 2021-6-20): creatActions doesn't return exact actions -export const deleteContainer: (payload: { - labwareId: string -}) => DeleteContainerAction = createAction('DELETE_CONTAINER') // =========== export interface SwapSlotContentsAction { type: 'MOVE_DECK_ITEM' @@ -108,6 +110,7 @@ export interface DuplicateLabwareAction { duplicateLabwareId: string duplicateLabwareNickname: string slot: DeckSlot + displayCategory: LabwareDisplayCategory } } @@ -128,7 +131,7 @@ export const removeWellsContents: ( export interface EditMultipleLiquidGroupsAction { type: 'EDIT_MULTIPLE_LIQUID_GROUPS_PYTHON_NAME' - payload: Record // Updated liquid group pythonName + payload: LiquidEntities // Updated liquid group pythonName } export interface DeleteLiquidGroupAction { @@ -163,7 +166,7 @@ export const deleteLiquidGroup: ( const updatedLiquidGroupPythonName = Object.keys(remainingLiquidEntities) .sort() // sort to ensure correct order - .reduce>((acc, oldId, index) => { + .reduce>((acc, oldId, index) => { acc[oldId] = { ...remainingLiquidEntities[oldId], pythonName: `liquid_${index + 1}`, @@ -227,20 +230,22 @@ export interface EditLiquidGroupAction { type: 'EDIT_LIQUID_GROUP' payload: IngredInputs & { liquidGroupId: string + pythonName: string } } // NOTE: with no ID, a new one is assigned export const editLiquidGroup: ( args: IngredInputs ) => ThunkAction = args => (dispatch, getState) => { - const { liquidGroupId, ...payloadArgs } = args // NOTE: separate liquidGroupId for flow to understand unpacking :/ - + const { liquidGroupId: liquidGroupIdFromArg, ...payloadArgs } = args + const liquidGroupId = + liquidGroupIdFromArg || selectors.getNextLiquidGroupId(getState()) dispatch({ type: 'EDIT_LIQUID_GROUP', payload: { ...payloadArgs, - liquidGroupId: - args.liquidGroupId || selectors.getNextLiquidGroupId(getState()), + liquidGroupId, + pythonName: `liquid_${parseInt(liquidGroupId) + 1}`, }, }) } diff --git a/protocol-designer/src/labware-ingred/actions/thunks.ts b/protocol-designer/src/labware-ingred/actions/thunks.ts index 38cccb252fb..02ed71678e8 100644 --- a/protocol-designer/src/labware-ingred/actions/thunks.ts +++ b/protocol-designer/src/labware-ingred/actions/thunks.ts @@ -1,17 +1,24 @@ import { getIsTiprack } from '@opentrons/shared-data' -import { uuid } from '../../utils' +import { getLabwarePythonName, uuid } from '../../utils' +import { getLabwareEntities } from '../../step-forms/selectors' import { selectors as labwareDefSelectors } from '../../labware-defs' import { selectors as stepFormSelectors } from '../../step-forms' import { selectors as uiLabwareSelectors } from '../../ui/labware' import { getNextAvailableDeckSlot, getNextNickname } from '../utils' import { getRobotType } from '../../file-data/selectors' +import type { LabwareEntities } from '@opentrons/step-generation' import { selectNestedLabware, selectLabware, selectModule, selectFixture, } from './actions' -import type { LabwareOnDeck, ModuleOnDeck } from '../../step-forms' +import type { + LabwareOnDeck, + ModuleOnDeck, + NormalizedLabware, + NormalizedLabwareById, +} from '../../step-forms' import type { CreateContainerArgs, CreateContainerAction, @@ -20,6 +27,7 @@ import type { SelectLabwareAction, SelectModuleAction, SelectFixtureAction, + DeleteContainerAction, } from './actions' import type { ThunkAction } from '../../types' import type { Fixture } from '../types' @@ -69,6 +77,7 @@ export const createContainer: ( const labwareDef = labwareDefSelectors.getLabwareDefsByURI(state)[ args.labwareDefURI ] + const displayCategory = labwareDef.metadata.displayCategory const slot = args.slot || getNextAvailableDeckSlot(initialDeckSetup, robotType, labwareDef) @@ -88,6 +97,7 @@ export const createContainer: ( labwareDefURI: args.adapterUnderLabwareDefURI, id: adapterId, slot, + displayCategory, }, }) dispatch({ @@ -96,12 +106,13 @@ export const createContainer: ( ...args, id, slot: adapterId, + displayCategory, }, }) } else { dispatch({ type: 'CREATE_CONTAINER', - payload: { ...args, id, slot }, + payload: { ...args, id, slot, displayCategory }, }) } if (isTiprack) { @@ -138,6 +149,7 @@ export const duplicateLabware: ( const labwareDef = labwareDefSelectors.getLabwareDefsByURI(state)[ templateLabwareDefURI ] + const displayCategory = labwareDef.metadata.displayCategory const duplicateSlot = getNextAvailableDeckSlot( initialDeckSetup, robotType, @@ -163,6 +175,7 @@ export const duplicateLabware: ( templateLabwareId, duplicateLabwareId, slot: 'offDeck', + displayCategory, }, }) } @@ -175,6 +188,7 @@ export const duplicateLabware: ( templateLabwareId, duplicateLabwareId, slot: duplicateSlot, + displayCategory, }, }) } @@ -215,3 +229,65 @@ export const editSlotInfo: ( dispatch(selectModule({ moduleModel: createdModuleForSlot?.model ?? null })) dispatch(selectFixture({ fixture: preSelectedFixture ?? null })) } + +export interface EditMultipleLabwareAction { + type: 'EDIT_MULTIPLE_LABWARE_PYTHON_NAME' + payload: NormalizedLabwareById +} + +interface DeleteContainerArgs { + labwareId: string +} +export const deleteContainer: ( + args: DeleteContainerArgs +) => ThunkAction = args => ( + dispatch, + getState +) => { + const { labwareId } = args + const state = getState() + const labwareEntities = getLabwareEntities(state) + const displayCategory = + labwareEntities[labwareId].def.metadata.displayCategory + const labwareOfSameCategory: LabwareEntities = Object.fromEntries( + Object.entries(labwareEntities).filter( + ([_, labware]) => labware.def.metadata.displayCategory === displayCategory + ) + ) + const typeCount = Object.keys(labwareOfSameCategory).length + + dispatch({ + type: 'DELETE_CONTAINER', + payload: { + labwareId, + }, + }) + + if (typeCount > 1) { + const { + [labwareId]: _, + ...remainingLabwareEntities + } = labwareOfSameCategory + + const updatedLabwarePythonName: NormalizedLabwareById = Object.keys( + remainingLabwareEntities + ) + .sort() + .reduce>( + (acc: NormalizedLabwareById, oldId, index) => { + acc[oldId] = { + ...remainingLabwareEntities[oldId], + pythonName: getLabwarePythonName(displayCategory, index + 1), + displayCategory, + } + return acc + }, + {} + ) + + dispatch({ + type: 'EDIT_MULTIPLE_LABWARE_PYTHON_NAME', + payload: updatedLabwarePythonName, + }) + } +} diff --git a/protocol-designer/src/labware-ingred/reducers/index.ts b/protocol-designer/src/labware-ingred/reducers/index.ts index ad7db0864da..e2fb4db914f 100644 --- a/protocol-designer/src/labware-ingred/reducers/index.ts +++ b/protocol-designer/src/labware-ingred/reducers/index.ts @@ -9,11 +9,12 @@ import type { SingleLabwareLiquidState, LocationLiquidState, LabwareLiquidState, + LiquidEntities, + LiquidEntity, } from '@opentrons/step-generation' import type { LoadLabwareCreateCommand } from '@opentrons/shared-data' import type { Action, DeckSlot } from '../../types' import type { - LiquidGroupsById, DisplayLabware, ZoomedIntoSlotInfoState, GenerateNewProtocolState, @@ -272,7 +273,7 @@ export const savedLabware: Reducer = handleActions( }, {} ) -export type IngredientsState = LiquidGroupsById +export type IngredientsState = LiquidEntities // @ts-expect-error(sa, 2021-6-20): cannot use string literals as action type // TODO IMMEDIATELY: refactor this to the old fashioned way if we cannot have type safety: https://github.com/redux-utilities/redux-actions/issues/282#issuecomment-595163081 export const ingredients: Reducer = handleActions( @@ -306,7 +307,20 @@ export const ingredients: Reducer = handleActions( LOAD_FILE: ( state: IngredientsState, action: LoadFileAction - ): IngredientsState => getPDMetadata(action.payload.file).ingredients, + ): IngredientsState => { + const ingredients = getPDMetadata(action.payload.file).ingredients + + return Object.entries(ingredients).reduce>( + (acc, [key, ingredient]) => { + acc[key] = { + ...ingredient, + pythonName: `liquid_${parseInt(key) + 1}`, + } + return acc + }, + {} + ) + }, }, {} ) diff --git a/protocol-designer/src/labware-ingred/selectors.ts b/protocol-designer/src/labware-ingred/selectors.ts index a9c674a293b..0124262fede 100644 --- a/protocol-designer/src/labware-ingred/selectors.ts +++ b/protocol-designer/src/labware-ingred/selectors.ts @@ -5,10 +5,7 @@ import max from 'lodash/max' import reduce from 'lodash/reduce' import type { Selector } from 'reselect' import type { DropdownOption } from '@opentrons/components' -import type { - LabwareLiquidState, - LiquidEntity, -} from '@opentrons/step-generation' +import type { Ingredient, LabwareLiquidState } from '@opentrons/step-generation' import type { CutoutId } from '@opentrons/shared-data' import type { RootState, @@ -57,7 +54,7 @@ const getLiquidNamesById: Selector< ingredGroups => mapValues( ingredGroups, - (ingred: LiquidEntity) => ingred.displayName + (ingred: Ingredient) => ingred.displayName ) as Record ) const getLiquidSelectionOptions: Selector< diff --git a/protocol-designer/src/labware-ingred/types.ts b/protocol-designer/src/labware-ingred/types.ts index aaa86cf4b2f..dbe6f56f752 100644 --- a/protocol-designer/src/labware-ingred/types.ts +++ b/protocol-designer/src/labware-ingred/types.ts @@ -1,7 +1,7 @@ import type { CutoutId, ModuleModel } from '@opentrons/shared-data' import type { DeckSlot, - LiquidEntity, + Ingredient, LocationLiquidState, } from '@opentrons/step-generation' // TODO Ian 2018-02-19 make these shared in component library, standardize with Run App @@ -25,10 +25,10 @@ export interface WellContents { } export type ContentsByWell = Record | null export type WellContentsByLabware = Record -export type IngredInputs = LiquidEntity & { +export type IngredInputs = Ingredient & { volume?: number | null } -export type LiquidGroupsById = Record +export type LiquidGroupsById = Record export type AllIngredGroupFields = Record export type Fixture = diff --git a/protocol-designer/src/load-file/migration/8_5_0.ts b/protocol-designer/src/load-file/migration/8_5_0.ts index bbf2fda4c62..f75d6df2c0e 100644 --- a/protocol-designer/src/load-file/migration/8_5_0.ts +++ b/protocol-designer/src/load-file/migration/8_5_0.ts @@ -7,7 +7,7 @@ import type { LoadLabwareCreateCommand, ProtocolFile, } from '@opentrons/shared-data' -import type { LiquidEntities } from '@opentrons/step-generation' +import type { Ingredients } from '@opentrons/step-generation' import type { DesignerApplicationData } from './utils/getLoadLiquidCommands' import type { PDMetadata } from '../../file-types' @@ -30,15 +30,14 @@ export const migrateFile = ( const ingredients = designerApplication.data.ingredients - const migratedIngredients: LiquidEntities = Object.entries( + const migratedIngredients: Ingredients = Object.entries( ingredients - ).reduce((acc, [id, ingredient]) => { + ).reduce((acc, [id, ingredient]) => { acc[id] = { displayName: ingredient.name ?? '', liquidClass: ingredient.liquidClass, description: ingredient.description ?? null, liquidGroupId: id, - pythonName: `liquid_${parseInt(id) + 1}`, displayColor: liquids[id].displayColor ?? swatchColors(id), } return acc diff --git a/protocol-designer/src/modules/__tests__/moduleData.test.tsx b/protocol-designer/src/modules/__tests__/moduleData.test.tsx index 1cc180156df..d8950671c08 100644 --- a/protocol-designer/src/modules/__tests__/moduleData.test.tsx +++ b/protocol-designer/src/modules/__tests__/moduleData.test.tsx @@ -53,6 +53,7 @@ describe('getNextAvailableModuleSlot', () => { type: 'thermocyclerModuleType', slot: 'B1', moduleState: {} as any, + pythonName: 'mockPythonName', }, temperature: { model: 'temperatureModuleV2', @@ -60,6 +61,7 @@ describe('getNextAvailableModuleSlot', () => { type: 'temperatureModuleType', slot: 'C1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, labware: {}, diff --git a/protocol-designer/src/modules/thunks.ts b/protocol-designer/src/modules/thunks.ts index 9998a2d29b1..cf807bf683c 100644 --- a/protocol-designer/src/modules/thunks.ts +++ b/protocol-designer/src/modules/thunks.ts @@ -1,8 +1,14 @@ import { selectors as stepFormSelectors } from '../step-forms' -import { uuid } from '../utils' +import { getModulePythonName, uuid } from '../utils' +import { getModuleEntities } from '../step-forms/selectors' import { getNextAvailableModuleSlot } from './moduleData' +import type { ModuleEntity } from '@opentrons/step-generation' import type { ModuleModel, ModuleType } from '@opentrons/shared-data' -import type { CreateModuleAction } from '../step-forms/actions' +import type { ModuleEntities } from '../step-forms' +import type { + CreateModuleAction, + DeleteModuleAction, +} from '../step-forms/actions' import type { ThunkAction } from '../types' interface CreateModuleWithNoSloArgs { @@ -31,3 +37,57 @@ export const createModuleWithNoSlot: ( }, }) } + +export interface EditMultipleModulesAction { + type: 'EDIT_MULTIPLE_MODULES_PYTHON_NAME' + payload: ModuleEntities +} + +interface DeleteModuleArgs { + moduleId: string +} +export const deleteModule: ( + args: DeleteModuleArgs +) => ThunkAction = args => ( + dispatch, + getState +) => { + const { moduleId } = args + const state = getState() + const moduleEntities = getModuleEntities(state) + const moduleType = moduleEntities[moduleId].type + const modulesOfSameType: ModuleEntities = Object.fromEntries( + Object.entries(moduleEntities).filter( + ([_, module]) => module.type === moduleType + ) + ) + const typeCount = Object.keys(modulesOfSameType).length + + dispatch({ + type: 'DELETE_MODULE', + payload: { + id: moduleId, + }, + }) + + if (typeCount > 1) { + const { [moduleId]: _, ...remainingModuleEntities } = modulesOfSameType + + const updatedModulePythonName: ModuleEntities = Object.keys( + remainingModuleEntities + ) + .sort() + .reduce>((acc, oldId, index) => { + acc[oldId] = { + ...remainingModuleEntities[oldId], + pythonName: getModulePythonName(moduleType, index + 1), + } + return acc + }, {}) + + dispatch({ + type: 'EDIT_MULTIPLE_MODULES_PYTHON_NAME', + payload: updatedModulePythonName, + }) + } +} diff --git a/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx b/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx index d925560cbf1..2e25ec3a73b 100644 --- a/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx +++ b/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx @@ -40,7 +40,7 @@ import { swatchColors } from './swatchColors' import type { ColorResult, RGBColor } from 'react-color' import type { ThunkDispatch } from 'redux-thunk' import type { BaseState } from '../../types' -import type { LiquidEntity } from '@opentrons/step-generation' +import type { Ingredient } from '@opentrons/step-generation' const liquidEditFormSchema: any = Yup.object().shape({ displayName: Yup.string().required('liquid name is required'), @@ -90,7 +90,7 @@ export function DefineLiquidsModal( onClose() } - const saveForm = (formData: LiquidEntity): void => { + const saveForm = (formData: Ingredient): void => { dispatch( labwareIngredActions.editLiquidGroup({ ...formData, @@ -103,12 +103,11 @@ export function DefineLiquidsModal( liquidGroupId != null ? allIngredientGroupFields[liquidGroupId] : null const liquidId = selectedLiquid.liquidGroupId ?? nextGroupId - const initialValues: LiquidEntity = { + const initialValues: Ingredient = { displayName: selectedIngredFields?.displayName ?? '', displayColor: selectedIngredFields?.displayColor ?? swatchColors(liquidId), liquidClass: selectedIngredFields?.liquidClass ?? '', description: selectedIngredFields?.description ?? '', - pythonName: `liquid_${parseInt(liquidGroupId ?? nextGroupId) + 1}`, liquidGroupId: liquidGroupId ?? nextGroupId, } @@ -119,7 +118,7 @@ export function DefineLiquidsModal( watch, setValue, register, - } = useForm({ + } = useForm({ defaultValues: initialValues, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument resolver: yupResolver(liquidEditFormSchema), @@ -129,14 +128,13 @@ export function DefineLiquidsModal( const liquidClass = watch('liquidClass') const { errors, touchedFields } = formState - const handleLiquidEdits = (values: LiquidEntity): void => { + const handleLiquidEdits = (values: Ingredient): void => { saveForm({ displayName: values.displayName, displayColor: values.displayColor, liquidClass: values.liquidClass !== '' ? values.liquidClass ?? undefined : undefined, description: values.description !== '' ? values.description : null, - pythonName: values.pythonName, liquidGroupId: values.liquidGroupId, }) } diff --git a/protocol-designer/src/organisms/EditInstrumentsModal/__tests__/utils.test.ts b/protocol-designer/src/organisms/EditInstrumentsModal/__tests__/utils.test.ts index e46af101944..b9088cdf819 100644 --- a/protocol-designer/src/organisms/EditInstrumentsModal/__tests__/utils.test.ts +++ b/protocol-designer/src/organisms/EditInstrumentsModal/__tests__/utils.test.ts @@ -5,11 +5,13 @@ const mockLeftPipette = { mount: 'left', id: 'mockLeft', name: 'p50_single_flex', + pythonName: 'mockPythonName', } as any const mockRightPiette = { mount: 'right', id: 'mockRight', name: 'p50_multi_flex', + pythonName: 'mockPythonName', } as any describe('getShouldShowPipetteType', () => { diff --git a/protocol-designer/src/organisms/EditInstrumentsModal/editPipettes.ts b/protocol-designer/src/organisms/EditInstrumentsModal/editPipettes.ts index a92e6717d33..5041b4bd9c1 100644 --- a/protocol-designer/src/organisms/EditInstrumentsModal/editPipettes.ts +++ b/protocol-designer/src/organisms/EditInstrumentsModal/editPipettes.ts @@ -19,7 +19,7 @@ const adapter96ChannelDefUri = 'opentrons/opentrons_flex_96_tiprack_adapter/1' type PipetteFieldsData = Omit< PipetteOnDeck, - 'id' | 'spec' | 'tiprackLabwareDef' + 'id' | 'spec' | 'tiprackLabwareDef' | 'pythonName' > export const editPipettes = ( diff --git a/protocol-designer/src/organisms/MaterialsListModal/__tests__/MaterialsListModal.test.tsx b/protocol-designer/src/organisms/MaterialsListModal/__tests__/MaterialsListModal.test.tsx index 842227c85a7..59b19ce260c 100644 --- a/protocol-designer/src/organisms/MaterialsListModal/__tests__/MaterialsListModal.test.tsx +++ b/protocol-designer/src/organisms/MaterialsListModal/__tests__/MaterialsListModal.test.tsx @@ -60,6 +60,7 @@ const mockLabware = [ id: 'mockLabware', labwareDefURI: 'opentrons/opentrons_flex_96_filtertiprack_50ul/1', slot: 'D3', + pythonName: 'mockPythonName', }, ] as LabwareOnDeck[] @@ -139,6 +140,7 @@ describe('MaterialsListModal', () => { }, slot: '7', type: 'thermocyclerModuleType', + pythonName: 'mockPythonName', }, ] as ModuleOnDeck[] props = { diff --git a/protocol-designer/src/organisms/SelectWellsModal/__tests__/SelectWellsModal.test.tsx b/protocol-designer/src/organisms/SelectWellsModal/__tests__/SelectWellsModal.test.tsx index 104022625c4..4faf6647467 100644 --- a/protocol-designer/src/organisms/SelectWellsModal/__tests__/SelectWellsModal.test.tsx +++ b/protocol-designer/src/organisms/SelectWellsModal/__tests__/SelectWellsModal.test.tsx @@ -55,6 +55,7 @@ describe('SelectWellsModal', () => { id: labwareId, labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, }) vi.mocked(getPipetteEntities).mockReturnValue({ @@ -64,6 +65,7 @@ describe('SelectWellsModal', () => { name: fixtureP1000SingleV2Specs.displayName as PipetteName, id: pipId, tiprackDefURI: [], + pythonName: 'mockPythonName', }, }) }) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx index 2e29273b9ac..1202abaa7f8 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx @@ -90,7 +90,7 @@ const adapter96ChannelDefUri = 'opentrons/opentrons_flex_96_tiprack_adapter/1' type PipetteFieldsData = Omit< PipetteOnDeck, - 'id' | 'spec' | 'tiprackLabwareDef' + 'id' | 'spec' | 'tiprackLabwareDef' | 'pythonName' > interface ModuleCreationArgs { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx index d997835e831..c8df84d50bc 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx @@ -37,7 +37,7 @@ import { deleteDeckFixture, } from '../../../step-forms/actions/additionalItems' import { getSavedStepForms } from '../../../step-forms/selectors' -import { deleteModule } from '../../../step-forms/actions' +import { deleteModule } from '../../../modules' import { getDeckSetupForActiveItem } from '../../../top-selectors/labware-locations' import { createContainer, @@ -292,7 +292,7 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { if (slot !== 'offDeck') { // clear module from slot if (createdModuleForSlot != null) { - dispatch(deleteModule(createdModuleForSlot.id)) + dispatch(deleteModule({ moduleId: createdModuleForSlot.id })) } // clear labware from slot if ( diff --git a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx index 6cf595a0d97..22a43c816b5 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx @@ -29,7 +29,7 @@ import { openIngredientSelector, } from '../../../labware-ingred/actions' import { getNextAvailableDeckSlot } from '../../../labware-ingred/utils' -import { deleteModule } from '../../../step-forms/actions' +import { deleteModule } from '../../../modules' import { ConfirmDeleteStagingAreaModal, EditNickNameModal, @@ -193,7 +193,7 @@ export function SlotOverflowMenu( const handleClear = (): void => { // clear module from slot if (moduleOnSlot != null) { - dispatch(deleteModule(moduleOnSlot.id)) + dispatch(deleteModule({ moduleId: moduleOnSlot.id })) } // clear fixture(s) from slot if (fixturesOnSlot.length > 0) { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx index cfc366baf85..c8bf4218473 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx @@ -11,7 +11,7 @@ import { i18n } from '../../../../assets/localization' import { renderWithProviders } from '../../../../__testing-utils__' import { deleteContainer } from '../../../../labware-ingred/actions' import { useKitchen } from '../../../../organisms/Kitchen/hooks' -import { deleteModule } from '../../../../step-forms/actions' +import { deleteModule } from '../../../../modules' import { getAdditionalEquipment, getSavedStepForms, @@ -32,7 +32,7 @@ vi.mock('../../../../feature-flags/selectors') vi.mock('../../../../file-data/selectors') vi.mock('../../../../top-selectors/labware-locations') vi.mock('../../../../labware-ingred/actions') -vi.mock('../../../../step-forms/actions') +vi.mock('../../../../modules') vi.mock('../../../../step-forms/actions/additionalItems') vi.mock('../../../../labware-ingred/selectors') vi.mock('../../../../tutorial/selectors') @@ -126,12 +126,14 @@ describe('DeckSetupTools', () => { id: 'labId', labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, lab2: { slot: 'labId', id: 'labId2', labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, }, pipettes: {}, @@ -142,6 +144,7 @@ describe('DeckSetupTools', () => { id: 'modId', slot: 'D3', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, additionalEquipmentOnDeck: { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx index ce41f0e9210..90be7da2235 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx @@ -62,6 +62,7 @@ describe('LabwareTools', () => { name: 'p1000_single_flex', id: 'mockPipId', tiprackLabwareDef: [fixtureTiprack1000ul as LabwareDefinition2], + pythonName: 'mockPythonName', }, }) vi.mocked(selectors.getZoomedInSlotInfo).mockReturnValue({ diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SelectedHoveredItems.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SelectedHoveredItems.test.tsx index 9c6dccdbb4f..21ad9848363 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SelectedHoveredItems.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SelectedHoveredItems.test.tsx @@ -62,6 +62,7 @@ describe('SelectedHoveredItems', () => { def: fixture24Tuberack as LabwareDefinition2, labwareDefURI: 'fixture/fixture_universal_flat_bottom_adapter/1', slot: 'D3', + pythonName: 'mockPythonName', }, }, }) @@ -134,12 +135,14 @@ describe('SelectedHoveredItems', () => { def: fixture24Tuberack as LabwareDefinition2, labwareDefURI: 'fixture/fixture_universal_flat_bottom_adapter/1', slot: 'D3', + pythonName: 'mockPythonName', }, labware2: { id: 'mockId2', def: fixture24Tuberack as LabwareDefinition2, labwareDefURI: 'fixture/fixture_universal_flat_bottom_adapter/1', slot: 'mockId', + pythonName: 'mockPythonName', }, }, }) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx index 1924ac7c961..565ac6d6176 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx @@ -9,9 +9,9 @@ import { duplicateLabware, openIngredientSelector, } from '../../../../labware-ingred/actions' +import { deleteModule } from '../../../../modules' import { EditNickNameModal } from '../../../../organisms' import { useKitchen } from '../../../../organisms/Kitchen/hooks' -import { deleteModule } from '../../../../step-forms/actions' import { deleteDeckFixture } from '../../../../step-forms/actions/additionalItems' import { getDeckSetupForActiveItem } from '../../../../top-selectors/labware-locations' import { selectors as labwareIngredSelectors } from '../../../../labware-ingred/selectors' @@ -25,7 +25,6 @@ import type { LabwareDefinition2 } from '@opentrons/shared-data' const mockNavigate = vi.fn() vi.mock('../../../../top-selectors/labware-locations') -vi.mock('../../../../step-forms/actions') vi.mock('../../../../labware-ingred/actions') vi.mock('../../../../labware-ingred/selectors') vi.mock('../../../../step-forms/actions/additionalItems') @@ -33,6 +32,7 @@ vi.mock('../../../../organisms') vi.mock('../../../../file-data/selectors') vi.mock('../../../../labware-ingred/utils') vi.mock('../../../../organisms/Kitchen/hooks') +vi.mock('../../../../modules') vi.mock('react-router-dom', async importOriginal => { const actual = await importOriginal() return { @@ -67,12 +67,14 @@ describe('SlotOverflowMenu', () => { id: 'labId', labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, lab2: { slot: 'labId', id: 'labId2', labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, }, pipettes: {}, @@ -83,6 +85,7 @@ describe('SlotOverflowMenu', () => { id: 'modId', slot: 'D3', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, additionalEquipmentOnDeck: { @@ -175,7 +178,7 @@ describe('SlotOverflowMenu', () => { labwareId: 'labId2', }) expect(vi.mocked(deleteModule)).toHaveBeenCalledOnce() - expect(vi.mocked(deleteModule)).toHaveBeenCalledWith('modId') + expect(vi.mocked(deleteModule)).toHaveBeenCalledWith({ moduleId: 'modId' }) }) it('renders snackbar if duplicate is clicked and the deck is full', () => { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/utils.test.ts b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/utils.test.ts index c2925185923..36f39d27f3a 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/utils.test.ts +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/utils.test.ts @@ -80,6 +80,7 @@ describe('getDeckErrors', () => { id: 'mockId', slot: '4', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, selectedSlot: '1', @@ -99,6 +100,7 @@ describe('getDeckErrors', () => { id: 'mockId', slot: '4', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, selectedSlot: '1', diff --git a/protocol-designer/src/pages/Designer/Offdeck/__tests__/OffDeckDetails.test.tsx b/protocol-designer/src/pages/Designer/Offdeck/__tests__/OffDeckDetails.test.tsx index 51c2ccd0f1b..52b59a08040 100644 --- a/protocol-designer/src/pages/Designer/Offdeck/__tests__/OffDeckDetails.test.tsx +++ b/protocol-designer/src/pages/Designer/Offdeck/__tests__/OffDeckDetails.test.tsx @@ -58,6 +58,7 @@ describe('OffDeckDetails', () => { def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'offDeck', + pythonName: 'mockPythonName', }, }, }) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/__tests__/MagnetTools.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/__tests__/MagnetTools.test.tsx index 7d5c250462e..78e47ee2d92 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/__tests__/MagnetTools.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/__tests__/MagnetTools.test.tsx @@ -81,6 +81,7 @@ describe('MagnetTools', () => { id: 'magnetId', model: 'magneticModuleV2', type: 'magneticModuleType', + pythonName: 'mockPythonName', }, }) vi.mocked(getMagnetLabwareEngageHeight).mockReturnValue(null) @@ -93,6 +94,7 @@ describe('MagnetTools', () => { type: 'magneticModuleType', moduleState: { engaged: false, type: 'magneticModuleType' }, model: 'magneticModuleV1', + pythonName: 'mockPythonName', }, }, additionalEquipmentOnDeck: {}, @@ -118,6 +120,7 @@ describe('MagnetTools', () => { id: 'magnetId', model: 'magneticModuleV1', type: 'magneticModuleType', + pythonName: 'mockPythonName', }, }) render(props) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/AddStepButton.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/AddStepButton.test.tsx index a2fcea0a7e2..bbccfe5447f 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/AddStepButton.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/AddStepButton.test.tsx @@ -50,6 +50,7 @@ describe('AddStepButton', () => { id: 'mockId', moduleState: {} as any, slot: 'A1', + pythonName: 'mockPythonName', }, tc: { model: THERMOCYCLER_MODULE_V1, @@ -57,6 +58,7 @@ describe('AddStepButton', () => { id: 'mockId', moduleState: {} as any, slot: 'B1', + pythonName: 'mockPythonName', }, temp: { model: TEMPERATURE_MODULE_V1, @@ -64,6 +66,7 @@ describe('AddStepButton', () => { id: 'mockId', moduleState: {} as any, slot: 'C1', + pythonName: 'mockPythonName', }, mag: { model: MAGNETIC_MODULE_V1, @@ -71,6 +74,7 @@ describe('AddStepButton', () => { id: 'mockId', moduleState: {} as any, slot: 'D1', + pythonName: 'mockPythonName', }, }, labware: {}, diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx index 55197e85ed4..e9a9d8fda63 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx @@ -86,6 +86,7 @@ describe('StepOverflowMenu', () => { id: mockId, tiprackLabwareDef: [], tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], + pythonName: 'mockPythonName', }, }) }) @@ -124,6 +125,7 @@ describe('StepOverflowMenu', () => { id: mockId96, tiprackLabwareDef: [], tiprackDefURI: ['mockDefURI1_96'], + pythonName: 'mockPythonName', }, }) render(props) diff --git a/protocol-designer/src/pages/Designer/__tests__/utils.test.ts b/protocol-designer/src/pages/Designer/__tests__/utils.test.ts index 2e22a095b24..d9ed087626d 100644 --- a/protocol-designer/src/pages/Designer/__tests__/utils.test.ts +++ b/protocol-designer/src/pages/Designer/__tests__/utils.test.ts @@ -17,18 +17,21 @@ const mockLabOnDeck1 = { id: 'labId', labwareDefURI: 'mockUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', } const mockLabOnDeck2 = { slot: 'labId', id: 'labId2', labwareDefURI: 'mockUri2', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', } const mockLabOnDeck3 = { slot: '2', id: 'labId3', labwareDefURI: 'mockUri3', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', } const mockHS = { id: 'mockHsId', @@ -36,6 +39,7 @@ const mockHS = { type: HEATERSHAKER_MODULE_TYPE, slot: '1', moduleState: {} as any, + pythonName: 'mockPythonName', } const mockOt2DeckSetup: AllTemporalPropertiesForTimelineFrame = { @@ -53,6 +57,7 @@ const mockOt2DeckSetup: AllTemporalPropertiesForTimelineFrame = { type: TEMPERATURE_MODULE_TYPE, slot: '3', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, additionalEquipmentOnDeck: { @@ -65,6 +70,7 @@ const mockLabOnStagingArea = { id: 'labId3', labwareDefURI: 'mockUri3', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', } const mockHSFlex = { id: 'mockHsId', @@ -72,6 +78,7 @@ const mockHSFlex = { type: HEATERSHAKER_MODULE_TYPE, slot: 'D1', moduleState: {} as any, + pythonName: 'mockPythonName', } const mockTrash = { name: 'trashBin' as AdditionalEquipmentName, @@ -103,6 +110,7 @@ const mockFlex2DeckSetup: AllTemporalPropertiesForTimelineFrame = { type: TEMPERATURE_MODULE_TYPE, slot: 'C1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, additionalEquipmentOnDeck: { diff --git a/protocol-designer/src/pages/ProtocolOverview/__tests__/DeckThumbnail.test.tsx b/protocol-designer/src/pages/ProtocolOverview/__tests__/DeckThumbnail.test.tsx index bdae73a3e8f..55be5e09519 100644 --- a/protocol-designer/src/pages/ProtocolOverview/__tests__/DeckThumbnail.test.tsx +++ b/protocol-designer/src/pages/ProtocolOverview/__tests__/DeckThumbnail.test.tsx @@ -48,6 +48,7 @@ describe('DeckThumbnail', () => { def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'A1', + pythonName: 'mockPythonName', }, }, }) diff --git a/protocol-designer/src/pages/ProtocolOverview/__tests__/OffdeckThumbnail.test.tsx b/protocol-designer/src/pages/ProtocolOverview/__tests__/OffdeckThumbnail.test.tsx index 027eaaab2a8..c4fc2775c18 100644 --- a/protocol-designer/src/pages/ProtocolOverview/__tests__/OffdeckThumbnail.test.tsx +++ b/protocol-designer/src/pages/ProtocolOverview/__tests__/OffdeckThumbnail.test.tsx @@ -51,6 +51,7 @@ describe('OffDeckThumbnail', () => { def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'offDeck', + pythonName: 'mockPythonName', }, }, }) diff --git a/protocol-designer/src/step-forms/actions/modules.ts b/protocol-designer/src/step-forms/actions/modules.ts index f405d2773d3..6f378aaec49 100644 --- a/protocol-designer/src/step-forms/actions/modules.ts +++ b/protocol-designer/src/step-forms/actions/modules.ts @@ -36,9 +36,3 @@ export interface DeleteModuleAction { id: string } } -export const deleteModule = (id: string): DeleteModuleAction => ({ - type: 'DELETE_MODULE', - payload: { - id, - }, -}) diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index ef2b30ed303..669ea55e8ec 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -13,11 +13,7 @@ import { THERMOCYCLER_MODULE_TYPE, } from '@opentrons/shared-data' import { rootReducer as labwareDefsRootReducer } from '../../labware-defs' -import { - GRIPPER_LOCATION, - INITIAL_DECK_SETUP_STEP_ID, - SPAN7_8_10_11_SLOT, -} from '../../constants' +import { GRIPPER_LOCATION, INITIAL_DECK_SETUP_STEP_ID } from '../../constants' import { getPDMetadata } from '../../file-types' import { getDefaultsForStepType, @@ -26,6 +22,7 @@ import { import { PRESAVED_STEP_ID } from '../../steplist/types' import { getLabwareIsCompatible } from '../../utils/labwareModuleCompatibility' import { getLabwareOnModule } from '../../ui/modules/utils' +import { getLabwarePythonName, getModulePythonName } from '../../utils' import { nestedCombineReducers } from './nestedCombineReducers' import { _getPipetteEntitiesRootState, @@ -82,6 +79,7 @@ import type { CreateContainerAction, DeleteContainerAction, DuplicateLabwareAction, + EditMultipleLabwareAction, RenameStepAction, SwapSlotContentsAction, } from '../../labware-ingred/actions' @@ -95,7 +93,7 @@ import type { SelectMultipleStepsAction, } from '../../ui/steps/actions/types' import type { Action } from '../../types' -import type { ModuleLoadInfo, PipetteLoadInfo } from '../../file-types' +import type { PipetteLoadInfo } from '../../file-types' import type { AdditionalEquipmentLocationUpdate, LocationUpdate, @@ -105,6 +103,7 @@ import type { NormalizedLabwareById, ModuleEntities, } from '../types' +import type { EditMultipleModulesAction } from '../../modules' type FormState = FormData | null const unsavedFormInitialState = null @@ -702,22 +701,17 @@ export const savedStepForms = ( const moduleId = action.payload.id return mapValues(savedStepForms, (form: FormData) => { if (form.stepType === 'manualIntervention') { - // TODO: Ian 2019-10-28 when we have multiple manualIntervention steps, this should look backwards - // for the latest location update for the module, not just the initial deck setup - const _deletedModuleSlot = + const deletedModuleSlot = savedStepForms[INITIAL_DECK_SETUP_STEP_ID].moduleLocationUpdate[ moduleId ] - // handle special spanning slots that are intended for modules & not for labware - const labwareFallbackSlot = - _deletedModuleSlot === SPAN7_8_10_11_SLOT ? '7' : _deletedModuleSlot return { ...form, moduleLocationUpdate: omit(form.moduleLocationUpdate, moduleId), labwareLocationUpdate: mapValues( form.labwareLocationUpdate, labwareSlot => - labwareSlot === moduleId ? labwareFallbackSlot : labwareSlot + labwareSlot === moduleId ? deletedModuleSlot : labwareSlot ), } } else if ( @@ -949,6 +943,7 @@ export const batchEditFormChanges = ( } } } + const initialLabwareState: NormalizedLabwareById = {} // MIGRATION NOTE: copied from `containers` reducer. Slot + UI stuff stripped out. export const labwareInvariantProperties: Reducer< @@ -962,10 +957,22 @@ export const labwareInvariantProperties: Reducer< state: NormalizedLabwareById, action: CreateContainerAction ) => { + const { payload } = action + const { labwareDefURI, id, displayCategory } = payload + + const categoryLength = Object.values(state).filter( + labware => labware.displayCategory === displayCategory + ).length + return { ...state, - [action.payload.id]: { - labwareDefURI: action.payload.labwareDefURI, + [id]: { + labwareDefURI, + displayCategory, + pythonName: `${getLabwarePythonName( + displayCategory, + categoryLength + 1 + )}`, }, } }, @@ -973,10 +980,22 @@ export const labwareInvariantProperties: Reducer< state: NormalizedLabwareById, action: DuplicateLabwareAction ) => { + const { payload } = action + const { duplicateLabwareId, templateLabwareId, displayCategory } = payload + + const categoryLength = Object.values(state).filter( + labware => labware.displayCategory === displayCategory + ).length + return { ...state, - [action.payload.duplicateLabwareId]: { - labwareDefURI: state[action.payload.templateLabwareId].labwareDefURI, + [duplicateLabwareId]: { + labwareDefURI: state[templateLabwareId].labwareDefURI, + displayCategory, + pythonName: `${getLabwarePythonName( + displayCategory, + categoryLength + 1 + )}`, }, } }, @@ -992,22 +1011,75 @@ export const labwareInvariantProperties: Reducer< ): NormalizedLabwareById => { const { file } = action.payload const metadata = getPDMetadata(file) - return { ...metadata.labware, ...state } + const labwareDefinitions = file.labwareDefinitions + + const labware: NormalizedLabwareById = Object.entries( + metadata.labware + ).reduce((acc: NormalizedLabwareById, [id, labwareLoadInfo]) => { + if (labwareDefinitions[labwareLoadInfo.labwareDefURI] == null) { + console.error( + `expected to find matching labware definiton with labwareDefURI ${labwareLoadInfo.labwareDefURI} but could not` + ) + } + const displayCategory = + labwareDefinitions[labwareLoadInfo.labwareDefURI]?.metadata + .displayCategory ?? 'otherLabware' + + const displayCategoryCount = Object.values(acc).filter( + lw => lw.displayCategory === displayCategory + ).length + + acc[id] = { + labwareDefURI: labwareLoadInfo.labwareDefURI, + pythonName: getLabwarePythonName( + displayCategory, + displayCategoryCount + 1 + ), + displayCategory, + } + + return acc + }, {}) + + return { ...labware, ...state } + }, + EDIT_MULTIPLE_LABWARE_PYTHON_NAME: ( + state: NormalizedLabwareById, + action: EditMultipleLabwareAction + ): NormalizedLabwareById => { + return { + ...state, + ...action.payload, + } }, REPLACE_CUSTOM_LABWARE_DEF: ( state: NormalizedLabwareById, action: ReplaceCustomLabwareDef - ): NormalizedLabwareById => - mapValues( + ): NormalizedLabwareById => { + const { payload } = action + const { newDef, defURIToOverwrite } = payload + const displayCategory = newDef.metadata.displayCategory + const categoryLength = Object.values(state).filter( + labware => labware.displayCategory === displayCategory + ).length + + const mappedLabware = mapValues( state, (prev: NormalizedLabware): NormalizedLabware => - action.payload.defURIToOverwrite === prev.labwareDefURI + defURIToOverwrite === prev.labwareDefURI ? { ...prev, - labwareDefURI: getLabwareDefURI(action.payload.newDef), + labwareDefURI: getLabwareDefURI(newDef), + pythonName: getLabwarePythonName( + displayCategory, + categoryLength + 1 + ), + displayCategory, } : prev - ), + ) + return mappedLabware + }, }, initialLabwareState ) @@ -1021,14 +1093,23 @@ export const moduleInvariantProperties: Reducer< CREATE_MODULE: ( state: ModuleEntities, action: CreateModuleAction - ): ModuleEntities => ({ - ...state, - [action.payload.id]: { - id: action.payload.id, - type: action.payload.type, - model: action.payload.model, - }, - }), + ): ModuleEntities => { + const type = action.payload.type + const typeCount = Object.values(state).filter( + module => module.type === type + ).length + + return { + ...state, + [action.payload.id]: { + id: action.payload.id, + type, + model: action.payload.model, + pythonName: getModulePythonName(type, typeCount + 1), + }, + } + }, + EDIT_MODULE: ( state: ModuleEntities, action: EditModuleAction @@ -1043,6 +1124,15 @@ export const moduleInvariantProperties: Reducer< state: ModuleEntities, action: DeleteModuleAction ): ModuleEntities => omit(state, action.payload.id), + EDIT_MULTIPLE_MODULES_PYTHON_NAME: ( + state: ModuleEntities, + action: EditMultipleModulesAction + ): ModuleEntities => { + return { + ...state, + ...action.payload, + } + }, LOAD_FILE: ( state: ModuleEntities, action: LoadFileAction @@ -1050,15 +1140,19 @@ export const moduleInvariantProperties: Reducer< const { file } = action.payload const metadata = getPDMetadata(file) const modules: ModuleEntities = Object.entries(metadata.modules).reduce( - ( - acc: ModuleEntities, - [id, moduleLoadInfo]: [string, ModuleLoadInfo] - ) => { + (acc: ModuleEntities, [id, moduleLoadInfo]) => { + const moduleType = getModuleType(moduleLoadInfo.model) + const typeCount = Object.values(acc).filter( + module => module.type === moduleType + ).length + acc[id] = { - id: id, - type: getModuleType(moduleLoadInfo.model), + id, + type: moduleType, model: moduleLoadInfo.model, + pythonName: getModulePythonName(moduleType, typeCount + 1), } + return acc }, {} diff --git a/protocol-designer/src/step-forms/selectors/index.ts b/protocol-designer/src/step-forms/selectors/index.ts index 6cd3c2ec76e..ba0cc210add 100644 --- a/protocol-designer/src/step-forms/selectors/index.ts +++ b/protocol-designer/src/step-forms/selectors/index.ts @@ -100,6 +100,10 @@ const rootSelector = (state: BaseState): RootState => state.stepForms const labwareIngredRootSelector = (state: BaseState): LabwareIngredRootState => state.labwareIngred +const _getInitialDeckSetupStepFormRootState: ( + arg: RootState +) => FormData = rs => rs.savedStepForms[INITIAL_DECK_SETUP_STEP_ID] + export const getPresavedStepForm = (state: BaseState): PresavedStepFormState => rootSelector(state).presavedStepForm export const getCurrentFormIsPresaved: Selector< @@ -181,8 +185,15 @@ export const _getPipetteEntitiesRootState: ( ) => PipetteEntities = createSelector( rs => rs.pipetteInvariantProperties, labwareDefSelectors._getLabwareDefsByIdRootState, - denormalizePipetteEntities + _getInitialDeckSetupStepFormRootState, + (pipetteInvariantProperties, labwareDefs, initialDeckSetupStepForm) => + denormalizePipetteEntities( + pipetteInvariantProperties, + labwareDefs, + initialDeckSetupStepForm.pipetteLocationUpdate as Record + ) ) + // Special version of `getAdditionalEquipmentEntities` selector for use in step-forms reducers export const _getAdditionalEquipmentEntitiesRootState: ( arg: RootState @@ -208,10 +219,6 @@ export const getAdditionalEquipment: Selector< NormalizedAdditionalEquipmentById > = createSelector(rootSelector, _getAdditionalEquipmentRootState) -const _getInitialDeckSetupStepFormRootState: ( - arg: RootState -) => FormData = rs => rs.savedStepForms[INITIAL_DECK_SETUP_STEP_ID] - export const getInitialDeckSetupStepForm: Selector< BaseState, FormData @@ -300,6 +307,7 @@ const _getInitialDeckSetup = ( type: MAGNETIC_MODULE_TYPE, slot, moduleState: MAGNETIC_MODULE_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } case TEMPERATURE_MODULE_TYPE: return { @@ -308,6 +316,7 @@ const _getInitialDeckSetup = ( type: TEMPERATURE_MODULE_TYPE, slot, moduleState: TEMPERATURE_MODULE_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } case THERMOCYCLER_MODULE_TYPE: return { @@ -316,6 +325,7 @@ const _getInitialDeckSetup = ( type: THERMOCYCLER_MODULE_TYPE, slot, moduleState: THERMOCYCLER_MODULE_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } case HEATERSHAKER_MODULE_TYPE: return { @@ -324,6 +334,7 @@ const _getInitialDeckSetup = ( type: HEATERSHAKER_MODULE_TYPE, slot, moduleState: HEATERSHAKER_MODULE_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } case MAGNETIC_BLOCK_TYPE: return { @@ -332,6 +343,7 @@ const _getInitialDeckSetup = ( type: MAGNETIC_BLOCK_TYPE, slot, moduleState: MAGNETIC_BLOCK_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } case ABSORBANCE_READER_TYPE: return { @@ -340,6 +352,7 @@ const _getInitialDeckSetup = ( type: ABSORBANCE_READER_TYPE, slot, moduleState: ABSORBANCE_READER_INITIAL_STATE, + pythonName: moduleEntity.pythonName, } } } diff --git a/protocol-designer/src/step-forms/test/reducers.test.ts b/protocol-designer/src/step-forms/test/reducers.test.ts index ba7e16d12dd..545a4f4165e 100644 --- a/protocol-designer/src/step-forms/test/reducers.test.ts +++ b/protocol-designer/src/step-forms/test/reducers.test.ts @@ -274,12 +274,18 @@ describe('labwareInvariantProperties reducer', () => { const prevState = { labwareIdA1: { labwareDefURI: 'foo/a/1', + pythonName: 'mockPythonName', + displayCategory: 'wellPlate', }, labwareIdA2: { labwareDefURI: 'foo/a/1', + pythonName: 'mockPythonName', + displayCategory: 'wellPlate', }, labwareIdB: { labwareDefURI: 'foo/b/1', + pythonName: 'mockPythonName', + displayCategory: 'wellPlate', }, } const result = labwareInvariantProperties(prevState, { @@ -292,6 +298,9 @@ describe('labwareInvariantProperties reducer', () => { }, version: 2, namespace: 'foo', + metadata: { + displayCategory: 'wellPlate', + }, }, isOverwriteMismatched: false, }, @@ -300,13 +309,17 @@ describe('labwareInvariantProperties reducer', () => { // changed labwareIdA1: { labwareDefURI: 'foo/a/2', + displayCategory: 'wellPlate', }, labwareIdA2: { labwareDefURI: 'foo/a/2', + displayCategory: 'wellPlate', }, // unchanged labwareIdB: { labwareDefURI: 'foo/b/1', + displayCategory: 'wellPlate', + pythonName: 'mockPythonName', }, }) }) @@ -412,6 +425,7 @@ describe('savedStepForms reducer: initial deck setup step', () => { duplicateLabwareId: newLabwareId, duplicateLabwareNickname: 'new labware nickname', slot: newSlot, + displayCategory: 'wellPlate', }, }, }, @@ -423,6 +437,7 @@ describe('savedStepForms reducer: initial deck setup step', () => { slot: newSlot, labwareDefURI: 'fixtures/foo/1', id: newLabwareId, + displayCategory: 'adapter', }, }, }, @@ -1089,22 +1104,6 @@ describe('savedStepForms reducer: initial deck setup step', () => { }, expectedModuleLocations: {}, }, - { - testName: - 'delete occupied module in span7_8_10_11 slot -> labware goes into slot 7', - makeStateArgs: { - labwareLocationUpdate: { - [labwareOnModuleId]: moduleId, - }, - moduleLocationUpdate: { - [moduleId]: SPAN7_8_10_11_SLOT, - }, - }, - expectedLabwareLocations: { - [labwareOnModuleId]: '7', - }, - expectedModuleLocations: {}, - }, ] testCases.forEach( ({ diff --git a/protocol-designer/src/step-forms/types.ts b/protocol-designer/src/step-forms/types.ts index d5a66114276..6e116643262 100644 --- a/protocol-designer/src/step-forms/types.ts +++ b/protocol-designer/src/step-forms/types.ts @@ -94,6 +94,8 @@ export type NormalizedLabwareById = Record< string, { labwareDefURI: string + pythonName: string + displayCategory: string } > export type NormalizedLabware = NormalizedLabwareById[keyof NormalizedLabwareById] diff --git a/protocol-designer/src/step-forms/utils/index.ts b/protocol-designer/src/step-forms/utils/index.ts index 4090598868b..12db9d4839c 100644 --- a/protocol-designer/src/step-forms/utils/index.ts +++ b/protocol-designer/src/step-forms/utils/index.ts @@ -132,14 +132,14 @@ export function getDeckItemIdInSlot( } export function denormalizePipetteEntities( pipetteInvariantProperties: NormalizedPipetteById, - labwareDefs: LabwareDefByDefURI + labwareDefs: LabwareDefByDefURI, + pipetteLocationUpdate: Record ): PipetteEntities { return reduce( pipetteInvariantProperties, (acc: PipetteEntities, pipette: NormalizedPipette): PipetteEntities => { const pipetteId = pipette.id const spec = getPipetteSpecsV2(pipette.name) - if (!spec) { throw new Error( `no pipette spec for pipette id "${pipetteId}", name "${pipette.name}"` @@ -149,6 +149,7 @@ export function denormalizePipetteEntities( ...pipette, spec, tiprackLabwareDef: pipette.tiprackDefURI.map(def => labwareDefs[def]), + pythonName: `pipette_${pipetteLocationUpdate[pipetteId]}`, } return { ...acc, [pipetteId]: pipetteEntity } }, diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultTemperatureModuleId.test.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultTemperatureModuleId.test.ts index f87507dfabd..1b855e80edc 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultTemperatureModuleId.test.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultTemperatureModuleId.test.ts @@ -23,6 +23,7 @@ const getThermocycler = () => ({ lidTargetTemp: null, lidOpen: null, }, + pythonName: 'mockPythonName', }) const getMag = () => ({ @@ -34,6 +35,7 @@ const getMag = () => ({ type: MAGNETIC_MODULE_TYPE, engaged: false, }, + pythonName: 'mockPythonName', }) const getTemp = () => ({ @@ -46,6 +48,7 @@ const getTemp = () => ({ status: TEMPERATURE_DEACTIVATED, targetTemperature: null, }, + pythonName: 'mockPythonName', }) describe('getNextDefaultTemperatureModuleId', () => { diff --git a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultThermocyclerModuleId.test.ts b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultThermocyclerModuleId.test.ts index 78ae0f4a2fd..479197bb039 100644 --- a/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultThermocyclerModuleId.test.ts +++ b/protocol-designer/src/steplist/formLevel/getNextDefaultModuleId/__tests__/getNextDefaultThermocyclerModuleId.test.ts @@ -22,6 +22,7 @@ const getThermocycler = () => ({ lidTargetTemp: null, lidOpen: null, }, + pythonName: 'mockPythonName', }) const getMag = () => ({ @@ -33,6 +34,7 @@ const getMag = () => ({ type: MAGNETIC_MODULE_TYPE, engaged: false, }, + pythonName: 'mockPythonName', }) const getTemp = () => ({ @@ -45,6 +47,7 @@ const getTemp = () => ({ status: TEMPERATURE_DEACTIVATED, targetTemperature: null, }, + pythonName: 'mockPythonName', }) describe('getNextDefaultThermocyclerModuleId', () => { @@ -110,6 +113,7 @@ describe('getNextDefaultThermocyclerModuleId', () => { type: MAGNETIC_MODULE_TYPE, engaged: false, }, + pythonName: 'mockPythonName', }, tempId: { id: 'tempId', @@ -121,6 +125,7 @@ describe('getNextDefaultThermocyclerModuleId', () => { status: TEMPERATURE_DEACTIVATED, targetTemperature: null, }, + pythonName: 'mockPythonName', }, }, expected: null, diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts index 68244e1cb80..89f46acdc77 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/test/moveLiquid.test.ts @@ -37,6 +37,7 @@ beforeEach(() => { // @ts-expect-error(sa, 2021-6-15): tiprackModel does not exist on PipetteEntity tiprackModel: ['tiprack-10ul'], tiprackLabwareDef: [fixtureTiprack10ul], + pythonName: 'mockPythonName', }, otherPipetteId: { name: 'p300_single_gen2', @@ -44,6 +45,7 @@ beforeEach(() => { // @ts-expect-error(sa, 2021-6-15): tiprackModel does not exist on PipetteEntity tiprackModel: ['tiprack-300ul'], tiprackLabwareDef: [fixtureTiprack300ul], + pythonName: 'mockPythonName', }, } labwareEntities = {} diff --git a/protocol-designer/src/steplist/formLevel/test/warnings.test.ts b/protocol-designer/src/steplist/formLevel/test/warnings.test.ts index 04c8cfe93db..a02e3eb84fb 100644 --- a/protocol-designer/src/steplist/formLevel/test/warnings.test.ts +++ b/protocol-designer/src/steplist/formLevel/test/warnings.test.ts @@ -277,18 +277,21 @@ describe('Max dispense well volume', () => { def: fixture24Tuberack as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', }, aspirate_mmFromBottom: null, labware: { def: fixture24Tuberack as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', }, mix_mmFromBottom: 0.5, dispense_labware: { def: fixture24Tuberack as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', }, dispense_mmFromBottom: null, } @@ -311,16 +314,19 @@ describe('Max dispense well volume', () => { def: fixture96Plate as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', } fields.labware = { def: fixture96Plate as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', } fields.dispense_labware = { def: fixture96Plate as LabwareDefinition2, id: 'mockId', labwareDefURI: 'mockURI', + pythonName: 'mockPythonName', } expect(tipPositionInTube(fields)).toBe(null) expect(mixTipPositionInTube(fields)).toBe(null) diff --git a/protocol-designer/src/ui/modules/utils.ts b/protocol-designer/src/ui/modules/utils.ts index 2ff7fb406d9..f6f673072c8 100644 --- a/protocol-designer/src/ui/modules/utils.ts +++ b/protocol-designer/src/ui/modules/utils.ts @@ -79,7 +79,6 @@ export function getModuleUnderLabware( return location === moduleOnDeck.id }) } -// @ts-expect-error Flex stacker not yet supported in PD export const getModuleShortNames = (type: ModuleType): string => { switch (type) { case HEATERSHAKER_MODULE_TYPE: @@ -94,6 +93,11 @@ export const getModuleShortNames = (type: ModuleType): string => { return 'Thermocycler' case ABSORBANCE_READER_TYPE: return 'Absorbance Plate Reader' + default: + console.warn( + `unsupported module ${type} - need to add to getModuleShortNames` + ) + return 'unsupported module' } } diff --git a/protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStep.test.ts b/protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStep.test.ts index c19e9f56483..a4139421d65 100644 --- a/protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStep.test.ts +++ b/protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStep.test.ts @@ -62,6 +62,7 @@ describe('addAndSelectStep', () => { slot: 'B2', model: 'thermocyclerModuleV1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, labware: {}, @@ -106,6 +107,7 @@ describe('addAndSelectStep', () => { slot: '1', model: 'magneticModuleV1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, labware: {}, @@ -150,6 +152,7 @@ describe('addAndSelectStep', () => { slot: 'B2', model: 'temperatureModuleV1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, labware: {}, @@ -194,6 +197,7 @@ describe('addAndSelectStep', () => { slot: 'B2', model: 'heaterShakerModuleV1', moduleState: {} as any, + pythonName: 'mockPythonName', }, modId2: { type: 'heaterShakerModuleType', @@ -201,6 +205,7 @@ describe('addAndSelectStep', () => { slot: 'A1', model: 'heaterShakerModuleV1', moduleState: {} as any, + pythonName: 'mockPythonName', }, }, labware: {}, @@ -236,12 +241,14 @@ describe('addAndSelectStep', () => { def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'A1', + pythonName: 'mockPythonName', }, labware2: { id: 'labware2', def: fixtureTiprack1000ul as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'B1', + pythonName: 'mockPythonName', }, }, pipettes: {}, @@ -285,12 +292,14 @@ describe('addAndSelectStep', () => { def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'A1', + pythonName: 'mockPythonName', }, labware2: { id: 'labware2', def: fixture12Trough as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'B1', + pythonName: 'mockPythonName', }, }, pipettes: {}, @@ -325,6 +334,7 @@ describe('addAndSelectStep', () => { def: fixtureTiprack1000ul as LabwareDefinition2, labwareDefURI: 'mockDefUri', slot: 'B1', + pythonName: 'mockPythonName', }, }, pipettes: {}, diff --git a/protocol-designer/src/utils/__tests__/labwareModuleCompatibility.test.ts b/protocol-designer/src/utils/__tests__/labwareModuleCompatibility.test.ts index 007cf595c38..423d67cebb5 100644 --- a/protocol-designer/src/utils/__tests__/labwareModuleCompatibility.test.ts +++ b/protocol-designer/src/utils/__tests__/labwareModuleCompatibility.test.ts @@ -9,6 +9,7 @@ describe('labwareModuleCompatibility', () => { id: 'abcef123', slot: '3', def: fixture_96_plate as LabwareDefinition2, + pythonName: 'mockPythonName', } it('returns true when labware is inside custom labwares obj', () => { const customLabwares = { diff --git a/protocol-designer/src/utils/index.ts b/protocol-designer/src/utils/index.ts index 8f4c9397066..61ac7e437e7 100644 --- a/protocol-designer/src/utils/index.ts +++ b/protocol-designer/src/utils/index.ts @@ -1,4 +1,5 @@ import uuidv1 from 'uuid/v4' +import snakeCase from 'lodash/snakeCase' import { makeWellSetHelpers, getDeckDefFromRobotType, @@ -21,6 +22,8 @@ import type { CutoutFixtureId, RobotType, SupportedTip, + ModuleType, + LabwareDisplayCategory, } from '@opentrons/shared-data' import type { WellGroup } from '@opentrons/components' import type { BoundingRect, GenericRect } from '../collision-types' @@ -279,3 +282,22 @@ export const removeOpentronsPhrases = (input: string): string => { return updatedText.trim() } + +const getModuleShortnameForPython = (type: ModuleType): string => { + const shortName = type.split('Type')[0] + return snakeCase(shortName) +} + +export const getModulePythonName = ( + type: ModuleType, + typeCount: number +): string => { + return `${getModuleShortnameForPython(type)}_${typeCount}` +} + +export const getLabwarePythonName = ( + labwareDisplayCategory: LabwareDisplayCategory, + typeCount: number +): string => { + return `${snakeCase(labwareDisplayCategory)}_${typeCount}` +} diff --git a/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap b/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap index 8440670ca4e..23b9a0ccbeb 100644 --- a/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap +++ b/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap @@ -1983,6 +1983,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "destPlateId", "labwareDefURI": "fixture/fixture_96_plate/1", + "pythonName": "mockPythonName", }, "sourcePlateId": { "def": { @@ -3116,6 +3117,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "sourcePlateId", "labwareDefURI": "fixture/fixture_96_plate/1", + "pythonName": "mockPythonName", }, "tiprack1Id": { "def": { @@ -4242,6 +4244,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack1Id", "labwareDefURI": "fixture/fixture_tiprack_300_ul/1", + "pythonName": "mockPythonName", }, "tiprack2Id": { "def": { @@ -5368,6 +5371,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack2Id", "labwareDefURI": "fixture/fixture_tiprack_300_ul/1", + "pythonName": "mockPythonName", }, "tiprack3Id": { "def": { @@ -6494,6 +6498,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack3Id", "labwareDefURI": "fixture/fixture_tiprack_300_ul/1", + "pythonName": "mockPythonName", }, "tiprack4AdapterId": { "def": { @@ -6541,6 +6546,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack4AdapterId", "labwareDefURI": "fixture/fixture_flex_96_tiprack_adapter/1", + "pythonName": "mockPythonName", }, "tiprack4Id": { "def": { @@ -7679,6 +7685,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack4Id", "labwareDefURI": "fixture/fixture_flex_96_tiprack_1000ul/1", + "pythonName": "mockPythonName", }, "tiprack5AdapterId": { "def": { @@ -7726,6 +7733,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack5AdapterId", "labwareDefURI": "fixture/fixture_flex_96_tiprack_adapter/1", + "pythonName": "mockPythonName", }, "tiprack5Id": { "def": { @@ -8864,6 +8872,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "tiprack5Id", "labwareDefURI": "fixture/fixture_flex_96_tiprack_1000ul/1", + "pythonName": "mockPythonName", }, "troughId": { "def": { @@ -9085,6 +9094,7 @@ exports[`snapshot tests > makeContext 1`] = ` }, "id": "troughId", "labwareDefURI": "fixture/fixture_12_trough/1", + "pythonName": "mockPythonName", }, }, "liquidEntities": {}, @@ -9093,6 +9103,7 @@ exports[`snapshot tests > makeContext 1`] = ` "p100096Id": { "id": "p100096Id", "name": "p1000_96", + "pythonName": "mockPythonName", "spec": { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", "availableSensors": { @@ -12286,6 +12297,7 @@ exports[`snapshot tests > makeContext 1`] = ` "p10MultiId": { "id": "p10MultiId", "name": "p10_multi", + "pythonName": "mockPythonName", "spec": { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", "availableSensors": { @@ -13919,6 +13931,7 @@ exports[`snapshot tests > makeContext 1`] = ` "p10SingleId": { "id": "p10SingleId", "name": "p10_single", + "pythonName": "mockPythonName", "spec": { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", "availableSensors": { @@ -15284,6 +15297,7 @@ exports[`snapshot tests > makeContext 1`] = ` "p300MultiId": { "id": "p300MultiId", "name": "p300_multi", + "pythonName": "mockPythonName", "spec": { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", "availableSensors": { @@ -16906,6 +16920,7 @@ exports[`snapshot tests > makeContext 1`] = ` "p300SingleId": { "id": "p300SingleId", "name": "p300_single", + "pythonName": "mockPythonName", "spec": { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", "availableSensors": { diff --git a/step-generation/src/__tests__/absorbanceReaderCloseInitialize.test.ts b/step-generation/src/__tests__/absorbanceReaderCloseInitialize.test.ts index 9b14cf80e5e..86ccd4ba537 100644 --- a/step-generation/src/__tests__/absorbanceReaderCloseInitialize.test.ts +++ b/step-generation/src/__tests__/absorbanceReaderCloseInitialize.test.ts @@ -43,6 +43,7 @@ describe('absorbanceReaderCloseInitialize compound command creator', () => { id: ABSORBANCE_READER_MODULE_ID, type: ABSORBANCE_READER_TYPE, model: ABSORBANCE_READER_V1, + pythonName: 'mockPythonName', }, }, additionalEquipmentEntities: { diff --git a/step-generation/src/__tests__/absorbanceReaderCloseLid.test.ts b/step-generation/src/__tests__/absorbanceReaderCloseLid.test.ts index eb96cc9e20a..ed4c297dc44 100644 --- a/step-generation/src/__tests__/absorbanceReaderCloseLid.test.ts +++ b/step-generation/src/__tests__/absorbanceReaderCloseLid.test.ts @@ -28,6 +28,7 @@ describe('absorbanceReaderCloseLid', () => { id: moduleId, type: ABSORBANCE_READER_TYPE, model: ABSORBANCE_READER_V1, + pythonName: 'mockPythonName', } invariantContext.additionalEquipmentEntities = { gripperId: { diff --git a/step-generation/src/__tests__/absorbanceReaderCloseRead.test.ts b/step-generation/src/__tests__/absorbanceReaderCloseRead.test.ts index 59c27f227c1..641d262f68c 100644 --- a/step-generation/src/__tests__/absorbanceReaderCloseRead.test.ts +++ b/step-generation/src/__tests__/absorbanceReaderCloseRead.test.ts @@ -43,6 +43,7 @@ describe('absorbanceReaderCloseRead compound command creator', () => { id: ABSORBANCE_READER_MODULE_ID, type: ABSORBANCE_READER_TYPE, model: ABSORBANCE_READER_V1, + pythonName: 'mockPythonName', }, }, additionalEquipmentEntities: { diff --git a/step-generation/src/__tests__/absorbanceReaderOpenLid.test.ts b/step-generation/src/__tests__/absorbanceReaderOpenLid.test.ts index 43bb8238b4f..673d2d7236f 100644 --- a/step-generation/src/__tests__/absorbanceReaderOpenLid.test.ts +++ b/step-generation/src/__tests__/absorbanceReaderOpenLid.test.ts @@ -28,6 +28,7 @@ describe('absorbanceReaderOpenLid', () => { id: moduleId, type: ABSORBANCE_READER_TYPE, model: ABSORBANCE_READER_V1, + pythonName: 'mockPythonName', } invariantContext.additionalEquipmentEntities = { gripperId: { diff --git a/step-generation/src/__tests__/disengageMagnet.test.ts b/step-generation/src/__tests__/disengageMagnet.test.ts index cac187dce6f..fc688df0696 100644 --- a/step-generation/src/__tests__/disengageMagnet.test.ts +++ b/step-generation/src/__tests__/disengageMagnet.test.ts @@ -17,6 +17,7 @@ describe('disengageMagnet', () => { id: moduleId, type: MAGNETIC_MODULE_TYPE, model: MAGNETIC_MODULE_V1, + pythonName: 'mockPythonName', } robotState = getInitialRobotStateStandard(invariantContext) robotState.modules[moduleId] = { diff --git a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts index 5eacb77b483..17ab12ebacb 100644 --- a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts +++ b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts @@ -372,6 +372,7 @@ describe('...8-channel pipette', () => { id: SOURCE_LABWARE, labwareDefURI: labwareType, def, + pythonName: 'mockPythonName', } const blankLiquidState = createEmptyLiquidState(customInvariantContext) const initialLiquidState = merge({}, blankLiquidState, { diff --git a/step-generation/src/__tests__/engageMagnet.test.ts b/step-generation/src/__tests__/engageMagnet.test.ts index 654c4891c1e..a3c7f6bfe8c 100644 --- a/step-generation/src/__tests__/engageMagnet.test.ts +++ b/step-generation/src/__tests__/engageMagnet.test.ts @@ -17,6 +17,7 @@ describe('engageMagnet', () => { id: moduleId, type: MAGNETIC_MODULE_TYPE, model: MAGNETIC_MODULE_V1, + pythonName: 'mockPythonName', } robotState = getInitialRobotStateStandard(invariantContext) robotState.modules[moduleId] = { diff --git a/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts b/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts index 7f7ee9cdfac..c376544c5d9 100644 --- a/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts +++ b/step-generation/src/__tests__/getIsSafePipetteMovement.test.ts @@ -32,6 +32,7 @@ describe('getIsSafePipetteMovement', () => { tiprackDefURI: ['mockDefUri'], tiprackLabwareDef: [fixtureTiprack1000ul as LabwareDefinition2], spec: fixtureP100096V2Specs, + pythonName: 'mockPythonName', }, }, labwareEntities: { @@ -39,21 +40,25 @@ describe('getIsSafePipetteMovement', () => { id: mockLabwareId, labwareDefURI: 'mockDefUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, [mockTiprackId]: { id: mockTiprackId, labwareDefURI: mockTipUri, def: fixtureTiprack1000ul as LabwareDefinition2, + pythonName: 'mockPythonName', }, [mockAdapter]: { id: mockAdapter, labwareDefURI: 'mockAdapterUri', def: fixtureTiprackAdapter as LabwareDefinition2, + pythonName: 'mockPythonName', }, [mockLabware2]: { id: mockLabware2, labwareDefURI: 'mockDefUri', def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', }, }, moduleEntities: {}, @@ -122,6 +127,7 @@ describe('getIsSafePipetteMovement', () => { id: mockModule, type: TEMPERATURE_MODULE_TYPE, model: TEMPERATURE_MODULE_V2, + pythonName: 'mockPythonName', }, } const result = getIsSafePipetteMovement( @@ -170,6 +176,7 @@ describe('getIsSafePipetteMovement', () => { id: mockModule, type: TEMPERATURE_MODULE_TYPE, model: TEMPERATURE_MODULE_V2, + pythonName: 'mockPythonName', }, } const result = getIsSafePipetteMovement( diff --git a/step-generation/src/__tests__/heaterShaker.test.ts b/step-generation/src/__tests__/heaterShaker.test.ts index 8ce3c47c804..4eb3f1d7c0f 100644 --- a/step-generation/src/__tests__/heaterShaker.test.ts +++ b/step-generation/src/__tests__/heaterShaker.test.ts @@ -39,6 +39,7 @@ describe('heaterShaker compound command creator', () => { id: HEATER_SHAKER_ID, type: HEATERSHAKER_MODULE_TYPE, model: HEATERSHAKER_MODULE_V1, + pythonName: 'mockPythonName', }, }, } diff --git a/step-generation/src/__tests__/heaterShakerOpenLatch.test.ts b/step-generation/src/__tests__/heaterShakerOpenLatch.test.ts index 441a19e8057..2428fbe097e 100644 --- a/step-generation/src/__tests__/heaterShakerOpenLatch.test.ts +++ b/step-generation/src/__tests__/heaterShakerOpenLatch.test.ts @@ -38,6 +38,7 @@ describe('heaterShakerOpenLatch', () => { // this tiprack is tall enough to trigger the latch open warning labwareDefURI: getLabwareDefURI(fixtureTiprack1000ul), def: fixtureTiprack1000ul, + pythonName: 'mockPythonName', }, }, } diff --git a/step-generation/src/__tests__/heaterShakerUpdates.test.ts b/step-generation/src/__tests__/heaterShakerUpdates.test.ts index e92393d45b0..7965131efa0 100644 --- a/step-generation/src/__tests__/heaterShakerUpdates.test.ts +++ b/step-generation/src/__tests__/heaterShakerUpdates.test.ts @@ -62,6 +62,7 @@ beforeEach(() => { id: moduleId, type: HEATERSHAKER_MODULE_TYPE, model: HEATERSHAKER_MODULE_V1, + pythonName: 'mockPythonName', } startRobotState = getInitialRobotStateStandard(invariantContext) startRobotState.modules[moduleId] = { diff --git a/step-generation/src/__tests__/modulePipetteCollision.test.ts b/step-generation/src/__tests__/modulePipetteCollision.test.ts index 0401f1c2880..266a7e5e058 100644 --- a/step-generation/src/__tests__/modulePipetteCollision.test.ts +++ b/step-generation/src/__tests__/modulePipetteCollision.test.ts @@ -21,6 +21,7 @@ beforeEach(() => { id: 'magDeckId', type: MAGNETIC_MODULE_TYPE, model: MAGNETIC_MODULE_V1, + pythonName: 'mockPythonName', } robotState = getInitialRobotStateStandard(invariantContext) robotState.labware.destPlateId.slot = '4' diff --git a/step-generation/src/__tests__/moveLabware.test.ts b/step-generation/src/__tests__/moveLabware.test.ts index c48f6b38f87..1fa1cb388de 100644 --- a/step-generation/src/__tests__/moveLabware.test.ts +++ b/step-generation/src/__tests__/moveLabware.test.ts @@ -185,6 +185,7 @@ describe('moveLabware', () => { id: 'labwareid', labwareDefURI: 'mockDefUri', def: aluminumBlockDef, + pythonName: 'mockPythonName', }, }, } diff --git a/step-generation/src/__tests__/robotStateSelectors.test.ts b/step-generation/src/__tests__/robotStateSelectors.test.ts index 792c277651e..07e01f5ff0b 100644 --- a/step-generation/src/__tests__/robotStateSelectors.test.ts +++ b/step-generation/src/__tests__/robotStateSelectors.test.ts @@ -73,6 +73,7 @@ describe('_getNextTip', () => { id: tiprackId, labwareDefURI: getLabwareDefURI(fixtureTiprack300ul), def: fixtureTiprack300ul, + pythonName: 'mockPythonName', } const robotState = makeState({ invariantContext: _invariantContext, diff --git a/step-generation/src/__tests__/thermocyclerUpdates.test.ts b/step-generation/src/__tests__/thermocyclerUpdates.test.ts index 19f690e38c2..1c8c52c58e1 100644 --- a/step-generation/src/__tests__/thermocyclerUpdates.test.ts +++ b/step-generation/src/__tests__/thermocyclerUpdates.test.ts @@ -65,6 +65,7 @@ beforeEach(() => { id: moduleId, type: THERMOCYCLER_MODULE_TYPE, model: THERMOCYCLER_MODULE_V1, + pythonName: 'mockPythonName', } lidOpenRobotState = getInitialRobotStateStandard(invariantContext) lidOpenRobotState.modules[moduleId] = { diff --git a/step-generation/src/__tests__/updateMagneticModule.test.ts b/step-generation/src/__tests__/updateMagneticModule.test.ts index ba13dc5a2ac..1fd9885f80e 100644 --- a/step-generation/src/__tests__/updateMagneticModule.test.ts +++ b/step-generation/src/__tests__/updateMagneticModule.test.ts @@ -23,6 +23,7 @@ beforeEach(() => { id: moduleId, type: MAGNETIC_MODULE_TYPE, model: MAGNETIC_MODULE_V1, + pythonName: 'mockPythonName', } disengagedRobotState = getInitialRobotStateStandard(invariantContext) disengagedRobotState.modules[moduleId] = { diff --git a/step-generation/src/__tests__/utils.test.ts b/step-generation/src/__tests__/utils.test.ts index 9b4df262e93..99c66984de7 100644 --- a/step-generation/src/__tests__/utils.test.ts +++ b/step-generation/src/__tests__/utils.test.ts @@ -279,6 +279,7 @@ describe('makeInitialRobotState', () => { spec: fixtureP10SingleV2Specs, tiprackDefURI: [getLabwareDefURI(fixtureTiprack10ul)], tiprackLabwareDef: [fixtureTiprack10ul], + pythonName: 'mockPythonName', }, p300MultiId: { id: 'p300MultiId', @@ -286,6 +287,7 @@ describe('makeInitialRobotState', () => { spec: fixtureP300MultiV2Specs, tiprackDefURI: [getLabwareDefURI(fixtureTiprack300ul)], tiprackLabwareDef: [fixtureTiprack300ul], + pythonName: 'mockPythonName', }, }, moduleEntities: { @@ -293,6 +295,7 @@ describe('makeInitialRobotState', () => { id: 'someTempModuleId', model: TEMPERATURE_MODULE_V1, type: TEMPERATURE_MODULE_TYPE, + pythonName: 'mockPythonName', }, }, labwareEntities: { @@ -300,21 +303,25 @@ describe('makeInitialRobotState', () => { id: 'somePlateId', labwareDefURI: getLabwareDefURI(fixture96Plate), def: fixture96Plate, + pythonName: 'mockPythonName', }, tiprack10Id: { id: 'tiprack10Id', labwareDefURI: getLabwareDefURI(fixtureTiprack10ul), def: fixtureTiprack10ul, + pythonName: 'mockPythonName', }, tiprack300Id: { id: 'tiprack300Id', labwareDefURI: getLabwareDefURI(fixtureTiprack300ul), def: fixtureTiprack300ul, + pythonName: 'mockPythonName', }, fixedTrash: { id: FIXED_TRASH_ID, labwareDefURI: getLabwareDefURI(fixtureTrash), def: fixtureTrash, + pythonName: 'mockPythonName', }, }, additionalEquipmentEntities: {}, @@ -804,6 +811,7 @@ describe('getIsTallLabwareEastWestOfHeaterShaker', () => { id: 'labwareId', labwareDefURI: 'some_uri', def: fakeLabwareDef, + pythonName: 'mockPythonName', }, } }) @@ -938,6 +946,7 @@ describe('getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette', () => id: 'fixture96PlateId', labwareDefURI: getLabwareDefURI(fixture96Plate), def: fixture96Plate, + pythonName: 'mockPythonName', } }) @@ -956,6 +965,7 @@ describe('getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette', () => id: 'fixtureTiprack10ulId', labwareDefURI: getLabwareDefURI(fixtureTiprack10ul), def: fixtureTiprack10ul, + pythonName: 'mockPythonName', } expect( getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette( diff --git a/step-generation/src/fixtures/robotStateFixtures.ts b/step-generation/src/fixtures/robotStateFixtures.ts index 298f5aa6636..db4878aa8be 100644 --- a/step-generation/src/fixtures/robotStateFixtures.ts +++ b/step-generation/src/fixtures/robotStateFixtures.ts @@ -77,61 +77,61 @@ export function makeContext(): InvariantContext { const labwareEntities = { [SOURCE_LABWARE]: { id: SOURCE_LABWARE, - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixture96Plate), def: fixture96Plate, }, [DEST_LABWARE]: { id: DEST_LABWARE, - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixture96Plate), def: fixture96Plate, }, [TROUGH_LABWARE]: { id: TROUGH_LABWARE, - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixture12Trough), def: fixture12Trough, }, tiprack1Id: { id: 'tiprack1Id', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprack300ul), def: fixtureTiprack300ul, }, tiprack2Id: { id: 'tiprack2Id', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprack300ul), def: fixtureTiprack300ul, }, tiprack3Id: { id: 'tiprack3Id', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprack300ul), def: fixtureTiprack300ul, }, tiprack4AdapterId: { id: 'tiprack4AdapterId', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprackAdapter), def: fixtureTiprackAdapter, }, tiprack5AdapterId: { id: 'tiprack5AdapterId', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprackAdapter), def: fixtureTiprackAdapter, }, tiprack4Id: { id: 'tiprack4Id', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprack1000ul), def: fixtureTiprack1000ul, }, tiprack5Id: { id: 'tiprack5Id', - + pythonName: 'mockPythonName', labwareDefURI: getLabwareDefURI(fixtureTiprack1000ul), def: fixtureTiprack1000ul, }, @@ -148,7 +148,7 @@ export function makeContext(): InvariantContext { p10SingleId: { name: 'p10_single', id: 'p10SingleId', - + pythonName: 'mockPythonName', tiprackDefURI: [getLabwareDefURI(fixtureTiprack10ul)], tiprackLabwareDef: [fixtureTiprack10ul], spec: fixtureP10SingleV2Specs, @@ -156,34 +156,34 @@ export function makeContext(): InvariantContext { p10MultiId: { name: 'p10_multi', id: 'p10MultiId', - tiprackDefURI: [getLabwareDefURI(fixtureTiprack10ul)], tiprackLabwareDef: [fixtureTiprack10ul], spec: fixtureP10MultiV2Specs, + pythonName: 'mockPythonName', }, [DEFAULT_PIPETTE]: { name: 'p300_single', id: DEFAULT_PIPETTE, - tiprackDefURI: [getLabwareDefURI(fixtureTiprack300ul)], tiprackLabwareDef: [fixtureTiprack300ul], spec: fixtureP300SingleV2Specs, + pythonName: 'mockPythonName', }, [MULTI_PIPETTE]: { name: 'p300_multi', id: MULTI_PIPETTE, - tiprackDefURI: [getLabwareDefURI(fixtureTiprack300ul)], tiprackLabwareDef: [fixtureTiprack300ul], spec: fixtureP300MultiV2Specs, + pythonName: 'mockPythonName', }, [PIPETTE_96]: { name: 'p1000_96', id: PIPETTE_96, - tiprackDefURI: [getLabwareDefURI(fixtureTiprack1000ul)], tiprackLabwareDef: [fixtureTiprack1000ul], spec: fixtureP100096V2Specs, + pythonName: 'mockPythonName', }, } diff --git a/step-generation/src/types.ts b/step-generation/src/types.ts index 9198cbf2686..90b40e0c3d0 100644 --- a/step-generation/src/types.ts +++ b/step-generation/src/types.ts @@ -97,6 +97,7 @@ export interface LabwareEntity { id: string labwareDefURI: string def: LabwareDefinition2 + pythonName: string } export interface LabwareEntities { [labwareId: string]: LabwareEntity @@ -106,6 +107,7 @@ export interface ModuleEntity { id: string type: ModuleType model: ModuleModel + pythonName: string } export interface ModuleEntities { @@ -133,6 +135,11 @@ export interface LiquidEntities { [liquidId: string]: LiquidEntity } +export type Ingredient = Omit +export interface Ingredients { + [liquidId: string]: Ingredient +} + export type AdditionalEquipmentName = | 'gripper' | 'wasteChute' @@ -159,6 +166,7 @@ export type NormalizedPipette = NormalizedPipetteById[keyof NormalizedPipetteByI export type PipetteEntity = NormalizedPipette & { tiprackLabwareDef: LabwareDefinition2[] spec: PipetteV2Specs + pythonName: string } export interface PipetteEntities { diff --git a/step-generation/src/utils/constructInvariantContextFromRunCommands.ts b/step-generation/src/utils/constructInvariantContextFromRunCommands.ts index ea1899b5316..a30fa958320 100644 --- a/step-generation/src/utils/constructInvariantContextFromRunCommands.ts +++ b/step-generation/src/utils/constructInvariantContextFromRunCommands.ts @@ -31,6 +31,8 @@ export function constructInvariantContextFromRunCommands( id: result.labwareId, labwareDefURI: getLabwareDefURI(result.definition), def: result.definition, + // ProtocolTimelineScrubber won't need access to pythonNames + pythonName: 'n/a', }, } return { @@ -48,6 +50,7 @@ export function constructInvariantContextFromRunCommands( id: result.moduleId, type: getModuleType(command.params.model), model: command.params.model, + pythonName: 'n/a', }, } return { @@ -91,6 +94,7 @@ export function constructInvariantContextFromRunCommands( ? [getLabwareDefURI(tiprackLabwareDef)] : [], spec: specs, + pythonName: 'n/a', }, } return { From f8473bfa113499738f173ebd200e04d6a4da8f09 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Fri, 7 Feb 2025 16:22:51 -0500 Subject: [PATCH 69/81] =?UTF-8?q?refactor(shared-data):=20Normalize=20"\u0?= =?UTF-8?q?0b5"=20to=20"=C2=B5"=20(#17469)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json | 4 ++-- .../3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json | 4 ++-- .../labware/definitions/3/biorad_384_wellplate_50ul/3.json | 4 ++-- .../definitions/3/biorad_96_wellplate_200ul_pcr/3.json | 4 ++-- .../definitions/3/corning_384_wellplate_112ul_flat/3.json | 4 ++-- .../definitions/3/corning_96_wellplate_360ul_flat/3.json | 4 ++-- .../definitions/3/evotips_flex_96_tiprack_adapter/1.json | 2 +- .../3/nest_96_wellplate_100ul_pcr_full_skirt/3.json | 4 ++-- .../definitions/3/nest_96_wellplate_200ul_flat/3.json | 4 ++-- .../labware/definitions/3/nest_96_wellplate_2ml_deep/3.json | 2 +- .../2.json | 6 +++--- .../3.json | 4 ++-- .../opentrons_96_aluminumblock_nest_wellplate_100ul/2.json | 6 +++--- .../2.json | 2 +- .../2.json | 6 +++--- .../2.json | 6 +++--- .../2.json | 6 +++--- .../3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json | 4 ++-- .../labware/definitions/3/opentrons_flex_tiprack_lid/1.json | 2 +- .../3/opentrons_tough_pcr_auto_sealing_lid/1.json | 2 +- .../2.json | 6 +++--- .../definitions/3/protocol_engine_lid_stack_object/1.json | 2 +- .../3/thermoscientificnunc_96_wellplate_1300ul/2.json | 4 ++-- .../3/thermoscientificnunc_96_wellplate_2000ul/2.json | 4 ++-- 24 files changed, 48 insertions(+), 48 deletions(-) diff --git a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json index e2ff42a3a3c..cac26bcfe51 100644 --- a/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json +++ b/shared-data/labware/definitions/3/appliedbiosystemsmicroamp_384_wellplate_40ul/2.json @@ -441,9 +441,9 @@ ] }, "metadata": { - "displayName": "Applied Biosystems MicroAmp 384 Well Plate 40 \u00b5L", + "displayName": "Applied Biosystems MicroAmp 384 Well Plate 40 µL", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json index 292fe779e73..12240df9fb6 100644 --- a/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/armadillo_96_wellplate_200ul_pcr_full_skirt/3.json @@ -9,9 +9,9 @@ "isMagneticModuleCompatible": true }, "metadata": { - "displayName": "Armadillo 96 Well Plate 200 \u00b5L PCR Full Skirt", + "displayName": "Armadillo 96 Well Plate 200 µL PCR Full Skirt", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "brand": { diff --git a/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json b/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json index 5f6c47fb290..d4350e11468 100644 --- a/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json +++ b/shared-data/labware/definitions/3/biorad_384_wellplate_50ul/3.json @@ -450,9 +450,9 @@ ] }, "metadata": { - "displayName": "Bio-Rad 384 Well Plate 50 \u00b5L", + "displayName": "Bio-Rad 384 Well Plate 50 µL", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json index 58a914c225d..ff83414818c 100644 --- a/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json +++ b/shared-data/labware/definitions/3/biorad_96_wellplate_200ul_pcr/3.json @@ -17,9 +17,9 @@ "version": 3, "namespace": "opentrons", "metadata": { - "displayName": "Bio-Rad 96 Well Plate 200 \u00b5L PCR", + "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json b/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json index 69a3b324063..b973af8bdb9 100644 --- a/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json +++ b/shared-data/labware/definitions/3/corning_384_wellplate_112ul_flat/3.json @@ -437,8 +437,8 @@ ] ], "metadata": { - "displayName": "Corning 384 Well Plate 112 \u00b5L Flat", - "displayVolumeUnits": "\u00b5L", + "displayName": "Corning 384 Well Plate 112 µL Flat", + "displayVolumeUnits": "µL", "displayCategory": "wellPlate", "tags": [] }, diff --git a/shared-data/labware/definitions/3/corning_96_wellplate_360ul_flat/3.json b/shared-data/labware/definitions/3/corning_96_wellplate_360ul_flat/3.json index e085eb05d0e..fdc7b2ec2ac 100644 --- a/shared-data/labware/definitions/3/corning_96_wellplate_360ul_flat/3.json +++ b/shared-data/labware/definitions/3/corning_96_wellplate_360ul_flat/3.json @@ -51,9 +51,9 @@ ] }, "metadata": { - "displayName": "Corning 96 Well Plate 360 \u00b5L Flat", + "displayName": "Corning 96 Well Plate 360 µL Flat", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json b/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json index 36125856ad3..c7ec727eb47 100644 --- a/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json +++ b/shared-data/labware/definitions/3/evotips_flex_96_tiprack_adapter/1.json @@ -7,7 +7,7 @@ "metadata": { "displayName": "Evotips adapter", "displayCategory": "adapter", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json index 04bc8501f42..5b685fddf65 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_100ul_pcr_full_skirt/3.json @@ -19,9 +19,9 @@ "links": ["https://www.nest-biotech.com/pcr-plates/58773587.html"] }, "metadata": { - "displayName": "NEST 96 Well Plate 100 \u00b5L PCR Full Skirt", + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_200ul_flat/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_200ul_flat/3.json index f8315ed040c..874bc2d508d 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_200ul_flat/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_200ul_flat/3.json @@ -19,9 +19,9 @@ "links": ["https://www.nest-biotech.com/cell-culture-plates/59415537.html"] }, "metadata": { - "displayName": "NEST 96 Well Plate 200 \u00b5L Flat", + "displayName": "NEST 96 Well Plate 200 µL Flat", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json b/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json index cb30a8b93de..0cddc313929 100644 --- a/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json +++ b/shared-data/labware/definitions/3/nest_96_wellplate_2ml_deep/3.json @@ -21,7 +21,7 @@ "metadata": { "displayName": "NEST 96 Deep Well Plate 2mL", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json index ff19a886e26..a20005dacc9 100644 --- a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_biorad_wellplate_200ul/2.json @@ -17,8 +17,8 @@ "version": 2, "namespace": "opentrons", "metadata": { - "displayName": "Opentrons 96 Well Aluminum Block with Bio-Rad Well Plate 200 \u00b5L", - "displayVolumeUnits": "\u00b5L", + "displayName": "Opentrons 96 Well Aluminum Block with Bio-Rad Well Plate 200 µL", + "displayVolumeUnits": "µL", "displayCategory": "aluminumBlock", "tags": [] }, @@ -1104,7 +1104,7 @@ "H12" ], "metadata": { - "displayName": "Bio-Rad 96 Well Plate 200 \u00b5L", + "displayName": "Bio-Rad 96 Well Plate 200 µL", "displayCategory": "wellPlate", "wellBottomShape": "v" }, diff --git a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_generic_pcr_strip_200ul/3.json b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_generic_pcr_strip_200ul/3.json index 7563adaab85..00bb44d427b 100644 --- a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_generic_pcr_strip_200ul/3.json +++ b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_generic_pcr_strip_200ul/3.json @@ -17,8 +17,8 @@ "version": 3, "namespace": "opentrons", "metadata": { - "displayName": "Opentrons 96 Well Aluminum Block with Generic PCR Strip 200 \u00b5L", - "displayVolumeUnits": "\u00b5L", + "displayName": "Opentrons 96 Well Aluminum Block with Generic PCR Strip 200 µL", + "displayVolumeUnits": "µL", "displayCategory": "aluminumBlock", "tags": [] }, diff --git a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json index 7feac27841f..fe63aa6dd74 100644 --- a/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_aluminumblock_nest_wellplate_100ul/2.json @@ -21,9 +21,9 @@ ] }, "metadata": { - "displayName": "Opentrons 96 Well Aluminum Block with NEST Well Plate 100 \u00b5L", + "displayName": "Opentrons 96 Well Aluminum Block with NEST Well Plate 100 µL", "displayCategory": "aluminumBlock", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { @@ -996,7 +996,7 @@ "groups": [ { "metadata": { - "displayName": "NEST 96 Well Plate 100 \u00b5L", + "displayName": "NEST 96 Well Plate 100 µL", "displayCategory": "wellPlate", "wellBottomShape": "v" }, diff --git a/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json b/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json index 10c63d8ad4a..8d34c16858b 100644 --- a/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/2.json @@ -21,7 +21,7 @@ "metadata": { "displayName": "Opentrons 96 Deep Well Heater-Shaker Adapter with NEST Deep Well Plate 2 mL", "displayCategory": "adapter", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/2.json b/shared-data/labware/definitions/3/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/2.json index 3cb7a8de52a..28fdb7e62a3 100644 --- a/shared-data/labware/definitions/3/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/2.json @@ -19,9 +19,9 @@ "links": [] }, "metadata": { - "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter with NEST 96 Well Plate 200 \u00b5L Flat", + "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter with NEST 96 Well Plate 200 µL Flat", "displayCategory": "adapter", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { @@ -994,7 +994,7 @@ "groups": [ { "metadata": { - "displayName": "NEST 96 Well Plate 200 \u00b5L Flat", + "displayName": "NEST 96 Well Plate 200 µL Flat", "displayCategory": "wellPlate", "wellBottomShape": "flat" }, diff --git a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json index a21f759a713..a5e5d1a912b 100644 --- a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_armadillo_wellplate_200ul/2.json @@ -10,9 +10,9 @@ "isMagneticModuleCompatible": false }, "metadata": { - "displayName": "Opentrons 96 PCR Heater-Shaker Adapter with Armadillo Well Plate 200 \u00b5l", + "displayName": "Opentrons 96 PCR Heater-Shaker Adapter with Armadillo Well Plate 200 µl", "displayCategory": "aluminumBlock", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "brand": { @@ -1009,7 +1009,7 @@ "groups": [ { "metadata": { - "displayName": "Armadillo 96 Well Plate 200 \u00b5L PCR Full Skirt", + "displayName": "Armadillo 96 Well Plate 200 µL PCR Full Skirt", "displayCategory": "wellPlate", "wellBottomShape": "v" }, diff --git a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json index b5a3891c396..1db6b0911bc 100644 --- a/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json +++ b/shared-data/labware/definitions/3/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/2.json @@ -19,9 +19,9 @@ "links": [] }, "metadata": { - "displayName": "Opentrons 96 PCR Heater-Shaker Adapter with NEST Well Plate 100 \u00b5l", + "displayName": "Opentrons 96 PCR Heater-Shaker Adapter with NEST Well Plate 100 µl", "displayCategory": "adapter", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { @@ -994,7 +994,7 @@ "groups": [ { "metadata": { - "displayName": "NEST 96 Well Plate 100 \u00b5L PCR Full Skirt", + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", "displayCategory": "wellPlate", "wellBottomShape": "v" }, diff --git a/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json b/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json index 2cfa376d741..ebcb0d94ef2 100644 --- a/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json +++ b/shared-data/labware/definitions/3/opentrons_96_wellplate_200ul_pcr_full_skirt/3.json @@ -9,9 +9,9 @@ "isMagneticModuleCompatible": true }, "metadata": { - "displayName": "Opentrons Tough 96 Well Plate 200 \u00b5L PCR Full Skirt", + "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "brand": { diff --git a/shared-data/labware/definitions/3/opentrons_flex_tiprack_lid/1.json b/shared-data/labware/definitions/3/opentrons_flex_tiprack_lid/1.json index 88e3b604921..2b6d7a5b2eb 100644 --- a/shared-data/labware/definitions/3/opentrons_flex_tiprack_lid/1.json +++ b/shared-data/labware/definitions/3/opentrons_flex_tiprack_lid/1.json @@ -8,7 +8,7 @@ "metadata": { "displayName": "Opentrons Flex Tiprack Lid", "displayCategory": "lid", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json b/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json index 95a55074c61..5783916f7de 100644 --- a/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json +++ b/shared-data/labware/definitions/3/opentrons_tough_pcr_auto_sealing_lid/1.json @@ -8,7 +8,7 @@ "metadata": { "displayName": "Opentrons Tough PCR Auto-Sealing Lid", "displayCategory": "lid", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/2.json b/shared-data/labware/definitions/3/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/2.json index e851c913660..94dca74b40a 100644 --- a/shared-data/labware/definitions/3/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/2.json +++ b/shared-data/labware/definitions/3/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/2.json @@ -438,9 +438,9 @@ "brandId": [] }, "metadata": { - "displayName": "Opentrons Universal Flat Heater-Shaker Adapter with Corning 384 Well Plate 112 \u00b5l Flat", + "displayName": "Opentrons Universal Flat Heater-Shaker Adapter with Corning 384 Well Plate 112 µl Flat", "displayCategory": "adapter", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { @@ -4677,7 +4677,7 @@ "groups": [ { "metadata": { - "displayName": "Corning 384 Well Plate 112 \u00b5L Flat", + "displayName": "Corning 384 Well Plate 112 µL Flat", "displayCategory": "wellPlate", "wellBottomShape": "flat" }, diff --git a/shared-data/labware/definitions/3/protocol_engine_lid_stack_object/1.json b/shared-data/labware/definitions/3/protocol_engine_lid_stack_object/1.json index 134b90bf13f..7e0e50da7a4 100644 --- a/shared-data/labware/definitions/3/protocol_engine_lid_stack_object/1.json +++ b/shared-data/labware/definitions/3/protocol_engine_lid_stack_object/1.json @@ -8,7 +8,7 @@ "metadata": { "displayName": "Protocol Engine Lid Stack", "displayCategory": "system", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json index a022cc88192..4ab68b82630 100644 --- a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json +++ b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_1300ul/2.json @@ -19,9 +19,9 @@ "links": ["https://www.thermofisher.com/order/catalog/product/260251"] }, "metadata": { - "displayName": "Thermo Scientific Nunc 96 Well Plate 1300 \u00b5L", + "displayName": "Thermo Scientific Nunc 96 Well Plate 1300 µL", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { diff --git a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json index dfa3f26f224..8d02526f07f 100644 --- a/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json +++ b/shared-data/labware/definitions/3/thermoscientificnunc_96_wellplate_2000ul/2.json @@ -19,9 +19,9 @@ "links": ["https://www.thermofisher.com/order/catalog/product/278743"] }, "metadata": { - "displayName": "Thermo Scientific Nunc 96 Well Plate 2000 \u00b5L", + "displayName": "Thermo Scientific Nunc 96 Well Plate 2000 µL", "displayCategory": "wellPlate", - "displayVolumeUnits": "\u00b5L", + "displayVolumeUnits": "µL", "tags": [] }, "dimensions": { From 26125dd4a7312e97c817c27911d18a1df942e4fb Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Fri, 7 Feb 2025 16:41:41 -0500 Subject: [PATCH 70/81] fix(protocol-designer): fix createFile() test and delete unused `ot2Robot` constant (#17472) # Overview In `createFile(..., robotType=...)`, the `robotType` needs to be a string, but the test was incorrectly calling the function with an object instead. We previously defined a constant object `ot2Robot = { model: OT2_ROBOT_TYPE, deckId: OT2_STANDARD_DECKID }` for tests, but nothing uses it anymore, so we can just delete it. ## Test Plan and Hands on Testing Updated unit tests and confirmed that they pass. ## Risk assessment Low, this just fixes an incorrect unit test. --- .../src/file-data/__fixtures__/createFile/commonFields.ts | 8 +------- .../src/file-data/__tests__/createFile.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts b/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts index 4e271ce146e..37b9ef5812b 100644 --- a/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts +++ b/protocol-designer/src/file-data/__fixtures__/createFile/commonFields.ts @@ -4,11 +4,7 @@ import { fixture_tiprack_10_ul, fixture_trash, } from '@opentrons/shared-data/labware/fixtures/2' -import { - OT2_ROBOT_TYPE, - OT2_STANDARD_DECKID, - fixtureP10SingleV2Specs, -} from '@opentrons/shared-data' +import { fixtureP10SingleV2Specs } from '@opentrons/shared-data' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { LabwareLiquidState, @@ -75,5 +71,3 @@ export const labwareDefsByURI: LabwareDefByDefURI = { 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1': fixture96Plate, 'opentrons/opentrons_1_trash_1100ml_fixed/1': fixtureTrash, } - -export const ot2Robot = { model: OT2_ROBOT_TYPE, deckId: OT2_STANDARD_DECKID } diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 34428f5c70b..4a594e1c143 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -6,6 +6,7 @@ import { fixtureP300SingleV2Specs, labwareSchemaV2, protocolSchemaV8, + OT2_ROBOT_TYPE, } from '@opentrons/shared-data' import { fixture_12_trough, @@ -28,7 +29,6 @@ import { labwareNicknamesById, labwareDefsByURI, pipetteEntities, - ot2Robot, } from '../__fixtures__/createFile/commonFields' import * as v7Fixture from '../__fixtures__/createFile/v7Fixture' import type { LabwareDefinition2 } from '@opentrons/shared-data' @@ -76,7 +76,7 @@ describe('createFile selector', () => { fileMetadata, v7Fixture.initialRobotState, v7Fixture.robotStateTimeline, - ot2Robot, + OT2_ROBOT_TYPE, dismissedWarnings, ingredients, ingredLocations, From 2ec42e10d01dc06bc8efb4f604fcacae3b8189cb Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:01:07 -0500 Subject: [PATCH 71/81] feat(protocol-designer): generate `requirements` section of Python file (#17474) # Overview Add the `requirements=` section to the Python file export. AUTH-1091 ## Test Plan and Hands on Testing Added unit tests for the Flex and OT-2. ## Risk assessment Low: Python export is hidden behind a feature flag, and no one is using it yet. --- .../file-data/__tests__/createFile.test.ts | 7 +++++- .../file-data/__tests__/pythonFile.test.ts | 23 ++++++++++++++++++- .../src/file-data/selectors/fileCreator.ts | 6 +++-- .../src/file-data/selectors/pythonFile.ts | 17 ++++++++++++++ 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 4a594e1c143..613f0e52f6a 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -99,7 +99,7 @@ describe('createFile selector', () => { it('should return a valid Python protocol file', () => { // @ts-expect-error(sa, 2021-6-15): resultFunc not part of Selector type - const result = createPythonFile.resultFunc(fileMetadata, {}) + const result = createPythonFile.resultFunc(fileMetadata, OT2_ROBOT_TYPE, {}) // This is just a quick smoke test to make sure createPythonFile() produces // something that looks like a Python file. The individual sections of the // generated Python will be tested in separate unit tests. @@ -114,6 +114,11 @@ metadata = { "description": "Protocol description", "created": "2020-02-25T21:48:32.515Z", } + +requirements = { + "robotType": "OT-2", + "apiLevel": "2.23", +} `.trimStart() ) }) diff --git a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts index aab11d116c4..cb7f526606f 100644 --- a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts @@ -1,5 +1,6 @@ import { describe, it, expect } from 'vitest' -import { pythonMetadata } from '../selectors/pythonFile' +import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' +import { pythonMetadata, pythonRequirements } from '../selectors/pythonFile' describe('pythonMetadata', () => { it('should generate metadata section', () => { @@ -29,3 +30,23 @@ metadata = { ) }) }) + +describe('pythonRequirements', () => { + it('should generate requirements section', () => { + expect(pythonRequirements(OT2_ROBOT_TYPE)).toBe( + ` +requirements = { + "robotType": "OT-2", + "apiLevel": "2.23", +}`.trimStart() + ) + + expect(pythonRequirements(FLEX_ROBOT_TYPE)).toBe( + ` +requirements = { + "robotType": "Flex", + "apiLevel": "2.23", +}`.trimStart() + ) + }) +}) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index b990d367b64..9850b802dc7 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -26,7 +26,7 @@ import { getModulesLoadInfo, getPipettesLoadInfo, } from './utils' -import { pythonImports, pythonMetadata } from './pythonFile' +import { pythonImports, pythonMetadata, pythonRequirements } from './pythonFile' import type { SecondOrderCommandAnnotation } from '@opentrons/shared-data/commandAnnotation/types' import type { @@ -302,12 +302,14 @@ export const createFile: Selector = createSelector( export const createPythonFile: Selector = createSelector( getFileMetadata, - fileMetadata => { + getRobotType, + (fileMetadata, robotType) => { return ( [ // Here are the sections of the Python file: pythonImports(), pythonMetadata(fileMetadata), + pythonRequirements(robotType), ] .filter(section => section) // skip any blank sections .join('\n\n') + '\n' diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts index 8af7707dc08..dbf5e9c3bf9 100644 --- a/protocol-designer/src/file-data/selectors/pythonFile.ts +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -1,7 +1,11 @@ /** Generate sections of the Python file for fileCreator.ts */ +import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { formatPyDict } from '@opentrons/step-generation' import type { FileMetadataFields } from '../types' +import type { RobotType } from '@opentrons/shared-data' + +const PAPI_VERSION = '2.23' // latest version from api/src/opentrons/protocols/api_support/definitions.py export function pythonImports(): string { return [ @@ -29,3 +33,16 @@ export function pythonMetadata(fileMetadata: FileMetadataFields): string { ) return `metadata = ${formatPyDict(stringifiedMetadata)}` } + +export function pythonRequirements(robotType: RobotType): string { + const ROBOTTYPE_TO_PAPI_NAME = { + // values from api/src/opentrons/protocols/parse.py + [OT2_ROBOT_TYPE]: 'OT-2', + [FLEX_ROBOT_TYPE]: 'Flex', + } + const requirements = { + robotType: ROBOTTYPE_TO_PAPI_NAME[robotType], + apiLevel: PAPI_VERSION, + } + return `requirements = ${formatPyDict(requirements)}` +} From 5da85c3fc691553bb59e09396636fa5710a34253 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Mon, 10 Feb 2025 10:14:47 -0500 Subject: [PATCH 72/81] docs(app): add quick transfer doc to keep track of versioning (#17473) --- .../organisms/ODD/QuickTransferFlow/README.md | 58 +++++++++++++++++++ .../utils/createQuickTransferFile.ts | 1 + 2 files changed, 59 insertions(+) create mode 100644 app/src/organisms/ODD/QuickTransferFlow/README.md diff --git a/app/src/organisms/ODD/QuickTransferFlow/README.md b/app/src/organisms/ODD/QuickTransferFlow/README.md new file mode 100644 index 00000000000..ba2214b809d --- /dev/null +++ b/app/src/organisms/ODD/QuickTransferFlow/README.md @@ -0,0 +1,58 @@ +# Quick Transfer Versioning: + +Quick Transfer is versioned under the `designerApplicationData` field on the resulting protocol file. Since this data is not yet read or migrated this doc details the versions, type of `quickTransferState` per version, and other changes made so that migration can occur in the future if needed. + +## Version 1.0.0 + +``` +export interface QuickTransferSummaryState { + pipette: PipetteV2Specs + mount: Mount + tipRack: LabwareDefinition2 + source: LabwareDefinition2 + sourceWells: string[] + destination: LabwareDefinition2 | 'source' + destinationWells: string[] + transferType: TransferType + volume: number + aspirateFlowRate: number + dispenseFlowRate: number + path: PathOption + tipPositionAspirate: number + preWetTip: boolean + mixOnAspirate?: { + mixVolume: number + repititions: number + } + delayAspirate?: { + delayDuration: number + positionFromBottom: number + } + touchTipAspirate?: number + airGapAspirate?: number + tipPositionDispense: number + mixOnDispense?: { + mixVolume: number + repititions: number + } + delayDispense?: { + delayDuration: number + positionFromBottom: number + } + touchTipDispense?: number + disposalVolume?: number + blowOut?: BlowOutLocation + airGapDispense?: number + changeTip: ChangeTipOptions + dropTipLocation: CutoutConfig +} +``` + +## Version 1.1.0 + +Type is the same as in `1.0.0`, but the number represented by `touchTipAspirate` and `touchTipDispense` is now the distance from the top of the well instead of distance from the bottom of the well. This can be migrated using the well height from the definition on both source and dest labware. + +``` +touchTipAspirate = -(sourceWellHeight - prevTouchTipAspirate) +touchTipDispense = -(destWellHeight - prevTouchTipDispense) +``` diff --git a/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts b/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts index 614acb18753..24a46609043 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts +++ b/app/src/organisms/ODD/QuickTransferFlow/utils/createQuickTransferFile.ts @@ -202,6 +202,7 @@ export function createQuickTransferFile( subcategory: null, tags: [], }, + // see QuickTransferFlow/README.md for versioning details designerApplication: { name: 'opentrons/quick-transfer', version: '1.1.0', From a8c1f168604936c31a97873e39c6f4c0df924f43 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 10 Feb 2025 12:50:54 -0500 Subject: [PATCH 73/81] fix(shared-data): Restore "lid" display category missing from labware schema 3 (#17480) --- shared-data/js/__tests__/labwareDefSchemaV3.test.ts | 8 +++----- shared-data/labware/schemas/3.json | 3 ++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts index e115dccc570..340ebd96190 100644 --- a/shared-data/js/__tests__/labwareDefSchemaV3.test.ts +++ b/shared-data/js/__tests__/labwareDefSchemaV3.test.ts @@ -77,11 +77,9 @@ describe(`test labware definitions with schema v3`, () => { // FIXME(mm, 2025-02-04): These new definitions have a displayCategory that // the schema does not recognize. Either they need to change or the schema does. - const expectFailure = [ - 'opentrons_flex_tiprack_lid', - 'opentrons_tough_pcr_auto_sealing_lid', - 'protocol_engine_lid_stack_object', - ].includes(labwareDef.parameters.loadName) + const expectFailure = ['protocol_engine_lid_stack_object'].includes( + labwareDef.parameters.loadName + ) if (expectFailure) expect(validationErrors).not.toBe(null) else expect(validationErrors).toBe(null) diff --git a/shared-data/labware/schemas/3.json b/shared-data/labware/schemas/3.json index 5e02c45a981..45216e06577 100644 --- a/shared-data/labware/schemas/3.json +++ b/shared-data/labware/schemas/3.json @@ -41,7 +41,8 @@ "wellPlate", "aluminumBlock", "adapter", - "other" + "other", + "lid" ] }, "safeString": { From 455774ed5286f497f902e254e49471ca2802d74f Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Mon, 10 Feb 2025 14:13:13 -0500 Subject: [PATCH 74/81] feat(protocol-designer): add declaration for `def run()` to generated Python (#17482) # Overview This adds the `def run(...)` declaration to the generated Python file. AUTH-1092 We'll start filling in the `run()` function in future PRs. ## Test Plan and Hands on Testing Updated unit tests. Looked at generated file with feature flag turned on. ## Risk assessment Low. This just affects the exported Python file hidden under a feature flag. --- .../file-data/__tests__/createFile.test.ts | 3 +++ .../src/file-data/selectors/fileCreator.ts | 8 +++++- .../src/file-data/selectors/pythonFile.ts | 25 ++++++++++++++++++- step-generation/src/utils/pythonFormat.ts | 6 +++++ 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 613f0e52f6a..527e1cccf20 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -119,6 +119,9 @@ requirements = { "robotType": "OT-2", "apiLevel": "2.23", } + +def run(protocol: protocol_api.ProtocolContext): + pass `.trimStart() ) }) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index 9850b802dc7..a12547a3b70 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -26,7 +26,12 @@ import { getModulesLoadInfo, getPipettesLoadInfo, } from './utils' -import { pythonImports, pythonMetadata, pythonRequirements } from './pythonFile' +import { + pythonDefRun, + pythonImports, + pythonMetadata, + pythonRequirements, +} from './pythonFile' import type { SecondOrderCommandAnnotation } from '@opentrons/shared-data/commandAnnotation/types' import type { @@ -310,6 +315,7 @@ export const createPythonFile: Selector = createSelector( pythonImports(), pythonMetadata(fileMetadata), pythonRequirements(robotType), + pythonDefRun(), ] .filter(section => section) // skip any blank sections .join('\n\n') + '\n' diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts index dbf5e9c3bf9..e4d9e63eec0 100644 --- a/protocol-designer/src/file-data/selectors/pythonFile.ts +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -1,7 +1,11 @@ /** Generate sections of the Python file for fileCreator.ts */ import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' -import { formatPyDict } from '@opentrons/step-generation' +import { + formatPyDict, + indentPyLines, + PROTOCOL_CONTEXT_NAME, +} from '@opentrons/step-generation' import type { FileMetadataFields } from '../types' import type { RobotType } from '@opentrons/shared-data' @@ -46,3 +50,22 @@ export function pythonRequirements(robotType: RobotType): string { } return `requirements = ${formatPyDict(requirements)}` } + +export function pythonDefRun(): string { + const sections: string[] = [ + // loadModules(), + // loadLabware(), + // loadInstruments(), + // defineLiquids(), + // loadLiquids(), + // stepCommands(), + ] + const functionBody = + sections + .filter(section => section) // skip empty sections + .join('\n\n') || 'pass' + return ( + `def run(${PROTOCOL_CONTEXT_NAME}: protocol_api.ProtocolContext):\n` + + `${indentPyLines(functionBody)}` + ) +} diff --git a/step-generation/src/utils/pythonFormat.ts b/step-generation/src/utils/pythonFormat.ts index 6efc6557542..76dcb1809fc 100644 --- a/step-generation/src/utils/pythonFormat.ts +++ b/step-generation/src/utils/pythonFormat.ts @@ -1,5 +1,11 @@ /** Utility functions for Python code generation. */ +/** The variable name for the ProtocolContext object in the run() function. + * Our docs call it `protocol`, which is slightly misleading since the object is not + * the protocol itself, but we'll try to stay consistent with the docs. + */ +export const PROTOCOL_CONTEXT_NAME = 'protocol' + const INDENT = ' ' /** Indent each of the lines in `text`. */ From 48ac4e616fd29f3f3c428c003bfc724b097042bb Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Mon, 10 Feb 2025 17:06:32 -0500 Subject: [PATCH 75/81] feat(api): return location sequences from commands (#17435) By adding all the locations of a labware used in a command that establishes or changes the position of a labware, we can free the client from having to accumulate all previous such commands to display a single such command. These locations are shown as location sequences. These are lists of heterogenous unions keyed by `kind`. The kinds mostly correspond to the kinds of locations that the engine already uses - they're different types because they have the `kind` key so you can tell them apart when serialized instead of just via python isinstance checks. All these sequences end in either an `OnCutoutFixtureLocation` which lists a cutout id and possible cutout fixtures; or a `NotOnDeckLocation` that specifies `OFF_DECK` or system. Different robots have different kinds of sequences; on the OT-2, modules are loaded on deck slots, and so a labware on a module would have `[OnModule, OnAddressableArea, OnCutoutFixture]` while on the Flex, modules are loaded on cutout fixtures and a labware on a module would have `[OnAdressableArea, OnModule, OnCutoutFixture]` (having the `OnModule` there lets us have the module ID; it is not technically necessary). There are some command implementations that are straightforward, and some that are charmingly quirky. - `loadLabware`, `reloadLabware`, `loadLid` all just return the location of the newly added labware. Simple, clean, wondrous - `loadLidStack` creates a lid stack object and returns its location, and also creates N lid objects and returns all of _their_ locations, which is done in its own array that is guaranteed to have the same ordering as all the lid ids so we can keep the types of the locations consistent across commands and also avoid altering already-existing result elements - `moveLabware` needs an origin and a destination location, so it has them. In fact, one destination location isn't enough. When we move labware to a trash location, we need to encode both (1) which trash location it was and (2) that it is a trash location. After the command, the position of the labware is `OFF_DECK` (because it went into the trash), after all. So we get both `immediateDestinationLocationSequence` (which in this scenario would be the addressable area of the trash) and `eventualDestinationLocationSequence` (which in this scenario would be off deck). If the two are the same, then the two are the same - the stacker `store` and `retrieve` commands have info that isn't really actually useful right now, but it will be soon, so let's carve out some space for them. For now the labware just bounces back and forth between the module/off deck and the module/stacker staging slot. ## to come out of draft - [x] ts bindings - [x] stacker store and retrieve - ~[ ] add "what is the old and new state of the locations named in the command" to these values~ not going to do that ^ in this pr just so we can get it merged --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sfoster1 <3091648+sfoster1@users.noreply.github.com> --- ...[pl_BacteriaInoculation_Flex_6plates].json | 1718 ++- ...][pl_Flex_Protein_Digestion_Protocol].json | 217 +- ...B_TC_TM_DeckConfiguration1NoFixtures].json | 503 +- ...300M_P20S_aspirateDispenseMix0Volume].json | 45 +- ...P300M_P20S_HS_TC_TM_dispense_changes].json | 60 +- ...2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 133 +- ...03a95825][Flex_S_v2_19_QIASeq_FX_48x].json | 985 +- ...s_TooTallLabware_Override_south_west].json | 30 +- ...][Flex_S_v2_18_Illumina_DNA_Prep_48x].json | 795 +- ...es_TooTallLabware_Override_north_row].json | 30 +- ...2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 409 +- ...2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 133 +- ..._EM_seq_48Samples_AllSteps_Edits_150].json | 1322 ++- ...][Flex_S_v2_20_96_None_ROW_HappyPath].json | 47 +- ...c2386b92][Flex_S_v2_20_96_AllCorners].json | 647 +- ...11020a4e17][pl_Bradford_proteinassay].json | 298 +- ..._X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json | 106 +- ...a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json | 83 +- ...llumina_Stranded_total_RNA_Ribo_Zero].json | 53 +- ...0fccf4][pl_microBioID_beads_touchtip].json | 820 +- ...94e3c49bb][pl_Normalization_with_PCR].json | 85 +- ...errides_TooTallLabware_Override_west].json | 30 +- ..._GRIP_TC_TM_GripperCollisionWithTips].json | 394 +- ...l_Dynabeads_IP_Flex_96well_RIT_final].json | 687 +- ...c080][pl_MagMax_RNA_Cells_Flex_multi].json | 976 +- ...f51][Flex_S_v2_18_KAPA_Library_Quant].json | 168 +- ..._Omega_HDQ_DNA_Cells_Flex_96_channel].json | 707 +- ...pshot[250e9496be][pl_BCApeptideassay].json | 410 +- ...ooTallLabware_Override_mix_collision].json | 45 +- ...7961bc58][pl_NiNTA_Flex_96well_final].json | 756 +- ...9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json | 637 +- ...pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json | 667 +- ...ide_distribute_destination_collision].json | 66 +- ...e_Override_transfer_source_collision].json | 64 +- ...Flex_S_v2_18_P1000_96_TipTrackingBug].json | 30 +- ...2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 1124 +- ...2bc6830494][pl_langone_ribo_pt1_ramp].json | 50 +- ..._TooTallLabware_Override_east_column].json | 30 +- ...TC_TM_TriggerPrepareForMountMovement].json | 9999 ++++++++++++++++- ..._S_v2_20_96_None_SINGLE_4Corners50ul].json | 15 +- ...20_96_None_SINGLE_HappyPathNorthSide].json | 77 +- ...[pl_Takara_InFusionSnapAssembly_Flex].json | 83 +- ...ex_X_v2_21_plate_reader_wrong_plate2].json | 30 +- ...allLabware_Override_bottom_left_edge].json | 15 +- ...allLabware_Override_bottom_left_edge].json | 15 +- ...es_TooTallLabware_Override_south_row].json | 30 +- ...f][pl_Dynabeads_IP_Flex_96well_final].json | 687 +- ...fd9][Flex_S_v2_19_KAPA_Library_Quant].json | 168 +- ...2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 3752 ++++++- ...shot[4148613317][Flex_S_v2_19_ligseq].json | 754 +- ...apshot[42beea80be][pl_96_ch_demo_rtp].json | 769 +- ...8][OT2_X_v6_P20S_None_SimpleTransfer].json | 60 +- ...ple_dilution_with_96_channel_pipette].json | 106 +- ...2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 409 +- ...P300M_P20S_HS_TC_TM_dispense_changes].json | 60 +- ...ARTIAL_COLUMN_HappyPathMixedTipRacks].json | 75 +- ...Override_eight_partial_column_no_end].json | 15 +- ...50c02c81][Flex_S_v2_19_AMPure_XP_48x].json | 425 +- ...][pl_Zymo_Quick_RNA_Cells_Flex_multi].json | 1116 +- ...v6_P300M_P20S_MixTransferManyLiquids].json | 120 +- ...ide_eight_partial_column_bottom_left].json | 15 +- ...ooTallLabware_Override_c3_right_edge].json | 17 +- ...Override_eight_partial_column_no_end].json | 30 +- ...erifyNoFloatingPointErrorInPipetting].json | 30 +- ...][Flex_S_v2_19_Illumina_DNA_Prep_48x].json | 795 +- ...shot[59b00713a7][Flex_S_v2_18_ligseq].json | 754 +- ...ega_HDQ_DNA_Bacteria_Flex_96_channel].json | 878 +- ...0MGen2_None_OT2PipetteInFlexProtocol].json | 15 +- ...Override_ninety_six_partial_column_2].json | 15 +- ..._PIPETTES_TM_ModuleInStagingAreaCol3].json | 16 +- ...Override_ninety_six_partial_column_1].json | 15 +- ..._customizable_serial_dilution_upload].json | 64 +- ...b47][pl_M_N_Nucleomag_DNA_Flex_multi].json | 652 +- ...s_TooTallLabware_Override_south_east].json | 34 +- ...errides_TooTallLabware_Override_east].json | 32 +- ...lex_S_v2_20_96_None_COLUMN_HappyPath].json | 47 +- ...de_consolidate_destination_collision].json | 66 +- ...96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json | 2752 ++++- ..._HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json | 865 +- ..._HS_TC_TM_aspirateDispenseMix0Volume].json | 45 +- ...[pl_SamplePrep_MS_Digest_Flex_upto96].json | 130 +- ...ex_X_v2_21_plate_reader_no_close_lid].json | 30 +- ...2_20_8_None_PARTIAL_COLUMN_HappyPath].json | 47 +- ...lidConfigs_Override_return_tip_error].json | 60 +- ...ebdcd29][pl_KAPA_Library_Quant_48_v8].json | 168 +- ...e61426a2][Flex_S_v2_18_AMPure_XP_48x].json | 425 +- ...0][Flex_X_v2_21_tc_lids_wrong_target].json | 236 +- ..._TooTallLabware_Override_west_column].json | 32 +- ..._QIAseq_FX_24x_Normalizer_Workflow_B].json | 1107 +- ...84cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json | 603 +- ...2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 132 +- ...Zymo_Quick_RNA_Cells_Flex_96_Channel].json | 1257 ++- ...][OT2_X_v6_P20S_P300M_HS_HSCollision].json | 64 +- ...tialTipPickupThermocyclerLidConflict].json | 62 +- ...rrides_TooTallLabware_Override_south].json | 30 +- ...figs_Override_drop_tip_with_location].json | 49 +- ...pl_NiNTA_Flex_96well_PlatePrep_final].json | 162 +- ...6_P1000_96_TC_PartialTipPickupColumn].json | 47 +- ...747b2f9][pl_Illumina_DNA_Prep_48x_v8].json | 795 +- ...de_eight_partial_column_bottom_right].json | 30 +- ..._TM_MB_OmegaHDQDNAExtractionBacteria].json | 878 +- ...c62][Flex_S_v2_21_tc_lids_happy_path].json | 458 +- ...bcb0a3f13][pl_normalization_with_csv].json | 90 +- ...1000_96_GRIP_DropLabwareIntoTrashBin].json | 34 +- ...O_PIPETTES_TrashBinInStagingAreaCol3].json | 16 +- ...eckConfiguration1NoModulesNoFixtures].json | 330 +- ...s_TooTallLabware_Override_north_west].json | 30 +- ...pl_SamplePrep_MS_Cleanup_Flex_upto96].json | 554 +- ...][Flex_S_v2_19_Illumina_DNA_PCR_Free].json | 1094 +- ...37534569][Flex_S_v2_19_kapahyperplus].json | 994 +- ...l_Nanopore_Genomic_Ligation_v5_Final].json | 754 +- ...4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json | 1357 ++- ...][Flex_X_v2_21_plate_reader_no_trash].json | 76 +- ...20_96_None_SINGLE_HappyPathSouthSide].json | 77 +- ...a8a5ad823d][pl_cherrypicking_flex_v3].json | 173 +- ...4f22054f][Flex_S_v2_18_kapahyperplus].json | 994 +- ..._snapshot[aa61eee0bf][pl_sigdx_part2].json | 1395 ++- ...shot[ac5a46e74b][pl_langone_pt2_ribo].json | 576 +- ...6_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json | 363 +- ...ide_eight_partial_column_bottom_left].json | 30 +- ...2_S_v6_P300M_P20S_HS_Smoke620release].json | 94 +- ..._pipetteCollisionWithThermocyclerLid].json | 102 +- ...lidConfigs_Override_return_tip_error].json | 49 +- ...96_TC_PartialTipPickupTryToReturnTip].json | 47 +- ...407ff98][pl_cherrypicking_csv_airgap].json | 109 +- ...llumina_Stranded_total_RNA_Ribo_Zero].json | 53 +- ...figs_Override_drop_tip_with_location].json | 60 +- ...[pl_MagMax_RNA_Cells_Flex_96_Channel].json | 1107 +- ...][Flex_X_v2_21_plate_reader_bad_slot].json | 34 +- ...P1000S_None_SimpleNormalizeLongRight].json | 158 +- ...rride_transfer_destination_collision].json | 66 +- ...rrides_TooTallLabware_Override_north].json | 30 +- ...[OT2_S_v6_P1000S_None_SimpleTransfer].json | 60 +- ...llLabware_Override_bottom_right_edge].json | 19 +- ..._96_GRIP_DeckConfiguration1NoModules].json | 561 +- ...d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json | 985 +- ..._P20S_P300M_TransferReTransferLiquid].json | 75 +- ...Flex_S_v2_20_8_None_SINGLE_HappyPath].json | 47 +- ...[cecd51c8ee][pl_ExpressPlex_96_final].json | 222 +- ...de_eight_partial_column_bottom_right].json | 15 +- ...pl_Zymo_Magbead_DNA_Cells_Flex_multi].json | 760 +- ...shot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json | 1077 +- ...hot[d2c818bf00][Flex_S_v2_20_P50_LPD].json | 83 +- ...oMagbeadRNAExtractionCellsOrBacteria].json | 938 +- ...mo_Magbead_DNA_Cells_Flex_96_channel].json | 938 +- ...2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 409 +- ...39e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json | 603 +- ...shot[d6389183c0][pl_AMPure_XP_48x_v8].json | 425 +- ...6_P1000_96_TC_PartialTipPickupSingle].json | 47 +- ...[OT2_S_v2_20_8_None_SINGLE_HappyPath].json | 60 +- ...1][pl_Hyperplus_tiptracking_V4_final].json | 994 +- ...2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 3752 ++++++- ...Override_ninety_six_partial_column_3].json | 15 +- ...tranded_total_RNA_Ribo_Zero_protocol].json | 750 +- ...RIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json | 204 +- ...][Flex_S_v2_18_Illumina_DNA_PCR_Free].json | 1094 +- ...e71b031f47][pl_Illumina_DNA_PCR_Free].json | 1094 +- ...des_TooTallLabware_Override_top_edge].json | 15 +- ...Flex_S_v2_20_96_None_Column3_SINGLE_].json | 336 +- ...verride_consolidate_source_collision].json | 64 +- ...P_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json | 918 +- ...X_v2_16_P1000_96_DropTipsWithNoTrash].json | 58 +- ...P_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json | 397 +- ...0M_P300S_HS_HS_NormalUseWithTransfer].json | 79 +- ...2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 9997 +++++++++++++++- ...00_96_TM_ModuleAndWasteChuteConflict].json | 34 +- ...ddbb32][pl_ExpressPlex_Pooling_Final].json | 196 +- ...tteCollisionWithThermocyclerLidClips].json | 15 +- ..._GRIP_HS_MB_TC_TM_DeckConfiguration1].json | 734 +- ...Override_distribute_source_collision].json | 64 +- ...P300M_P20S_HS_TC_TM_dispense_changes].json | 60 +- ...lex_X_v2_21_plate_reader_wrong_plate].json | 30 +- .../tests/custom_json_snapshot_extension.py | 10 +- .../commands/flex_stacker/retrieve.py | 49 +- .../commands/flex_stacker/store.py | 48 +- .../commands/labware_handling_common.py | 24 + .../protocol_engine/commands/load_labware.py | 24 +- .../protocol_engine/commands/load_lid.py | 21 +- .../commands/load_lid_stack.py | 123 +- .../protocol_engine/commands/move_labware.py | 114 +- .../commands/reload_labware.py | 25 +- .../state/addressable_areas.py | 33 + .../protocol_engine/state/geometry.py | 166 + .../protocol_engine/state/labware.py | 6 +- .../protocol_engine/state/modules.py | 46 +- .../protocol_engine/types/__init__.py | 18 + .../protocol_engine/types/location.py | 27 +- .../protocol_runner/legacy_command_mapper.py | 2 + .../commands/flex_stacker/test_retrieve.py | 33 +- .../commands/flex_stacker/test_store.py | 27 +- .../commands/test_load_labware.py | 53 + .../protocol_engine/commands/test_load_lid.py | 118 + .../commands/test_load_lid_stack.py | 165 + .../commands/test_move_labware.py | 126 +- .../commands/test_reload_labware.py | 10 + .../opentrons/protocol_engine/conftest.py | 9 + .../protocol_engine/state/command_fixtures.py | 34 - .../state/test_geometry_view.py | 374 +- .../test_legacy_command_mapper.py | 1 + .../protocols/test_v6_json_upload.tavern.yaml | 25 + .../test_v8_json_upload_flex.tavern.yaml | 58 +- .../test_v8_json_upload_ot2.tavern.yaml | 51 +- shared-data/command/types/setup.ts | 45 + 203 files changed, 86188 insertions(+), 2826 deletions(-) create mode 100644 api/src/opentrons/protocol_engine/commands/labware_handling_common.py create mode 100644 api/tests/opentrons/protocol_engine/commands/test_load_lid.py create mode 100644 api/tests/opentrons/protocol_engine/commands/test_load_lid_stack.py diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json index 0cf14e731b6..62344320dab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json @@ -228,7 +228,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1969,7 +1982,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3253,7 +3281,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4430,7 +4471,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -29291,7 +29345,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -29320,7 +29389,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29348,7 +29459,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30496,7 +30651,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -31165,7 +31333,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31193,7 +31387,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31221,7 +31457,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31237,7 +31521,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31326,7 +31640,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -31355,7 +31684,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31383,7 +31754,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32531,7 +32946,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -33200,7 +33628,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33228,7 +33682,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33256,7 +33752,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33272,7 +33816,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33361,7 +33935,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -33390,7 +33979,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33418,7 +34049,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34566,7 +35241,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -35235,7 +35923,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35263,7 +35977,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35291,7 +36047,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35307,7 +36111,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35396,7 +36230,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -35425,7 +36274,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35453,7 +36344,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36601,7 +37536,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -37270,7 +38218,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37298,7 +38272,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37326,7 +38342,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37342,7 +38406,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37431,7 +38525,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -37460,7 +38569,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37488,7 +38639,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38636,7 +39831,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -39305,7 +40513,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39333,7 +40567,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39361,7 +40637,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39377,7 +40701,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39466,7 +40820,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -39495,7 +40864,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39523,7 +40934,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40671,7 +42126,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -41340,7 +42808,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41368,7 +42862,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41396,7 +42932,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41412,7 +42996,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json index 67327c84b0e..ee5f6c7dfd3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json @@ -101,7 +101,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -170,7 +183,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1328,7 +1354,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1397,7 +1440,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2555,7 +2611,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2624,7 +2697,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3782,7 +3868,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3851,7 +3954,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5009,7 +5125,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6276,7 +6409,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7939,7 +8085,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9602,7 +9763,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11265,7 +11439,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json index 3d1cdd1d3c1..5e8335207ab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json @@ -1809,7 +1809,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2983,7 +2998,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4157,7 +4185,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4226,7 +4267,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5384,7 +5440,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5453,7 +5528,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6611,7 +6699,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7767,7 +7872,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8923,7 +9034,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10951,7 +11068,39 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10967,7 +11116,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10985,7 +11164,52 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11003,7 +11227,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11299,7 +11564,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11317,7 +11626,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11335,7 +11690,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11351,7 +11760,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11367,7 +11802,39 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json index 6d0b815689f..71b8d699200 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json @@ -1175,7 +1175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2328,7 +2341,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2613,7 +2639,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json index eba6890b1dc..3183067c1c9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2668,7 +2694,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2914,7 +2953,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json index f88d031bd87..f36ee780ed3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4645,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5794,7 +5837,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7023,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8133,7 +8214,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9307,7 +9409,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json index fccf2aae96c..650f90685c2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json @@ -1341,7 +1341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4144,7 +4174,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4391,7 +4440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6131,7 +6193,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12120,7 +12212,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19760,7 +19867,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23511,7 +23664,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28293,7 +28461,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28998,7 +29212,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29816,7 +30076,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31086,7 +31392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -34530,7 +34849,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40035,7 +40400,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -43270,7 +43648,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44484,7 +44908,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -44503,7 +44941,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44521,7 +44994,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45300,7 +45817,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -50214,7 +50777,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51428,7 +52037,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -51447,7 +52069,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51465,7 +52122,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55490,7 +56191,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -61037,7 +61784,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -61056,7 +61816,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -61074,7 +61867,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -64350,7 +65183,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -65157,7 +66036,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json index e81582f2998..738e66152b8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json index b49eaeb6609..13841871112 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4848,7 +4895,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6192,7 +6254,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9773,7 +9865,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11068,7 +11206,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15837,7 +15990,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17475,7 +17674,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18703,7 +18948,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20044,7 +20304,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21682,7 +21988,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23064,7 +23416,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24702,7 +25100,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25930,7 +26374,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28369,7 +28826,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35717,7 +36220,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39564,7 +40113,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -44526,7 +45088,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45740,7 +46348,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -45759,7 +46381,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45777,7 +46434,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46658,7 +47359,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json index 3951be19f24..606dc997ab7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 84e33cd17bd..e524f6bf97b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4645,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5794,7 +5837,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7023,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8133,7 +8214,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9307,7 +9409,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9431,7 +9550,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10606,7 +10738,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10853,7 +10998,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11007,7 +11165,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11025,7 +11209,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11089,7 +11313,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11153,7 +11417,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11217,7 +11521,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11281,7 +11625,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json index e9c6717fdd0..d014eef0b06 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4645,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5794,7 +5837,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7023,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8133,7 +8214,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9307,7 +9409,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json index c407d673c2b..a042b99dd30 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2810,7 +2825,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4434,7 +4468,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5612,7 +5661,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6913,7 +6981,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8089,7 +8170,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8335,7 +8422,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9618,7 +9718,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10901,7 +11014,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12059,7 +12185,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13217,7 +13356,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14375,7 +14527,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15533,7 +15700,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16691,7 +16873,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17849,7 +18044,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19007,7 +19215,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20165,7 +20386,23 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1", + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25003,7 +25240,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26216,7 +26497,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27504,7 +27827,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27886,7 +28253,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32165,7 +32574,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33453,7 +33912,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34741,7 +35254,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35123,7 +35686,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35141,7 +35739,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39155,7 +39805,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40368,7 +41062,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41656,7 +42392,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42038,7 +42818,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42056,7 +42878,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44403,7 +45258,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44618,7 +45523,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44636,7 +45574,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44654,7 +45625,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44672,7 +45683,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45777,7 +46828,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47065,7 +48170,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47447,7 +48602,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47465,7 +48655,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json index 64a1766fb6a..c698278c953 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json @@ -1167,7 +1167,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3580,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json index 581a3e3ea51..97f2493fd48 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json @@ -1186,7 +1186,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2345,7 +2358,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3504,7 +3530,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4663,7 +4702,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5822,7 +5874,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6981,7 +7046,23 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1", + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7000,7 +7081,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -7264,7 +7385,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -7452,7 +7613,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -8494,7 +8699,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13144,7 +13389,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13882,7 +14167,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27348,7 +27673,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31238,7 +31603,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31256,7 +31661,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31274,7 +31719,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32088,7 +32573,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32656,7 +33181,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32674,7 +33243,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json index d63c91e8a57..347d9090015 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json @@ -641,7 +641,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -888,7 +903,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1249,7 +1277,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1610,7 +1651,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2769,7 +2823,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3928,7 +3997,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6062,7 +6146,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7258,7 +7355,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19097,7 +19207,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19190,7 +19352,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19206,7 +19414,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19234,7 +19468,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json index a0e4e4b52b4..bee8bb17515 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json @@ -1799,7 +1799,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3060,7 +3073,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3417,7 +3447,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4574,7 +4621,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5731,7 +5795,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5825,7 +5906,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json index 9519a2e4438..cbb450d94d4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2324,7 +2337,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3502,7 +3528,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3595,7 +3636,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3841,7 +3899,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json index 8701aae97bc..0ca954f5977 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2810,7 +2825,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4270,7 +4304,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json index 0363b1ca1df..abd05eb99ba 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json @@ -1643,7 +1643,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2085,7 +2100,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3280,7 +3310,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4563,7 +4606,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5739,7 +5797,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6917,7 +6981,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8075,7 +8152,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9233,7 +9323,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10391,7 +10494,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11549,7 +11667,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12707,7 +12838,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13865,7 +14009,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15023,7 +15180,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16181,7 +16351,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17339,7 +17522,23 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1", + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -22224,7 +22423,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22545,7 +22790,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23817,7 +24108,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24072,7 +24409,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25344,7 +25727,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25599,7 +26028,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26871,7 +27346,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27126,7 +27647,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28398,7 +28965,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30235,7 +30848,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33741,7 +34400,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33759,7 +34444,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34166,7 +34884,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json index 15d4ad5cd55..fc95e5a6f71 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json @@ -960,7 +960,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2138,7 +2153,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3290,7 +3320,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4448,7 +4495,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5606,7 +5666,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[196ec488f7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[196ec488f7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west].json index c39bcbb3546..7ee2d792794 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[196ec488f7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[196ec488f7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json index bc40fdbb1d4..3c420c48873 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json @@ -1130,7 +1130,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1199,7 +1212,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1268,7 +1294,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2435,7 +2474,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3602,7 +3656,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4762,7 +4831,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4857,7 +4943,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4951,7 +5052,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6111,7 +6227,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7271,7 +7404,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8451,7 +8601,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9632,7 +9795,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10792,7 +10968,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11952,7 +12141,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12425,7 +12627,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12519,7 +12765,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12552,7 +12850,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12568,7 +12896,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json index a084faeeb15..00f60fcd42d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1b73b8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json @@ -1292,7 +1292,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1539,7 +1552,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1798,7 +1824,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1892,7 +1933,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3050,7 +3104,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4209,7 +4278,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5368,7 +5450,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5930,7 +6025,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7214,7 +7324,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17028,7 +17157,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19850,7 +20029,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29174,7 +29407,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31996,7 +32279,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34159,7 +34496,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36981,7 +37368,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39144,7 +39585,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41966,7 +42457,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44129,7 +44674,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46951,7 +47546,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json index 7d89bcbae0c..904e51d2610 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4633,7 +4682,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4820,7 +4888,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5067,7 +5150,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6226,7 +6322,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7385,7 +7494,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8544,7 +8666,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9703,7 +9838,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12369,7 +12517,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12819,7 +13017,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13249,7 +13501,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13699,7 +14001,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14129,7 +14485,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14579,7 +14985,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16077,7 +16537,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16527,7 +17037,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16957,7 +17521,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17407,7 +18021,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17837,7 +18505,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18287,7 +19005,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18717,7 +19489,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19167,7 +19989,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20391,7 +21267,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[238912ff51][Flex_S_v2_18_KAPA_Library_Quant].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[238912ff51][Flex_S_v2_18_KAPA_Library_Quant].json index f98ef8886da..e86faca6494 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[238912ff51][Flex_S_v2_18_KAPA_Library_Quant].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[238912ff51][Flex_S_v2_18_KAPA_Library_Quant].json @@ -1340,7 +1340,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5689,7 +5704,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7313,7 +7341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8491,7 +8534,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8738,7 +8800,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9916,7 +9991,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11094,7 +11182,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12365,7 +12466,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14128,7 +14246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25965,7 +26098,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json index 38d0810f4ad..413050e1402 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[248a2a3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3440,7 +3474,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4668,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4775,7 +4843,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6059,7 +6142,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10799,7 +10895,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15539,7 +15648,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18551,7 +18675,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23804,7 +23941,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -24962,7 +25112,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25031,7 +25198,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26189,7 +26369,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -31230,7 +31427,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31425,7 +31672,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31650,7 +31951,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31845,7 +32196,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32070,7 +32475,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32265,7 +32720,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32490,7 +32999,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32685,7 +33244,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34928,7 +35541,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[250e9496be][pl_BCApeptideassay].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[250e9496be][pl_BCApeptideassay].json index 48190df7f82..3adf7e00fd2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[250e9496be][pl_BCApeptideassay].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[250e9496be][pl_BCApeptideassay].json @@ -641,7 +641,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -861,7 +876,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1108,7 +1136,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1469,7 +1510,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1830,7 +1884,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2989,7 +3056,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4148,7 +4230,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8896,7 +8993,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10092,7 +10202,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -24651,7 +24774,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24744,7 +24919,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24760,7 +24981,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24788,7 +25035,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24804,7 +25091,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithoutPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25999,7 +26312,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26057,7 +26383,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[255d014c70][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_mix_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[255d014c70][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_mix_collision].json index 225541d9e20..328d400125d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[255d014c70][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_mix_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[255d014c70][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_mix_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2621,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json index 64cec1732c3..3a0ebdf8b69 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[277961bc58][pl_NiNTA_Flex_96well_final].json @@ -1292,7 +1292,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2576,7 +2591,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3860,7 +3888,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5144,7 +5187,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5238,7 +5294,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6396,7 +6465,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7555,7 +7637,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8098,7 +8193,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9382,7 +9492,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11103,7 +11232,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23098,7 +23242,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25920,7 +26114,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29183,7 +29431,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32005,7 +32303,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35299,7 +35651,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38121,7 +38523,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41384,7 +41840,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44206,7 +44712,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47469,7 +48029,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -50291,7 +50901,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -53602,7 +54266,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json index 936161f35e0..ff5111a7656 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[28fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4633,7 +4682,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4789,7 +4857,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5036,7 +5119,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6195,7 +6291,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7354,7 +7463,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8513,7 +8635,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13793,7 +13928,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14273,7 +14458,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14590,7 +14829,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15040,7 +15329,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15357,7 +15700,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15807,7 +16200,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16124,7 +16571,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16574,7 +17071,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17192,7 +17743,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json index bce6b1bfc5c..c2b0ae3445e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29bb5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4633,7 +4682,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4789,7 +4857,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5036,7 +5119,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5283,7 +5379,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6442,7 +6551,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7723,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8760,7 +8895,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9919,7 +10067,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16610,7 +16771,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17090,7 +17301,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17422,7 +17687,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17872,7 +18187,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18204,7 +18573,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18654,7 +19073,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18986,7 +19459,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20079,7 +20602,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20383,7 +20960,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29e143f047][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_destination_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29e143f047][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_destination_collision].json index 4d1fef18df8..c23a9cf8379 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29e143f047][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_destination_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29e143f047][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_destination_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2623,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3810,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29eec5a85a][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_source_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29eec5a85a][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_source_collision].json index bed5e33f447..aaed6596a91 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29eec5a85a][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_source_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[29eec5a85a][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_source_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2621,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3808,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b7fcb5b23][Flex_S_v2_18_P1000_96_TipTrackingBug].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b7fcb5b23][Flex_S_v2_18_P1000_96_TipTrackingBug].json index 2dbe272ad3a..92a8fa346d9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b7fcb5b23][Flex_S_v2_18_P1000_96_TipTrackingBug].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b7fcb5b23][Flex_S_v2_18_P1000_96_TipTrackingBug].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2324,7 +2337,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index ee19bc58e32..76050f9e178 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -75,7 +75,21 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1376,7 +1390,24 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1534,7 +1565,28 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1692,7 +1744,32 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1850,7 +1927,36 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2008,7 +2114,40 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3250,7 +3389,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4415,7 +4569,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4508,7 +4677,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5686,7 +5868,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5755,7 +5950,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6913,7 +7121,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8071,7 +8296,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9229,7 +9469,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10385,7 +10638,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10455,7 +10714,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10487,7 +10790,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10533,7 +10878,49 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10565,7 +10952,48 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11335,7 +11763,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11353,7 +11814,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13860,7 +14361,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13878,7 +14423,79 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13987,7 +14604,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID", + "lidId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14049,7 +14706,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14171,7 +14882,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14234,7 +15003,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "absorbanceReaderV1B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "absorbanceReaderV1B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14427,7 +15246,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "absorbanceReaderV1B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14443,7 +15304,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14538,6 +15425,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -14603,7 +15503,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14665,6 +15605,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -14731,7 +15684,46 @@ "strategy": "manualMoveWithPause" }, "result": { - "offsetId": "UUID" + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "offsetId": "UUID", + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14796,7 +15788,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14891,7 +15916,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json index cbbda041874..6c482d452b1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2bc6830494][pl_langone_ribo_pt1_ramp].json @@ -1316,7 +1316,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2492,7 +2507,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3668,7 +3689,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5441,7 +5468,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2cc8efae68][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east_column].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2cc8efae68][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east_column].json index 1fe105e1626..dcbda864ff9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2cc8efae68][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east_column].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2cc8efae68][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east_column].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json index cade2906ff1..ce410943c79 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json @@ -2296,7 +2296,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3461,7 +3476,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4744,7 +4774,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5918,7 +5961,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5987,7 +6043,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7145,7 +7214,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8303,7 +8389,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9461,7 +9562,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11659,7 +11773,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover", + "wasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12556,7 +12705,46 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover", + "wasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12574,7 +12762,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13108,7 +13344,46 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover", + "wasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13126,7 +13401,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13144,7 +13459,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13162,7 +13517,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13180,7 +13575,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13198,7 +13633,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13216,7 +13691,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13234,7 +13749,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13252,7 +13807,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13270,7 +13865,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13288,7 +13923,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13306,7 +13981,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13324,7 +14039,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13342,7 +14097,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13360,7 +14155,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13378,7 +14213,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13396,7 +14271,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13414,7 +14333,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13432,7 +14393,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13450,7 +14463,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13468,7 +14527,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13486,7 +14597,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13504,7 +14661,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13522,7 +14723,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13540,7 +14783,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13558,7 +14845,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13576,7 +14917,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13594,7 +14993,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13612,7 +15061,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13630,7 +15121,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13648,7 +15179,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13666,7 +15237,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13684,7 +15295,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13702,7 +15353,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13720,7 +15411,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13738,11 +15469,51 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { "commandType": "moveLabware", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", @@ -13756,7 +15527,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13774,7 +15585,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13792,7 +15643,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13810,7 +15701,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13828,7 +15759,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13846,7 +15817,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13864,7 +15875,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13882,7 +15933,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13900,7 +15991,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13918,7 +16053,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13936,7 +16113,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13954,7 +16183,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13972,7 +16247,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13990,7 +16317,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14008,7 +16381,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14026,7 +16443,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14044,7 +16503,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14062,7 +16565,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14080,7 +16637,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14098,8 +16713,58 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, + "startedAt": "TIMESTAMP", "status": "succeeded" }, { @@ -14116,7 +16781,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14134,7 +16841,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14152,7 +16899,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14170,7 +16957,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14188,7 +17015,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14206,7 +17073,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14224,7 +17131,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14242,7 +17189,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14260,7 +17247,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14278,7 +17305,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14296,7 +17363,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14314,7 +17421,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14332,7 +17479,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14350,7 +17537,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14368,7 +17595,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14386,7 +17653,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14404,7 +17711,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14422,7 +17769,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14440,7 +17831,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14458,7 +17891,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14476,7 +17961,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14494,7 +18025,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14512,7 +18095,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14530,7 +18159,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14548,7 +18221,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14566,7 +18281,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14584,7 +18343,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14602,7 +18415,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14620,7 +18491,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14638,7 +18559,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14656,7 +18619,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14674,7 +18681,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14692,7 +18741,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14710,7 +18803,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14728,7 +18863,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14746,7 +18925,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14764,7 +18985,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14782,7 +19043,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14800,7 +19105,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14818,7 +19165,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14836,13 +19227,55 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { - "commandType": "moveLabware", - "completedAt": "TIMESTAMP", + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", "key": "7914219d53039908cfae2a897f068a00", @@ -14854,7 +19287,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14872,7 +19349,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14890,7 +19409,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14908,7 +19471,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14926,7 +19531,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14944,7 +19593,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14962,7 +19653,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14980,7 +19711,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14998,7 +19773,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15016,7 +19837,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15034,7 +19901,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15052,7 +19973,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15070,7 +20041,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15088,7 +20113,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15106,7 +20181,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15124,7 +20245,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15142,7 +20317,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15160,7 +20393,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15178,7 +20461,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15196,7 +20525,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15214,7 +20585,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15232,7 +20647,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15250,7 +20707,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15268,7 +20769,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15286,7 +20829,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15304,7 +20887,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15322,7 +20949,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15340,7 +21009,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15358,7 +21071,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15376,7 +21131,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15394,7 +21193,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15412,7 +21253,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15430,7 +21315,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15448,7 +21375,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15466,7 +21437,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15484,7 +21497,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15502,7 +21555,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15520,7 +21617,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15538,7 +21681,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15556,7 +21745,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15574,7 +21817,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15592,7 +21885,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15610,7 +21957,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15628,7 +22025,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15646,7 +22089,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15664,7 +22161,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15682,7 +22237,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15700,7 +22305,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15718,7 +22377,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15736,7 +22441,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15754,7 +22511,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15772,7 +22575,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15790,7 +22645,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15808,7 +22709,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15826,7 +22767,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15844,7 +22837,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15862,7 +22901,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15880,7 +22971,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15898,7 +23035,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15916,7 +23105,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15934,7 +23169,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15952,7 +23239,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15970,7 +23303,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15988,7 +23373,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16006,7 +23437,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16024,7 +23495,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16042,7 +23565,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16060,7 +23633,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16078,7 +23705,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16096,7 +23773,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16114,7 +23845,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16132,7 +23921,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16150,7 +23997,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16168,7 +24065,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16186,7 +24129,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16204,7 +24201,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16222,7 +24277,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16240,7 +24353,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16258,7 +24417,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16276,7 +24487,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16294,7 +24551,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16312,7 +24621,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16330,7 +24685,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16348,7 +24743,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16366,7 +24813,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16384,7 +24877,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16402,7 +24947,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16420,7 +25011,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16438,7 +25081,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16456,7 +25145,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16474,7 +25215,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16492,7 +25279,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16510,7 +25349,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16528,7 +25413,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16546,7 +25471,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16564,7 +25541,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16582,7 +25609,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16600,7 +25681,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16618,7 +25749,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16636,7 +25821,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16654,7 +25897,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16672,7 +25973,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16690,7 +26041,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16708,7 +26105,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16726,7 +26177,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17029,7 +26538,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[30c05024e8][Flex_S_v2_20_96_None_SINGLE_4Corners50ul].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[30c05024e8][Flex_S_v2_20_96_None_SINGLE_4Corners50ul].json index b51efe39d43..a6966ce29fb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[30c05024e8][Flex_S_v2_20_96_None_SINGLE_4Corners50ul].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[30c05024e8][Flex_S_v2_20_96_None_SINGLE_4Corners50ul].json @@ -1167,7 +1167,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[31d1aec819][Flex_S_v2_20_96_None_SINGLE_HappyPathNorthSide].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[31d1aec819][Flex_S_v2_20_96_None_SINGLE_HappyPathNorthSide].json index c50efd7f6d3..4a595ea5344 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[31d1aec819][Flex_S_v2_20_96_None_SINGLE_HappyPathNorthSide].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[31d1aec819][Flex_S_v2_20_96_None_SINGLE_HappyPathNorthSide].json @@ -1167,7 +1167,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3580,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6468,7 +6507,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7643,7 +7697,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33c134ee09][pl_Takara_InFusionSnapAssembly_Flex].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33c134ee09][pl_Takara_InFusionSnapAssembly_Flex].json index 34c36cbea16..b68131b959a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33c134ee09][pl_Takara_InFusionSnapAssembly_Flex].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33c134ee09][pl_Takara_InFusionSnapAssembly_Flex].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2811,7 +2826,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3970,7 +4004,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5129,7 +5176,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5528,7 +5588,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[34f32336bc][Flex_X_v2_21_plate_reader_wrong_plate2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[34f32336bc][Flex_X_v2_21_plate_reader_wrong_plate2].json index 7f50cfdd654..32b6258f2ab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[34f32336bc][Flex_X_v2_21_plate_reader_wrong_plate2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[34f32336bc][Flex_X_v2_21_plate_reader_wrong_plate2].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2360,7 +2373,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json index e2bc115fd1b..cec98fa8689 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json index e2bc115fd1b..cec98fa8689 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[376765183a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_left_edge].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[39191e3573][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_row].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[39191e3573][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_row].json index b574f7610f7..864825a2bda 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[39191e3573][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_row].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[39191e3573][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_row].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json index b38642d42ac..1559f5ba9d3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3a039d726f][pl_Dynabeads_IP_Flex_96well_final].json @@ -1292,7 +1292,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1539,7 +1552,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1786,7 +1812,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1880,7 +1921,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3038,7 +3092,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4197,7 +4266,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5356,7 +5438,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5899,7 +5994,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7183,7 +7293,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11035,7 +11164,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13857,7 +14036,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18851,7 +19084,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21673,7 +21956,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23836,7 +24173,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26658,7 +27045,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28821,7 +29262,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31643,7 +32134,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33806,7 +34351,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36628,7 +37223,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cec61dfd9][Flex_S_v2_19_KAPA_Library_Quant].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cec61dfd9][Flex_S_v2_19_KAPA_Library_Quant].json index 489f4447f21..6d4bb80ddab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cec61dfd9][Flex_S_v2_19_KAPA_Library_Quant].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cec61dfd9][Flex_S_v2_19_KAPA_Library_Quant].json @@ -1340,7 +1340,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5689,7 +5704,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7313,7 +7341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8491,7 +8534,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8738,7 +8800,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9916,7 +9991,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11094,7 +11182,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12365,7 +12466,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14128,7 +14246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25965,7 +26098,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cf6a3778e][Flex_S_v2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cf6a3778e][Flex_S_v2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index 0f988bca20b..e7d321f62ad 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cf6a3778e][Flex_S_v2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3cf6a3778e][Flex_S_v2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -2296,7 +2296,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3461,7 +3476,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3584,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4728,7 +4771,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4797,7 +4853,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5955,7 +6024,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7113,7 +7199,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8271,7 +8372,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10098,7 +10212,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10372,7 +10512,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10390,7 +10560,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11167,7 +11385,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11185,7 +11443,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11203,7 +11501,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11221,7 +11559,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11239,7 +11617,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11257,7 +11675,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11275,7 +11733,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11293,7 +11795,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11311,7 +11855,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11329,7 +11917,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11347,7 +11977,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11365,7 +12047,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11383,7 +12111,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11401,7 +12181,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11419,16 +12245,56 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { - "commandType": "moveLabware", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "d371cbd83b68cbffb7be6e25c3b68254", + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d371cbd83b68cbffb7be6e25c3b68254", "notes": [], "params": { "labwareId": "UUID", @@ -11437,7 +12303,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11455,7 +12361,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11473,7 +12419,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11491,7 +12481,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11509,7 +12541,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11527,7 +12603,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11545,7 +12663,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11563,7 +12733,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11581,7 +12797,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11599,7 +12867,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11617,7 +12931,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11635,7 +12989,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11653,7 +13047,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11671,7 +13105,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11689,7 +13167,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11707,7 +13227,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11725,7 +13289,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11743,7 +13349,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11761,7 +13419,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11779,7 +13483,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11797,7 +13553,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11815,7 +13617,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11833,7 +13679,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11851,7 +13743,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11869,7 +13807,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11887,7 +13879,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11905,7 +13947,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11923,7 +14019,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11941,7 +14087,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11959,7 +14151,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11977,7 +14215,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11995,7 +14279,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12013,7 +14351,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12031,7 +14419,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12049,7 +14491,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12067,7 +14559,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12085,7 +14631,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12103,7 +14699,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12121,7 +14771,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12139,7 +14839,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12157,7 +14911,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12175,7 +14987,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12193,7 +15063,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12211,7 +15139,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12229,7 +15207,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12247,7 +15279,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12265,7 +15347,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12283,7 +15419,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12301,7 +15495,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12319,7 +15571,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12591,7 +15889,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12607,7 +15945,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12702,6 +16066,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -12767,7 +16144,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12829,6 +16246,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -12895,7 +16325,46 @@ "strategy": "manualMoveWithPause" }, "result": { - "offsetId": "UUID" + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "offsetId": "UUID", + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12960,7 +16429,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13069,7 +16571,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13087,7 +16622,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json index be83efdb3d1..655cfaad1d4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4148613317][Flex_S_v2_19_ligseq].json @@ -2126,7 +2126,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3410,7 +3425,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4629,7 +4657,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5787,7 +5828,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7077,7 +7133,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8235,7 +8306,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9393,7 +9477,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10551,7 +10650,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13482,7 +13596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14499,7 +14659,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16865,7 +17071,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17180,7 +17432,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17432,7 +17730,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19708,7 +20052,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20182,7 +20572,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20511,7 +20947,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20985,7 +21467,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21314,7 +21842,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21972,7 +22546,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22287,7 +22907,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22459,7 +23125,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json index 42f66954c50..544eb269caf 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json @@ -77,7 +77,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1235,7 +1248,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1304,7 +1334,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2462,7 +2505,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2531,7 +2591,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3689,7 +3762,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4973,7 +5063,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6257,7 +6360,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7436,7 +7554,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8615,7 +8746,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8710,7 +8856,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8805,7 +8964,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9052,7 +9224,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9879,7 +10064,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10070,7 +10299,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10370,7 +10641,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10561,7 +10878,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11089,7 +11452,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11280,7 +11687,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11580,7 +12029,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11771,7 +12266,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12313,7 +12854,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12491,7 +13076,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12791,7 +13418,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12969,7 +13642,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json index 15cc1b07236..8ed38948ce4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json @@ -120,7 +120,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -368,7 +381,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -519,7 +545,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1673,7 +1712,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4753259c3e][pl_sample_dilution_with_96_channel_pipette].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4753259c3e][pl_sample_dilution_with_96_channel_pipette].json index b45ed38fb45..21461064b5f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4753259c3e][pl_sample_dilution_with_96_channel_pipette].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4753259c3e][pl_sample_dilution_with_96_channel_pipette].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2811,7 +2826,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3990,7 +4024,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4082,7 +4133,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4151,7 +4215,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5309,7 +5386,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json index c0eeca7fad0..dea0d423437 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4645,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5794,7 +5837,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7023,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8133,7 +8214,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9307,7 +9409,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9431,7 +9550,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10606,7 +10738,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10853,7 +10998,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11007,7 +11165,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11025,7 +11209,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11089,7 +11313,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11153,7 +11417,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11217,7 +11521,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11281,7 +11625,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json index b9c7fe3eccb..ccd6f05ce50 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2668,7 +2694,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2914,7 +2953,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json index 2c0e359ce5f..877630a9947 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3490,7 +3516,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3736,7 +3775,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3829,7 +3881,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json index 25f1fc6f062..062e7073bf2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json index 01407d2b421..4b45abf4d02 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3736,7 +3783,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5019,7 +5081,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6381,7 +6462,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8011,7 +8107,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11233,7 +11344,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12156,7 +12317,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15405,7 +15620,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19334,7 +19599,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23759,7 +24039,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24968,7 +25302,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26196,7 +26580,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json index 00eb89d9c69..9b9bf721300 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4664,7 +4713,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4820,7 +4888,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5067,7 +5150,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5314,7 +5410,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5561,7 +5670,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6720,7 +6844,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7879,7 +8016,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9038,7 +9188,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10197,7 +10360,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14137,7 +14313,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14915,7 +15141,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15331,7 +15611,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15781,7 +16111,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16197,7 +16581,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16647,7 +17081,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17063,7 +17551,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17513,7 +18051,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19284,7 +19876,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19734,7 +20376,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20150,7 +20846,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20600,7 +21346,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21016,7 +21816,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21466,7 +22316,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21882,7 +22786,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22332,7 +23286,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22916,7 +23924,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json index edb78f79ace..043c232ab03 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json @@ -1196,7 +1196,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2350,7 +2363,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2444,7 +2470,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "10", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout10", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2538,7 +2577,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "11", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout11", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2632,7 +2684,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2880,7 +2945,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2974,7 +3052,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3222,7 +3313,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json index e514b696c6a..06664a232af 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json index aeac8222289..163b844c723 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json @@ -1160,7 +1160,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json index c639bf70fc2..023e39e6787 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json index 69e890d57fd..e22b94b1628 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1527,7 +1540,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "10", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout10", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json index 22587a32c81..5a0df68535a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4848,7 +4895,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6192,7 +6254,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9773,7 +9865,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11068,7 +11206,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15837,7 +15990,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17475,7 +17674,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18703,7 +18948,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20044,7 +20304,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21682,7 +21988,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23064,7 +23416,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24702,7 +25100,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25930,7 +26374,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28369,7 +28826,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35717,7 +36220,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39564,7 +40113,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -44526,7 +45088,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45740,7 +46348,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -45759,7 +46381,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45777,7 +46434,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46658,7 +47359,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json index 737dc286bb5..3c91316df19 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json @@ -2126,7 +2126,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3410,7 +3425,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4629,7 +4657,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5787,7 +5828,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7077,7 +7133,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8235,7 +8306,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9393,7 +9477,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10551,7 +10650,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13482,7 +13596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14499,7 +14659,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16865,7 +17071,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17180,7 +17432,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17432,7 +17730,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19708,7 +20052,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20182,7 +20572,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20511,7 +20947,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20985,7 +21467,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21314,7 +21842,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21972,7 +22546,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22287,7 +22907,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22459,7 +23125,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json index 026a1474062..5af0defc047 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3100,7 +3134,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6452,7 +6501,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7631,7 +7695,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8976,7 +9059,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13716,7 +13812,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16728,7 +16837,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19740,7 +19862,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -22752,7 +22887,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26277,7 +26427,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -27435,7 +27598,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -27504,7 +27684,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28662,7 +28855,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -34471,7 +34681,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34489,7 +34749,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34521,7 +34835,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41754,7 +42114,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41963,7 +42373,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42317,7 +42781,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42526,7 +43040,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42880,7 +43448,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -43089,7 +43707,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -43443,7 +44115,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -43652,7 +44374,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45909,7 +46685,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json index accbbbbda1e..a5056e60b04 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json @@ -1161,7 +1161,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json index 122bbadc03d..5cd7ebaedbb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json index ac1235fe4a1..9f8b487f01f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json @@ -101,7 +101,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json index 341397530c7..d31aef09924 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json index 1a2e4840a95..a3a57dd9c54 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json @@ -254,7 +254,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2579,7 +2609,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3737,7 +3780,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json index 4b86c4eccdc..6be97baa775 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4633,7 +4682,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4789,7 +4857,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5036,7 +5119,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5283,7 +5379,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6442,7 +6551,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7723,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8760,7 +8895,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12533,7 +12681,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13040,7 +13238,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13404,7 +13656,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13881,7 +14183,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14245,7 +14601,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14722,7 +15128,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15086,7 +15546,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15743,7 +16253,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15851,7 +16415,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json index 77e2166f737..c734b8ee674 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json index df66e371d7b..d1bceb74c4d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json index e4961b84c9f..f1ef75b5ab0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json @@ -1167,7 +1167,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3580,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json index e8590ac1760..5e46350d090 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2623,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3810,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json index 5bb400f3266..712538407b8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json @@ -1748,7 +1748,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3031,7 +3046,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4731,7 +4759,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6014,7 +6057,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7297,7 +7353,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8580,7 +8651,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9758,7 +9844,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10936,7 +11035,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11005,7 +11117,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12163,7 +12288,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12232,7 +12374,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13390,7 +13545,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18348,7 +18520,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18376,7 +18594,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18435,7 +18697,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18508,7 +18812,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18758,7 +19108,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19092,7 +19488,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19342,7 +19784,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19676,7 +20164,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19926,7 +20460,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23838,7 +24418,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24088,7 +24714,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24422,7 +25094,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24672,7 +25390,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25006,7 +25770,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25256,7 +26066,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26725,7 +27581,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26975,7 +27877,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27017,7 +27963,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32823,7 +33811,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32851,7 +33885,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32910,7 +33988,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32983,7 +34103,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33233,7 +34399,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33567,7 +34779,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33817,7 +35075,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34151,7 +35455,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34401,7 +35751,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38313,7 +39709,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38563,7 +40005,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38897,7 +40385,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39147,7 +40681,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39481,7 +41061,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39731,7 +41357,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41200,7 +42872,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41450,7 +43168,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41492,7 +43254,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47298,7 +49102,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47326,7 +49176,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47385,7 +49279,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47458,7 +49394,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47708,7 +49690,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48042,7 +50070,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48292,7 +50366,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48626,7 +50746,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48876,7 +51042,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -52788,7 +55000,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -53038,7 +55296,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -53372,7 +55676,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -53622,7 +55972,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -53956,7 +56352,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -54206,7 +56648,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55675,7 +58163,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55925,7 +58459,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55967,7 +58545,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json index a6b46f54c00..0e0e92f5b42 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json @@ -1650,7 +1650,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2933,7 +2948,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4566,7 +4594,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5785,7 +5828,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6943,7 +6999,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8233,7 +8304,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9391,7 +9477,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10549,7 +10648,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11707,7 +11821,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15569,7 +15696,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16829,7 +17002,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17390,7 +17609,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18534,7 +18799,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19081,7 +19392,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20225,7 +20582,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20772,7 +21175,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21916,7 +22365,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22953,7 +23448,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25385,7 +25926,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25522,7 +26109,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31993,7 +32626,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35300,7 +35979,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42210,7 +42935,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44771,7 +45542,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json index 03aae1235b6..d8cb851ea96 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json @@ -1175,7 +1175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2328,7 +2341,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2613,7 +2639,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json index 9afcc19539c..234d7ab6d33 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json @@ -1303,7 +1303,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2587,7 +2602,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3746,7 +3778,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4905,7 +4952,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5908,7 +5970,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13397,7 +13472,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20886,7 +20974,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28375,7 +28476,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[718c468b7d][Flex_X_v2_21_plate_reader_no_close_lid].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[718c468b7d][Flex_X_v2_21_plate_reader_no_close_lid].json index 3375ed2fadd..9b00fd40331 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[718c468b7d][Flex_X_v2_21_plate_reader_no_close_lid].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[718c468b7d][Flex_X_v2_21_plate_reader_no_close_lid].json @@ -1225,7 +1225,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2383,7 +2396,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json index 0eabefc61c9..fb49ec33e02 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json @@ -1283,7 +1283,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2497,7 +2512,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3672,7 +3700,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json index be40cf92526..9165680a90a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3525,7 +3551,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4699,7 +4738,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json index 504f3f1a239..82599a9930a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json @@ -1340,7 +1340,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5689,7 +5704,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7313,7 +7341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8491,7 +8534,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8738,7 +8800,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9916,7 +9991,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11094,7 +11182,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12365,7 +12466,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14128,7 +14246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25965,7 +26098,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json index 744032008ce..faa39e6f5ad 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3736,7 +3783,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5019,7 +5081,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6381,7 +6462,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8011,7 +8107,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11233,7 +11344,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12156,7 +12317,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15405,7 +15620,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19334,7 +19599,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23759,7 +24039,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24968,7 +25302,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26196,7 +26580,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json index c2da7c45698..cb98406075d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d16d5dbf0][Flex_X_v2_21_tc_lids_wrong_target].json @@ -534,7 +534,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1817,7 +1832,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1884,7 +1912,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1903,7 +1944,59 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -2061,7 +2154,24 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2219,7 +2329,28 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2377,7 +2508,32 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2535,7 +2691,36 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2693,7 +2878,40 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json index 485e79b56ad..268b8174b2b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json index c567c61d095..f351bfa5b89 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json @@ -560,7 +560,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1844,7 +1859,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3063,7 +3097,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4687,7 +4738,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5866,7 +5932,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6113,7 +6198,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7271,7 +7369,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8566,7 +8679,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9724,7 +9852,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10882,7 +11023,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12040,7 +12196,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26920,7 +27089,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34497,7 +34716,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35238,7 +35511,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36092,7 +36415,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39622,7 +39999,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47213,7 +47640,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47954,7 +48435,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -52898,7 +53429,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -56954,7 +57539,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -64531,7 +65166,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -65272,7 +65961,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -67737,7 +68476,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -69153,7 +69946,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -70710,7 +71553,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -71316,7 +72213,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -74386,7 +75333,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -75127,7 +76128,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json index b4e7172cb6c..df73a55de8a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json @@ -1341,7 +1341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4144,7 +4174,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4391,7 +4440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6131,7 +6193,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15277,7 +15369,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26457,7 +26564,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30304,7 +30457,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -35848,7 +36016,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36757,7 +36971,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40170,7 +40430,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -43565,7 +43838,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47018,7 +47337,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51060,7 +51425,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -56508,7 +56886,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -57722,7 +58146,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -57741,7 +58179,42 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -57759,7 +58232,51 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -58640,7 +59157,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 71d5d247e8d..3535475bea7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4621,7 +4647,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5785,7 +5828,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7019,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7083,7 +7160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8258,7 +8348,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8505,7 +8608,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json index d929f2211bb..13c7f5d67ba 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3515,7 +3549,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4694,7 +4743,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7706,7 +7774,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10718,7 +10799,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15458,7 +15554,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18470,7 +18579,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -21482,7 +21606,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -24389,7 +24526,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -27401,7 +27553,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -30926,7 +31091,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -32084,7 +32262,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -32153,7 +32348,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -33311,7 +33519,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -35742,7 +35967,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35760,7 +36025,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38041,7 +38348,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38371,7 +38728,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38597,7 +39008,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38867,7 +39328,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39093,7 +39608,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39363,7 +39928,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39589,7 +40208,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39859,7 +40528,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44712,7 +45435,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45012,7 +45785,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45238,7 +46065,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45508,7 +46385,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45734,7 +46665,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46004,7 +46985,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46230,7 +47265,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46500,7 +47585,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48758,7 +49897,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json index 3e65e6d11ca..fe534adfd97 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json @@ -1656,7 +1656,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2917,7 +2930,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4071,7 +4101,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5227,7 +5270,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json index a8dc215c6e1..bf8feeaf64a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json @@ -1166,7 +1166,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2352,7 +2367,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3519,7 +3547,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4802,7 +4843,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json index c90d4eae5e8..5da2003701a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json index 546aa74d915..f703eb3b420 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3553,7 +3579,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json index 23a738dea13..9da7b5f31ae 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json @@ -1292,7 +1292,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2576,7 +2589,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3860,7 +3888,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3954,7 +3995,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4048,7 +4102,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4142,7 +4211,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4389,7 +4471,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4913,7 +5008,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6197,7 +6307,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7814,7 +7943,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json index 69045761942..abd8fa243a2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json @@ -1166,7 +1166,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2352,7 +2367,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3519,7 +3547,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json index 4e22ae14eb6..f68f07f294e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4848,7 +4895,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6192,7 +6254,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9773,7 +9865,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11068,7 +11206,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15837,7 +15990,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17475,7 +17674,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18703,7 +18948,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20044,7 +20304,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21682,7 +21988,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23064,7 +23416,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24702,7 +25100,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25930,7 +26374,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28369,7 +28826,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38201,7 +38704,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42006,7 +42555,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -46926,7 +47488,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48140,7 +48748,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -48159,7 +48781,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -48177,7 +48834,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -49262,7 +49963,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json index 85f4f9f5ea7..8c1e2358762 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json index 27170407315..ea91e0ddab0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3100,7 +3134,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4724,7 +4773,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5903,7 +5967,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7248,7 +7331,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8532,7 +8628,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9816,7 +9925,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11100,7 +11222,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12384,7 +12519,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12453,7 +12603,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13611,7 +13774,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13680,7 +13860,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14838,7 +15031,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20647,7 +20857,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20665,7 +20925,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20697,7 +21011,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27930,7 +28290,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28139,7 +28549,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28493,7 +28957,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28672,7 +29186,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29026,7 +29594,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29205,7 +29823,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29559,7 +30231,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29738,7 +30460,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31995,7 +32771,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99c15c6c62][Flex_S_v2_21_tc_lids_happy_path].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99c15c6c62][Flex_S_v2_21_tc_lids_happy_path].json index a33f00a85fa..b8498fb063f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99c15c6c62][Flex_S_v2_21_tc_lids_happy_path].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99c15c6c62][Flex_S_v2_21_tc_lids_happy_path].json @@ -75,7 +75,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -233,7 +246,24 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -391,7 +421,28 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -549,7 +600,32 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1857,7 +1933,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1886,7 +1977,71 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -1914,7 +2069,54 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID", + "lidId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -1942,7 +2144,67 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -1970,7 +2232,62 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID", + "lidId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -1998,7 +2315,63 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -2026,7 +2399,70 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID", + "lidId": "UUID" + }, + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json index ccab060d501..7541150b152 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json @@ -1175,7 +1175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1269,7 +1282,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2427,7 +2453,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3585,7 +3624,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4743,7 +4795,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5901,7 +5966,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json index 6263cb86172..571fed66fba 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json @@ -77,7 +77,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1235,7 +1248,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json index ddc34e08100..586ddf8369b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json @@ -101,7 +101,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json index c5cd979e87d..cb5cbe88578 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json @@ -1182,7 +1182,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2356,7 +2369,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2425,7 +2451,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3583,7 +3624,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3652,7 +3712,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4810,7 +4883,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5966,7 +6056,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7122,7 +7218,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9150,7 +9252,39 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -9166,7 +9300,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -9184,7 +9348,52 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -9202,7 +9411,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -9482,7 +9732,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -9498,7 +9774,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json index 5113dbf3b85..6de88f47a44 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json index a42786e59e3..9dc374a747d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json @@ -1303,7 +1303,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1827,7 +1842,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3111,7 +3141,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3205,7 +3254,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3299,7 +3361,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4644,7 +4719,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5823,7 +5913,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6982,7 +7089,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8141,7 +8263,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9300,7 +9435,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10459,7 +10609,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11618,7 +11781,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19752,7 +19928,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19770,7 +19988,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30335,7 +30593,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35887,7 +36195,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39706,7 +40068,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45258,7 +45670,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47589,7 +48055,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json index 6da5b62e4ec..157d5c524d9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5848,7 +5897,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7145,7 +7209,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10098,7 +10175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11599,7 +11689,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11736,7 +11872,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12665,7 +12847,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12713,7 +12941,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13959,7 +14233,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14387,7 +14676,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14840,7 +15175,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15341,7 +15722,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16504,7 +16931,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16629,7 +17102,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16783,7 +17302,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16829,7 +17394,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16922,7 +17533,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17392,7 +18049,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17893,7 +18596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18423,7 +19172,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20678,7 +21473,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21956,7 +22797,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22821,7 +23708,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24414,7 +25347,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25861,7 +26807,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26551,7 +27543,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json index 814c874d188..91a2192f6c9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5391,7 +5440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6570,7 +6632,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7853,7 +7928,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10676,7 +10764,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11679,7 +11780,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11772,7 +11917,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12788,7 +12975,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12895,7 +13126,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14818,7 +15091,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14925,7 +15242,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14985,7 +15344,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16143,7 +16548,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18308,7 +18728,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20171,7 +20635,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21243,7 +21749,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21622,7 +22172,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21654,7 +22244,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21686,7 +22318,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23328,7 +24006,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23534,7 +24256,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23566,7 +24330,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25744,7 +26554,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27607,7 +28461,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28679,7 +29575,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json index 8faa3209168..ca7c7f6a268 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json @@ -2126,7 +2126,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3410,7 +3425,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4629,7 +4657,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5787,7 +5828,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7077,7 +7133,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8235,7 +8306,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9393,7 +9477,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10551,7 +10650,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13482,7 +13596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14499,7 +14659,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16865,7 +17071,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17180,7 +17432,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17432,7 +17730,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19708,7 +20052,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20182,7 +20572,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20511,7 +20947,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20985,7 +21467,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21314,7 +21842,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21972,7 +22546,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22287,7 +22907,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22459,7 +23125,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json index 0c84054c2ff..5479f430569 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -615,7 +630,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1773,7 +1801,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1842,7 +1887,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3000,7 +3058,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4158,7 +4233,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4227,7 +4316,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5511,7 +5613,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6795,7 +6910,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7974,7 +8104,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9153,7 +9297,23 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1", + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9248,7 +9408,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9343,7 +9516,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9590,7 +9776,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10151,7 +10350,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10258,7 +10509,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10463,7 +10764,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10497,7 +10840,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10604,7 +11001,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10809,7 +11256,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11071,7 +11564,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11178,7 +11723,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11383,7 +11978,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11417,7 +12054,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11524,7 +12215,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11729,7 +12470,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11775,7 +12562,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11793,7 +12620,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11811,7 +12678,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11829,7 +12736,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11847,7 +12794,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12109,7 +13104,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12216,7 +13263,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12408,7 +13505,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12442,7 +13581,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12549,7 +13740,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1B1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12741,7 +13982,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a5ba8297e3][Flex_X_v2_21_plate_reader_no_trash].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a5ba8297e3][Flex_X_v2_21_plate_reader_no_trash].json index f10341a2a2a..b1f9e0900f6 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a5ba8297e3][Flex_X_v2_21_plate_reader_no_trash].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a5ba8297e3][Flex_X_v2_21_plate_reader_no_trash].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2370,7 +2383,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2453,7 +2479,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "absorbanceReaderV1B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "absorbanceReaderV1B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json index aa07f2c7074..53f9f55ce8b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json @@ -1167,7 +1167,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3580,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6468,7 +6507,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7643,7 +7695,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json index 9be279fa95e..ebc92c0620b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json @@ -100,7 +100,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1274,7 +1287,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1520,7 +1546,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2803,7 +2842,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2897,7 +2949,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4055,7 +4124,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5213,7 +5297,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6371,7 +6468,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7529,7 +7639,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8687,7 +8812,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9845,7 +9983,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json index 784df7d0aa1..a8c68685ea5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5391,7 +5440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6570,7 +6632,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7853,7 +7928,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10676,7 +10764,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11679,7 +11780,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11772,7 +11917,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12788,7 +12975,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12895,7 +13126,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14818,7 +15091,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14925,7 +15242,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14985,7 +15344,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16143,7 +16548,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18308,7 +18728,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20171,7 +20635,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21243,7 +21749,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21622,7 +22172,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21654,7 +22244,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21686,7 +22318,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23328,7 +24006,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23534,7 +24256,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23566,7 +24330,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25744,7 +26554,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27607,7 +28461,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28679,7 +29575,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json index 6c5410c683b..74ae3462b1f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json @@ -1750,7 +1750,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3615,7 +3630,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4898,7 +4926,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6076,7 +6117,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7241,7 +7295,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8419,7 +8486,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9577,7 +9661,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10735,7 +10832,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11893,7 +12003,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13051,7 +13176,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14209,7 +14349,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15367,7 +15520,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16525,7 +16691,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17683,7 +17862,23 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1", + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20998,7 +21193,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21279,7 +21518,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22585,7 +22866,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22820,7 +23145,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24126,7 +24493,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24616,7 +25027,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25964,7 +26417,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26245,7 +26742,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27565,7 +28108,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27800,7 +28389,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29120,7 +29755,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29610,7 +30291,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29690,7 +30413,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31010,7 +31777,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31245,7 +32058,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32565,7 +33424,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -32800,7 +33705,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34120,7 +35071,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34610,7 +35607,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40735,7 +41774,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41713,7 +42796,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41731,7 +42847,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41749,7 +42898,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -41767,7 +42956,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -42257,7 +43486,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -43594,7 +44865,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json index f4bafb81e72..aafe1a78b71 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json @@ -1316,7 +1316,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2492,7 +2507,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3668,7 +3689,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5323,7 +5350,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6501,7 +6543,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7680,7 +7741,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9481,7 +9555,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9741,7 +9830,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10899,7 +11001,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12057,7 +12172,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13215,7 +13343,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14373,7 +14514,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -21671,7 +21827,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22783,7 +22985,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23860,7 +24108,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23892,7 +24186,44 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24118,7 +24449,35 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27598,7 +27957,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28646,7 +29051,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29723,7 +30174,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29755,7 +30252,44 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json index b5cf2f13f52..2e70b878673 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json @@ -1210,7 +1210,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2493,7 +2506,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3667,7 +3693,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5011,7 +5054,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5080,7 +5136,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6238,7 +6309,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7412,7 +7502,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8695,7 +8798,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8764,7 +8880,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9922,7 +10053,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11205,7 +11355,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12125,7 +12288,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12153,7 +12360,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12181,7 +12428,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13025,7 +13314,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json index 752268901b8..fc388442310 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json index da74d2b109e..7b509edf406 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json @@ -1656,7 +1656,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2917,7 +2930,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3274,7 +3304,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4431,7 +4474,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4525,7 +4581,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5679,7 +5748,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json index 2a342fcb3b8..440bed88a3f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json @@ -77,7 +77,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1235,7 +1250,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2393,7 +2427,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3579,7 +3630,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4746,7 +4810,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6029,7 +6106,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json index 6fe758b1dcf..0426ed34db3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2379,7 +2392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3553,7 +3579,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json index 9149f86b3eb..228a323b235 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json @@ -1166,7 +1166,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2352,7 +2367,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3519,7 +3547,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json index 96dab168388..1f72c507e73 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json @@ -1187,7 +1187,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2366,7 +2379,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3545,7 +3571,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4724,7 +4763,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6362,7 +6414,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6454,7 +6521,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7612,7 +7694,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json index 7fa95382fb8..1628f68f661 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2810,7 +2825,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4270,7 +4304,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json index d55cf157f22..e3379a71c69 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2312,7 +2325,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3525,7 +3551,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4699,7 +4738,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json index 9256b703b2c..820e2cb4a96 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5182,7 +5216,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6361,7 +6410,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7706,7 +7774,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9021,7 +9104,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12033,7 +12129,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15045,7 +15156,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18057,7 +18183,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -20964,7 +21103,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23871,7 +24023,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -27396,7 +27561,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28554,7 +28732,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28623,7 +28818,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -29781,7 +29989,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -33356,7 +33581,49 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33419,7 +33686,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33719,7 +34036,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34005,7 +34376,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34245,7 +34666,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34531,7 +35006,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34771,7 +35296,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37917,7 +38496,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38217,7 +38846,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38503,7 +39186,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38743,7 +39476,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39029,7 +39816,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39269,7 +40106,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39555,7 +40446,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39795,7 +40736,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40843,7 +41838,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ba14bd77a8][Flex_X_v2_21_plate_reader_bad_slot].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ba14bd77a8][Flex_X_v2_21_plate_reader_bad_slot].json index d9a486fcf9a..40e5899a456 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ba14bd77a8][Flex_X_v2_21_plate_reader_bad_slot].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ba14bd77a8][Flex_X_v2_21_plate_reader_bad_slot].json @@ -1166,7 +1166,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2370,7 +2387,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json index 6ca11baef34..04a98796703 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json @@ -282,7 +282,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1456,7 +1469,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2614,7 +2644,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3772,7 +3815,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4946,7 +5002,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6104,7 +6175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7262,7 +7346,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8436,7 +8533,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9594,7 +9706,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10752,7 +10877,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json index 588a958e032..6e5ef29bcb4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2623,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3810,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json index 6caf8361175..4a3d59acab3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json index 3bca981777a..7a5e5ae0cb5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json @@ -1180,7 +1180,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1274,7 +1287,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1522,7 +1548,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1673,7 +1712,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json index eeef20742b5..3d07c2879b6 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json @@ -1160,7 +1160,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json index ee6ea8de744..6c94e826100 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json @@ -1182,7 +1182,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2356,7 +2369,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2425,7 +2451,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3583,7 +3624,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3652,7 +3712,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4810,7 +4883,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5966,7 +6056,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7122,7 +7218,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8280,7 +8382,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9438,7 +9553,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11491,7 +11620,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11509,7 +11675,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11527,7 +11730,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11545,7 +11796,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11850,7 +12149,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11868,7 +12204,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11886,7 +12259,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11904,7 +12318,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12208,7 +12663,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12226,7 +12714,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json index c7cc6586b5d..c5950b63071 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json @@ -1341,7 +1341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4144,7 +4174,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4391,7 +4440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6131,7 +6193,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12120,7 +12212,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19760,7 +19867,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23511,7 +23664,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28293,7 +28461,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28998,7 +29212,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29816,7 +30076,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31086,7 +31392,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -34530,7 +34849,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40035,7 +40400,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -43270,7 +43648,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44484,7 +44908,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -44503,7 +44941,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -44521,7 +44994,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45300,7 +45817,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -50214,7 +50777,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51428,7 +52037,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -51447,7 +52069,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51465,7 +52122,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55490,7 +56191,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -61037,7 +61784,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -61056,7 +61816,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -61074,7 +61867,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -64350,7 +65183,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -65157,7 +66036,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json index a2fa133144c..7e8db0b6191 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json @@ -1196,7 +1196,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2350,7 +2363,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2610,7 +2636,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "10", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout10", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3767,7 +3806,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3993,7 +4045,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json index 00720d8483b..12535a9fdec 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json @@ -1167,7 +1167,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2495,7 +2510,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3670,7 +3698,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json index e899cd56b74..5acabd2d71e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json @@ -1630,7 +1630,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2789,7 +2804,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3948,7 +3976,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5106,7 +5147,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5175,7 +5233,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6333,7 +6404,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6402,7 +6490,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7560,7 +7661,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13132,7 +13250,59 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13223,7 +13393,39 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json index 376f1a9c3d3..f7d14fc8d98 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json index c8f00ac080e..dc3ff326133 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3454,7 +3488,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4633,7 +4682,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4789,7 +4857,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5036,7 +5119,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5283,7 +5379,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6442,7 +6551,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7723,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8760,7 +8895,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12776,7 +12924,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13256,7 +13454,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14148,7 +14400,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14628,7 +14930,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14945,7 +15301,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15395,7 +15801,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15712,7 +16172,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16162,7 +16672,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16479,7 +17043,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16929,7 +17543,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17532,7 +18200,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json index a9306a86942..b4bec996125 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json @@ -1341,7 +1341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4144,7 +4174,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4391,7 +4440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6131,7 +6193,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12120,7 +12212,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19727,7 +19834,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23436,7 +23589,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28176,7 +28344,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29289,7 +29503,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30107,7 +30367,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -31377,7 +31683,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -34821,7 +35140,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40284,7 +40649,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -43974,7 +44352,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45188,7 +45612,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -45207,7 +45645,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -45225,7 +45698,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -46412,7 +46929,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51326,7 +51889,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55142,7 +55751,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -55161,7 +55783,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -55179,7 +55836,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -56569,7 +57270,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -62900,7 +63647,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -62919,7 +63679,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -62937,7 +63730,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -65345,7 +66178,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -66560,7 +67439,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -67788,7 +68713,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -67807,7 +68745,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -67825,7 +68796,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json index 28841e807c1..9ac317f03ef 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2324,7 +2337,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3502,7 +3528,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3595,7 +3636,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3841,7 +3899,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json index 426c94558c1..ca1019b01e2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3440,7 +3474,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4668,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5964,7 +6032,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7248,7 +7329,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8532,7 +8626,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9816,7 +9925,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11100,7 +11222,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12384,7 +12519,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12453,7 +12603,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13611,7 +13774,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13680,7 +13860,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14838,7 +15031,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -19314,7 +19524,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19523,7 +19783,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22133,7 +22447,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22342,7 +22706,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22664,7 +23082,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22843,7 +23311,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23165,7 +23687,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23344,7 +23916,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23666,7 +24292,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23845,7 +24521,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24167,7 +24897,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24346,7 +25126,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24916,7 +25750,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json index 9214cce5922..ca64b177c47 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json @@ -532,7 +532,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1816,7 +1831,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3440,7 +3474,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4668,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5964,7 +6032,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10704,7 +10785,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15444,7 +15538,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18456,7 +18565,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -21468,7 +21590,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -24480,7 +24615,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -28005,7 +28155,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -29163,7 +29326,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -29232,7 +29412,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -30390,7 +30583,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -34866,7 +35076,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35075,7 +35335,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37685,7 +37999,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37894,7 +38258,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38216,7 +38634,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38425,7 +38893,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38747,7 +39269,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38956,7 +39528,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39278,7 +39904,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39487,7 +40163,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39809,7 +40539,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40018,7 +40798,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40588,7 +41422,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json index c7cb1821806..f87dcd6b750 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4619,7 +4645,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5794,7 +5837,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6959,7 +7023,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8133,7 +8214,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9307,7 +9409,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9431,7 +9550,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10606,7 +10738,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10853,7 +10998,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11007,7 +11165,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11025,7 +11209,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11089,7 +11313,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11153,7 +11417,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11217,7 +11521,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11281,7 +11625,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json index a8f00e1a0f1..4f014440404 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json @@ -1341,7 +1341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4144,7 +4174,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4391,7 +4440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6131,7 +6193,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7601,7 +7678,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15277,7 +15369,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -26457,7 +26564,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30304,7 +30457,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -35848,7 +36016,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -36757,7 +36971,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40170,7 +40430,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -43565,7 +43838,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -47018,7 +47337,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -51060,7 +51425,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -56508,7 +56886,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -57722,7 +58146,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -57741,7 +58179,42 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -57759,7 +58232,51 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -58640,7 +59157,53 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json index a19d8ed0c76..e8a6d3a17e4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json @@ -1786,7 +1786,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2965,7 +2980,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3212,7 +3246,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3736,7 +3783,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5019,7 +5081,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6381,7 +6462,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8011,7 +8107,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11233,7 +11344,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12156,7 +12317,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15405,7 +15620,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19334,7 +19599,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -23759,7 +24039,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24968,7 +25302,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26196,7 +26580,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json index 1587a2ce11d..f43a71b98ce 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json @@ -1166,7 +1166,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2352,7 +2367,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3519,7 +3547,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json index 30710e984f2..53978a0130c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json @@ -1161,7 +1161,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "8", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout8", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2373,7 +2386,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3548,7 +3574,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6462,7 +6501,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json index b3678fd89b2..aa76a03a6d3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5391,7 +5440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6570,7 +6632,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7853,7 +7928,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10676,7 +10764,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11679,7 +11780,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11772,7 +11917,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12788,7 +12975,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12895,7 +13126,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14818,7 +15091,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14925,7 +15242,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14985,7 +15344,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16143,7 +16548,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -18308,7 +18728,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20171,7 +20635,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21243,7 +21749,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21622,7 +22172,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21654,7 +22244,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21686,7 +22318,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23328,7 +24006,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23534,7 +24256,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23566,7 +24330,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -25744,7 +26554,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27607,7 +28461,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -28679,7 +29575,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index 775b6e2b658..13e013b8c95 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -2296,7 +2296,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3461,7 +3476,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3584,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4728,7 +4771,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4797,7 +4853,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5955,7 +6024,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7113,7 +7199,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8271,7 +8372,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10098,7 +10212,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10372,7 +10512,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10390,7 +10560,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11167,7 +11385,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11185,7 +11443,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11203,7 +11501,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11221,7 +11559,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11239,7 +11617,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11257,7 +11675,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11275,7 +11733,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11293,7 +11795,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11311,7 +11855,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11329,7 +11917,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11347,7 +11977,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11365,7 +12047,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11383,7 +12111,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11401,7 +12181,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11419,16 +12245,56 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { - "commandType": "moveLabware", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "d371cbd83b68cbffb7be6e25c3b68254", + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "d371cbd83b68cbffb7be6e25c3b68254", "notes": [], "params": { "labwareId": "UUID", @@ -11437,7 +12303,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11455,7 +12361,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11473,7 +12419,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11491,7 +12481,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11509,7 +12541,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11527,7 +12603,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11545,7 +12663,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11563,7 +12733,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11581,7 +12797,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11599,7 +12867,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11617,7 +12931,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11635,7 +12989,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11653,7 +13047,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11671,7 +13105,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11689,7 +13167,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11707,7 +13227,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11725,7 +13289,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11743,7 +13349,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11761,7 +13419,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11779,7 +13483,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11797,7 +13553,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11815,7 +13617,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11833,7 +13679,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11851,7 +13743,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11869,7 +13807,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11887,7 +13879,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11905,7 +13947,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11923,7 +14019,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11941,7 +14087,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11959,7 +14151,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11977,7 +14215,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11995,7 +14279,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12013,7 +14351,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12031,7 +14419,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12049,7 +14491,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12067,7 +14559,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12085,7 +14631,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12103,7 +14699,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12121,7 +14771,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12139,7 +14839,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12157,7 +14911,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12175,7 +14987,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12193,7 +15063,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12211,7 +15139,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12229,7 +15207,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12247,7 +15279,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12265,7 +15347,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12283,7 +15419,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12301,7 +15495,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12319,7 +15571,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12591,7 +15889,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12607,7 +15945,33 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12702,6 +16066,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -12767,7 +16144,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12829,6 +16246,19 @@ }, "result": { "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], "offsetId": "UUID" }, "startedAt": "TIMESTAMP", @@ -12895,7 +16325,46 @@ "strategy": "manualMoveWithPause" }, "result": { - "offsetId": "UUID" + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "offsetId": "UUID", + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12960,7 +16429,40 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13069,7 +16571,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13087,7 +16622,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json index dd86269548a..843c95e83a9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json index 590ca209392..60d0e3eb9a7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json @@ -1632,7 +1632,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2810,7 +2825,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4270,7 +4304,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5421,7 +5468,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6572,7 +6632,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7751,7 +7825,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8930,7 +9017,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10089,7 +10190,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11248,7 +11362,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12407,7 +12534,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13566,7 +13706,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14725,7 +14878,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15884,7 +16050,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17005,7 +17185,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20614,7 +20838,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23384,7 +23650,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24432,7 +24742,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26096,7 +26448,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26409,7 +26805,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -27369,7 +27807,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30239,7 +30721,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -34734,7 +35258,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -35816,7 +36384,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -37825,7 +38435,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -38061,7 +38715,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json index 9c502809377..0099997c526 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json @@ -1658,7 +1658,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2836,7 +2851,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7185,7 +7219,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8809,7 +8856,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9987,7 +10049,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11226,7 +11307,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11472,7 +11568,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12630,7 +12739,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13924,7 +14048,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -15082,7 +15221,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16240,7 +16392,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -17398,7 +17565,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json index 4459fe971fd..4c48c53013a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5848,7 +5897,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7145,7 +7209,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10098,7 +10175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11599,7 +11689,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11736,7 +11872,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12665,7 +12847,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12713,7 +12941,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13959,7 +14233,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14387,7 +14676,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14840,7 +15175,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15341,7 +15722,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16504,7 +16931,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16629,7 +17102,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16783,7 +17302,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16829,7 +17394,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16922,7 +17533,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17392,7 +18049,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17893,7 +18596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18423,7 +19172,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20678,7 +21473,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21956,7 +22797,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22821,7 +23708,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24414,7 +25347,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25861,7 +26807,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26551,7 +27543,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json index cffdb1bb54c..2205b00e18e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json @@ -1693,7 +1693,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2872,7 +2887,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4212,7 +4246,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5848,7 +5897,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7145,7 +7209,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10098,7 +10175,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11599,7 +11689,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11736,7 +11872,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12665,7 +12847,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12713,7 +12941,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13959,7 +14233,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14387,7 +14676,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14840,7 +15175,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15341,7 +15722,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16504,7 +16931,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16629,7 +17102,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16783,7 +17302,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16829,7 +17394,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16922,7 +17533,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17392,7 +18049,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17893,7 +18596,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18423,7 +19172,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -20678,7 +21473,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21956,7 +22797,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22821,7 +23708,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24414,7 +25347,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -25861,7 +26807,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26551,7 +27543,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1D2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json index b7124e15878..3e8b86ef522 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json index 44a1b40bdff..ada10205ceb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json @@ -1186,7 +1186,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2345,7 +2358,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3504,7 +3530,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4663,7 +4702,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5174,7 +5226,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -5192,7 +5288,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16172,7 +16312,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16190,7 +16372,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17858,7 +18082,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17876,7 +18144,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json index 5b9053fbea9..268ad43202b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2621,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3808,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json index 0dbe3c3fa57..cb2ecd6b18b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json @@ -1644,7 +1644,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2822,7 +2837,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3068,7 +3102,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4692,7 +4739,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5870,7 +5932,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7089,7 +7170,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8247,7 +8341,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9521,7 +9630,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10679,7 +10801,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11837,7 +11974,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -14226,7 +14376,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -17207,7 +17407,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -18470,7 +18716,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -19873,7 +20173,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -21017,7 +21367,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -22420,7 +22824,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -23564,7 +24018,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -24967,7 +25475,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -26543,7 +27101,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -29242,7 +29854,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -30746,7 +31408,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -33354,7 +34070,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -39576,7 +40342,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -40143,7 +40963,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json index f7d8523d4ed..0019ea1ab96 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json @@ -101,7 +101,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot", + "stagingAreaSlotWithMagneticBlockV1" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -170,7 +184,24 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1328,7 +1359,28 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json index 1c7b1c8237d..168cf5bb864 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json @@ -1653,7 +1653,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1722,7 +1737,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2880,7 +2908,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4513,7 +4558,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5857,7 +5917,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7140,7 +7213,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8430,7 +8518,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8499,7 +8602,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9657,7 +9773,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10940,7 +11073,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12223,7 +12371,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13352,7 +13513,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "heaterShakerV1D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14921,7 +15128,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16077,7 +16290,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -16094,7 +16313,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16110,7 +16359,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16128,7 +16407,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -16146,7 +16466,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json index 3e8b4c50dea..2b99e53d290 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json @@ -1656,7 +1656,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2917,7 +2930,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "addressableAreaName": "1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3274,7 +3304,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "6", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout6", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4431,7 +4474,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "9", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout9", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4525,7 +4581,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "7", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout7", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index f7c55d75c85..d3bf92c892b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -2296,7 +2296,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3461,7 +3476,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3554,7 +3584,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4728,7 +4771,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4797,7 +4853,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5955,7 +6024,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7113,7 +7199,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8271,7 +8372,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10073,7 +10187,42 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover", + "wasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10869,7 +11018,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -10887,7 +11066,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11386,7 +11613,37 @@ "newLocation": "offDeck", "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11404,7 +11661,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11422,7 +11719,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11440,7 +11777,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11458,7 +11835,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11476,7 +11893,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11494,7 +11951,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11512,7 +12009,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11530,7 +12067,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11548,7 +12125,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11566,7 +12183,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11584,7 +12241,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11602,7 +12299,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11620,7 +12357,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11638,7 +12415,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11656,11 +12473,51 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { "commandType": "moveLabware", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", @@ -11674,7 +12531,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11692,7 +12593,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11710,7 +12653,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11728,7 +12723,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11746,7 +12787,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11764,7 +12857,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11782,7 +12921,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11800,7 +12983,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11818,7 +13043,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11836,7 +13105,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11854,7 +13177,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11872,7 +13253,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11890,7 +13321,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11908,7 +13381,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11926,7 +13439,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11944,7 +13497,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11962,7 +13555,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11980,7 +13613,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -11998,7 +13671,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12016,7 +13729,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12034,7 +13787,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12052,7 +13845,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12070,7 +13903,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12088,7 +13961,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12106,7 +14019,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12124,7 +14077,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12142,7 +14135,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12160,7 +14193,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12178,7 +14251,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12196,7 +14313,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12214,7 +14373,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12232,7 +14443,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12250,7 +14507,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12268,7 +14577,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12286,7 +14641,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12304,7 +14703,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12322,7 +14763,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12340,7 +14825,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12358,7 +14897,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12376,12 +14973,62 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { - "commandType": "moveLabware", + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", @@ -12394,7 +15041,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12412,7 +15101,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12430,7 +15159,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12448,7 +15217,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12466,7 +15275,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12484,7 +15333,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12502,7 +15391,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12520,7 +15449,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12538,7 +15507,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12556,7 +15565,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12574,7 +15623,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12592,7 +15681,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12610,7 +15739,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12628,7 +15797,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12646,7 +15855,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12664,7 +15913,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12682,7 +15971,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12700,7 +16029,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12718,7 +16091,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12736,17 +16151,69 @@ }, "strategy": "usingGripper" }, - "result": {}, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, - { - "commandType": "moveLabware", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "1019dd8c9734cfc1a86aee1116797130", - "notes": [], + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, + "startedAt": "TIMESTAMP", + "status": "succeeded" + }, + { + "commandType": "moveLabware", + "completedAt": "TIMESTAMP", + "createdAt": "TIMESTAMP", + "id": "UUID", + "key": "1019dd8c9734cfc1a86aee1116797130", + "notes": [], "params": { "labwareId": "UUID", "newLocation": { @@ -12754,7 +16221,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12772,7 +16285,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12790,7 +16355,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12808,7 +16419,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12826,7 +16481,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12844,7 +16541,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12862,7 +16603,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12880,7 +16675,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12898,7 +16751,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12916,7 +16819,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12934,7 +16879,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12952,7 +16941,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12970,7 +17001,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -12988,7 +17063,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13006,7 +17123,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13024,7 +17185,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13042,7 +17245,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13060,7 +17303,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13078,7 +17365,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13096,7 +17425,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13114,7 +17487,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13132,7 +17547,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13150,7 +17609,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13168,7 +17669,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13186,7 +17731,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13204,7 +17791,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13222,7 +17853,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13240,7 +17913,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13258,7 +17971,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13276,7 +18033,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13294,7 +18097,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13312,7 +18161,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13330,7 +18233,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13348,7 +18301,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13366,7 +18373,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13384,7 +18441,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13402,7 +18505,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13420,7 +18577,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13438,7 +18653,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13456,7 +18721,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13474,7 +18785,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13492,7 +18845,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13510,7 +18907,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13528,7 +18967,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13546,7 +19029,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13564,7 +19089,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13582,7 +19147,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13600,7 +19209,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13618,7 +19269,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13636,7 +19331,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13654,7 +19391,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13672,7 +19453,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13690,7 +19513,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13708,7 +19575,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13726,7 +19635,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13744,7 +19697,49 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13762,7 +19757,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13780,7 +19815,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13798,7 +19877,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13816,7 +19941,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13834,7 +20005,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13852,7 +20077,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13870,7 +20145,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13888,7 +20217,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13906,7 +20285,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13924,7 +20349,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13942,7 +20421,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13960,7 +20497,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13978,7 +20565,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13996,7 +20637,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14014,7 +20701,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14032,7 +20771,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14050,7 +20835,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14068,7 +20905,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14086,7 +20969,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14104,7 +21027,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14122,7 +21097,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14140,7 +21161,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14158,7 +21231,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14176,7 +21295,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14194,7 +21365,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14212,7 +21429,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14230,7 +21499,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14248,7 +21563,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14266,7 +21633,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14284,7 +21697,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14302,7 +21755,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14320,7 +21825,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14338,7 +21893,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14356,7 +21965,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14374,7 +22033,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14392,7 +22105,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14410,7 +22181,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14428,7 +22257,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14446,7 +22325,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14464,7 +22389,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14482,7 +22461,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14500,7 +22537,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14518,7 +22613,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14536,7 +22677,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14554,7 +22747,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14572,7 +22811,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14590,7 +22881,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14608,7 +22945,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14626,7 +23003,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14644,7 +23073,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14662,7 +23137,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14680,7 +23207,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14698,7 +23271,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14716,7 +23341,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14734,7 +23405,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14752,7 +23475,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14770,7 +23539,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14788,7 +23609,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14806,7 +23673,47 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14824,7 +23731,59 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14842,7 +23801,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14860,7 +23869,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14878,7 +23941,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14896,7 +24009,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14914,7 +24081,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14932,7 +24157,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14950,7 +24233,57 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14968,7 +24301,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14986,7 +24365,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1C1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15004,7 +24437,65 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2D1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -15307,7 +24798,47 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json index 48d7508e005..b8baa3c92d1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json @@ -77,7 +77,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1235,7 +1248,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "A1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json index 6ca5fe984f2..31f814e366e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json @@ -1630,7 +1630,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2788,7 +2803,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3155,7 +3183,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4334,7 +4375,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "heaterShakerV1A1", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5514,7 +5574,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6672,7 +6745,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7852,7 +7938,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -9010,7 +9109,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10190,7 +10302,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11348,7 +11477,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -12528,7 +12672,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13686,7 +13843,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json index 81a870ec2c9..24f8a0c0ec0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json @@ -1282,7 +1282,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "A2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json index 6d3153af4eb..6731bd374ab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json @@ -1809,7 +1809,22 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2983,7 +2998,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4157,7 +4185,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -4226,7 +4267,22 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5384,7 +5440,26 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -5453,7 +5528,20 @@ "version": 1, "wells": {} }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -6611,7 +6699,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -7767,7 +7872,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -8923,7 +9034,13 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -10081,7 +10198,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -11239,7 +11369,21 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterCovered", + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -13292,7 +13436,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13310,7 +13491,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13328,7 +13546,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13346,7 +13612,55 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "D4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13651,7 +13965,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13669,7 +14020,44 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13687,7 +14075,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "C3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaRightSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -13705,7 +14134,48 @@ }, "strategy": "manualMoveWithPause" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ], + "originLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14023,7 +14493,51 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14041,7 +14555,53 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "thermocyclerModuleV2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14059,7 +14619,61 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "immediateDestinationLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "magneticBlockV1A2", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutA2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14077,7 +14691,40 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" }, @@ -14095,7 +14742,46 @@ }, "strategy": "usingGripper" }, - "result": {}, + "result": { + "eventualDestinationLocationSequence": [ + { + "kind": "notOnDeck", + "logicalLocationName": "offDeck" + } + ], + "immediateDestinationLocationSequence": [ + { + "addressableAreaName": "gripperWasteChute", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "stagingAreaSlotWithWasteChuteRightAdapterNoCover" + ] + } + ], + "originLocationSequence": [ + { + "kind": "onLabware", + "labwareId": "UUID" + }, + { + "addressableAreaName": "temperatureModuleV2B3", + "kind": "onAddressableArea" + }, + { + "kind": "onModule", + "moduleId": "UUID" + }, + { + "cutoutId": "cutoutB3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [] + } + ] + }, "startedAt": "TIMESTAMP", "status": "succeeded" } diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json index 044d6d802f4..bbcfd21f11e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json @@ -1160,7 +1160,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "B2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutB2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1421,7 +1434,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C1", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC1", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleLeftSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2595,7 +2621,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -3769,7 +3808,24 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "flexStackerModuleV1", + "flexStackerModuleV1WithWasteChuteRightAdapterCovered", + "flexStackerModuleV1WithWasteChuteRightAdapterNoCover", + "singleRightSlot", + "stagingAreaRightSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json index da344f2c829..80c34323cea 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -1231,7 +1231,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "5", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout5", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2384,7 +2397,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "4", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout4", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2668,7 +2694,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "3", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout3", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -2914,7 +2953,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutout2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleStandardSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd26a20b4c][Flex_X_v2_21_plate_reader_wrong_plate].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd26a20b4c][Flex_X_v2_21_plate_reader_wrong_plate].json index 39c5598de8b..dd0f19a0b42 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd26a20b4c][Flex_X_v2_21_plate_reader_wrong_plate].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd26a20b4c][Flex_X_v2_21_plate_reader_wrong_plate].json @@ -1166,7 +1166,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "D2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutD2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" @@ -1427,7 +1440,20 @@ } } }, - "labwareId": "UUID" + "labwareId": "UUID", + "locationSequence": [ + { + "addressableAreaName": "C2", + "kind": "onAddressableArea" + }, + { + "cutoutId": "cutoutC2", + "kind": "onCutoutFixture", + "possibleCutoutFixtureIds": [ + "singleCenterSlot" + ] + } + ] }, "startedAt": "TIMESTAMP", "status": "succeeded" diff --git a/analyses-snapshot-testing/tests/custom_json_snapshot_extension.py b/analyses-snapshot-testing/tests/custom_json_snapshot_extension.py index bf7004e1ae4..3c0e00d5eb6 100644 --- a/analyses-snapshot-testing/tests/custom_json_snapshot_extension.py +++ b/analyses-snapshot-testing/tests/custom_json_snapshot_extension.py @@ -17,15 +17,7 @@ def __init__(self) -> None: (r"line \d+,", "line N,"), ], } - self.id_keys_to_replace = [ - "id", - "pipetteId", - "labwareId", - "serialNumber", - "moduleId", - "liquidId", - "offsetId", - ] + self.id_keys_to_replace = ["id", "pipetteId", "labwareId", "serialNumber", "moduleId", "liquidId", "offsetId", "lidId"] self.timestamp_keys_to_replace = [ "createdAt", "startedAt", diff --git a/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py b/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py index 2b723304017..4586926753d 100644 --- a/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py +++ b/api/src/opentrons/protocol_engine/commands/flex_stacker/retrieve.py @@ -1,4 +1,5 @@ """Command models to retrieve a labware from a Flex Stacker.""" + from __future__ import annotations from typing import Optional, Literal, TYPE_CHECKING from typing_extensions import Type @@ -12,7 +13,12 @@ LocationIsOccupiedError, ) from ...state import update_types -from ...types import ModuleLocation +from ...types import ( + ModuleLocation, + OnAddressableAreaLocationSequenceComponent, + OnModuleLocationSequenceComponent, + LabwareLocationSequence, +) if TYPE_CHECKING: from opentrons.protocol_engine.state.state import StateView @@ -37,6 +43,12 @@ class RetrieveResult(BaseModel): ..., description="The labware ID of the retrieved labware.", ) + originLocationSequence: LabwareLocationSequence | None = Field( + None, description="The origin location of the labware." + ) + eventualDestinationLocationSequence: LabwareLocationSequence | None = Field( + None, description="The eventual destination of the labware." + ) class RetrieveImpl(AbstractCommandImpl[RetrieveParams, SuccessData[RetrieveResult]]): @@ -83,17 +95,24 @@ async def execute(self, params: RetrieveParams) -> SuccessData[RetrieveResult]: # Get the labware dimensions for the labware being retrieved, # which is the first one in the hopper labware id list lw_id = stacker_state.hopper_labware_ids[0] + original_location_sequence = self._state_view.geometry.get_location_sequence( + lw_id + ) + labware = self._state_view.labware.get(lw_id) + labware_height = self._state_view.labware.get_dimensions(labware_id=lw_id).z + if labware.lid_id is not None: + lid_def = self._state_view.labware.get_definition(labware.lid_id) + offset = self._state_view.labware.get_labware_overlap_offsets( + lid_def, labware.loadName + ).z + labware_height = labware_height + lid_def.dimensions.zDimension - offset + if stacker_hw is not None: - labware = self._state_view.labware.get(lw_id) - labware_height = self._state_view.labware.get_dimensions(labware_id=lw_id).z - if labware.lid_id is not None: - lid_def = self._state_view.labware.get_definition(labware.lid_id) - offset = self._state_view.labware.get_labware_overlap_offsets( - lid_def, labware.loadName - ).z - labware_height = labware_height + lid_def.dimensions.zDimension - offset await stacker_hw.dispense_labware(labware_height=labware_height) + own_addressable_area = self._state_view.modules.get_provided_addressable_area( + params.moduleId + ) # update the state to reflect the labware is now in the flex stacker slot state_update.set_labware_location( labware_id=lw_id, @@ -104,7 +123,17 @@ async def execute(self, params: RetrieveParams) -> SuccessData[RetrieveResult]: module_id=params.moduleId, labware_id=lw_id ) return SuccessData( - public=RetrieveResult(labware_id=lw_id), state_update=state_update + public=RetrieveResult( + labware_id=lw_id, + originLocationSequence=original_location_sequence, + eventualDestinationLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId=params.moduleId), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=own_addressable_area, + ), + ], + ), + state_update=state_update, ) diff --git a/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py b/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py index c2ef3e67f3e..17aee9eb44d 100644 --- a/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py +++ b/api/src/opentrons/protocol_engine/commands/flex_stacker/store.py @@ -1,4 +1,5 @@ """Command models to retrieve a labware from a Flex Stacker.""" + from __future__ import annotations from typing import Optional, Literal, TYPE_CHECKING from typing_extensions import Type @@ -12,7 +13,12 @@ LabwareNotLoadedOnModuleError, ) from ...state import update_types -from ...types import OFF_DECK_LOCATION +from ...types import ( + OFF_DECK_LOCATION, + NotOnDeckLocationSequenceComponent, + OnModuleLocationSequenceComponent, + LabwareLocationSequence, +) if TYPE_CHECKING: @@ -35,6 +41,14 @@ class StoreParams(BaseModel): class StoreResult(BaseModel): """Result data from a labware storage command.""" + eventualDestinationLocationSequence: LabwareLocationSequence | None = Field( + None, + description=("The full location in which this labware will eventually reside."), + ) + originLocationSequence: LabwareLocationSequence | None = Field( + None, description=("The origin location of the labware.") + ) + class StoreImpl(AbstractCommandImpl[StoreParams, SuccessData[StoreResult]]): """Implementation of a labware storage command.""" @@ -68,18 +82,21 @@ async def execute(self, params: StoreParams) -> SuccessData[StoreResult]: "Cannot store labware if Flex Stacker carriage is empty" ) + original_location_sequence = self._state_view.geometry.get_location_sequence( + lw_id + ) + labware = self._state_view.labware.get(lw_id) + labware_height = self._state_view.labware.get_dimensions(labware_id=lw_id).z + if labware.lid_id is not None: + lid_def = self._state_view.labware.get_definition(labware.lid_id) + offset = self._state_view.labware.get_labware_overlap_offsets( + lid_def, labware.loadName + ).z + labware_height = labware_height + lid_def.dimensions.zDimension - offset # TODO: check the type of the labware should match that already in the stack state_update = update_types.StateUpdate() if stacker_hw is not None: - labware = self._state_view.labware.get(lw_id) - labware_height = self._state_view.labware.get_dimensions(labware_id=lw_id).z - if labware.lid_id is not None: - lid_def = self._state_view.labware.get_definition(labware.lid_id) - offset = self._state_view.labware.get_labware_overlap_offsets( - lid_def, labware.loadName - ).z - labware_height = labware_height + lid_def.dimensions.zDimension - offset await stacker_hw.store_labware(labware_height=labware_height) # update the state to reflect the labware is store in the stack @@ -92,7 +109,18 @@ async def execute(self, params: StoreParams) -> SuccessData[StoreResult]: module_id=params.moduleId, labware_id=lw_id ) - return SuccessData(public=StoreResult(), state_update=state_update) + return SuccessData( + public=StoreResult( + originLocationSequence=original_location_sequence, + eventualDestinationLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId=params.moduleId), + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ), + ], + ), + state_update=state_update, + ) class Store(BaseCommand[StoreParams, StoreResult, ErrorOccurrence]): diff --git a/api/src/opentrons/protocol_engine/commands/labware_handling_common.py b/api/src/opentrons/protocol_engine/commands/labware_handling_common.py new file mode 100644 index 00000000000..cafa4583539 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/labware_handling_common.py @@ -0,0 +1,24 @@ +"""Helpers for commands that alter the position of labware.""" + +from pydantic import BaseModel, Field + +from ..types import LabwareLocationSequence + + +class LabwareHandlingResultMixin(BaseModel): + """A result for commands that create a labware entity.""" + + labwareId: str = Field(..., description="The id of the labware.") + locationSequence: LabwareLocationSequence | None = Field( + None, + description="The full location down to the deck on which this labware exists.", + ) + + +class LabwarePositionResultMixin(LabwareHandlingResultMixin): + """A result for commands that create an offsetable labware entity.""" + + offsetId: str | None = Field( + None, + description="An ID referencing the labware offset that will apply to this labware in this location.", + ) diff --git a/api/src/opentrons/protocol_engine/commands/load_labware.py b/api/src/opentrons/protocol_engine/commands/load_labware.py index 981ca04a11e..85c267f69e1 100644 --- a/api/src/opentrons/protocol_engine/commands/load_labware.py +++ b/api/src/opentrons/protocol_engine/commands/load_labware.py @@ -1,4 +1,5 @@ """Load labware command request, result, and implementation models.""" + from __future__ import annotations from typing import TYPE_CHECKING, Optional, Type, Any @@ -22,6 +23,7 @@ ) from .command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData +from .labware_handling_common import LabwarePositionResultMixin from ..errors.error_occurrence import ErrorOccurrence from ..state.update_types import StateUpdate @@ -73,30 +75,13 @@ class LoadLabwareParams(BaseModel): ) -class LoadLabwareResult(BaseModel): +class LoadLabwareResult(LabwarePositionResultMixin): """Result data from the execution of a LoadLabware command.""" - labwareId: str = Field( - ..., - description="An ID to reference this labware in subsequent commands.", - ) definition: LabwareDefinition = Field( ..., description="The full definition data for this labware.", ) - offsetId: Optional[str] = Field( - # Default `None` instead of `...` so this field shows up as non-required in - # OpenAPI. The server is allowed to omit it or make it null. - None, - description=( - "An ID referencing the labware offset that will apply" - " to the newly-placed labware." - " This offset will be in effect until the labware is moved" - " with a `moveLabware` command." - " Null or undefined means no offset applies," - " so the default of (0, 0, 0) will be used." - ), - ) class LoadLabwareImplementation( @@ -236,6 +221,9 @@ async def execute( # noqa: C901 labwareId=loaded_labware.labware_id, definition=loaded_labware.definition, offsetId=loaded_labware.offsetId, + locationSequence=self._state_view.geometry.get_predicted_location_sequence( + params.location + ), ), state_update=state_update, ) diff --git a/api/src/opentrons/protocol_engine/commands/load_lid.py b/api/src/opentrons/protocol_engine/commands/load_lid.py index 529ee5b0e03..a379fca909a 100644 --- a/api/src/opentrons/protocol_engine/commands/load_lid.py +++ b/api/src/opentrons/protocol_engine/commands/load_lid.py @@ -1,4 +1,5 @@ """Load lid command request, result, and implementation models.""" + from __future__ import annotations from pydantic import BaseModel, Field from typing import TYPE_CHECKING, Optional, Type @@ -11,8 +12,10 @@ from ..types import ( LabwareLocation, OnLabwareLocation, + OnLabwareLocationSequenceComponent, ) +from .labware_handling_common import LabwareHandlingResultMixin from .command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData from ..errors.error_occurrence import ErrorOccurrence from ..state.update_types import StateUpdate @@ -46,13 +49,9 @@ class LoadLidParams(BaseModel): ) -class LoadLidResult(BaseModel): +class LoadLidResult(LabwareHandlingResultMixin): """Result data from the execution of a LoadLabware command.""" - labwareId: str = Field( - ..., - description="An ID to reference this lid labware in subsequent commands.", - ) definition: LabwareDefinition = Field( ..., description="The full definition data for this lid labware.", @@ -122,6 +121,18 @@ async def execute(self, params: LoadLidParams) -> SuccessData[LoadLidResult]: public=LoadLidResult( labwareId=loaded_labware.labware_id, definition=loaded_labware.definition, + # Note: the lid is not yet loaded and therefore won't be found as the lid id for the + # labware onto which we're loading it, so build that part of the location sequence + # here and then build the rest of the sequence from the parent labware + locationSequence=[ + OnLabwareLocationSequenceComponent( + labwareId=params.location.labwareId, + lidId=loaded_labware.labware_id, + ) + ] + + self._state_view.geometry.get_location_sequence( + params.location.labwareId + ), ), state_update=state_update, ) diff --git a/api/src/opentrons/protocol_engine/commands/load_lid_stack.py b/api/src/opentrons/protocol_engine/commands/load_lid_stack.py index b879ec11084..9c5db1f8089 100644 --- a/api/src/opentrons/protocol_engine/commands/load_lid_stack.py +++ b/api/src/opentrons/protocol_engine/commands/load_lid_stack.py @@ -1,4 +1,5 @@ """Load lid stack command request, result, and implementation models.""" + from __future__ import annotations from pydantic import BaseModel, Field from typing import TYPE_CHECKING, Optional, Type, List, Any @@ -15,6 +16,8 @@ OnLabwareLocation, DeckSlotLocation, AddressableAreaLocation, + LabwareLocationSequence, + OnLabwareLocationSequenceComponent, ) from .command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData @@ -80,7 +83,7 @@ class LoadLidStackResult(BaseModel): stackLabwareId: str = Field( ..., - description="An ID to reference the Protocol Engine Labware Lid Stack in subsequent commands.", + description="An ID to reference the lid stack labware object created.", ) labwareIds: List[str] = Field( ..., @@ -93,6 +96,14 @@ class LoadLidStackResult(BaseModel): location: LabwareLocation = Field( ..., description="The Location that the stack of lid labware has been loaded." ) + stackLocationSequence: LabwareLocationSequence | None = Field( + None, + description="The location sequence for the lid stack labware object created.", + ) + locationSequences: List[LabwareLocationSequence] | None = Field( + None, + description="The location sequences for the lids just loaded into the stack. These are in the same order as labwareIds.", + ) class LoadLidStackImplementation( @@ -106,10 +117,7 @@ def __init__( self._equipment = equipment self._state_view = state_view - async def execute( - self, params: LoadLidStackParams - ) -> SuccessData[LoadLidStackResult]: - """Load definition and calibration data necessary for a lid stack.""" + def _validate_location(self, params: LoadLidStackParams) -> LabwareLocation: if isinstance(params.location, AddressableAreaLocation): area_name = params.location.addressableAreaName if not ( @@ -130,11 +138,72 @@ async def execute( raise ProtocolEngineError( message="Lid Stack Labware Object with quantity 0 must be loaded onto System Location." ) + return self._state_view.geometry.ensure_location_not_occupied(params.location) + + def _format_results( + self, + verified_location: LabwareLocation, + lid_stack_object: LoadedLabwareData, + loaded_lid_labwares: list[LoadedLabwareData], + lid_labware_definition: LabwareDefinition | None, + ) -> SuccessData[LoadLidStackResult]: + stack_location_sequence = ( + self._state_view.geometry.get_predicted_location_sequence(verified_location) + ) + loaded_lid_locations_by_id: dict[str, OnLabwareLocation] = {} + loaded_lid_ids_ordered: list[str] = [] + loaded_lid_location_sequences_ordered: list[LabwareLocationSequence] = [] + lid_location_sequence_accumulated: LabwareLocationSequence = [ + OnLabwareLocationSequenceComponent( + labwareId=lid_stack_object.labware_id, lidId=None + ) + ] + stack_location_sequence + load_location = OnLabwareLocation(labwareId=lid_stack_object.labware_id) + last_lid_id: str | None = None + for loaded_lid in loaded_lid_labwares: + loaded_lid_locations_by_id[loaded_lid.labware_id] = load_location + loaded_lid_ids_ordered.append(loaded_lid.labware_id) + if last_lid_id is None: + last_lid_id = loaded_lid.labware_id + else: + lid_location_sequence_accumulated = [ + OnLabwareLocationSequenceComponent( + labwareId=last_lid_id, lidId=None + ) + ] + lid_location_sequence_accumulated + last_lid_id = loaded_lid.labware_id + loaded_lid_location_sequences_ordered.append( + [loc for loc in lid_location_sequence_accumulated] + ) + load_location = OnLabwareLocation(labwareId=loaded_lid.labware_id) - verified_location = self._state_view.geometry.ensure_location_not_occupied( - params.location + state_update = StateUpdate() + state_update.set_loaded_lid_stack( + stack_id=lid_stack_object.labware_id, + stack_object_definition=lid_stack_object.definition, + stack_location=verified_location, + locations=loaded_lid_locations_by_id, + labware_definition=lid_labware_definition, ) + return SuccessData( + public=LoadLidStackResult( + stackLabwareId=lid_stack_object.labware_id, + labwareIds=loaded_lid_ids_ordered, + definition=lid_labware_definition, + location=verified_location, + stackLocationSequence=stack_location_sequence, + locationSequences=loaded_lid_location_sequences_ordered, + ), + state_update=state_update, + ) + + async def execute( + self, params: LoadLidStackParams + ) -> SuccessData[LoadLidStackResult]: + """Load definition and calibration data necessary for a lid stack.""" + verified_location = self._validate_location(params) + lid_stack_object = await self._equipment.load_labware( load_name=_LID_STACK_PE_LABWARE, namespace=_LID_STACK_PE_NAMESPACE, @@ -150,8 +219,8 @@ async def execute( message="Lid Stack Labware Object Labware Definition does not contain required allowed role 'system'." ) - loaded_lid_labwares: List[LoadedLabwareData] = [] - lid_labware_definition = None + loaded_lid_labwares: list[LoadedLabwareData] = [] + lid_labware_definition: LabwareDefinition | None = None if params.quantity > 0: loaded_lid_labwares = await self._equipment.load_lids( @@ -162,40 +231,18 @@ async def execute( quantity=params.quantity, labware_ids=params.labwareIds, ) - - lid_labware_definition = loaded_lid_labwares[0].definition - + lid_labware_definition = loaded_lid_labwares[-1].definition if isinstance(verified_location, OnLabwareLocation): self._state_view.labware.raise_if_labware_cannot_be_stacked( - top_labware_definition=loaded_lid_labwares[ - params.quantity - 1 - ].definition, + top_labware_definition=lid_labware_definition, bottom_labware_id=verified_location.labwareId, ) - loaded_lid_locations_by_id = {} - load_location = OnLabwareLocation(labwareId=lid_stack_object.labware_id) - for loaded_lid in loaded_lid_labwares: - loaded_lid_locations_by_id[loaded_lid.labware_id] = load_location - load_location = OnLabwareLocation(labwareId=loaded_lid.labware_id) - - state_update = StateUpdate() - state_update.set_loaded_lid_stack( - stack_id=lid_stack_object.labware_id, - stack_object_definition=lid_stack_object.definition, - stack_location=verified_location, - locations=loaded_lid_locations_by_id, - labware_definition=lid_labware_definition, - ) - - return SuccessData( - public=LoadLidStackResult( - stackLabwareId=lid_stack_object.labware_id, - labwareIds=list(loaded_lid_locations_by_id.keys()), - definition=lid_labware_definition, - location=params.location, - ), - state_update=state_update, + return self._format_results( + verified_location, + lid_stack_object, + loaded_lid_labwares, + lid_labware_definition, ) diff --git a/api/src/opentrons/protocol_engine/commands/move_labware.py b/api/src/opentrons/protocol_engine/commands/move_labware.py index 6b10fc1ec8d..9bf71018e78 100644 --- a/api/src/opentrons/protocol_engine/commands/move_labware.py +++ b/api/src/opentrons/protocol_engine/commands/move_labware.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Optional, Type, Any, List +from typing_extensions import TypedDict # note: need this instead of typing for py<3.12 from pydantic.json_schema import SkipJsonSchema from pydantic import BaseModel, Field @@ -26,6 +27,9 @@ LabwareMovementStrategy, LabwareOffsetVector, LabwareMovementOffsetData, + LabwareLocationSequence, + NotOnDeckLocationSequenceComponent, + OFF_DECK_LOCATION, ) from ..errors import ( LabwareMovementNotAllowedError, @@ -100,6 +104,31 @@ class MoveLabwareResult(BaseModel): " so the default of (0, 0, 0) will be used." ), ) + eventualDestinationLocationSequence: LabwareLocationSequence | None = Field( + None, + description=( + "The full location in which this labware will eventually reside. This will typically be the same as its " + "immediate destination, but if this labware is going to the trash then this field will be off deck." + ), + ) + immediateDestinationLocationSequence: LabwareLocationSequence | None = Field( + None, + description=( + "The full location to which this labware is being moved, right now." + ), + ) + originLocationSequence: LabwareLocationSequence | None = Field( + None, + description="The full location down to the deck of the labware before this command.", + ) + + +class ErrorDetails(TypedDict): + """Location details for a failed gripper move.""" + + originLocationSequence: LabwareLocationSequence + immediateDestinationLocationSequence: LabwareLocationSequence + eventualDestinationLocationSequence: LabwareLocationSequence class GripperMovementError(ErrorOccurrence): @@ -112,6 +141,8 @@ class GripperMovementError(ErrorOccurrence): errorType: Literal["gripperMovement"] = "gripperMovement" + errorInfo: ErrorDetails + _ExecuteReturn = SuccessData[MoveLabwareResult] | DefinedErrorData[GripperMovementError] @@ -152,6 +183,11 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C f"Cannot move fixed trash labware '{current_labware_definition.parameters.loadName}'." ) + origin_location_sequence = self._state_view.geometry.get_location_sequence( + params.labwareId + ) + eventual_destination_location_sequence: LabwareLocationSequence | None = None + if isinstance(params.newLocation, AddressableAreaLocation): area_name = params.newLocation.addressableAreaName if ( @@ -181,9 +217,19 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C y=0, z=0, ) + eventual_destination_location_sequence = [ + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ) + ] elif fixture_validation.is_trash(area_name): # When dropping labware in the trash bins we want to ensure they are lids # and enforce a y-axis drop offset to ensure they fall within the trash bin + eventual_destination_location_sequence = [ + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ) + ] if labware_validation.validate_definition_is_lid( self._state_view.labware.get_definition(params.labwareId) ): @@ -298,6 +344,16 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C if trash_lid_drop_offset: user_offset_data.dropOffset += trash_lid_drop_offset + immediate_destination_location_sequence = ( + self._state_view.geometry.get_predicted_location_sequence( + validated_new_loc + ) + ) + if eventual_destination_location_sequence is None: + eventual_destination_location_sequence = ( + immediate_destination_location_sequence + ) + try: # Skips gripper moves when using virtual gripper await self._labware_movement.move_labware_with_gripper( @@ -314,20 +370,23 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C # todo(mm, 2024-09-26): Catch LabwareNotPickedUpError when that exists and # move_labware_with_gripper() raises it. ) as exception: - gripper_movement_error: GripperMovementError | None = ( - GripperMovementError( - id=self._model_utils.generate_id(), - createdAt=self._model_utils.get_timestamp(), - errorCode=exception.code.value.code, - detail=exception.code.value.detail, - wrappedErrors=[ - ErrorOccurrence.from_failed( - id=self._model_utils.generate_id(), - createdAt=self._model_utils.get_timestamp(), - error=exception, - ) - ], - ) + gripper_movement_error: GripperMovementError | None = GripperMovementError( + id=self._model_utils.generate_id(), + createdAt=self._model_utils.get_timestamp(), + errorCode=exception.code.value.code, + detail=exception.code.value.detail, + errorInfo={ + "originLocationSequence": origin_location_sequence, + "immediateDestinationLocationSequence": immediate_destination_location_sequence, + "eventualDestinationLocationSequence": eventual_destination_location_sequence, + }, + wrappedErrors=[ + ErrorOccurrence.from_failed( + id=self._model_utils.generate_id(), + createdAt=self._model_utils.get_timestamp(), + error=exception, + ) + ], ) else: gripper_movement_error = None @@ -343,7 +402,27 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C elif params.strategy == LabwareMovementStrategy.MANUAL_MOVE_WITH_PAUSE: # Pause to allow for manual labware movement + immediate_destination_location_sequence = ( + self._state_view.geometry.get_predicted_location_sequence( + params.newLocation + ) + ) + if eventual_destination_location_sequence is None: + eventual_destination_location_sequence = ( + immediate_destination_location_sequence + ) + await self._run_control.wait_for_resume() + else: + immediate_destination_location_sequence = ( + self._state_view.geometry.get_predicted_location_sequence( + params.newLocation + ) + ) + if eventual_destination_location_sequence is None: + eventual_destination_location_sequence = ( + immediate_destination_location_sequence + ) # We may have just moved the labware that contains the current well out from # under the pipette. Clear the current location to reflect the fact that the @@ -398,7 +477,12 @@ async def execute(self, params: MoveLabwareParams) -> _ExecuteReturn: # noqa: C ) return SuccessData( - public=MoveLabwareResult(offsetId=new_offset_id), + public=MoveLabwareResult( + offsetId=new_offset_id, + originLocationSequence=origin_location_sequence, + immediateDestinationLocationSequence=immediate_destination_location_sequence, + eventualDestinationLocationSequence=eventual_destination_location_sequence, + ), state_update=state_update, ) diff --git a/api/src/opentrons/protocol_engine/commands/reload_labware.py b/api/src/opentrons/protocol_engine/commands/reload_labware.py index 07d70957cdb..0adc330e94c 100644 --- a/api/src/opentrons/protocol_engine/commands/reload_labware.py +++ b/api/src/opentrons/protocol_engine/commands/reload_labware.py @@ -1,9 +1,11 @@ """Reload labware command request, result, and implementation models.""" + from __future__ import annotations from pydantic import BaseModel, Field from typing import TYPE_CHECKING, Optional, Type from typing_extensions import Literal +from .labware_handling_common import LabwarePositionResultMixin from .command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData from ..errors.error_occurrence import ErrorOccurrence from ..state.update_types import StateUpdate @@ -24,27 +26,9 @@ class ReloadLabwareParams(BaseModel): ) -class ReloadLabwareResult(BaseModel): +class ReloadLabwareResult(LabwarePositionResultMixin): """Result data from the execution of a LoadLabware command.""" - labwareId: str = Field( - ..., - description="An ID to reference this labware in subsequent commands. Same as the one in the parameters.", - ) - offsetId: Optional[str] = Field( - # Default `None` instead of `...` so this field shows up as non-required in - # OpenAPI. The server is allowed to omit it or make it null. - None, - description=( - "An ID referencing the labware offset that will apply" - " to the reloaded labware." - " This offset will be in effect until the labware is moved" - " with a `moveLabware` command." - " Null or undefined means no offset applies," - " so the default of (0, 0, 0) will be used." - ), - ) - class ReloadLabwareImplementation( AbstractCommandImpl[ReloadLabwareParams, SuccessData[ReloadLabwareResult]] @@ -77,6 +61,9 @@ async def execute( public=ReloadLabwareResult( labwareId=params.labwareId, offsetId=reloaded_labware.offsetId, + locationSequence=self._state_view.geometry.get_predicted_location_sequence( + reloaded_labware.location + ), ), state_update=state_update, ) diff --git a/api/src/opentrons/protocol_engine/state/addressable_areas.py b/api/src/opentrons/protocol_engine/state/addressable_areas.py index c227fa72285..bbad97db7b5 100644 --- a/api/src/opentrons/protocol_engine/state/addressable_areas.py +++ b/api/src/opentrons/protocol_engine/state/addressable_areas.py @@ -625,3 +625,36 @@ def raise_if_area_not_in_deck_configuration( raise AreaNotInDeckConfigurationError( f"{addressable_area_name} not provided by deck configuration." ) + + def get_current_potential_cutout_fixtures_for_addressable_area( + self, addressable_area_name: str + ) -> tuple[str, Set[PotentialCutoutFixture]]: + """Get the set of cutout fixtures that might provide a given addressable area. + + This takes into account the constraints already established by load commands or by a loaded deck + configuration, and may therefore return different results for the same addressable area at + different points in the protocol after deck configuration constraints have changed. + + This returns the common cutout id and the potential fixtures. + """ + ( + cutout_id, + base_potential_fixtures, + ) = deck_configuration_provider.get_potential_cutout_fixtures( + addressable_area_name, self._state.deck_definition + ) + try: + loaded_potential_fixtures = ( + self._state.potential_cutout_fixtures_by_cutout_id[cutout_id] + ) + return cutout_id, loaded_potential_fixtures.intersection( + base_potential_fixtures + ) + except KeyError: + # If there was a key error here, it's because this function was (eventually) called + # from the body of a command implementation whose state update will load the + # addressable area it's querying... but that state update has not been submitted + # and processed, so nothing has created the entry for this cutout id yet. Do what + # we'll do when we actually get to that state update, which is apply the base + # potential fixtures from the deck def. + return cutout_id, base_potential_fixtures diff --git a/api/src/opentrons/protocol_engine/state/geometry.py b/api/src/opentrons/protocol_engine/state/geometry.py index 3f44712600d..7da794bf3e6 100644 --- a/api/src/opentrons/protocol_engine/state/geometry.py +++ b/api/src/opentrons/protocol_engine/state/geometry.py @@ -1,5 +1,6 @@ """Geometry state getters.""" +from logging import getLogger import enum from numpy import array, dot, double as npdouble from numpy.typing import NDArray @@ -22,6 +23,7 @@ LabwareNotLoadedOnModuleError, LabwareMovementNotAllowedError, OperationLocationNotInWellError, + WrongModuleTypeError, ) from ..resources import fixture_validation, labware_validation from ..types import ( @@ -55,7 +57,15 @@ OnModuleOffsetLocationSequenceComponent, OnAddressableAreaOffsetLocationSequenceComponent, OnLabwareOffsetLocationSequenceComponent, + OnLabwareLocationSequenceComponent, ModuleModel, + LabwareLocationSequence, + OnModuleLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + OnCutoutFixtureLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, + labware_location_is_off_deck, + labware_location_is_system, ) from .config import Config from .labware import LabwareView @@ -70,6 +80,7 @@ from ._well_math import wells_covered_by_pipette_configuration, nozzles_per_well +_LOG = getLogger(__name__) SLOT_WIDTH = 128 _PIPETTE_HOMED_POSITION_Z = ( 248.0 # Height of the bottom of the nozzle without the tip attached when homed @@ -1364,6 +1375,161 @@ def _labware_gripper_offsets( labware_id=labware_id, slot_name=None ) + def get_location_sequence(self, labware_id: str) -> LabwareLocationSequence: + """Provide the LocationSequence specifying the current position of the labware. + + Elements in this sequence contain instance IDs of things. The chain is valid only until the + labware is moved. + """ + return self.get_predicted_location_sequence( + self._labware.get_location(labware_id) + ) + + def get_predicted_location_sequence( + self, labware_location: LabwareLocation + ) -> LabwareLocationSequence: + """Get the location sequence for this location. Useful for a labware that hasn't been loaded.""" + return self._recurse_labware_location(labware_location, []) + + def _cutout_fixture_location_sequence_from_addressable_area( + self, addressable_area_name: str + ) -> OnCutoutFixtureLocationSequenceComponent: + ( + cutout_id, + potential_fixtures, + ) = self._addressable_areas.get_current_potential_cutout_fixtures_for_addressable_area( + addressable_area_name + ) + return OnCutoutFixtureLocationSequenceComponent( + possibleCutoutFixtureIds=sorted( + [fixture.cutout_fixture_id for fixture in potential_fixtures] + ), + cutoutId=cutout_id, + ) + + def _recurse_labware_location_from_aa_component( + self, + labware_location: AddressableAreaLocation, + building: LabwareLocationSequence, + ) -> LabwareLocationSequence: + cutout_location = self._cutout_fixture_location_sequence_from_addressable_area( + labware_location.addressableAreaName + ) + # If the labware is loaded on an AA that is a module, we want to respect the convention + # of giving it an OnModuleLocation. + possible_module = self._modules.get_by_addressable_area( + labware_location.addressableAreaName + ) + if possible_module is not None: + return building + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=labware_location.addressableAreaName + ), + OnModuleLocationSequenceComponent(moduleId=possible_module.id), + cutout_location, + ] + else: + return building + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=labware_location.addressableAreaName, + ), + cutout_location, + ] + + def _recurse_labware_location_from_module_component( + self, labware_location: ModuleLocation, building: LabwareLocationSequence + ) -> LabwareLocationSequence: + module_id = labware_location.moduleId + module_aa = self._modules.get_provided_addressable_area(module_id) + base_location: ( + OnCutoutFixtureLocationSequenceComponent + | NotOnDeckLocationSequenceComponent + ) = self._cutout_fixture_location_sequence_from_addressable_area(module_aa) + try: + self._modules.get_flex_stacker_substate(labware_location.moduleId) + base_location = NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ) + except WrongModuleTypeError: + pass + + if self._modules.get_deck_supports_module_fixtures(): + # On a deck with modules as cutout fixtures, we want, in order, + # - the addressable area of the module + # - the module with its module id, which is what clients want + # - the cutout + loc = self._modules.get_location(module_id) + model = self._modules.get_connected_model(module_id) + module_aa = self._modules.ensure_and_convert_module_fixture_location( + loc.slotName, model + ) + return building + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=module_aa + ), + OnModuleLocationSequenceComponent(moduleId=module_id), + base_location, + ] + else: + # If the module isn't a cutout fixture, then we want + # - the module + # - the addressable area the module is loaded on + # - the cutout + location = self._modules.get_location(module_id) + return building + [ + OnModuleLocationSequenceComponent(moduleId=module_id), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=location.slotName.value + ), + base_location, + ] + + def _recurse_labware_location( + self, + labware_location: LabwareLocation, + building: LabwareLocationSequence, + ) -> LabwareLocationSequence: + if isinstance(labware_location, AddressableAreaLocation): + return self._recurse_labware_location_from_aa_component( + labware_location, building + ) + elif labware_location_is_off_deck( + labware_location + ) or labware_location_is_system(labware_location): + return building + [ + NotOnDeckLocationSequenceComponent(logicalLocationName=labware_location) + ] + + elif isinstance(labware_location, OnLabwareLocation): + return self._recurse_labware_location( + self._labware.get_location(labware_location.labwareId), + building + + [ + OnLabwareLocationSequenceComponent( + labwareId=labware_location.labwareId, + lidId=self._labware.get_lid_id_by_labware_id( + labware_location.labwareId + ), + ) + ], + ) + elif isinstance(labware_location, ModuleLocation): + return self._recurse_labware_location_from_module_component( + labware_location, building + ) + elif isinstance(labware_location, DeckSlotLocation): + return building + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=labware_location.slotName.value, + ), + self._cutout_fixture_location_sequence_from_addressable_area( + labware_location.slotName.value + ), + ] + else: + _LOG.warn(f"Unhandled labware location kind: {labware_location}") + return building + def get_offset_location( self, labware_id: str ) -> Optional[LabwareOffsetLocationSequence]: diff --git a/api/src/opentrons/protocol_engine/state/labware.py b/api/src/opentrons/protocol_engine/state/labware.py index 553538895e5..6560ebe35a1 100644 --- a/api/src/opentrons/protocol_engine/state/labware.py +++ b/api/src/opentrons/protocol_engine/state/labware.py @@ -487,9 +487,13 @@ def get_labware_stack( return self.get_labware_stack(labware_stack) return labware_stack + def get_lid_id_by_labware_id(self, labware_id: str) -> str | None: + """Get the ID of a lid labware on top of a given labware, if any.""" + return self._state.labware_by_id[labware_id].lid_id + def get_lid_by_labware_id(self, labware_id: str) -> LoadedLabware | None: """Get the Lid Labware that is currently on top of a given labware, if there is one.""" - lid_id = self._state.labware_by_id[labware_id].lid_id + lid_id = self.get_lid_id_by_labware_id(labware_id) if lid_id: return self._state.labware_by_id[lid_id] else: diff --git a/api/src/opentrons/protocol_engine/state/modules.py b/api/src/opentrons/protocol_engine/state/modules.py index 8fdfd44ee4f..3141530395c 100644 --- a/api/src/opentrons/protocol_engine/state/modules.py +++ b/api/src/opentrons/protocol_engine/state/modules.py @@ -36,7 +36,7 @@ ) from opentrons.types import DeckSlotName, MountType, StagingSlotName from .update_types import AbsorbanceReaderStateUpdate, FlexStackerStateUpdate -from ..errors import ModuleNotConnectedError +from ..errors import ModuleNotConnectedError, AreaNotInDeckConfigurationError from ..types import ( LoadedModule, @@ -676,6 +676,15 @@ def get_by_slot( return None + def get_by_addressable_area( + self, addressable_area_name: str + ) -> Optional[LoadedModule]: + """Get the module associated with this addressable area, if any.""" + for module_id in self._state.slot_by_module_id.keys(): + if addressable_area_name == self.get_provided_addressable_area(module_id): + return self.get(module_id) + return None + def _get_module_substate( self, module_id: str, expected_type: Type[ModuleSubStateT], expected_name: str ) -> ModuleSubStateT: @@ -803,6 +812,26 @@ def get_location(self, module_id: str) -> DeckSlotLocation: ) return location + def get_provided_addressable_area(self, module_id: str) -> str: + """Get the addressable area provided by this module. + + If the current deck does not allow modules to provide locations (i.e., is an OT-2 deck) + then return the addressable area underneath the module. + """ + module = self.get(module_id) + + if isinstance(module.location, DeckSlotLocation): + location = module.location.slotName + elif module.model == ModuleModel.THERMOCYCLER_MODULE_V2: + location = DeckSlotName.SLOT_B1 + else: + raise ValueError( + "Module location invalid for nominal module offset calculation." + ) + if not self.get_deck_supports_module_fixtures(): + return location.value + return self.ensure_and_convert_module_fixture_location(location, module.model) + def get_requested_model(self, module_id: str) -> Optional[ModuleModel]: """Return the model by which this module was requested. @@ -910,18 +939,7 @@ def get_nominal_offset_to_child( z=xformed[2], ) else: - module = self.get(module_id) - if isinstance(module.location, DeckSlotLocation): - location = module.location.slotName - elif module.model == ModuleModel.THERMOCYCLER_MODULE_V2: - location = DeckSlotName.SLOT_B1 - else: - raise ValueError( - "Module location invalid for nominal module offset calculation." - ) - module_addressable_area = self.ensure_and_convert_module_fixture_location( - location, module.model - ) + module_addressable_area = self.get_provided_addressable_area(module_id) module_addressable_area_position = ( addressable_areas.get_addressable_area_offsets_from_cutout( module_addressable_area @@ -1313,7 +1331,7 @@ def ensure_and_convert_module_fixture_location( deck_type = self._state.deck_type if not self.get_deck_supports_module_fixtures(): - raise ValueError( + raise AreaNotInDeckConfigurationError( f"Invalid Deck Type: {deck_type.name} - Does not support modules as fixtures." ) diff --git a/api/src/opentrons/protocol_engine/types/__init__.py b/api/src/opentrons/protocol_engine/types/__init__.py index bf1f524a7a7..6e329c68dd6 100644 --- a/api/src/opentrons/protocol_engine/types/__init__.py +++ b/api/src/opentrons/protocol_engine/types/__init__.py @@ -78,6 +78,14 @@ OnDeckLabwareLocation, NonStackedLocation, DeckPoint, + OnLabwareLocationSequenceComponent, + OnModuleLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, + OnCutoutFixtureLocationSequenceComponent, + LabwareLocationSequence, + labware_location_is_system, + labware_location_is_off_deck, ) from .labware import ( OverlapOffset, @@ -202,6 +210,16 @@ "OnDeckLabwareLocation", "NonStackedLocation", "DeckPoint", + "OffDeckLocationType", + "SystemLocationType", + "OnLabwareLocationSequenceComponent", + "OnModuleLocationSequenceComponent", + "OnAddressableAreaLocationSequenceComponent", + "NotOnDeckLocationSequenceComponent", + "OnCutoutFixtureLocationSequenceComponent", + "LabwareLocationSequence", + "labware_location_is_off_deck", + "labware_location_is_system", # Labware offset location "LegacyLabwareOffsetLocation", "LabwareOffsetLocationSequence", diff --git a/api/src/opentrons/protocol_engine/types/location.py b/api/src/opentrons/protocol_engine/types/location.py index cc174f4bdea..c1eece77549 100644 --- a/api/src/opentrons/protocol_engine/types/location.py +++ b/api/src/opentrons/protocol_engine/types/location.py @@ -1,6 +1,7 @@ """Protocol engine types to deal with locating things on the deck.""" -from typing import Literal, Union +from __future__ import annotations +from typing import Literal, Union, TypeGuard from pydantic import BaseModel, Field @@ -78,6 +79,20 @@ class OnLabwareLocation(BaseModel): SYSTEM_LOCATION: _SystemLocationType = "systemLocation" +def labware_location_is_off_deck( + location: LabwareLocation, +) -> TypeGuard[_OffDeckLocationType]: + """Check if a location is an off deck location.""" + return isinstance(location, str) and location == OFF_DECK_LOCATION + + +def labware_location_is_system( + location: LabwareLocation, +) -> TypeGuard[_SystemLocationType]: + """Check if a location is the system location.""" + return isinstance(location, str) and location == SYSTEM_LOCATION + + class OnLabwareLocationSequenceComponent(BaseModel): """Labware on another labware.""" @@ -98,7 +113,14 @@ class OnAddressableAreaLocationSequenceComponent(BaseModel): kind: Literal["onAddressableArea"] = "onAddressableArea" addressableAreaName: str - slotName: str | None + + +class OnCutoutFixtureLocationSequenceComponent(BaseModel): + """Something on a deck cutout fixture.""" + + kind: Literal["onCutoutFixture"] = "onCutoutFixture" + possibleCutoutFixtureIds: list[str] + cutoutId: str class NotOnDeckLocationSequenceComponent(BaseModel): @@ -113,6 +135,7 @@ class NotOnDeckLocationSequenceComponent(BaseModel): | OnModuleLocationSequenceComponent | OnAddressableAreaLocationSequenceComponent | NotOnDeckLocationSequenceComponent + | OnCutoutFixtureLocationSequenceComponent ] """Labware location specifier.""" diff --git a/api/src/opentrons/protocol_runner/legacy_command_mapper.py b/api/src/opentrons/protocol_runner/legacy_command_mapper.py index f7d50e539d8..afb06075e2a 100644 --- a/api/src/opentrons/protocol_runner/legacy_command_mapper.py +++ b/api/src/opentrons/protocol_runner/legacy_command_mapper.py @@ -663,6 +663,8 @@ def _map_labware_load( labware_load_info.labware_definition ), offsetId=labware_load_info.offset_id, + # These legacy json protocols don't get location sequences because + # to do so we'd have to go back and look up where the module gets loaded ), ) queue_action = pe_actions.QueueCommandAction( diff --git a/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_retrieve.py b/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_retrieve.py index 6f11b2908b7..dcd214dd761 100644 --- a/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_retrieve.py +++ b/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_retrieve.py @@ -1,4 +1,5 @@ """Test Flex Stacker retrieve command implementation.""" + import pytest from decoy import Decoy from contextlib import nullcontext as does_not_raise @@ -28,6 +29,10 @@ ModuleLocation, LoadedLabware, OverlapOffset, + OnModuleLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, + OFF_DECK_LOCATION, ) from opentrons.protocol_engine.errors import CannotPerformModuleAction from opentrons.types import DeckSlotName @@ -95,6 +100,18 @@ async def test_retrieve( decoy.when( equipment.get_module_hardware_api(FlexStackerId("flex-stacker-id")) ).then_return(fs_hardware) + decoy.when(state_view.geometry.get_location_sequence("labware-id")).then_return( + [ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + NotOnDeckLocationSequenceComponent(logicalLocationName=OFF_DECK_LOCATION), + ] + ) + decoy.when( + state_view.modules.get_provided_addressable_area("flex-stacker-id") + ).then_return("flexStackerV1B4") + decoy.when(state_view.modules.get_location("flex-stacker-id")).then_return( + DeckSlotLocation(slotName=DeckSlotName.SLOT_B3) + ) with expectation: result = await subject.execute(data) @@ -103,7 +120,21 @@ async def test_retrieve( decoy.verify(await fs_hardware.dispense_labware(labware_height=4), times=1) assert result == SuccessData( - public=flex_stacker.RetrieveResult(labware_id="labware-id"), + public=flex_stacker.RetrieveResult( + labware_id="labware-id", + originLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ), + ], + eventualDestinationLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="flexStackerV1B4", + ), + ], + ), state_update=StateUpdate( labware_location=LabwareLocationUpdate( labware_id="labware-id", diff --git a/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_store.py b/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_store.py index 1d6ea1b9947..a103adcdcf4 100644 --- a/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_store.py +++ b/api/tests/opentrons/protocol_engine/commands/flex_stacker/test_store.py @@ -1,4 +1,5 @@ """Test Flex Stacker store command implementation.""" + import pytest from decoy import Decoy from contextlib import nullcontext as does_not_raise @@ -29,6 +30,9 @@ OFF_DECK_LOCATION, LoadedLabware, OverlapOffset, + OnModuleLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, ) from opentrons.protocol_engine.errors import CannotPerformModuleAction from opentrons.types import DeckSlotName @@ -100,6 +104,14 @@ async def test_store( decoy.when( equipment.get_module_hardware_api(FlexStackerId("flex-stacker-id")) ).then_return(fs_hardware) + decoy.when(state_view.geometry.get_location_sequence("labware-id")).then_return( + [ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="flexStackerV1B4", + ), + ] + ) with expectation: result = await subject.execute(data) @@ -107,7 +119,20 @@ async def test_store( if not in_static_mode: decoy.verify(await fs_hardware.store_labware(labware_height=4), times=1) assert result == SuccessData( - public=flex_stacker.StoreResult(), + public=flex_stacker.StoreResult( + originLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="flexStackerV1B4", + ), + ], + eventualDestinationLocationSequence=[ + OnModuleLocationSequenceComponent(moduleId="flex-stacker-id"), + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ), + ], + ), state_update=StateUpdate( labware_location=LabwareLocationUpdate( labware_id="labware-id", diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_labware.py b/api/tests/opentrons/protocol_engine/commands/test_load_labware.py index 01a5406731d..438955f63c8 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_load_labware.py +++ b/api/tests/opentrons/protocol_engine/commands/test_load_labware.py @@ -1,4 +1,5 @@ """Test load labware commands.""" + import inspect from typing import Optional from unittest.mock import sentinel @@ -23,6 +24,10 @@ ModuleLocation, ModuleModel, LoadedModule, + OnLabwareLocationSequenceComponent, + OnModuleLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, OFF_DECK_LOCATION, ) from opentrons.protocol_engine.execution import LoadedLabwareData, EquipmentHandler @@ -84,6 +89,15 @@ async def test_load_labware_on_slot_or_addressable_area( version=1, displayName=display_name, ) + decoy.when( + state_view.geometry.get_predicted_location_sequence(location) + ).then_return( + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=expected_addressable_area_name, + ) + ] + ) decoy.when(state_view.geometry.ensure_location_not_occupied(location)).then_return( sentinel.validated_empty_location @@ -115,6 +129,11 @@ async def test_load_labware_on_slot_or_addressable_area( labwareId="labware-id", definition=well_plate_def, offsetId="labware-offset-id", + locationSequence=[ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName=expected_addressable_area_name, + ) + ], ), state_update=StateUpdate( loaded_labware=LoadedLabwareUpdate( @@ -190,6 +209,18 @@ async def test_load_labware_on_labware( offsetId="labware-offset-id", ) ) + decoy.when( + state_view.geometry.get_predicted_location_sequence( + OnLabwareLocation(labwareId="other-labware-id") + ) + ).then_return( + [ + OnLabwareLocationSequenceComponent( + labwareId="other-labware-id", lidId=None + ), + OnAddressableAreaLocationSequenceComponent(addressableAreaName="A3"), + ] + ) decoy.when( labware_validation.validate_definition_is_labware(well_plate_def) @@ -201,6 +232,12 @@ async def test_load_labware_on_labware( labwareId="labware-id", definition=well_plate_def, offsetId="labware-offset-id", + locationSequence=[ + OnLabwareLocationSequenceComponent( + labwareId="other-labware-id", lidId=None + ), + OnAddressableAreaLocationSequenceComponent(addressableAreaName="A3"), + ], ), state_update=StateUpdate( loaded_labware=LoadedLabwareUpdate( @@ -281,6 +318,16 @@ async def test_load_labware_in_flex_stacker( hopper_labware_ids=[], ) ) + decoy.when( + state_view.geometry.get_predicted_location_sequence( + ModuleLocation(moduleId="some-module-id") + ) + ).then_return( + [ + OnModuleLocationSequenceComponent(moduleId="some-module-id"), + NotOnDeckLocationSequenceComponent(logicalLocationName=OFF_DECK_LOCATION), + ] + ) decoy.when( await equipment.load_labware( @@ -305,6 +352,12 @@ async def test_load_labware_in_flex_stacker( labwareId="labware-id", definition=well_plate_def, offsetId="labware-offset-id", + locationSequence=[ + OnModuleLocationSequenceComponent(moduleId="some-module-id"), + NotOnDeckLocationSequenceComponent( + logicalLocationName=OFF_DECK_LOCATION + ), + ], ), state_update=StateUpdate( loaded_labware=LoadedLabwareUpdate( diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_lid.py b/api/tests/opentrons/protocol_engine/commands/test_load_lid.py new file mode 100644 index 00000000000..21eff3e0c25 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/test_load_lid.py @@ -0,0 +1,118 @@ +"""Test the loadLid command.""" + +import inspect + +import pytest +from decoy import Decoy + +from opentrons_shared_data.labware.labware_definition import LabwareDefinition + +from opentrons.protocol_engine.resources import labware_validation +from opentrons.protocol_engine.execution import LoadedLabwareData, EquipmentHandler +from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.types import ( + OnLabwareLocation, + OnLabwareLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, +) +from opentrons.protocol_engine.state.update_types import ( + LabwareLidUpdate, + LoadedLabwareUpdate, + StateUpdate, +) +from opentrons.protocol_engine.commands.command import SuccessData + +from opentrons.protocol_engine.commands.load_lid import ( + LoadLidParams, + LoadLidResult, + LoadLidImplementation, +) + + +@pytest.fixture(autouse=True) +def patch_mock_labware_validation( + decoy: Decoy, monkeypatch: pytest.MonkeyPatch +) -> None: + """Mock out labware_validations.py functions.""" + for name, func in inspect.getmembers(labware_validation, inspect.isfunction): + monkeypatch.setattr(labware_validation, name, decoy.mock(func=func)) + + +async def test_load_lid_on_tiprack( + decoy: Decoy, + tiprack_lid_def: LabwareDefinition, + equipment: EquipmentHandler, + state_view: StateView, +) -> None: + """It should load a lid onto a labware.""" + subject = LoadLidImplementation(equipment=equipment, state_view=state_view) + input_location = OnLabwareLocation(labwareId="some-labware-id") + decoy.when( + state_view.geometry.ensure_location_not_occupied(location=input_location) + ).then_return(input_location) + decoy.when( + await equipment.load_labware( + load_name="someLid", + namespace="someNamespace", + version=1, + location=input_location, + labware_id=None, + ) + ).then_return( + LoadedLabwareData( + labware_id="labware-id", + definition=tiprack_lid_def, + offsetId=None, + ) + ) + + decoy.when( + labware_validation.validate_definition_is_lid(tiprack_lid_def) + ).then_return(True) + + decoy.when( + state_view.labware.raise_if_labware_cannot_be_stacked( + top_labware_definition=tiprack_lid_def, + bottom_labware_id=input_location.labwareId, + ) + ).then_return(True) + decoy.when( + state_view.geometry.get_location_sequence(input_location.labwareId) + ).then_return( + [OnAddressableAreaLocationSequenceComponent(addressableAreaName="someAa")] + ) + + result = await subject.execute( + LoadLidParams( + location=input_location, + loadName="someLid", + namespace="someNamespace", + version=1, + ) + ) + assert result == SuccessData( + public=LoadLidResult( + definition=tiprack_lid_def, + labwareId="labware-id", + locationSequence=[ + OnLabwareLocationSequenceComponent( + labwareId=input_location.labwareId, lidId="labware-id" + ), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="someAa" + ), + ], + ), + state_update=StateUpdate( + labware_lid=LabwareLidUpdate( + parent_labware_ids=["some-labware-id"], lid_ids=["labware-id"] + ), + loaded_labware=LoadedLabwareUpdate( + definition=tiprack_lid_def, + labware_id="labware-id", + offset_id=None, + display_name=None, + new_location=input_location, + ), + ), + ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_lid_stack.py b/api/tests/opentrons/protocol_engine/commands/test_load_lid_stack.py new file mode 100644 index 00000000000..33987b33e86 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/test_load_lid_stack.py @@ -0,0 +1,165 @@ +"""Test the loadLidStack command.""" + +import inspect + +import pytest +from decoy import Decoy + +from opentrons_shared_data.labware.labware_definition import LabwareDefinition + +from opentrons.types import DeckSlotName + +from opentrons.protocol_engine.resources import labware_validation +from opentrons.protocol_engine.execution import LoadedLabwareData, EquipmentHandler +from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.types import ( + OnLabwareLocation, + DeckSlotLocation, + OnLabwareLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, +) +from opentrons.protocol_engine.state.update_types import ( + LoadedLidStackUpdate, + StateUpdate, +) +from opentrons.protocol_engine.commands.command import SuccessData + +from opentrons.protocol_engine.commands.load_lid_stack import ( + LoadLidStackParams, + LoadLidStackResult, + LoadLidStackImplementation, +) + + +@pytest.fixture(autouse=True) +def patch_mock_labware_validation( + decoy: Decoy, monkeypatch: pytest.MonkeyPatch +) -> None: + """Mock out labware_validations.py functions.""" + for name, func in inspect.getmembers(labware_validation, inspect.isfunction): + monkeypatch.setattr(labware_validation, name, decoy.mock(func=func)) + + +async def test_load_lid_stack( + decoy: Decoy, + tiprack_lid_def: LabwareDefinition, + lid_stack_def: LabwareDefinition, + equipment: EquipmentHandler, + state_view: StateView, +) -> None: + """It should load a lid onto a labware.""" + subject = LoadLidStackImplementation(equipment=equipment, state_view=state_view) + input_location = DeckSlotLocation(slotName=DeckSlotName.SLOT_A1) + + data = LoadLidStackParams( + location=input_location, + loadName="someLid", + namespace="someNamespace", + version=1, + quantity=3, + ) + + decoy.when( + state_view.addressable_areas.raise_if_area_not_in_deck_configuration("A1") + ).then_return(True) + decoy.when( + state_view.geometry.ensure_location_not_occupied(location=input_location) + ).then_return(input_location) + + decoy.when( + await equipment.load_labware( + load_name="protocol_engine_lid_stack_object", + namespace="opentrons", + version=1, + location=input_location, + labware_id=None, + ) + ).then_return( + LoadedLabwareData( + labware_id="stack-labware-id", + definition=lid_stack_def, + offsetId=None, + ) + ) + decoy.when( + labware_validation.validate_definition_is_system(lid_stack_def) + ).then_return(True) + + lids = [ + LoadedLabwareData( + labware_id="lid-labware-1", definition=tiprack_lid_def, offsetId=None + ), + LoadedLabwareData( + labware_id="lid-labware-2", + definition=tiprack_lid_def, + offsetId=None, + ), + LoadedLabwareData( + labware_id="lid-labware-3", definition=tiprack_lid_def, offsetId=None + ), + ] + + decoy.when( + await equipment.load_lids( + load_name="someLid", + namespace="someNamespace", + version=1, + location=OnLabwareLocation(labwareId="stack-labware-id"), + quantity=3, + labware_ids=None, + ) + ).then_return(lids) + + stack_loc = OnAddressableAreaLocationSequenceComponent(addressableAreaName="A1") + on_stack_loc = OnLabwareLocationSequenceComponent( + labwareId="stack-labware-id", lidId=None + ) + decoy.when( + state_view.geometry.get_predicted_location_sequence(input_location) + ).then_return([stack_loc]) + + result = await subject.execute(data) + expected_result = SuccessData( + public=LoadLidStackResult( + stackLabwareId="stack-labware-id", + labwareIds=["lid-labware-1", "lid-labware-2", "lid-labware-3"], + definition=tiprack_lid_def, + location=input_location, + stackLocationSequence=[stack_loc], + locationSequences=[ + [on_stack_loc, stack_loc], + [ + OnLabwareLocationSequenceComponent( + labwareId="lid-labware-1", lidId=None + ), + on_stack_loc, + stack_loc, + ], + [ + OnLabwareLocationSequenceComponent( + labwareId="lid-labware-2", lidId=None + ), + OnLabwareLocationSequenceComponent( + labwareId="lid-labware-1", lidId=None + ), + on_stack_loc, + stack_loc, + ], + ], + ), + state_update=StateUpdate( + loaded_lid_stack=LoadedLidStackUpdate( + stack_id="stack-labware-id", + stack_object_definition=lid_stack_def, + stack_location=input_location, + definition=tiprack_lid_def, + new_locations_by_id={ + "lid-labware-1": OnLabwareLocation(labwareId="stack-labware-id"), + "lid-labware-2": OnLabwareLocation(labwareId="lid-labware-1"), + "lid-labware-3": OnLabwareLocation(labwareId="lid-labware-2"), + }, + ) + ), + ) + assert result.public.locationSequences == expected_result.public.locationSequences + assert result == result diff --git a/api/tests/opentrons/protocol_engine/commands/test_move_labware.py b/api/tests/opentrons/protocol_engine/commands/test_move_labware.py index 3a1e8c47b02..82026403e31 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_move_labware.py +++ b/api/tests/opentrons/protocol_engine/commands/test_move_labware.py @@ -36,6 +36,11 @@ LabwareMovementOffsetData, DeckType, AddressableAreaLocation, + OnAddressableAreaLocationSequenceComponent, + OnLabwareLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, + OFF_DECK_LOCATION, + LabwareLocationSequence, ) from opentrons.protocol_engine.state.state import StateView from opentrons.protocol_engine.commands.command import DefinedErrorData, SuccessData @@ -123,6 +128,12 @@ async def test_manual_move_labware_implementation( labware_location=DeckSlotLocation(slotName=DeckSlotName.SLOT_5), ) ).then_return("wowzers-a-new-offset-id") + decoy.when( + state_view.geometry.get_location_sequence("my-cool-labware-id") + ).then_return([OnAddressableAreaLocationSequenceComponent(addressableAreaName="5")]) + decoy.when( + state_view.geometry.get_predicted_location_sequence(new_location) + ).then_return([OnAddressableAreaLocationSequenceComponent(addressableAreaName="4")]) result = await subject.execute(data) decoy.verify(await run_control.wait_for_resume(), times=times_pause_called) @@ -132,6 +143,15 @@ async def test_manual_move_labware_implementation( assert result == SuccessData( public=MoveLabwareResult( offsetId="wowzers-a-new-offset-id", + originLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="5") + ], + immediateDestinationLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="4") + ], + eventualDestinationLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="4") + ], ), state_update=update_types.StateUpdate( labware_location=update_types.LabwareLocationUpdate( @@ -185,6 +205,19 @@ async def test_move_labware_implementation_on_labware( labware_location=OnLabwareLocation(labwareId="my-even-cooler-labware-id"), ) ).then_return("wowzers-a-new-offset-id") + decoy.when( + state_view.geometry.get_location_sequence("my-cool-labware-id") + ).then_return([OnAddressableAreaLocationSequenceComponent(addressableAreaName="1")]) + decoy.when( + state_view.geometry.get_predicted_location_sequence( + OnLabwareLocation(labwareId="new-labware-id") + ) + ).then_return( + [ + OnLabwareLocationSequenceComponent(labwareId="new-labware-id", lidId=None), + OnAddressableAreaLocationSequenceComponent(addressableAreaName="2"), + ] + ) result = await subject.execute(data) decoy.verify( @@ -200,6 +233,21 @@ async def test_move_labware_implementation_on_labware( assert result == SuccessData( public=MoveLabwareResult( offsetId="wowzers-a-new-offset-id", + originLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="1") + ], + immediateDestinationLocationSequence=[ + OnLabwareLocationSequenceComponent( + labwareId="new-labware-id", lidId=None + ), + OnAddressableAreaLocationSequenceComponent(addressableAreaName="2"), + ], + eventualDestinationLocationSequence=[ + OnLabwareLocationSequenceComponent( + labwareId="new-labware-id", lidId=None + ), + OnAddressableAreaLocationSequenceComponent(addressableAreaName="2"), + ], ), state_update=update_types.StateUpdate( labware_location=update_types.LabwareLocationUpdate( @@ -264,6 +312,20 @@ async def test_gripper_move_labware_implementation( decoy.when( labware_validation.validate_gripper_compatible(sentinel.labware_definition) ).then_return(True) + decoy.when( + state_view.geometry.get_location_sequence("my-cool-labware-id") + ).then_return( + [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="1", + ) + ] + ) + decoy.when( + state_view.geometry.get_predicted_location_sequence( + sentinel.new_location_validated_for_gripper + ) + ).then_return([OnAddressableAreaLocationSequenceComponent(addressableAreaName="5")]) result = await subject.execute(data) decoy.verify( @@ -282,6 +344,15 @@ async def test_gripper_move_labware_implementation( assert result == SuccessData( public=MoveLabwareResult( offsetId="wowzers-a-new-offset-id", + originLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="1") + ], + immediateDestinationLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="5") + ], + eventualDestinationLocationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="5") + ], ), state_update=update_types.StateUpdate( pipette_location=update_types.CLEAR, @@ -321,7 +392,7 @@ async def test_gripper_error( labware_def = LabwareDefinition.model_construct( # type: ignore[call-arg] namespace=labware_namespace, ) - original_location = DeckSlotLocation(slotName=DeckSlotName.SLOT_A1) + origin_location = DeckSlotLocation(slotName=DeckSlotName.SLOT_A1) new_location = DeckSlotLocation(slotName=DeckSlotName.SLOT_A2) error_id = "error-id" error_created_at = datetime.now() @@ -335,13 +406,13 @@ async def test_gripper_error( id=labware_id, loadName=labware_load_name, definitionUri=labware_definition_uri, - location=original_location, + location=origin_location, offsetId=None, ) ) decoy.when( - state_view.geometry.ensure_valid_gripper_location(original_location) - ).then_return(original_location) + state_view.geometry.ensure_valid_gripper_location(origin_location) + ).then_return(origin_location) decoy.when( state_view.geometry.ensure_valid_gripper_location(new_location) ).then_return(new_location) @@ -363,7 +434,7 @@ async def test_gripper_error( decoy.when( await labware_movement.move_labware_with_gripper( labware_id=labware_id, - current_location=original_location, + current_location=origin_location, new_location=new_location, user_offset_data=LabwareMovementOffsetData( pickUpOffset=LabwareOffsetVector(x=0, y=0, z=0), @@ -374,6 +445,14 @@ async def test_gripper_error( ).then_raise(underlying_exception) decoy.when(model_utils.get_timestamp()).then_return(error_created_at) decoy.when(model_utils.generate_id()).then_return(error_id) + decoy.when(state_view.geometry.get_location_sequence("labware-id")).then_return( + [OnAddressableAreaLocationSequenceComponent(addressableAreaName="A1")] + ) + decoy.when( + state_view.geometry.get_predicted_location_sequence(new_location) + ).then_return( + [OnAddressableAreaLocationSequenceComponent(addressableAreaName="A2")] + ) result = await subject.execute(params) @@ -383,6 +462,17 @@ async def test_gripper_error( createdAt=error_created_at, errorCode=underlying_exception.code.value.code, detail=underlying_exception.code.value.detail, + errorInfo={ + "originLocationSequence": [ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="A1") + ], + "immediateDestinationLocationSequence": [ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="A2") + ], + "eventualDestinationLocationSequence": [ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="A2") + ], + }, wrappedErrors=[matchers.Anything()], ), state_update=update_types.StateUpdate( @@ -429,6 +519,12 @@ async def test_clears_location_if_current_labware_moved_from_under_pipette( pipette_id="pipette-id", labware_id=current_labware_id, well_name="A1" ) ) + decoy.when(state_view.geometry.get_location_sequence(moved_labware_id)).then_return( + [] + ) + decoy.when( + state_view.geometry.get_predicted_location_sequence(to_location) + ).then_return([]) result = await subject.execute( params=MoveLabwareParams( @@ -458,6 +554,17 @@ async def test_gripper_move_to_waste_chute_implementation( expected_slide_offset = Point( x=labware_width / 2 + GRIPPER_PADDLE_WIDTH / 2 + 8, y=0, z=0 ) + from_loc_sequence: LabwareLocationSequence = [ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="1") + ] + immediate_dest_loc_sequence: LabwareLocationSequence = [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="gripperWasteChute" + ) + ] + eventual_dest_loc_sequence: LabwareLocationSequence = [ + NotOnDeckLocationSequenceComponent(logicalLocationName=OFF_DECK_LOCATION) + ] data = MoveLabwareParams( labwareId="my-cool-labware-id", @@ -475,6 +582,12 @@ async def test_gripper_move_to_waste_chute_implementation( decoy.when( state_view.labware.get_definition(labware_id="my-cool-labware-id") ).then_return(labware_def) + decoy.when( + state_view.geometry.get_location_sequence("my-cool-labware-id") + ).then_return(from_loc_sequence) + decoy.when( + state_view.geometry.get_predicted_location_sequence(new_location) + ).then_return(immediate_dest_loc_sequence) decoy.when(state_view.labware.get(labware_id="my-cool-labware-id")).then_return( LoadedLabware( id="my-cool-labware-id", @@ -523,6 +636,9 @@ async def test_gripper_move_to_waste_chute_implementation( assert result == SuccessData( public=MoveLabwareResult( offsetId="wowzers-a-new-offset-id", + originLocationSequence=from_loc_sequence, + immediateDestinationLocationSequence=immediate_dest_loc_sequence, + eventualDestinationLocationSequence=eventual_dest_loc_sequence, ), state_update=update_types.StateUpdate( pipette_location=update_types.CLEAR, diff --git a/api/tests/opentrons/protocol_engine/commands/test_reload_labware.py b/api/tests/opentrons/protocol_engine/commands/test_reload_labware.py index 6b13f464e77..c24582aae3e 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_reload_labware.py +++ b/api/tests/opentrons/protocol_engine/commands/test_reload_labware.py @@ -1,4 +1,5 @@ """Test load labware commands.""" + import inspect import pytest @@ -14,6 +15,7 @@ from opentrons.protocol_engine.types import ( DeckSlotLocation, + OnAddressableAreaLocationSequenceComponent, ) from opentrons.protocol_engine.execution import ReloadedLabwareData, EquipmentHandler from opentrons.protocol_engine.resources import labware_validation @@ -59,6 +61,11 @@ async def test_reload_labware_implementation( offsetId="labware-offset-id", ) ) + decoy.when( + state_view.geometry.get_predicted_location_sequence( + DeckSlotLocation(slotName=DeckSlotName.SLOT_4) + ) + ).then_return([OnAddressableAreaLocationSequenceComponent(addressableAreaName="4")]) result = await subject.execute(data) @@ -66,6 +73,9 @@ async def test_reload_labware_implementation( public=ReloadLabwareResult( labwareId="my-labware-id", offsetId="labware-offset-id", + locationSequence=[ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="4") + ], ), state_update=StateUpdate( labware_location=LabwareLocationUpdate( diff --git a/api/tests/opentrons/protocol_engine/conftest.py b/api/tests/opentrons/protocol_engine/conftest.py index c09d082afa2..2a6ee664d87 100644 --- a/api/tests/opentrons/protocol_engine/conftest.py +++ b/api/tests/opentrons/protocol_engine/conftest.py @@ -1,4 +1,5 @@ """ProtocolEngine shared test fixtures.""" + from __future__ import annotations import pytest @@ -155,6 +156,14 @@ def adapter_def() -> LabwareDefinition: ) +@pytest.fixture(scope="session") +def lid_stack_def() -> LabwareDefinition: + """Get the definition of the opentrons tiprack lid.""" + return LabwareDefinition.model_validate( + load_definition("protocol_engine_lid_stack_object", 1, schema=3) + ) + + @pytest.fixture(scope="session") def falcon_tuberack_def() -> LabwareDefinition: """Get the definition of the 6-well Falcon tuberack.""" diff --git a/api/tests/opentrons/protocol_engine/state/command_fixtures.py b/api/tests/opentrons/protocol_engine/state/command_fixtures.py index 6b12960be0c..bb37c280a0e 100644 --- a/api/tests/opentrons/protocol_engine/state/command_fixtures.py +++ b/api/tests/opentrons/protocol_engine/state/command_fixtures.py @@ -4,7 +4,6 @@ from pydantic import BaseModel from typing import Optional, cast, Dict -from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons_shared_data.pipette.types import PipetteNameType from opentrons.types import MountType from opentrons.protocol_engine import ErrorOccurrence, commands as cmd @@ -141,39 +140,6 @@ def create_comment_command(command_id: str = "command-id") -> cmd.Comment: ) -def create_load_labware_command( - labware_id: str, - location: LabwareLocation, - definition: LabwareDefinition, - offset_id: Optional[str], - display_name: Optional[str], -) -> cmd.LoadLabware: - """Create a completed LoadLabware command.""" - params = cmd.LoadLabwareParams( - loadName=definition.parameters.loadName, - namespace=definition.namespace, - version=definition.version, - location=location, - labwareId=None, - displayName=display_name, - ) - - result = cmd.LoadLabwareResult( - labwareId=labware_id, - definition=definition, - offsetId=offset_id, - ) - - return cmd.LoadLabware( - id="command-id", - key="command-key", - status=cmd.CommandStatus.SUCCEEDED, - createdAt=datetime.now(), - params=params, - result=result, - ) - - def create_load_pipette_command( pipette_id: str, pipette_name: PipetteNameType, diff --git a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py index 3c214923e25..7413ce4c8fe 100644 --- a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py @@ -14,6 +14,9 @@ from opentrons.protocol_engine.state.update_types import ( LoadedLabwareUpdate, StateUpdate, + FlexStackerLoadHopperLabware, + FlexStackerStateUpdate, + AddressableAreaUsedUpdate, ) from opentrons_shared_data import get_shared_data_root, load_shared_data @@ -68,6 +71,11 @@ OnAddressableAreaOffsetLocationSequenceComponent, OnModuleOffsetLocationSequenceComponent, OnLabwareOffsetLocationSequenceComponent, + OnAddressableAreaLocationSequenceComponent, + OnModuleLocationSequenceComponent, + OnLabwareLocationSequenceComponent, + NotOnDeckLocationSequenceComponent, + OnCutoutFixtureLocationSequenceComponent, ) from opentrons.protocol_engine.commands import ( CommandStatus, @@ -319,9 +327,9 @@ def my_cool_test(subject: GeometryView) -> None: well_view=mock_well_view if use_mocks else well_view, module_view=mock_module_view if use_mocks else module_view, pipette_view=mock_pipette_view if use_mocks else pipette_view, - addressable_area_view=mock_addressable_area_view - if use_mocks - else addressable_area_view, + addressable_area_view=( + mock_addressable_area_view if use_mocks else addressable_area_view + ), ) @@ -3660,3 +3668,363 @@ def _get_labware_def() -> LabwareDefinition: ) assert isclose(found_volume_bottom, expected_volume_bottom, rel_tol=0.01) assert isclose(found_volume_top, expected_volume_top, rel_tol=0.01) + + +@pytest.mark.parametrize("use_mocks", [False]) +def test_get_location_sequence_deck_slot( + decoy: Decoy, + labware_store: LabwareStore, + addressable_area_store: AddressableAreaStore, + nice_labware_definition: LabwareDefinition, + subject: GeometryView, +) -> None: + """Test if you can get the location sequence of a labware in a deck slot.""" + action = SucceedCommandAction( + command=LoadLabware( + id="load-labware-1", + createdAt=datetime.now(), + key="load-labware-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="labware-id-1", + definition=nice_labware_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=DeckSlotLocation(slotName=DeckSlotName.SLOT_C2), + loadName=nice_labware_definition.parameters.loadName, + namespace=nice_labware_definition.namespace, + version=nice_labware_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="labware-id-1", + definition=nice_labware_definition, + offset_id=None, + new_location=DeckSlotLocation(slotName=DeckSlotName.SLOT_C2), + display_name=None, + ), + addressable_area_used=AddressableAreaUsedUpdate(addressable_area_name="C2"), + ), + ) + labware_store.handle_action(action) + addressable_area_store.handle_action(action) + location_sequence = subject.get_location_sequence("labware-id-1") + assert location_sequence == [ + OnAddressableAreaLocationSequenceComponent(addressableAreaName="C2"), + OnCutoutFixtureLocationSequenceComponent( + cutoutId="cutoutC2", possibleCutoutFixtureIds=["singleCenterSlot"] + ), + ] + + +@pytest.mark.parametrize("use_mocks", [False]) +def test_get_location_sequence_module( + decoy: Decoy, + labware_store: LabwareStore, + module_store: ModuleStore, + addressable_area_store: AddressableAreaStore, + nice_labware_definition: LabwareDefinition, + tempdeck_v2_def: ModuleDefinition, + subject: GeometryView, +) -> None: + """Test if you can get the location sequence of a labware directly on a module.""" + load_module = SucceedCommandAction( + command=LoadModule( + params=LoadModuleParams( + location=DeckSlotLocation(slotName=DeckSlotName.SLOT_A3), + model=ModuleModel.TEMPERATURE_MODULE_V2, + ), + id="load-module-1", + createdAt=datetime.now(), + key="load-module-1", + status=CommandStatus.SUCCEEDED, + result=LoadModuleResult( + moduleId="module-id-1", + definition=tempdeck_v2_def, + model=tempdeck_v2_def.model, + ), + ), + state_update=StateUpdate( + addressable_area_used=AddressableAreaUsedUpdate( + addressable_area_name="temperatureModuleV2A3" + ) + ), + ) + load_labware = SucceedCommandAction( + command=LoadLabware( + id="load-labware-1", + createdAt=datetime.now(), + key="load-labware-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="labware-id-1", + definition=nice_labware_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=ModuleLocation(moduleId="module-id-1"), + loadName=nice_labware_definition.parameters.loadName, + namespace=nice_labware_definition.namespace, + version=nice_labware_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="labware-id-1", + definition=nice_labware_definition, + offset_id=None, + new_location=ModuleLocation(moduleId="module-id-1"), + display_name=None, + ) + ), + ) + + module_store.handle_action(load_module) + addressable_area_store.handle_action(load_module) + labware_store.handle_action(load_labware) + + location_sequence = subject.get_location_sequence("labware-id-1") + assert location_sequence == [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="temperatureModuleV2A3" + ), + OnModuleLocationSequenceComponent(moduleId="module-id-1"), + OnCutoutFixtureLocationSequenceComponent( + cutoutId="cutoutA3", possibleCutoutFixtureIds=["temperatureModuleV2"] + ), + ] + + +@pytest.mark.parametrize("use_mocks", [False]) +def test_get_location_sequence_module_with_adapter( + decoy: Decoy, + labware_store: LabwareStore, + module_store: ModuleStore, + addressable_area_store: AddressableAreaStore, + nice_labware_definition: LabwareDefinition, + nice_adapter_definition: LabwareDefinition, + tempdeck_v2_def: ModuleDefinition, + labware_view: LabwareView, + subject: GeometryView, +) -> None: + """Test if you can get the location sequence of a labware directly on a module.""" + load_module = SucceedCommandAction( + command=LoadModule( + params=LoadModuleParams( + location=DeckSlotLocation(slotName=DeckSlotName.SLOT_A3), + model=ModuleModel.TEMPERATURE_MODULE_V2, + ), + id="load-module-1", + createdAt=datetime.now(), + key="load-module-1", + status=CommandStatus.SUCCEEDED, + result=LoadModuleResult( + moduleId="module-id-1", + definition=tempdeck_v2_def, + model=tempdeck_v2_def.model, + ), + ), + state_update=StateUpdate( + addressable_area_used=AddressableAreaUsedUpdate( + addressable_area_name="temperatureModuleV2A3" + ) + ), + ) + load_adapter = SucceedCommandAction( + command=LoadLabware( + id="load-adapter-1", + createdAt=datetime.now(), + key="load-adapter-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="adapter-id-1", + definition=nice_adapter_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=ModuleLocation(moduleId="module-id-1"), + loadName=nice_adapter_definition.parameters.loadName, + namespace=nice_adapter_definition.namespace, + version=nice_adapter_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="adapter-id-1", + definition=nice_adapter_definition, + offset_id=None, + new_location=ModuleLocation(moduleId="module-id-1"), + display_name=None, + ), + ), + ) + load_labware = SucceedCommandAction( + command=LoadLabware( + id="load-labware-1", + createdAt=datetime.now(), + key="load-labware-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="labware-id-1", + definition=nice_labware_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=OnLabwareLocation(labwareId="adapter-id-1"), + loadName=nice_labware_definition.parameters.loadName, + namespace=nice_labware_definition.namespace, + version=nice_labware_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="labware-id-1", + definition=nice_labware_definition, + offset_id=None, + new_location=OnLabwareLocation(labwareId="adapter-id-1"), + display_name=None, + ) + ), + ) + module_store.handle_action(load_module) + addressable_area_store.handle_action(load_module) + labware_store.handle_action(load_adapter) + labware_store.handle_action(load_labware) + location_sequence = subject.get_location_sequence("labware-id-1") + assert location_sequence == [ + OnLabwareLocationSequenceComponent(labwareId="adapter-id-1", lidId=None), + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="temperatureModuleV2A3" + ), + OnModuleLocationSequenceComponent(moduleId="module-id-1"), + OnCutoutFixtureLocationSequenceComponent( + cutoutId="cutoutA3", possibleCutoutFixtureIds=["temperatureModuleV2"] + ), + ] + + +@pytest.mark.parametrize("use_mocks", [False]) +def test_get_location_sequence_off_deck( + decoy: Decoy, + labware_store: LabwareStore, + nice_labware_definition: LabwareDefinition, + subject: GeometryView, +) -> None: + """You cannot get the location sequence for a labware loaded OFF_DECK.""" + action = SucceedCommandAction( + command=LoadLabware( + id="load-labware-1", + createdAt=datetime.now(), + key="load-labware-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="labware-id-1", + definition=nice_labware_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=OFF_DECK_LOCATION, + loadName=nice_labware_definition.parameters.loadName, + namespace=nice_labware_definition.namespace, + version=nice_labware_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="labware-id-1", + definition=nice_labware_definition, + offset_id=None, + new_location=OFF_DECK_LOCATION, + display_name=None, + ) + ), + ) + labware_store.handle_action(action) + location_sequence = subject.get_location_sequence("labware-id-1") + assert location_sequence == [ + NotOnDeckLocationSequenceComponent(logicalLocationName=OFF_DECK_LOCATION) + ] + + +@pytest.mark.parametrize("use_mocks", [False]) +def test_get_location_sequence_stacker_hopper( + decoy: Decoy, + labware_store: LabwareStore, + module_store: ModuleStore, + addressable_area_store: AddressableAreaStore, + nice_labware_definition: LabwareDefinition, + flex_stacker_v1_def: ModuleDefinition, + subject: GeometryView, +) -> None: + """Test if you can get the location sequence of a labware in the stacker hopper.""" + load_module = SucceedCommandAction( + command=LoadModule( + params=LoadModuleParams( + location=DeckSlotLocation(slotName=DeckSlotName.SLOT_A3), + model=ModuleModel.FLEX_STACKER_MODULE_V1, + ), + id="load-module-1", + createdAt=datetime.now(), + key="load-module-1", + status=CommandStatus.SUCCEEDED, + result=LoadModuleResult( + moduleId="module-id-1", + definition=flex_stacker_v1_def, + model=flex_stacker_v1_def.model, + ), + ), + state_update=StateUpdate( + addressable_area_used=AddressableAreaUsedUpdate( + addressable_area_name="flexStackerModuleV1A4" + ) + ), + ) + load_labware = SucceedCommandAction( + command=LoadLabware( + id="load-labware-1", + createdAt=datetime.now(), + key="load-labware-1", + status=CommandStatus.SUCCEEDED, + result=LoadLabwareResult( + labwareId="labware-id-1", + definition=nice_labware_definition, + offsetId=None, + ), + params=LoadLabwareParams( + location=ModuleLocation(moduleId="module-id-1"), + loadName=nice_labware_definition.parameters.loadName, + namespace=nice_labware_definition.namespace, + version=nice_labware_definition.version, + ), + ), + state_update=StateUpdate( + loaded_labware=LoadedLabwareUpdate( + labware_id="labware-id-1", + definition=nice_labware_definition, + offset_id=None, + new_location=ModuleLocation(moduleId="module-id-1"), + display_name=None, + ), + flex_stacker_state_update=FlexStackerStateUpdate( + module_id="module-id-1", + hopper_labware_update=FlexStackerLoadHopperLabware( + labware_id="labware-id-1" + ), + ), + ), + ) + + module_store.handle_action(load_module) + addressable_area_store.handle_action(load_module) + module_store.handle_action(load_labware) + labware_store.handle_action(load_labware) + location_sequence = subject.get_location_sequence("labware-id-1") + assert location_sequence == [ + OnAddressableAreaLocationSequenceComponent( + addressableAreaName="flexStackerModuleV1A4" + ), + OnModuleLocationSequenceComponent(moduleId="module-id-1"), + NotOnDeckLocationSequenceComponent(logicalLocationName=OFF_DECK_LOCATION), + ] diff --git a/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py b/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py index a91066c01f8..151fecd1d03 100644 --- a/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py +++ b/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py @@ -1,4 +1,5 @@ """Tests for the PythonAndLegacyRunner's LegacyCommandMapper.""" + import inspect from datetime import datetime from typing import cast diff --git a/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml index 4d3f655a929..6b6de70fb72 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml @@ -207,6 +207,15 @@ stages: result: labwareId: sourcePlateId definition: !anydict + locationSequence: + - kind: onModule + moduleId: temperatureModuleId + - kind: onAddressableArea + addressableAreaName: '1' + - kind: onCutoutFixture + cutoutId: cutout1 + possibleCutoutFixtureIds: + - 'singleStandardSlot' notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -226,6 +235,15 @@ stages: result: labwareId: destPlateId definition: !anydict + locationSequence: + - kind: onModule + moduleId: magneticModuleId + - kind: onAddressableArea + addressableAreaName: '3' + - kind: onCutoutFixture + cutoutId: cutout3 + possibleCutoutFixtureIds: + - 'singleStandardSlot' notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -245,6 +263,13 @@ stages: result: labwareId: tipRackId definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: '8' + - kind: onCutoutFixture + cutoutId: cutout8 + possibleCutoutFixtureIds: + - 'singleStandardSlot' notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" diff --git a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml index ff42ba79367..c3afd71907e 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml @@ -92,15 +92,16 @@ stages: runTimeParameters: [] commandAnnotations: - annotationType: custom - commandKeys: [ - 1abc123, - 2abc123, - 3abc123, - 4abc123, - 5abc123, - 6abc123, - 7abc123, - ] + commandKeys: + [ + 1abc123, + 2abc123, + 3abc123, + 4abc123, + 5abc123, + 6abc123, + 7abc123, + ] pipettes: - id: pipetteId pipetteName: p1000_96 @@ -217,6 +218,20 @@ stages: result: labwareId: sourcePlateId definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: temperatureModuleV2D1 + - kind: onModule + moduleId: temperatureModuleId + - kind: onCutoutFixture + cutoutId: cutoutD1 + # note: this is not how it should work and happens because the loadModule + # command always loads onto an addressable area, presenting a conflict between + # the cutout fixture required by the module being present and the cutout fixture + # required by the deck slot addressable area that was used to load the module + # being present. other work will fix this, and once that other work is merged + # this value should be ["temperatureModuleV2"] + possibleCutoutFixtureIds: [] notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -236,6 +251,15 @@ stages: result: labwareId: destPlateId definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: magneticBlockV1D3 + - kind: onModule + moduleId: magneticBlockId + - kind: onCutoutFixture + cutoutId: cutoutD3 + # note: this should be ["magneticBlockV1"], see above + possibleCutoutFixtureIds: [] notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -255,6 +279,13 @@ stages: result: labwareId: tipRackId definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: B2 + - kind: onCutoutFixture + cutoutId: cutoutB2 + possibleCutoutFixtureIds: + - singleCenterSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -274,6 +305,15 @@ stages: result: labwareId: fixedTrash definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: A3 + - kind: onCutoutFixture + cutoutId: cutoutA3 + possibleCutoutFixtureIds: + - flexStackerModuleV1 + - singleRightSlot + - stagingAreaRightSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" diff --git a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml index 456dd76089d..a4e20528280 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml @@ -90,15 +90,16 @@ stages: runTimeParameters: [] commandAnnotations: - annotationType: custom - commandKeys: [ - 1abc123, - 2abc123, - 3abc123, - 4abc123, - 5abc123, - 6abc123, - 7abc123, - ] + commandKeys: + [ + 1abc123, + 2abc123, + 3abc123, + 4abc123, + 5abc123, + 6abc123, + 7abc123, + ] pipettes: - id: pipetteId pipetteName: p10_single @@ -217,6 +218,15 @@ stages: result: labwareId: sourcePlateId definition: !anydict + locationSequence: + - kind: onModule + moduleId: temperatureModuleId + - kind: onAddressableArea + addressableAreaName: '1' + - kind: onCutoutFixture + cutoutId: cutout1 + possibleCutoutFixtureIds: + - singleStandardSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -236,6 +246,15 @@ stages: result: labwareId: destPlateId definition: !anydict + locationSequence: + - kind: onModule + moduleId: magneticModuleId + - kind: onAddressableArea + addressableAreaName: '3' + - kind: onCutoutFixture + cutoutId: cutout3 + possibleCutoutFixtureIds: + - singleStandardSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -255,6 +274,13 @@ stages: result: labwareId: tipRackId definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: '8' + - kind: onCutoutFixture + cutoutId: cutout8 + possibleCutoutFixtureIds: + - singleStandardSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" @@ -274,6 +300,13 @@ stages: result: labwareId: fixedTrash definition: !anydict + locationSequence: + - kind: onAddressableArea + addressableAreaName: '12' + - kind: onCutoutFixture + cutoutId: cutout12 + possibleCutoutFixtureIds: + - singleStandardSlot notes: [] startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" diff --git a/shared-data/command/types/setup.ts b/shared-data/command/types/setup.ts index 7180abfd6f9..c112c5e9b33 100644 --- a/shared-data/command/types/setup.ts +++ b/shared-data/command/types/setup.ts @@ -144,6 +144,43 @@ export type NonStackedLocation = export interface ModuleLocation { slotName: string } + +export interface OnLabwareLocationSequenceComponent { + kind: 'onLabware' + labwareId: string + lidId: string | null +} + +export interface OnModuleLocationSequenceComponent { + kind: 'onModule' + moduleId: string +} + +export interface OnAddressableAreaLocationSequenceComponent { + kind: 'onAddressableArea' + addressableAreaName: string +} + +export interface NotOnDeckLocationSequenceComponent { + kind: 'notOnDeck' + logicalLocationName: 'offDeck' | 'systemLocation' +} + +export interface OnCutoutFixtureLocationSequenceComponent { + kind: 'onCutoutFixture' + cutoutId: string + possibleCutoutFixtureIds: string[] +} + +export type LocationSequenceComponent = + | OnLabwareLocationSequenceComponent + | OnModuleLocationSequenceComponent + | OnAddressableAreaLocationSequenceComponent + | NotOnDeckLocationSequenceComponent + | OnCutoutFixtureLocationSequenceComponent + +export type LabwareLocationSequence = LocationSequenceComponent[] + export interface LoadPipetteParams { pipetteName: string pipetteId: string @@ -166,10 +203,12 @@ interface LoadLabwareResult { // todo(mm, 2024-08-19): This does not match the server-returned offsetId field. // Confirm nothing client-side is trying to use this, then replace it with offsetId. offset: LabwareOffset + locationSequence?: LabwareLocationSequence } interface ReloadLabwareResult { labwareId: string offsetId?: string | null + locationSequence?: LabwareLocationSequence } export type LabwareMovementStrategy = @@ -184,6 +223,9 @@ export interface MoveLabwareParams { } interface MoveLabwareResult { offsetId: string + eventualDestinationLocationSequence?: LabwareLocationSequence + immediateDestinationLocationSequence?: LabwareLocationSequence + originLocationSequence?: LabwareLocationSequence } interface LoadModuleParams { moduleId?: string @@ -238,6 +280,8 @@ interface LoadLidStackResult { labwareIds: string[] definition: LabwareDefinition2 location: LabwareLocation + stackLocationSequence?: LabwareLocationSequence + locationSequences?: LabwareLocationSequence[] } interface LoadLidParams { @@ -250,4 +294,5 @@ interface LoadLidParams { interface LoadLidResult { labwareId: string definition: LabwareDefinition2 + locationSequence?: LabwareLocationSequence } From 875346d9d3433f80259633fa5c86b88b54cf8387 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Tue, 11 Feb 2025 11:01:58 -0500 Subject: [PATCH 76/81] feat(protocol-designer): load module in python file (#17483) addresses a bit of AUTH-1092 --- .../file-data/__tests__/createFile.test.ts | 20 +++++-- .../file-data/__tests__/pythonFile.test.ts | 57 ++++++++++++++++++- .../src/file-data/selectors/fileCreator.ts | 24 ++++---- .../src/file-data/selectors/pythonFile.ts | 39 ++++++++++++- 4 files changed, 118 insertions(+), 22 deletions(-) diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 527e1cccf20..4b3ad1103ca 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -70,6 +70,12 @@ describe('createFile selector', () => { afterEach(() => { vi.restoreAllMocks() }) + const entities = { + moduleEntities: v7Fixture.moduleEntities, + labwareEntities, + pipetteEntities, + liquidEntities: ingredients, + } it('should return a schema-valid JSON V8 protocol', () => { // @ts-expect-error(sa, 2021-6-15): resultFunc not part of Selector type const result = createFile.resultFunc( @@ -78,16 +84,13 @@ describe('createFile selector', () => { v7Fixture.robotStateTimeline, OT2_ROBOT_TYPE, dismissedWarnings, - ingredients, ingredLocations, v7Fixture.savedStepForms, v7Fixture.orderedStepIds, - labwareEntities, - v7Fixture.moduleEntities, - pipetteEntities, labwareNicknamesById, labwareDefsByURI, - {} + {}, + entities ) expectResultToMatchSchema(result) @@ -99,7 +102,12 @@ describe('createFile selector', () => { it('should return a valid Python protocol file', () => { // @ts-expect-error(sa, 2021-6-15): resultFunc not part of Selector type - const result = createPythonFile.resultFunc(fileMetadata, OT2_ROBOT_TYPE, {}) + const result = createPythonFile.resultFunc( + fileMetadata, + OT2_ROBOT_TYPE, + entities, + v7Fixture.initialRobotState + ) // This is just a quick smoke test to make sure createPythonFile() produces // something that looks like a Python file. The individual sections of the // generated Python will be tested in separate unit tests. diff --git a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts index cb7f526606f..27fb606865d 100644 --- a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts @@ -1,6 +1,19 @@ import { describe, it, expect } from 'vitest' -import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' -import { pythonMetadata, pythonRequirements } from '../selectors/pythonFile' +import { + FLEX_ROBOT_TYPE, + HEATERSHAKER_MODULE_TYPE, + HEATERSHAKER_MODULE_V1, + MAGNETIC_BLOCK_TYPE, + MAGNETIC_BLOCK_V1, + OT2_ROBOT_TYPE, +} from '@opentrons/shared-data' +import { + getLoadModules, + pythonMetadata, + pythonRequirements, +} from '../selectors/pythonFile' +import type { TimelineFrame } from '@opentrons/step-generation' +import type { ModuleEntities } from '../../step-forms' describe('pythonMetadata', () => { it('should generate metadata section', () => { @@ -50,3 +63,43 @@ requirements = { ) }) }) + +describe('getLoadModules', () => { + it('should generate loadModules', () => { + const moduleId = '1' + const moduleId2 = '2' + const moduleId3 = '3' + const mockModuleEntities: ModuleEntities = { + [moduleId]: { + id: moduleId, + model: MAGNETIC_BLOCK_V1, + type: MAGNETIC_BLOCK_TYPE, + pythonName: 'magnetic_block_1', + }, + [moduleId2]: { + id: moduleId2, + model: HEATERSHAKER_MODULE_V1, + type: HEATERSHAKER_MODULE_TYPE, + pythonName: 'heater_shaker_1', + }, + [moduleId3]: { + id: moduleId3, + model: MAGNETIC_BLOCK_V1, + type: MAGNETIC_BLOCK_TYPE, + pythonName: 'magnetic_block_2', + }, + } + const modules: TimelineFrame['modules'] = { + [moduleId]: { slot: 'B1', moduleState: {} as any }, + [moduleId2]: { slot: 'A1', moduleState: {} as any }, + [moduleId3]: { slot: 'A2', moduleState: {} as any }, + } + + expect(getLoadModules(mockModuleEntities, modules)).toBe( + `# Load Modules: +magnetic_block_1 = protocol.load_module("magneticBlockV1", "B1") +heater_shaker_1 = protocol.load_module("heaterShakerModuleV1", "A1") +magnetic_block_2 = protocol.load_module("magneticBlockV1", "A2")` + ) + }) +}) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index a12547a3b70..2a0d99c8cc3 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -99,34 +99,34 @@ export const createFile: Selector = createSelector( getRobotStateTimeline, getRobotType, dismissSelectors.getAllDismissedWarnings, - stepFormSelectors.getLiquidEntities, ingredSelectors.getLiquidsByLabwareId, stepFormSelectors.getSavedStepForms, stepFormSelectors.getOrderedStepIds, - stepFormSelectors.getLabwareEntities, - stepFormSelectors.getModuleEntities, - stepFormSelectors.getPipetteEntities, uiLabwareSelectors.getLabwareNicknamesById, labwareDefSelectors.getLabwareDefsByURI, getStepGroups, + stepFormSelectors.getInvariantContext, ( fileMetadata, initialRobotState, robotStateTimeline, robotType, dismissedWarnings, - liquidEntities, ingredLocations, savedStepForms, orderedStepIds, - labwareEntities, - moduleEntities, - pipetteEntities, labwareNicknamesById, labwareDefsByURI, - stepGroups + stepGroups, + invariantContext ) => { const { author, description, created } = fileMetadata + const { + pipetteEntities, + labwareEntities, + liquidEntities, + moduleEntities, + } = invariantContext const loadCommands = getLoadCommands( initialRobotState, @@ -308,14 +308,16 @@ export const createFile: Selector = createSelector( export const createPythonFile: Selector = createSelector( getFileMetadata, getRobotType, - (fileMetadata, robotType) => { + stepFormSelectors.getInvariantContext, + getInitialRobotState, + (fileMetadata, robotType, invariantContext, robotState) => { return ( [ // Here are the sections of the Python file: pythonImports(), pythonMetadata(fileMetadata), pythonRequirements(robotType), - pythonDefRun(), + pythonDefRun(invariantContext, robotState), ] .filter(section => section) // skip any blank sections .join('\n\n') + '\n' diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts index e4d9e63eec0..59d8b747d6f 100644 --- a/protocol-designer/src/file-data/selectors/pythonFile.ts +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -3,11 +3,17 @@ import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { formatPyDict, + formatPyStr, indentPyLines, PROTOCOL_CONTEXT_NAME, } from '@opentrons/step-generation' -import type { FileMetadataFields } from '../types' +import type { + InvariantContext, + ModuleEntities, + TimelineFrame, +} from '@opentrons/step-generation' import type { RobotType } from '@opentrons/shared-data' +import type { FileMetadataFields } from '../types' const PAPI_VERSION = '2.23' // latest version from api/src/opentrons/protocols/api_support/definitions.py @@ -51,9 +57,36 @@ export function pythonRequirements(robotType: RobotType): string { return `requirements = ${formatPyDict(requirements)}` } -export function pythonDefRun(): string { +export function getLoadModules( + moduleEntities: ModuleEntities, + moduleRobotState: TimelineFrame['modules'] +): string { + const hasModules = Object.keys(moduleEntities).length > 0 + const pythonModules = hasModules + ? Object.values(moduleEntities) + .map(module => { + // pythonIdentifier (module.model) from api/src/opentrons/protocol_api/validation.py#L373 + return `${ + module.pythonName + } = ${PROTOCOL_CONTEXT_NAME}.load_module(${formatPyStr( + module.model + )}, ${formatPyStr(moduleRobotState[module.id].slot)})` + }) + .join('\n') + : '' + return hasModules ? `# Load Modules:\n${pythonModules}` : '' +} + +export function pythonDefRun( + invariantContext: InvariantContext, + robotState: TimelineFrame +): string { + const { moduleEntities } = invariantContext + + const loadModules = getLoadModules(moduleEntities, robotState.modules) + const sections: string[] = [ - // loadModules(), + loadModules, // loadLabware(), // loadInstruments(), // defineLiquids(), From 024b4e9ed8595935864f9a9f339b5df4e99e61c2 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Tue, 11 Feb 2025 14:00:59 -0500 Subject: [PATCH 77/81] feat(protocol-designer): loadAdapter and loadLabware python file (#17495) partially addresses AUTH-1092 This pr creates the `load_adapter` and `load_labware` api commands in the python export file. This also fixes a bug with generating the `pythonNames` for adapters in the `createContainer` redux action where the `displayCategory` for the adapter was incorrectly the `displayCategory` for the labware --- .../file-data/__tests__/createFile.test.ts | 5 +- .../file-data/__tests__/pythonFile.test.ts | 141 ++++++++++++++---- .../src/file-data/selectors/pythonFile.ts | 69 ++++++++- .../src/labware-ingred/actions/thunks.ts | 11 +- 4 files changed, 191 insertions(+), 35 deletions(-) diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index 4b3ad1103ca..cf651c62733 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -129,7 +129,10 @@ requirements = { } def run(protocol: protocol_api.ProtocolContext): - pass + # Load Labware: + mockPythonName = protocol.load_labware("fixture_trash", "12") + mockPythonName = protocol.load_labware("fixture_tiprack_10_ul", "1") + mockPythonName = protocol.load_labware("fixture_96_plate", "7") `.trimStart() ) }) diff --git a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts index 27fb606865d..9492b9be825 100644 --- a/protocol-designer/src/file-data/__tests__/pythonFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/pythonFile.test.ts @@ -6,13 +6,18 @@ import { MAGNETIC_BLOCK_TYPE, MAGNETIC_BLOCK_V1, OT2_ROBOT_TYPE, + fixture96Plate, + fixtureTiprackAdapter, } from '@opentrons/shared-data' import { + getLoadAdapters, + getLoadLabware, getLoadModules, pythonMetadata, pythonRequirements, } from '../selectors/pythonFile' -import type { TimelineFrame } from '@opentrons/step-generation' +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { LabwareEntities, TimelineFrame } from '@opentrons/step-generation' import type { ModuleEntities } from '../../step-forms' describe('pythonMetadata', () => { @@ -64,31 +69,83 @@ requirements = { }) }) +const moduleId = '1' +const moduleId2 = '2' +const moduleId3 = '3' +const mockModuleEntities: ModuleEntities = { + [moduleId]: { + id: moduleId, + model: MAGNETIC_BLOCK_V1, + type: MAGNETIC_BLOCK_TYPE, + pythonName: 'magnetic_block_1', + }, + [moduleId2]: { + id: moduleId2, + model: HEATERSHAKER_MODULE_V1, + type: HEATERSHAKER_MODULE_TYPE, + pythonName: 'heater_shaker_1', + }, + [moduleId3]: { + id: moduleId3, + model: MAGNETIC_BLOCK_V1, + type: MAGNETIC_BLOCK_TYPE, + pythonName: 'magnetic_block_2', + }, +} +const labwareId1 = 'labwareId1' +const labwareId2 = 'labwareId2' +const labwareId3 = 'labwareId3' +const labwareId4 = 'labwareId4' +const labwareId5 = 'labwareId5' + +const mockLabwareEntities: LabwareEntities = { + [labwareId1]: { + id: labwareId1, + labwareDefURI: 'fixture/fixture_flex_96_tiprack_adapter/1', + def: fixtureTiprackAdapter as LabwareDefinition2, + pythonName: 'adapter_1', + }, + [labwareId2]: { + id: labwareId2, + labwareDefURI: 'fixture/fixture_flex_96_tiprack_adapter/1', + def: fixtureTiprackAdapter as LabwareDefinition2, + pythonName: 'adapter_2', + }, + [labwareId3]: { + id: labwareId3, + labwareDefURI: 'fixture/fixture_96_plate/1', + def: fixture96Plate as LabwareDefinition2, + pythonName: 'well_plate_1', + }, + [labwareId4]: { + id: labwareId4, + labwareDefURI: 'fixture/fixture_96_plate/1', + def: fixture96Plate as LabwareDefinition2, + pythonName: 'well_plate_2', + }, + [labwareId5]: { + id: labwareId5, + labwareDefURI: 'fixture/fixture_96_plate/1', + def: fixture96Plate as LabwareDefinition2, + pythonName: 'well_plate_3', + }, +} + +const labwareRobotState: TimelineFrame['labware'] = { + // adapter on a module + [labwareId1]: { slot: moduleId }, + // adapter on a slot + [labwareId2]: { slot: 'B2' }, + // labware on an adapter on a slot + [labwareId3]: { slot: labwareId2 }, + // labware on a module + [labwareId4]: { slot: moduleId3 }, + // labware on a slot + [labwareId5]: { slot: 'C2' }, +} + describe('getLoadModules', () => { it('should generate loadModules', () => { - const moduleId = '1' - const moduleId2 = '2' - const moduleId3 = '3' - const mockModuleEntities: ModuleEntities = { - [moduleId]: { - id: moduleId, - model: MAGNETIC_BLOCK_V1, - type: MAGNETIC_BLOCK_TYPE, - pythonName: 'magnetic_block_1', - }, - [moduleId2]: { - id: moduleId2, - model: HEATERSHAKER_MODULE_V1, - type: HEATERSHAKER_MODULE_TYPE, - pythonName: 'heater_shaker_1', - }, - [moduleId3]: { - id: moduleId3, - model: MAGNETIC_BLOCK_V1, - type: MAGNETIC_BLOCK_TYPE, - pythonName: 'magnetic_block_2', - }, - } const modules: TimelineFrame['modules'] = { [moduleId]: { slot: 'B1', moduleState: {} as any }, [moduleId2]: { slot: 'A1', moduleState: {} as any }, @@ -96,10 +153,42 @@ describe('getLoadModules', () => { } expect(getLoadModules(mockModuleEntities, modules)).toBe( - `# Load Modules: + ` +# Load Modules: magnetic_block_1 = protocol.load_module("magneticBlockV1", "B1") heater_shaker_1 = protocol.load_module("heaterShakerModuleV1", "A1") -magnetic_block_2 = protocol.load_module("magneticBlockV1", "A2")` +magnetic_block_2 = protocol.load_module("magneticBlockV1", "A2")`.trimStart() + ) + }) +}) + +describe('getLoadAdapters', () => { + it('should generate loadAdapters for 2 adapters', () => { + expect( + getLoadAdapters( + mockModuleEntities, + mockLabwareEntities, + labwareRobotState + ) + ).toBe( + ` +# Load Adapters: +adapter_1 = magnetic_block_1.load_adapter("fixture_flex_96_tiprack_adapter") +adapter_2 = protocol.load_adapter("fixture_flex_96_tiprack_adapter", "B2")`.trimStart() + ) + }) +}) + +describe('getLoadLabware', () => { + it('should generate loadLabware for 3 labware', () => { + expect( + getLoadLabware(mockModuleEntities, mockLabwareEntities, labwareRobotState) + ).toBe( + ` +# Load Labware: +well_plate_1 = adapter_2.load_labware("fixture_96_plate") +well_plate_2 = magnetic_block_2.load_labware("fixture_96_plate") +well_plate_3 = protocol.load_labware("fixture_96_plate", "C2")`.trimStart() ) }) }) diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts index 59d8b747d6f..0643b406439 100644 --- a/protocol-designer/src/file-data/selectors/pythonFile.ts +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -9,6 +9,7 @@ import { } from '@opentrons/step-generation' import type { InvariantContext, + LabwareEntities, ModuleEntities, TimelineFrame, } from '@opentrons/step-generation' @@ -77,17 +78,77 @@ export function getLoadModules( return hasModules ? `# Load Modules:\n${pythonModules}` : '' } +export function getLoadAdapters( + moduleEntities: ModuleEntities, + labwareEntities: LabwareEntities, + labwareRobotState: TimelineFrame['labware'] +): string { + const adapterEntities = Object.values(labwareEntities).filter(lw => + lw.def.allowedRoles?.includes('adapter') + ) + const pythonAdapters = Object.values(adapterEntities) + .map(adapter => { + const adapterSlot = labwareRobotState[adapter.id].slot + const onModule = moduleEntities[adapterSlot] != null + const location = onModule + ? moduleEntities[adapterSlot].pythonName + : PROTOCOL_CONTEXT_NAME + const slotInfo = onModule ? '' : `, ${formatPyStr(adapterSlot)}` + + return `${adapter.pythonName} = ${location}.load_adapter(${formatPyStr( + adapter.def.parameters.loadName + )}${slotInfo})` + }) + .join('\n') + + return pythonAdapters ? `# Load Adapters:\n${pythonAdapters}` : '' +} + +export function getLoadLabware( + moduleEntities: ModuleEntities, + allLabwareEntities: LabwareEntities, + labwareRobotState: TimelineFrame['labware'] +): string { + const labwareEntities = Object.values(allLabwareEntities).filter( + lw => !lw.def.allowedRoles?.includes('adapter') + ) + const pythonLabware = Object.values(labwareEntities) + .map(labware => { + const labwareSlot = labwareRobotState[labware.id].slot + const onModule = moduleEntities[labwareSlot] != null + const onAdapter = allLabwareEntities[labwareSlot] != null + let location = PROTOCOL_CONTEXT_NAME + if (onAdapter) { + location = allLabwareEntities[labwareSlot].pythonName + } else if (onModule) { + location = moduleEntities[labwareSlot].pythonName + } + const slotInfo = + onModule || onAdapter ? '' : `, ${formatPyStr(labwareSlot)}` + + return `${labware.pythonName} = ${location}.load_labware(${formatPyStr( + labware.def.parameters.loadName + )}${slotInfo})` + }) + .join('\n') + + return pythonLabware ? `# Load Labware:\n${pythonLabware}` : '' +} + export function pythonDefRun( invariantContext: InvariantContext, robotState: TimelineFrame ): string { - const { moduleEntities } = invariantContext - - const loadModules = getLoadModules(moduleEntities, robotState.modules) + const { moduleEntities, labwareEntities } = invariantContext + const { modules, labware } = robotState + const loadModules = getLoadModules(moduleEntities, modules) + const loadAdapters = getLoadAdapters(moduleEntities, labwareEntities, labware) + const loadLabware = getLoadLabware(moduleEntities, labwareEntities, labware) const sections: string[] = [ loadModules, - // loadLabware(), + loadAdapters, + loadLabware, // loadInstruments(), // defineLiquids(), // loadLiquids(), diff --git a/protocol-designer/src/labware-ingred/actions/thunks.ts b/protocol-designer/src/labware-ingred/actions/thunks.ts index 02ed71678e8..061724c8c31 100644 --- a/protocol-designer/src/labware-ingred/actions/thunks.ts +++ b/protocol-designer/src/labware-ingred/actions/thunks.ts @@ -77,7 +77,7 @@ export const createContainer: ( const labwareDef = labwareDefSelectors.getLabwareDefsByURI(state)[ args.labwareDefURI ] - const displayCategory = labwareDef.metadata.displayCategory + const labwareDisplayCategory = labwareDef.metadata.displayCategory const slot = args.slot || getNextAvailableDeckSlot(initialDeckSetup, robotType, labwareDef) @@ -90,6 +90,9 @@ export const createContainer: ( : null if (adapterId != null && args.adapterUnderLabwareDefURI != null) { + const adapterDef = labwareDefSelectors.getLabwareDefsByURI(state)[ + args.adapterUnderLabwareDefURI + ] dispatch({ type: 'CREATE_CONTAINER', payload: { @@ -97,7 +100,7 @@ export const createContainer: ( labwareDefURI: args.adapterUnderLabwareDefURI, id: adapterId, slot, - displayCategory, + displayCategory: adapterDef.metadata.displayCategory, }, }) dispatch({ @@ -106,13 +109,13 @@ export const createContainer: ( ...args, id, slot: adapterId, - displayCategory, + displayCategory: labwareDisplayCategory, }, }) } else { dispatch({ type: 'CREATE_CONTAINER', - payload: { ...args, id, slot, displayCategory }, + payload: { ...args, id, slot, displayCategory: labwareDisplayCategory }, }) } if (isTiprack) { From 831c4ae1e0ded4bd0287527434b8784d24568445 Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Tue, 11 Feb 2025 14:38:47 -0500 Subject: [PATCH 78/81] feat(protocol-designer): add placeholder for step commands to generated Python (#17496) # Overview This adds the Python output from `step-generation` into the generated Python file so that we can see our progress as we work. AUTH-1385 Right now, it just emits a placeholder that looks like: ``` def run(protocol: protocol_api.ProtocolContext): # PROTOCOL STEPS # Step 1: pass # Step 2: pass ``` ## Test Plan and Hands on Testing Updated unit test, and tested exporting a Python protocol by hand. ## Risk assessment Low. Python export is hidden under a feature flag, so this should have no observable impact to users. --- .../src/file-data/__tests__/createFile.test.ts | 8 +++++++- .../src/file-data/selectors/fileCreator.ts | 11 +++++++++-- .../src/file-data/selectors/pythonFile.ts | 18 ++++++++++++++++-- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/protocol-designer/src/file-data/__tests__/createFile.test.ts b/protocol-designer/src/file-data/__tests__/createFile.test.ts index cf651c62733..392998fe000 100644 --- a/protocol-designer/src/file-data/__tests__/createFile.test.ts +++ b/protocol-designer/src/file-data/__tests__/createFile.test.ts @@ -106,7 +106,8 @@ describe('createFile selector', () => { fileMetadata, OT2_ROBOT_TYPE, entities, - v7Fixture.initialRobotState + v7Fixture.initialRobotState, + v7Fixture.robotStateTimeline ) // This is just a quick smoke test to make sure createPythonFile() produces // something that looks like a Python file. The individual sections of the @@ -133,6 +134,11 @@ def run(protocol: protocol_api.ProtocolContext): mockPythonName = protocol.load_labware("fixture_trash", "12") mockPythonName = protocol.load_labware("fixture_tiprack_10_ul", "1") mockPythonName = protocol.load_labware("fixture_96_plate", "7") + + # PROTOCOL STEPS + + # Step 1: + pass `.trimStart() ) }) diff --git a/protocol-designer/src/file-data/selectors/fileCreator.ts b/protocol-designer/src/file-data/selectors/fileCreator.ts index 2a0d99c8cc3..e9ddde221c7 100644 --- a/protocol-designer/src/file-data/selectors/fileCreator.ts +++ b/protocol-designer/src/file-data/selectors/fileCreator.ts @@ -310,14 +310,21 @@ export const createPythonFile: Selector = createSelector( getRobotType, stepFormSelectors.getInvariantContext, getInitialRobotState, - (fileMetadata, robotType, invariantContext, robotState) => { + getRobotStateTimeline, + ( + fileMetadata, + robotType, + invariantContext, + robotState, + robotStateTimeline + ) => { return ( [ // Here are the sections of the Python file: pythonImports(), pythonMetadata(fileMetadata), pythonRequirements(robotType), - pythonDefRun(invariantContext, robotState), + pythonDefRun(invariantContext, robotState, robotStateTimeline), ] .filter(section => section) // skip any blank sections .join('\n\n') + '\n' diff --git a/protocol-designer/src/file-data/selectors/pythonFile.ts b/protocol-designer/src/file-data/selectors/pythonFile.ts index 0643b406439..2896dfb320b 100644 --- a/protocol-designer/src/file-data/selectors/pythonFile.ts +++ b/protocol-designer/src/file-data/selectors/pythonFile.ts @@ -11,6 +11,7 @@ import type { InvariantContext, LabwareEntities, ModuleEntities, + Timeline, TimelineFrame, } from '@opentrons/step-generation' import type { RobotType } from '@opentrons/shared-data' @@ -135,9 +136,22 @@ export function getLoadLabware( return pythonLabware ? `# Load Labware:\n${pythonLabware}` : '' } +export function stepCommands(robotStateTimeline: Timeline): string { + return ( + '# PROTOCOL STEPS\n\n' + + robotStateTimeline.timeline + .map( + (timelineFrame, idx) => + `# Step ${idx + 1}:\n${timelineFrame.python || 'pass'}` + ) + .join('\n\n') + ) +} + export function pythonDefRun( invariantContext: InvariantContext, - robotState: TimelineFrame + robotState: TimelineFrame, + robotStateTimeline: Timeline ): string { const { moduleEntities, labwareEntities } = invariantContext const { modules, labware } = robotState @@ -152,7 +166,7 @@ export function pythonDefRun( // loadInstruments(), // defineLiquids(), // loadLiquids(), - // stepCommands(), + stepCommands(robotStateTimeline), ] const functionBody = sections From 4b054ad72567c28ffbf7922b1a4e503febc16471 Mon Sep 17 00:00:00 2001 From: Sara Kowalski <53955458+skowalski08@users.noreply.github.com> Date: Tue, 11 Feb 2025 14:59:52 -0500 Subject: [PATCH 79/81] test(protocol-designer): start of cypress happy path test for mix settings (#17320) # Overview Cypress happy path testing for mix settings ## Test Plan and Hands on Testing ## Changelog Added cypress actions and verifications for intended PD behavior ## Review requests ## Risk assessment --- protocol-designer/cypress.config.js | 15 - protocol-designer/cypress.config.ts | 10 + .../cypress/e2e/mixSettings.cy.ts | 77 +++ .../cypress/support/StepExecution.ts | 14 + protocol-designer/cypress/support/commands.ts | 25 +- .../cypress/support/mixSetting.ts | 527 ++++++++++++++++++ 6 files changed, 651 insertions(+), 17 deletions(-) delete mode 100644 protocol-designer/cypress.config.js create mode 100644 protocol-designer/cypress.config.ts create mode 100644 protocol-designer/cypress/e2e/mixSettings.cy.ts create mode 100644 protocol-designer/cypress/support/mixSetting.ts diff --git a/protocol-designer/cypress.config.js b/protocol-designer/cypress.config.js deleted file mode 100644 index 98d139cdcbc..00000000000 --- a/protocol-designer/cypress.config.js +++ /dev/null @@ -1,15 +0,0 @@ -const { defineConfig } = require('cypress') - -module.exports = defineConfig({ - video: false, - viewportWidth: 1440, - viewportHeight: 900, - e2e: { - // We've imported your old cypress plugins here. - // You may want to clean this up later by importing these. - setupNodeEvents(on, config) { - return require('./cypress/plugins/index.js')(on, config) - }, - baseUrl: 'http://localhost:5178', - }, -}) diff --git a/protocol-designer/cypress.config.ts b/protocol-designer/cypress.config.ts new file mode 100644 index 00000000000..7250102b7e3 --- /dev/null +++ b/protocol-designer/cypress.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'cypress' + +module.exports = defineConfig({ + video: false, + viewportWidth: 1440, + viewportHeight: 900, + e2e: { + baseUrl: 'http://localhost:5178', + }, +}) diff --git a/protocol-designer/cypress/e2e/mixSettings.cy.ts b/protocol-designer/cypress/e2e/mixSettings.cy.ts new file mode 100644 index 00000000000..2b1863b989d --- /dev/null +++ b/protocol-designer/cypress/e2e/mixSettings.cy.ts @@ -0,0 +1,77 @@ +import '../support/commands' +import { MixActions, MixVerifications } from '../support/mixSetting' +import { UniversalActions } from '../support/universalActions' +import { TestFilePath, getTestFile } from '../support/testFiles' +import { verifyImportProtocolPage } from '../support/import' +import { runSteps } from '../support/StepExecution' +import type { StepsList } from '../support/StepExecution' + +describe('Redesigned Mixing Steps - Happy Path', () => { + beforeEach(() => { + cy.visit('/') + cy.closeAnalyticsModal() + const protocol = getTestFile(TestFilePath.DoItAllV8) + cy.importProtocol(protocol.path) + verifyImportProtocolPage(protocol) + + // NOTE: vv make this chunk better// + cy.contains('Edit protocol').click() + cy.contains('Protocol steps').click() + cy.get('[id="AddStepButton"]').contains('Add Step').click() + cy.verifyOverflowBtn() + }) + + it('It should verify the working function of every permutation of mix checkboxes', () => { + const steps: StepsList = [ + MixActions.SelectMix, + UniversalActions.Snapshot, + MixVerifications.PartOne, + MixActions.SelectLabware, + MixActions.SelectWellInputField, + MixVerifications.WellSelectPopout, + UniversalActions.Snapshot, + MixActions.Save, + MixActions.EnterVolume, + MixActions.EnterMixReps, + MixActions.SelectTipHandling, + UniversalActions.Snapshot, + MixActions.Continue, + MixVerifications.PartTwoAsp, + MixActions.AspirateFlowRate, + MixActions.AspWellOrder, + MixVerifications.AspWellOrder, + MixActions.AspMixTipPos, + MixVerifications.AspMixTipPos, + MixActions.Delay, + MixActions.Dispense, + MixVerifications.PartTwoDisp, + MixActions.DispenseFlowRate, + MixActions.Delay, + MixActions.BlowoutLocation, + MixActions.BlowoutFlowRate, + MixActions.BlowoutPosFromTop, + MixVerifications.BlowoutPopout, + MixActions.Save, + MixVerifications.Blowout, + MixActions.TouchTip, + MixVerifications.TouchTipPopout, + MixActions.Save, + MixVerifications.TouchTip, + MixActions.Rename, + MixActions.Save, + MixVerifications.Rename, + MixActions.Save, + ] + runSteps(steps) + }) +}) + +/* +To Add: +MixActions.TipPosSideImageMove, +MixActions.TipPosTopImageMove, +MixActions.FlowRateWarning, **for asp and disp + +To Change: +Need to refactor labware set up to have different labware on deck for better well selection coverage +*/ diff --git a/protocol-designer/cypress/support/StepExecution.ts b/protocol-designer/cypress/support/StepExecution.ts index 8806fd6f0b7..6c116a716b3 100644 --- a/protocol-designer/cypress/support/StepExecution.ts +++ b/protocol-designer/cypress/support/StepExecution.ts @@ -13,6 +13,12 @@ import { executeModSteps, executeVerifyModStep, } from './SupportModules' +import { + MixActions, + MixVerifications, + executeMixAction, + executeVerifyMixStep, +} from './mixSetting' export type StepsList = Array< | SetupActions @@ -20,6 +26,8 @@ export type StepsList = Array< | UniversalActions | ModActions | ModVerifications + | MixActions + | MixVerifications > export const runSteps = (steps: StepsList): void => { @@ -29,6 +37,8 @@ export const runSteps = (steps: StepsList): void => { ModVerifications, SetupVerifications, UniversalActions, + MixActions, + MixVerifications, ] if (!isEnumValue(enumsToCheck, steps)) { @@ -46,6 +56,10 @@ export const runSteps = (steps: StepsList): void => { executeModSteps(step as ModActions) } else if (isEnumValue([ModVerifications], step)) { executeVerifyModStep(step as ModVerifications) + } else if (isEnumValue([MixActions], step)) { + executeMixAction(step as MixActions) + } else if (isEnumValue([MixVerifications], step)) { + executeVerifyMixStep(step as MixVerifications) } }) } diff --git a/protocol-designer/cypress/support/commands.ts b/protocol-designer/cypress/support/commands.ts index 697ddfa32f5..3c3f27539a2 100644 --- a/protocol-designer/cypress/support/commands.ts +++ b/protocol-designer/cypress/support/commands.ts @@ -32,6 +32,8 @@ declare global { verifyCreateNewPage: () => Cypress.Chainable togglePreWetTip: () => Cypress.Chainable mixaspirate: () => Cypress.Chainable + clickConfirm: () => Cypress.Chainable + verifyOverflowBtn: () => Cypress.Chainable } } } @@ -49,6 +51,12 @@ export const content = { appSettings: 'App Info', privacy: 'Privacy', shareSessions: 'Share analytics with Opentrons', + move: 'Move', + transfer: 'Transfer', + mix: 'Mix', + pause: 'Pause', + heaterShaker: 'Heater-shaker', + thermocyler: 'Thermocycler', } export const locators = { @@ -104,11 +112,11 @@ Cypress.Commands.add('verifyCreateNewHeader', () => { // Home Page Cypress.Commands.add('verifyHomePage', () => { cy.contains(content.welcome) + cy.get(locators.privacyPolicy).should('exist').and('be.visible') + cy.get(locators.eula).should('exist').and('be.visible') cy.contains('button', locators.createProtocol).should('be.visible') cy.contains('label', locators.importProtocol).should('be.visible') cy.getByTestId(locators.settingsDataTestid).should('be.visible') - cy.get(locators.privacyPolicy).should('exist').and('be.visible') - cy.get(locators.eula).should('exist').and('be.visible') }) Cypress.Commands.add('clickCreateNew', () => { @@ -122,6 +130,10 @@ Cypress.Commands.add('closeAnalyticsModal', () => { .click({ force: true }) }) +Cypress.Commands.add('clickConfirm', () => { + cy.contains(locators.confirm).click() +}) + // Header Import Cypress.Commands.add('importProtocol', (protocolFilePath: string) => { cy.contains(locators.import).click() @@ -158,6 +170,15 @@ Cypress.Commands.add('verifySettingsPage', () => { .should('be.visible') }) +Cypress.Commands.add('verifyOverflowBtn', () => { + cy.contains(content.move).should('exist').should('be.visible') + cy.contains(content.transfer).should('exist').should('be.visible') + cy.contains(content.mix).should('exist').should('be.visible') + cy.contains(content.pause).should('exist').should('be.visible') + cy.contains(content.heaterShaker).should('exist').should('be.visible') + cy.contains(content.thermocyler).should('exist').should('be.visible') +}) + /// ///////////////////////////////////////////////////////////////// // Legacy Code Section // This code is deprecated and should be removed diff --git a/protocol-designer/cypress/support/mixSetting.ts b/protocol-designer/cypress/support/mixSetting.ts new file mode 100644 index 00000000000..66551bce695 --- /dev/null +++ b/protocol-designer/cypress/support/mixSetting.ts @@ -0,0 +1,527 @@ +import type { UniversalActions } from './universalActions' + +export enum MixActions { + Confirm = 'Confirm', + Continue = 'Continue', + GoBack = 'Go back', + Back = 'Back', + Save = 'Save', + Edit = 'Edit', + SelectMix = 'Select Mix', + SelectLabware = 'Select on deck labware', + SelectWellInputField = 'Select wells', + EnterVolume = 'Enter a valid volume to mix', + EnterMixReps = 'Enter number of repetions to mix', + SelectTipHandling = 'Select how/if tips should be picked up for each mix', + AspirateFlowRate = 'Select aspirate flow rate settings', + Dispense = 'Select dispnse settings', + AspWellOrder = 'Open well aspirate well order pop out', + EditWellOrder = 'Edit well order selects', + AspMixTipPos = 'Edit tip position for executing mix step', + Delay = 'Check box for delay and input value', + DispenseFlowRate = 'Select dispense flow rate settings', + BlowoutLocation = 'Select blowout settings', + TouchTip = 'Select touch tip settings', + BlowoutFlowRate = 'Enter value for blow out flow rate', + BlowoutPosFromTop = 'Select a blow out position from top of well', + Rename = 'Rename Mix step', + + /* + To Add: + TipPosSideImageMove = 'Check that the tip position will update when data is enetered' + */ +} + +export enum MixVerifications { + PartOne = 'Verify Part 1, the configuration of mix settings, and check continue button', + PartTwoAsp = 'Verify Part 2, the configuration of asp settings and check go back and save button', + PartTwoDisp = 'Verify Part 2, the configuration of disp settings and check go back and save button', + WellSelectPopout = 'Verify labware image and available wells', + AspWellOrder = 'Verify pop out for well order during aspirate', + AspMixTipPos = 'Verify pop out for mix tip position durin aspirate', + Blowout = 'Verify blow out settings', + BlowoutPopout = 'Verify blow out position and pop out', + TouchTipPopout = 'Verify touch tip pop out', + TouchTip = 'Verify touch tip settings', + Rename = 'Verify that Mix Step was successfully renamed to "Cypress Test"', + /* + To Add: + FlowRateRangeWarning = 'Verify warning appears when outside flow rate parameters', + TipPosCollisionCheck = 'Verify banner warning appears when mix tip position is in contact with well wall' + */ +} + +export enum MixContent { + Move = 'Move', + Transfer = 'Transfer', + Mix = 'Mix', + Pause = 'Pause', + HeaterShaker = 'Heater-shaker', + Thermocyler = 'Thermocycler', + Pipette = 'Pipette', + Tiprack = 'Tiprack', + Labware = 'Labware', + SelectWells = 'Select wells', + VolumePerWell = 'Volume per well', + MixRepetitions = 'Mix repetitions', + TipHandling = 'Tip handling', + TipDropLocation = 'Tip drop location', + ChooseOption = 'Choose option', + Reservoir = 'Axygen 1 Well Reservoir 90 mL', + WellPlate = 'Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt', + PartOne = 'Part 1 / 2', + PartTwo = 'Part 2 / 2', + WellSelectTitle = 'Select wells using a Flex 1-Channel 1000 µL', + ClickAndDragWellSelect = 'Click and drag to select wells', + PipettePreselect = 'Flex 1-Channel 1000 µL', + TiprackPreselect = 'Opentrons Flex 96 Tip Rack 1000 µL', + BeforeEveryAsp = 'Before every aspirate', + OnceAtStartStep = 'Once at the start of step', + PerSourceWell = 'Per source well', + PerDestWell = 'Per destination well', + Never = 'Never', + WasteChute = 'Waste chute', + AspFlowRate = 'Aspirate flow rate', + AspWellOrder = 'Aspirate well order', + MixTipPosition = 'Mix tip position', + AdvancedPipSettings = 'Advanced pipetting settings', + Delay = 'Delay', + DelayDuration = 'Delay duration', + DispFlowRate = 'Dispense flow rate', + Blowout = 'Blowout', + TouchTip = 'Touch tip', + TopBottomLeRi = 'Top to bottom, Left to right', + EditWellOrder = 'Edit well order', + WellOrderDescrip = 'Change how the robot moves from well to well.', + PrimaryOrder = 'Primary order', + TopToBottom = 'Top to bottom', + BottomToTop = 'Bottom to top', + LeftToRight = 'Left to right', + RightToLeft = 'Right to left', + Then = 'then', + SecondaryOrder = 'Secondary order', + Cancel = 'Cancel', + EditMixTipPos = 'Edit mix tip position', + MixTipPosDescr = 'Change from where in the well the robot aspirates and dispenses during the mix.', + Xposition = 'X position', + Yposition = 'Y position', + Zposition = 'Z position', + StartingWellPos = 'Well position: X 0 Y 0 Z 1 (mm)', + TopView = 'Top view', + SideView = 'Side view', + BlowoutLocation = 'Blowout location', + BlowoutPos = 'Blowout position from top', + DestinationWell = 'Destination Well', + BlowoutFlowRate = 'Blowout position from top', + EditBlowoutPos = 'Edit blowout position', + BlowoutPosDescrip = 'Change where in the well the robot performs the blowout.', + EditTouchTipPos = 'Edit touch tip position', + TouchTipDescrip = 'Change from where in the well the robot performs the touch tip.', + TouchTipPos = 'Touch tip position from bottom', + NameStep = 'Name step', + StepName = 'Step Name', + StepNotes = 'Step Notes', + CypressTest = 'Cypress Mix Test', + TouchTipFromTop = 'Touch tip position from top', +} + +export enum MixLocators { + Continue = 'button:contains("Continue")', + GoBack = 'button:contains("Go back")', + Back = 'button:contains("Back")', + WellInputField = '[name="wells"]', + Save = 'button:contains("Save")', + OneWellReservoirImg = '[data-wellname="A1"]', + Volume = '[name="volume"]', + MixReps = '[name="times"]', + Aspirate = 'button:contains("Aspirate")', + Dispense = 'button:contains("Dispense")', + AspFlowRateInput = '[name="aspirate_flowRate"]', + AspWellOrder = '[class="Flex-sc-1qhp8l7-0 ListButton___StyledFlex-sc-1lmhs3v-0 bToGfF bdMeyp"]', + ResetToDefault = 'button:contains("Reset to default")', + PrimaryOrderDropdown = 'div[tabindex="0"].sc-bqWxrE jKLbYH iFjNDq', + CancelAspSettings = '[class="SecondaryButton-sc-1opt1t9-0 kjpcRL"]', + MixTipPos = '[class="Flex-sc-1qhp8l7-0 ListButton___StyledFlex-sc-1lmhs3v-0 gSONWG bdMeyp"]', + XpositionInput = '[id="TipPositionModal_x_custom_input"]', + YpositionInput = '[id="TipPositionModal_y_custom_input"]', + ZpositionInput = '[id="TipPositionModal_z_custom_input"]', + SwapView = 'button:contains("Swap view")', + Checkbox = '[class="Flex-sc-1qhp8l7-0 Checkbox___StyledFlex3-sc-1mvp7vt-0 gZwGCw btdgeU"]', + DelaySecondsInput = '[class="InputField__StyledInput-sc-1gyyvht-0 cLVzBl"]', + // SideViewTipPos = '[src="/src/assets/images/tip_side_mid_layer.svg"]', + DispFlowRate = '[name="dispense_flowRate"]', + // Blowout = '[class="Flex-sc-1qhp8l7-0 Checkbox___StyledFlex3-sc-1mvp7vt-0 gZwGCw btdgeU"]', + BlowoutLtnDropdown = '[class="Svg-sc-1lpozsw-0 Icon___StyledSvg-sc-1gt4gyz-0 csSXbR cJpxat"]', + BlowoutFlowRate = '[name="blowout_flowRate"]', + BlowoutPos = '[id="TipPositionField_blowout_z_offset"]', + BlowoutZPosition = '[data-testid="TipPositionModal_custom_input"]', + PosFromBottom = '[id="TipPositionField_mix_touchTip_mmFromBottom"]', + RenameBtn = 'button:contains("Rename")', + StepNameInput = '[class="InputField__StyledInput-sc-1gyyvht-0 cLVzBl"]', + StepNotesInput = '[class="RenameStepModal__DescriptionField-sc-1k5vjxe-0 lkzOSf"]', + PosFromTop = '[data-testid="TipPositionField_mix_touchTip_mmFromTop"]', +} + +export const executeMixAction = ( + action: MixActions | UniversalActions +): void => { + switch (action) { + case MixActions.SelectMix: + cy.get('button').contains('Mix').click() + break + case MixActions.SelectLabware: + cy.contains(MixContent.ChooseOption).should('be.visible').click() + cy.contains(MixContent.Reservoir).should('be.visible').click() + break + case MixActions.SelectWellInputField: + cy.get(MixLocators.WellInputField).should('be.visible').click() + break + case MixActions.EnterVolume: + cy.get(MixLocators.Volume).should('exist').type('100') + break + case MixActions.EnterMixReps: + cy.get(MixLocators.MixReps).should('exist').type('5') + break + case MixActions.SelectTipHandling: + cy.contains(MixContent.BeforeEveryAsp) + .should('exist') + .should('be.visible') + .click() + cy.contains(MixContent.OnceAtStartStep) + .should('exist') + .should('be.visible') + cy.contains(MixContent.PerSourceWell).should('exist').should('be.visible') + cy.contains(MixContent.PerDestWell).should('exist').should('be.visible') + cy.contains(MixContent.Never).should('exist').should('be.visible') + cy.contains(MixContent.OnceAtStartStep).click() + break + case MixActions.AspirateFlowRate: + cy.get(MixLocators.Aspirate).should('exist').should('be.visible').click() + cy.get(MixLocators.AspFlowRateInput).should('exist') + cy.get(MixLocators.AspFlowRateInput).type('{selectAll}, {backspace}, 100') + break + case MixActions.AspWellOrder: + cy.contains(MixContent.TopBottomLeRi).should('exist').should('be.visible') + cy.get(MixLocators.AspWellOrder).click() + break + case MixActions.AspMixTipPos: + cy.contains(MixContent.StartingWellPos) + .should('exist') + .should('be.visible') + cy.get(MixLocators.MixTipPos).click() + cy.get(MixLocators.XpositionInput).type('{selectAll}, {backspace}, 2') + cy.get(MixLocators.YpositionInput).type('{selectAll}, {backspace}, 3') + cy.get(MixLocators.ZpositionInput).should('have.prop', 'value') + cy.get(MixLocators.ZpositionInput).type('{selectAll}, {backspace}, 4') + cy.get(MixLocators.ResetToDefault) + .should('exist') + .should('be.visible') + .click() + cy.get(MixLocators.XpositionInput).type('{selectAll}, {backspace}, 3') + cy.get(MixLocators.YpositionInput).type('{selectAll}, {backspace}, 2') + cy.get(MixLocators.ZpositionInput).should('have.prop', 'value') + cy.get(MixLocators.ZpositionInput).type('{selectAll}, {backspace}, 5') + cy.contains(MixContent.Cancel).should('exist').should('be.visible') + break + case MixActions.Delay: + cy.contains(MixContent.Delay).should('exist').should('be.visible') + cy.get(MixLocators.Checkbox) + .should('exist') + .should('be.visible') + .eq(0) + .click() + cy.contains(MixContent.DelayDuration).should('exist').should('be.visible') + cy.get(MixLocators.DelaySecondsInput) + .should('exist') + .should('be.visible') + .should('have.prop', 'value') + cy.get(MixLocators.DelaySecondsInput) + .eq(1) + .type('{selectAll}, {backspace}, 5') + break + case MixActions.Dispense: + cy.get(MixLocators.Dispense).should('exist').should('be.visible').click() + break + case MixActions.DispenseFlowRate: + cy.get(MixLocators.Dispense).should('exist').should('be.visible').click() + cy.get(MixLocators.DispFlowRate).should('exist') + cy.get(MixLocators.DispFlowRate).type('{selectAll}, {backspace}, 300') + break + case MixActions.BlowoutLocation: + cy.contains(MixContent.Blowout).should('exist').should('be.visible') + cy.get(MixLocators.Checkbox) + .should('exist') + .should('be.visible') + .eq(0) + .click() + cy.contains(MixContent.ChooseOption).should('exist').should('be.visible') + cy.get(MixLocators.BlowoutLtnDropdown) + .should('exist') + .should('be.visible') + .click() + cy.contains(MixContent.WasteChute).should('exist').should('be.visible') + cy.contains(MixContent.DestinationWell) + .should('exist') + .should('be.visible') + .click() + break + case MixActions.BlowoutFlowRate: + cy.get(MixLocators.BlowoutFlowRate) + .should('exist') + .should('be.visible') + .should('have.prop', 'value') + cy.get(MixLocators.BlowoutFlowRate).click() + cy.get(MixLocators.BlowoutFlowRate).type('{selectAll}, {backspace}, 300') + break + case MixActions.BlowoutPosFromTop: + cy.get(MixLocators.BlowoutPos) + .should('exist') + .should('be.visible') + .should('have.prop', 'value') + cy.get(MixLocators.BlowoutPos).click() + cy.get(MixLocators.BlowoutZPosition).type('{selectAll}, {backspace}, 4') + cy.get(MixLocators.ResetToDefault).click() + cy.get(MixLocators.BlowoutZPosition).type('{selectAll}, {backspace}, -3') + break + case MixActions.TouchTip: + cy.get(MixLocators.Checkbox) + .should('exist') + .should('be.visible') + .eq(0) + .click() + cy.get(MixLocators.PosFromTop).should('have.prop', 'value') + cy.get(MixLocators.PosFromTop).click({ force: true }) + cy.get(MixLocators.BlowoutZPosition).type('{selectAll}, {backspace}, 2') + cy.get(MixLocators.ResetToDefault).click() + cy.get(MixLocators.BlowoutZPosition).type('{selectAll}, {backspace}, -7') + break + case MixActions.Save: + cy.get(MixLocators.Save) + .should('exist') + .should('be.visible') + .first() + .click({ force: true }) + break + case MixActions.Back: + cy.get(MixLocators.Back).should('exist').should('be.visible').click() + break + case MixActions.Continue: + cy.get(MixLocators.Continue) + .should('exist') + .should('be.visible') + .click({ force: true }) + break + case MixActions.Rename: + cy.get(MixLocators.RenameBtn).should('exist').should('be.visible').click() + cy.contains(MixContent.NameStep).should('exist').should('be.visible') + cy.contains(MixContent.StepName).should('exist').should('be.visible') + cy.get(MixLocators.StepNameInput).should('have.value', 'Mix') + cy.contains(MixContent.StepNotes).should('exist').should('be.visible') + cy.get(MixLocators.StepNameInput) + .first() + .type('{selectAll} {backspace} Cypress Mix Test') + cy.get(MixLocators.StepNotesInput).type( + 'This is testing cypress automation in PD' + ) + cy.contains(MixContent.Cancel).should('exist').should('be.visible') + break + + /* + To Add: + case MixActions.TipPosSideImageMove: + cy.get(MixLocators.SideViewTipPos).should('have.css','transform', '0px') + break + case MixAction.TipPosTopImageMove: + break + case Actions.FlowRateWarning: + break + */ + default: + throw new Error(`Unrecognized action: ${action as string}`) + } +} + +export const executeVerifyMixStep = (verification: MixVerifications): void => { + switch (verification) { + case MixVerifications.PartOne: + cy.contains(MixContent.PartOne).should('exist').should('be.visible') + cy.contains(MixContent.Mix).should('exist').should('be.visible') + cy.contains(MixContent.Pipette).should('exist').should('be.visible') + cy.contains(MixContent.PipettePreselect) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Tiprack).should('exist').should('be.visible') + cy.contains(MixContent.TiprackPreselect) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Labware).should('exist').should('be.visible') + cy.contains(MixContent.SelectWells).should('exist').should('be.visible') + cy.contains(MixContent.VolumePerWell).should('exist').should('be.visible') + cy.contains(MixContent.MixRepetitions) + .should('exist') + .should('be.visible') + cy.contains(MixContent.TipHandling).should('exist').should('be.visible') + cy.contains(MixContent.TipDropLocation) + .should('exist') + .should('be.visible') + cy.contains(MixContent.WasteChute).should('exist').should('be.visible') + cy.get(MixLocators.Continue).should('exist').should('be.visible') + break + case MixVerifications.WellSelectPopout: + cy.contains(MixContent.WellSelectTitle) + .should('exist') + .should('be.visible') + cy.contains(MixContent.ClickAndDragWellSelect) + .should('exist') + .should('be.visible') + cy.get(MixLocators.OneWellReservoirImg) + .should('exist') + .should('be.visible') + cy.get(MixLocators.Save).should('exist').should('be.visible') + cy.get(MixLocators.Back).should('exist').should('be.visible') + break + case MixVerifications.PartTwoAsp: + cy.contains(MixContent.PartTwo).should('exist').should('be.visible') + cy.contains(MixContent.Mix).should('exist').should('be.visible') + cy.get(MixLocators.Aspirate).should('exist').should('be.visible') + cy.contains(MixContent.AspFlowRate).should('exist').should('be.visible') + cy.contains(MixContent.AspWellOrder).should('exist').should('be.visible') + cy.contains(MixContent.MixTipPosition) + .should('exist') + .should('be.visible') + cy.contains(MixContent.AdvancedPipSettings) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Delay).should('exist').should('be.visible') + cy.get(MixLocators.Back).should('exist').should('be.visible') + cy.get(MixLocators.Save).should('exist').should('be.visible') + break + case MixVerifications.AspWellOrder: + cy.contains(MixContent.EditWellOrder).should('exist').should('be.visible') + cy.contains(MixContent.WellOrderDescrip) + .should('exist') + .should('be.visible') + cy.contains(MixContent.PrimaryOrder).should('exist').should('be.visible') + cy.contains(MixContent.TopToBottom) + .should('exist') + .should('be.visible') + .click() + cy.contains(MixContent.BottomToTop).should('exist').should('be.visible') + cy.contains(MixContent.LeftToRight).should('exist').should('be.visible') + cy.contains(MixContent.RightToLeft).should('exist').should('be.visible') + cy.contains(MixContent.BottomToTop) + .should('exist') + .should('be.visible') + .click() + cy.contains(MixContent.Then).should('exist').should('be.visible') + cy.contains(MixContent.SecondaryOrder) + .should('exist') + .should('be.visible') + cy.contains(MixContent.LeftToRight) + .should('exist') + .should('be.visible') + .click() + cy.contains(MixContent.RightToLeft) + .should('exist') + .should('be.visible') + .click() + cy.get(MixLocators.ResetToDefault).click() + cy.contains(MixContent.TopToBottom).should('exist').should('be.visible') + cy.contains(MixContent.LeftToRight).should('exist').should('be.visible') + cy.get(MixLocators.CancelAspSettings).should('exist').should('be.visible') + cy.get(MixLocators.Save).should('exist').should('be.visible') + break + case MixVerifications.AspMixTipPos: + cy.contains(MixContent.EditMixTipPos).should('exist').should('be.visible') + cy.contains(MixContent.MixTipPosDescr) + .should('exist') + .should('be.visible') + cy.contains(MixContent.SideView).should('exist').should('be.visible') + cy.get(MixLocators.SwapView).should('exist').should('be.visible').click() + cy.contains(MixContent.TopView).should('exist').should('be.visible') + cy.contains(MixContent.Xposition).should('exist').should('be.visible') + cy.get(MixLocators.XpositionInput).should('exist').should('be.visible') + cy.get(MixLocators.XpositionInput).should('have.prop', 'value') + cy.contains(MixContent.Yposition).should('exist').should('be.visible') + cy.get(MixLocators.YpositionInput).should('exist').should('be.visible') + cy.get(MixLocators.YpositionInput).should('have.prop', 'value') + cy.contains(MixContent.Zposition).should('exist').should('be.visible') + cy.get(MixLocators.ZpositionInput).should('exist').should('be.visible') + cy.get(MixLocators.ZpositionInput).should('have.prop', 'value') + cy.get(MixLocators.ResetToDefault).should('exist').should('be.visible') + cy.get(MixLocators.CancelAspSettings).should('exist').should('be.visible') + cy.get(MixLocators.Save) + .should('exist') + .should('be.visible') + .first() + .click() + break + case MixVerifications.PartTwoDisp: + cy.contains(MixContent.PartTwo).should('exist').should('be.visible') + cy.contains(MixContent.Mix).should('exist').should('be.visible') + cy.get(MixLocators.Aspirate).should('exist').should('be.visible') + cy.get(MixLocators.Dispense).should('exist').should('be.visible') + cy.contains(MixContent.DispFlowRate).should('exist').should('be.visible') + cy.get(MixLocators.DispFlowRate).should('have.prop', 'value') + cy.contains(MixContent.AdvancedPipSettings) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Delay).should('exist').should('be.visible') + cy.contains(MixContent.Blowout).should('exist').should('be.visible') + cy.contains(MixContent.TouchTip).should('exist').should('be.visible') + break + case MixVerifications.Blowout: + cy.contains(MixContent.Blowout).should('exist').should('be.visible') + cy.contains(MixContent.BlowoutLocation) + .should('exist') + .should('be.visible') + cy.contains(MixContent.BlowoutFlowRate) + .should('exist') + .should('be.visible') + cy.get(MixLocators.BlowoutFlowRate).should('have.prop', 'value') + cy.contains(MixContent.BlowoutPos).should('exist').should('be.visible') + cy.get(MixLocators.BlowoutPos).should('have.prop', 'value') + break + case MixVerifications.BlowoutPopout: + cy.contains(MixContent.EditBlowoutPos) + .should('exist') + .should('be.visible') + cy.contains(MixContent.BlowoutPosDescrip) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Zposition).should('exist').should('be.visible') + cy.get(MixLocators.BlowoutZPosition).should('have.prop', 'value') + cy.contains(MixContent.Cancel).should('exist').should('be.visible') + cy.get(MixLocators.ResetToDefault).should('exist').should('be.visible') + cy.get(MixLocators.Save).should('exist').should('be.visible') + break + case MixVerifications.TouchTip: + cy.contains(MixContent.TouchTip).should('exist').should('be.visible') + cy.contains(MixContent.TouchTipFromTop) + .should('exist') + .should('be.visible') + cy.get(MixLocators.PosFromTop).should('have.prop', 'value') + break + case MixVerifications.TouchTipPopout: + cy.contains(MixContent.EditTouchTipPos) + .should('exist') + .should('be.visible') + cy.contains(MixContent.TouchTipDescrip) + .should('exist') + .should('be.visible') + cy.contains(MixContent.Zposition).should('exist').should('be.visible') + cy.get(MixLocators.BlowoutZPosition).should('have.prop', 'value') + cy.contains(MixContent.Cancel).should('exist').should('be.visible') + cy.get(MixLocators.ResetToDefault).should('exist').should('be.visible') + cy.get(MixLocators.Save).should('exist').should('be.visible') + break + case MixVerifications.Rename: + cy.contains(MixContent.CypressTest).should('exist').should('be.visible') + break + + default: + throw new Error( + `Unrecognized verification: ${verification as MixVerifications}` + ) + } +} From 89b3f14d2ca3be8eba9f6f00307eabd583b2ae9c Mon Sep 17 00:00:00 2001 From: koji Date: Tue, 11 Feb 2025 15:04:27 -0500 Subject: [PATCH 80/81] refactor(protocol-designer): initial refactoring of MoveLiquidTools (#17470) * refactor(protocol-designer): initial refactoring of MoveLiquidTools --- .../__fixtures__/formDataForSingleStep.json | 62 ++ .../propsForFieldsForSingleStep.json | 405 +++++++++++ .../utils/getMigrationPositionFromTop.ts | 4 +- .../src/organisms/TipPositionModal/index.tsx | 3 +- .../src/organisms/WellOrderModal/index.tsx | 4 +- .../BatchEditToolbox/BatchEditMixTools.tsx | 4 +- .../BatchEditMoveLiquidTools.tsx | 4 +- .../StepForm/PipetteFields/FlowRateField.tsx | 4 +- .../StepForm/PipetteFields/PositionField.tsx | 4 +- .../PipetteFields/WellsOrderField.tsx | 6 +- .../MultipleStepsMoveLiquidTools.tsx | 477 +++++++++++++ .../SingleStepMoveLiquidTools.tsx | 191 ++++++ .../__tests__/MoveLiquidTools.test.tsx | 56 ++ .../SingleStepMoveLiquidTools.test.tsx | 109 +++ .../StepTools/MoveLiquidTools/index.tsx | 626 +----------------- protocol-designer/src/resources/types.ts | 3 + .../src/steplist/formLevel/errors.ts | 3 +- 17 files changed, 1343 insertions(+), 622 deletions(-) create mode 100644 protocol-designer/src/__fixtures__/formDataForSingleStep.json create mode 100644 protocol-designer/src/__fixtures__/propsForFieldsForSingleStep.json create mode 100644 protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/MultipleStepsMoveLiquidTools.tsx create mode 100644 protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/SingleStepMoveLiquidTools.tsx create mode 100644 protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/MoveLiquidTools.test.tsx create mode 100644 protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/SingleStepMoveLiquidTools.test.tsx create mode 100644 protocol-designer/src/resources/types.ts diff --git a/protocol-designer/src/__fixtures__/formDataForSingleStep.json b/protocol-designer/src/__fixtures__/formDataForSingleStep.json new file mode 100644 index 00000000000..d3549e758b8 --- /dev/null +++ b/protocol-designer/src/__fixtures__/formDataForSingleStep.json @@ -0,0 +1,62 @@ +{ + "aspirate_airGap_checkbox": false, + "aspirate_airGap_volume": "1", + "aspirate_delay_checkbox": false, + "aspirate_delay_mmFromBottom": null, + "aspirate_delay_seconds": "1", + "aspirate_flowRate": null, + "aspirate_labware": "63a7eae2-0e40-4693-9bb9-e7851f4b16be:opentrons/armadillo_96_wellplate_200ul_pcr_full_skirt/2", + "aspirate_mix_checkbox": false, + "aspirate_mix_times": null, + "aspirate_mix_volume": null, + "aspirate_mmFromBottom": null, + "aspirate_submerge_delay_seconds": null, + "aspirate_submerge_speed": null, + "aspirate_touchTip_checkbox": false, + "aspirate_touchTip_mmFromTop": null, + "aspirate_wellOrder_first": "t2b", + "aspirate_wellOrder_second": "l2r", + "aspirate_wells_grouped": false, + "aspirate_wells": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "aspirate_x_position": 0, + "aspirate_y_position": 0, + "blowout_checkbox": false, + "blowout_flowRate": null, + "blowout_location": null, + "blowout_z_offset": 0, + "changeTip": "always", + "dispense_airGap_checkbox": false, + "dispense_airGap_volume": "1", + "dispense_delay_checkbox": false, + "dispense_delay_mmFromBottom": null, + "dispense_delay_seconds": "1", + "dispense_flowRate": null, + "dispense_labware": "83a383e5-6a5a-4dae-9da4-5c21bd3835dc:opentrons/nest_96_wellplate_2ml_deep/2", + "dispense_mix_checkbox": false, + "dispense_mix_times": null, + "dispense_mix_volume": null, + "dispense_mmFromBottom": null, + "dispense_submerge_delay_seconds": null, + "dispense_submerge_speed": null, + "dispense_touchTip_checkbox": false, + "dispense_touchTip_mmFromTop": null, + "dispense_wellOrder_first": "t2b", + "dispense_wellOrder_second": "l2r", + "dispense_wells": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "dispense_x_position": 0, + "dispense_y_position": 0, + "disposalVolume_checkbox": true, + "disposalVolume_volume": "1", + "dropTip_location": "3a79c2ec-9df7-4dc3-be34-daf86cce3028:trashBin", + "nozzles": null, + "path": "single", + "pipette": "af1e518a-0e00-4270-a22a-ca5b43daff30", + "preWetTip": false, + "tipRack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", + "volume": "10", + "stepType": "moveLiquid", + "stepName": "transfer", + "stepDetails": "", + "id": "8497bd13-7a6a-451c-9875-1b1918b044e6", + "dispense_touchTip_mmfromTop": null +} diff --git a/protocol-designer/src/__fixtures__/propsForFieldsForSingleStep.json b/protocol-designer/src/__fixtures__/propsForFieldsForSingleStep.json new file mode 100644 index 00000000000..c7dc00fd644 --- /dev/null +++ b/protocol-designer/src/__fixtures__/propsForFieldsForSingleStep.json @@ -0,0 +1,405 @@ +{ + "aspirate_airGap_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_airGap_checkbox", + "value": false, + "tooltipContent": "Draw air into the tip after aspirating" + }, + "aspirate_airGap_volume": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_airGap_volume", + "value": "1", + "tooltipContent": "step_fields.defaults.aspirate_airGap_volume" + }, + "aspirate_delay_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_delay_checkbox", + "value": false, + "tooltipContent": "Delay after each aspiration" + }, + "aspirate_delay_mmFromBottom": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_delay_mmFromBottom", + "value": null, + "tooltipContent": "Distance from the bottom of the well" + }, + "aspirate_delay_seconds": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_delay_seconds", + "value": "1", + "tooltipContent": "step_fields.defaults.aspirate_delay_seconds" + }, + "aspirate_flowRate": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_flowRate", + "value": null, + "tooltipContent": "The speed at which the pipette aspirates" + }, + "aspirate_labware": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_labware", + "value": "4d7e45e2-b962-45ca-8ace-8a5a683591d5:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", + "tooltipContent": "Pipette unable to access labware in staging area" + }, + "aspirate_mix_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_mix_checkbox", + "value": false, + "tooltipContent": "Aspirate and dispense repeatedly before main aspiration" + }, + "aspirate_mix_times": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_mix_times", + "value": null, + "tooltipContent": "step_fields.defaults.aspirate_mix_times" + }, + "aspirate_mix_volume": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_mix_volume", + "value": null, + "tooltipContent": "step_fields.defaults.aspirate_mix_volume" + }, + "aspirate_mmFromBottom": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_mmFromBottom", + "value": null, + "tooltipContent": "Adjust tip position for aspirate" + }, + "aspirate_submerge_delay_seconds": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_submerge_delay_seconds", + "value": null, + "tooltipContent": "step_fields.defaults.aspirate_submerge_delay_seconds" + }, + "aspirate_submerge_speed": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_submerge_speed", + "value": null, + "tooltipContent": "step_fields.defaults.aspirate_submerge_speed" + }, + "aspirate_touchTip_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_touchTip_checkbox", + "value": false, + "tooltipContent": "Touch tip to each side of the well after aspirating" + }, + "aspirate_touchTip_mmFromTop": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_touchTip_mmFromTop", + "value": null, + "tooltipContent": "Distance from the top of the well" + }, + "aspirate_wellOrder_first": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_wellOrder_first", + "value": "t2b", + "tooltipContent": "step_fields.defaults.aspirate_wellOrder_first" + }, + "aspirate_wellOrder_second": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_wellOrder_second", + "value": "l2r", + "tooltipContent": "step_fields.defaults.aspirate_wellOrder_second" + }, + "aspirate_wells_grouped": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_wells_grouped", + "value": false, + "tooltipContent": "step_fields.defaults.aspirate_wells_grouped" + }, + "aspirate_wells": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_wells", + "value": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "tooltipContent": "First select a source labware" + }, + "aspirate_x_position": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_x_position", + "value": 0, + "tooltipContent": "step_fields.defaults.aspirate_x_position" + }, + "aspirate_y_position": { + "disabled": false, + "errorToShow": null, + "name": "aspirate_y_position", + "value": 0, + "tooltipContent": "step_fields.defaults.aspirate_y_position" + }, + "blowout_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "blowout_checkbox", + "value": false, + "tooltipContent": "Blow extra air through the tip" + }, + "blowout_flowRate": { + "disabled": false, + "errorToShow": null, + "name": "blowout_flowRate", + "value": null, + "tooltipContent": "Blowout speed" + }, + "blowout_location": { + "disabled": false, + "errorToShow": null, + "name": "blowout_location", + "value": null, + "tooltipContent": "Where to dispose of remaining volume in tip" + }, + "blowout_z_offset": { + "disabled": true, + "errorToShow": null, + "name": "blowout_z_offset", + "value": 0, + "tooltipContent": "Blowout location, source, and destination labware must first be selected" + }, + "changeTip": { + "disabled": false, + "errorToShow": null, + "name": "changeTip", + "value": "always", + "tooltipContent": "Choose when the robot picks up fresh tips" + }, + "dispense_airGap_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "dispense_airGap_checkbox", + "value": false, + "tooltipContent": "Draw in air before moving to trash to dispose of tip." + }, + "dispense_airGap_volume": { + "disabled": false, + "errorToShow": null, + "name": "dispense_airGap_volume", + "value": "1", + "tooltipContent": "step_fields.defaults.dispense_airGap_volume" + }, + "dispense_delay_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "dispense_delay_checkbox", + "value": false, + "tooltipContent": "Delay after each dispense" + }, + "dispense_delay_mmFromBottom": { + "disabled": false, + "errorToShow": null, + "name": "dispense_delay_mmFromBottom", + "value": null, + "tooltipContent": "Distance from the bottom of the well" + }, + "dispense_delay_seconds": { + "disabled": false, + "errorToShow": null, + "name": "dispense_delay_seconds", + "value": "1", + "tooltipContent": "step_fields.defaults.dispense_delay_seconds" + }, + "dispense_flowRate": { + "disabled": false, + "errorToShow": null, + "name": "dispense_flowRate", + "value": null, + "tooltipContent": "The speed at which the pipette dispenses" + }, + "dispense_labware": { + "disabled": false, + "errorToShow": null, + "name": "dispense_labware", + "value": "83a383e5-6a5a-4dae-9da4-5c21bd3835dc:opentrons/nest_96_wellplate_2ml_deep/2", + "tooltipContent": "Pipette unable to access labware in staging area" + }, + "dispense_mix_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "dispense_mix_checkbox", + "value": false, + "tooltipContent": "Aspirate and dispense repeatedly after main dispense" + }, + "dispense_mix_times": { + "disabled": false, + "errorToShow": null, + "name": "dispense_mix_times", + "value": null, + "tooltipContent": "step_fields.defaults.dispense_mix_times" + }, + "dispense_mix_volume": { + "disabled": false, + "errorToShow": null, + "name": "dispense_mix_volume", + "value": null, + "tooltipContent": "step_fields.defaults.dispense_mix_volume" + }, + "dispense_mmFromBottom": { + "disabled": false, + "errorToShow": null, + "name": "dispense_mmFromBottom", + "value": null, + "tooltipContent": "Adjust tip position for dispense" + }, + "dispense_submerge_delay_seconds": { + "disabled": false, + "errorToShow": null, + "name": "dispense_submerge_delay_seconds", + "value": null, + "tooltipContent": "step_fields.defaults.dispense_submerge_delay_seconds" + }, + "dispense_submerge_speed": { + "disabled": false, + "errorToShow": null, + "name": "dispense_submerge_speed", + "value": null, + "tooltipContent": "step_fields.defaults.dispense_submerge_speed" + }, + "dispense_touchTip_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "dispense_touchTip_checkbox", + "value": false, + "tooltipContent": "Touch tip to each side of the well after dispensing" + }, + "dispense_touchTip_mmFromTop": { + "disabled": false, + "errorToShow": null, + "name": "dispense_touchTip_mmFromTop", + "value": null, + "tooltipContent": "Distance from the top of the well" + }, + "dispense_wellOrder_first": { + "disabled": false, + "errorToShow": null, + "name": "dispense_wellOrder_first", + "value": "t2b", + "tooltipContent": "step_fields.defaults.dispense_wellOrder_first" + }, + "dispense_wellOrder_second": { + "disabled": false, + "errorToShow": null, + "name": "dispense_wellOrder_second", + "value": "l2r", + "tooltipContent": "step_fields.defaults.dispense_wellOrder_second" + }, + "dispense_wells": { + "disabled": false, + "errorToShow": null, + "name": "dispense_wells", + "value": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "tooltipContent": "First select a destination labware" + }, + "dispense_x_position": { + "disabled": false, + "errorToShow": null, + "name": "dispense_x_position", + "value": 0, + "tooltipContent": "step_fields.defaults.dispense_x_position" + }, + "dispense_y_position": { + "disabled": false, + "errorToShow": null, + "name": "dispense_y_position", + "value": 0, + "tooltipContent": "step_fields.defaults.dispense_y_position" + }, + "disposalVolume_checkbox": { + "disabled": false, + "errorToShow": null, + "name": "disposalVolume_checkbox", + "value": true, + "tooltipContent": "Aspirate extra volume that is disposed of after a multi-dispense is complete. We recommend a disposal volume of at least the pipette's minimum." + }, + "disposalVolume_volume": { + "disabled": false, + "errorToShow": null, + "name": "disposalVolume_volume", + "value": "1", + "tooltipContent": "step_fields.defaults.disposalVolume_volume" + }, + "dropTip_location": { + "disabled": false, + "errorToShow": null, + "name": "dropTip_location", + "value": "3a79c2ec-9df7-4dc3-be34-daf86cce3028:trashBin", + "tooltipContent": "Choose where you would like to drop tip" + }, + "dropTip_wellNames": { + "disabled": false, + "errorToShow": null, + "name": "dropTip_wellNames", + "tooltipContent": "step_fields.defaults.dropTip_wellNames" + }, + "nozzles": { + "disabled": false, + "errorToShow": null, + "name": "nozzles", + "value": null, + "tooltipContent": "Partial pickup requires a tip rack directly on the deck. Full rack pickup requires the Flex 96 Tip Rack Adapter." + }, + "path": { + "disabled": false, + "errorToShow": null, + "name": "path", + "value": "single", + "tooltipContent": "step_fields.defaults.path" + }, + "pickUpTip_location": { + "disabled": false, + "errorToShow": null, + "name": "pickUpTip_location", + "tooltipContent": "step_fields.defaults.pickUpTip_location" + }, + "pickUpTip_wellNames": { + "disabled": false, + "errorToShow": null, + "name": "pickUpTip_wellNames", + "tooltipContent": "step_fields.defaults.pickUpTip_wellNames" + }, + "pipette": { + "disabled": false, + "errorToShow": null, + "name": "pipette", + "value": "mockPipetteId", + "tooltipContent": "Select the pipette you want to use" + }, + "preWetTip": { + "disabled": false, + "errorToShow": null, + "name": "preWetTip", + "value": false, + "tooltipContent": "Pre-wet by aspirating and dispensing the total aspiration volume" + }, + "tipRack": { + "disabled": false, + "errorToShow": null, + "name": "tipRack", + "value": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", + "tooltipContent": "step_fields.defaults.tipRack" + }, + "volume": { + "disabled": false, + "errorToShow": null, + "name": "volume", + "value": "10", + "tooltipContent": "Volume to dispense in each well" + } +} diff --git a/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts b/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts index f7a5b7d3f15..a165df07493 100644 --- a/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts +++ b/protocol-designer/src/load-file/migration/utils/getMigrationPositionFromTop.ts @@ -3,13 +3,15 @@ import type { LoadLabwareCreateCommand, } from '@opentrons/shared-data' +import type { MoveLiquidPrefixType } from '../../../resources/types' + export const getMigratedPositionFromTop = ( labwareDefinitions: { [definitionId: string]: LabwareDefinition2 }, loadLabwareCommands: LoadLabwareCreateCommand[], labware: string, - type: 'aspirate' | 'dispense' | 'mix' + type: MoveLiquidPrefixType ): number => { const matchingLoadLabware = loadLabwareCommands.find( command => diff --git a/protocol-designer/src/organisms/TipPositionModal/index.tsx b/protocol-designer/src/organisms/TipPositionModal/index.tsx index 71a9dcd17dd..f974c60ace6 100644 --- a/protocol-designer/src/organisms/TipPositionModal/index.tsx +++ b/protocol-designer/src/organisms/TipPositionModal/index.tsx @@ -27,6 +27,7 @@ import { TipPositionSideView } from './TipPositionSideView' import type { ChangeEvent } from 'react' import type { StepFieldName } from '../../form-types' +import type { MoveLiquidPrefixType } from '../../resources/types' type Offset = 'x' | 'y' | 'z' interface PositionSpec { @@ -43,7 +44,7 @@ interface TipPositionModalProps { wellXWidthMm: number wellYWidthMm: number isIndeterminate?: boolean - prefix: 'aspirate' | 'dispense' | 'mix' + prefix: MoveLiquidPrefixType } export function TipPositionModal( diff --git a/protocol-designer/src/organisms/WellOrderModal/index.tsx b/protocol-designer/src/organisms/WellOrderModal/index.tsx index 54b4ad437ef..1a49c255ce9 100644 --- a/protocol-designer/src/organisms/WellOrderModal/index.tsx +++ b/protocol-designer/src/organisms/WellOrderModal/index.tsx @@ -17,7 +17,9 @@ import { import { LINK_BUTTON_STYLE } from '../../atoms' import { getMainPagePortalEl } from '../Portal' import { WellOrderVisualization } from './WellOrderVisualization' + import type { WellOrderOption } from '../../form-types' +import type { MoveLiquidPrefixType } from '../../resources/types' const DEFAULT_FIRST: WellOrderOption = 't2b' const DEFAULT_SECOND: WellOrderOption = 'l2r' @@ -31,7 +33,7 @@ const WELL_ORDER_VALUES: WellOrderOption[] = [ export interface WellOrderModalProps { isOpen: boolean closeModal: () => void - prefix: 'aspirate' | 'dispense' | 'mix' + prefix: MoveLiquidPrefixType firstName: string secondName: string firstValue?: WellOrderOption | null diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx index 0b74bbab2f3..6f3a461f43b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx @@ -24,7 +24,7 @@ import { } from '../StepForm/utils' import type { WellOrderOption } from '../../../../form-types' -import type { FieldPropsByName } from '../StepForm/types' +import type { FieldPropsByName, LiquidHandlingTab } from '../StepForm/types' interface BatchEditMixToolsProps { propsForFields: FieldPropsByName @@ -33,7 +33,7 @@ interface BatchEditMixToolsProps { export function BatchEditMixTools(props: BatchEditMixToolsProps): JSX.Element { const { propsForFields } = props const { t, i18n } = useTranslation(['form', 'button', 'tooltip']) - const [tab, setTab] = useState<'aspirate' | 'dispense'>('aspirate') + const [tab, setTab] = useState('aspirate') const aspirateTab = { text: i18n.format(t('aspirate'), 'capitalize'), isActive: tab === 'aspirate', diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx index 12d7f1442e8..35f0efe2898 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx @@ -24,7 +24,7 @@ import { WellsOrderField, } from '../StepForm/PipetteFields' import type { WellOrderOption } from '../../../../form-types' -import type { FieldPropsByName } from '../StepForm/types' +import type { FieldPropsByName, LiquidHandlingTab } from '../StepForm/types' interface BatchEditMoveLiquidProps { propsForFields: FieldPropsByName @@ -35,7 +35,7 @@ export function BatchEditMoveLiquidTools( ): JSX.Element { const { t, i18n } = useTranslation(['button', 'tooltip', 'protocol_steps']) const { propsForFields } = props - const [tab, setTab] = useState<'aspirate' | 'dispense'>('aspirate') + const [tab, setTab] = useState('aspirate') const aspirateTab = { text: t('protocol_steps:aspirate'), isActive: tab === 'aspirate', diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/FlowRateField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/FlowRateField.tsx index 3b48e148afa..25d7c422abf 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/FlowRateField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/FlowRateField.tsx @@ -5,10 +5,12 @@ import { SPACING } from '@opentrons/components' import { selectors as stepFormSelectors } from '../../../../../step-forms' import { getMatchingTipLiquidSpecs } from '../../../../../utils' import { InputStepFormField } from '../../../../../molecules' + import type { FieldProps } from '../types' +import type { FlowRateType } from '../../../../../resources/types' interface FlowRateFieldProps extends FieldProps { - flowRateType: 'aspirate' | 'dispense' | 'blowout' + flowRateType: FlowRateType volume: unknown tiprack: unknown pipetteId?: string | null diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx index ef68b274d9b..d5adf58ddb3 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx @@ -19,6 +19,7 @@ import { TipPositionModal, ZTipPositionModal } from '../../../../../organisms' import { getIsDelayPositionField } from '../../../../../form-types' import { getDefaultMmFromEdge } from '../../../../../organisms/TipPositionModal/utils' import { selectors as stepFormSelectors } from '../../../../../step-forms' + import type { TipXOffsetFields, TipYOffsetFields, @@ -26,8 +27,9 @@ import type { } from '../../../../../form-types' import type { PositionSpecs } from '../../../../../organisms' import type { FieldPropsByName } from '../types' +import type { MoveLiquidPrefixType } from '../../../../../resources/types' interface PositionFieldProps { - prefix: 'aspirate' | 'dispense' | 'mix' + prefix: MoveLiquidPrefixType propsForFields: FieldPropsByName zField: TipZOffsetFields xField?: TipXOffsetFields diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/WellsOrderField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/WellsOrderField.tsx index 9ddab626359..eb822bdce80 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/WellsOrderField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/WellsOrderField.tsx @@ -13,11 +13,13 @@ import { ALIGN_CENTER, } from '@opentrons/components' import { WellOrderModal } from '../../../../../organisms' -import type { WellOrderOption } from '../../../../../form-types' + import type { FieldProps } from '../types' +import type { WellOrderOption } from '../../../../../form-types' +import type { MoveLiquidPrefixType } from '../../../../../resources/types' export interface WellsOrderFieldProps { - prefix: 'aspirate' | 'dispense' | 'mix' + prefix: MoveLiquidPrefixType firstName: string secondName: string updateFirstWellOrder: FieldProps['updateValue'] diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/MultipleStepsMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/MultipleStepsMoveLiquidTools.tsx new file mode 100644 index 00000000000..c9242a9b37a --- /dev/null +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/MultipleStepsMoveLiquidTools.tsx @@ -0,0 +1,477 @@ +import { useSelector } from 'react-redux' +import { useTranslation } from 'react-i18next' +import { + ALIGN_CENTER, + COLORS, + DIRECTION_COLUMN, + Divider, + Flex, + Icon, + ListItem, + SPACING, + StyledText, + Tabs, + Tooltip, + useHoverTooltip, +} from '@opentrons/components' +import { getTrashOrLabware } from '@opentrons/step-generation' + +import { + BlowoutLocationField, + BlowoutOffsetField, + DisposalField, + FlowRateField, + PositionField, + WellsOrderField, +} from '../../PipetteFields' +import { getEnableLiquidClasses } from '../../../../../../feature-flags/selectors' +import { + CheckboxExpandStepFormField, + InputStepFormField, + ToggleStepFormField, +} from '../../../../../../molecules' +import { + getAdditionalEquipmentEntities, + getLabwareEntities, +} from '../../../../../../step-forms/selectors' +import { + getBlowoutLocationOptionsForForm, + getFormErrorsMappedToField, + getFormLevelError, + getLabwareFieldForPositioningField, +} from '../../utils' + +import type { Dispatch, SetStateAction } from 'react' +import type { FieldPropsByName, LiquidHandlingTab } from '../../types' +import type { FormData, StepFieldName } from '../../../../../../form-types' +import type { StepFormErrors } from '../../../../../../steplist' + +const addPrefix = (prefix: string) => (fieldName: string): StepFieldName => + `${prefix}_${fieldName}` + +interface MultipleStepsMoveLiquidToolsProps { + propsForFields: FieldPropsByName + formData: FormData + tab: LiquidHandlingTab + setTab: Dispatch> + setShowFormErrors?: Dispatch> + visibleFormErrors: StepFormErrors +} + +export const MultipleStepsMoveLiquidTools = ({ + propsForFields, + formData, + tab, + setTab, + setShowFormErrors, + visibleFormErrors, +}: MultipleStepsMoveLiquidToolsProps): JSX.Element => { + const { t, i18n } = useTranslation(['protocol_steps', 'form', 'tooltip']) + const [targetProps, tooltipProps] = useHoverTooltip() + const labwares = useSelector(getLabwareEntities) + const additionalEquipmentEntities = useSelector( + getAdditionalEquipmentEntities + ) + const enableLiquidClasses = useSelector(getEnableLiquidClasses) + + const addFieldNamePrefix = addPrefix(tab) + const isWasteChuteSelected = + propsForFields.dispense_labware?.value != null + ? additionalEquipmentEntities[ + String(propsForFields.dispense_labware.value) + ]?.name === 'wasteChute' + : false + const isTrashBinSelected = + propsForFields.dispense_labware?.value != null + ? additionalEquipmentEntities[ + String(propsForFields.dispense_labware.value) + ]?.name === 'trashBin' + : false + const destinationLabwareType = + formData.dispense_labware != null + ? getTrashOrLabware( + labwares, + additionalEquipmentEntities, + formData.dispense_labware as string + ) + : null + const isDestinationTrash = + destinationLabwareType != null + ? ['trashBin', 'wasteChute'].includes(destinationLabwareType) + : false + const dispenseMixDisabledTooltipText = t( + `tooltip:step_fields.moveLiquid.disabled.${ + isDestinationTrash ? 'dispense_mix_checkbox' : 'dispense_mix_checkbox_2' + }` + ) + + const aspirateTab = { + text: t('aspirate'), + isActive: tab === 'aspirate', + onClick: () => { + setTab('aspirate') + setShowFormErrors?.(false) + }, + } + const dispenseTab = { + text: t('dispense'), + isActive: tab === 'dispense', + onClick: () => { + setTab('dispense') + setShowFormErrors?.(false) + }, + } + + const hideWellOrderField = + tab === 'dispense' && (isWasteChuteSelected || isTrashBinSelected) + + const mappedErrorsToField = getFormErrorsMappedToField(visibleFormErrors) + + return ( + + + + + + + + {hideWellOrderField ? null : ( + + )} + + + {enableLiquidClasses ? ( + <> + + + + + {t('protocol_steps:submerge')} + + + + + + {t(`tooltip:step_fields.defaults.${tab}_submerge`)} + + + + + + + + + + + ) : null} + + + + {t('protocol_steps:advanced_settings')} + + {tab === 'aspirate' ? ( + + ) : null} + + {formData[`${tab}_mix_checkbox`] === true ? ( + + + + + ) : null} + + + {formData[`${tab}_delay_checkbox`] === true ? ( + + + + + ) : null} + + {tab === 'dispense' ? ( + + {formData.blowout_checkbox === true ? ( + + + + + + ) : null} + + ) : null} + + {formData[`${tab}_touchTip_checkbox`] === true ? ( + + ) : null} + + + {formData[`${tab}_airGap_checkbox`] === true ? ( + + ) : null} + + {formData.path === 'multiDispense' && tab === 'dispense' && ( + + )} + + + ) +} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/SingleStepMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/SingleStepMoveLiquidTools.tsx new file mode 100644 index 00000000000..18c1878610e --- /dev/null +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/SingleStepMoveLiquidTools.tsx @@ -0,0 +1,191 @@ +import { useTranslation } from 'react-i18next' +import { useSelector } from 'react-redux' + +import { Flex, Divider, DIRECTION_COLUMN, SPACING } from '@opentrons/components' +import { + getAdditionalEquipmentEntities, + getLabwareEntities, + getPipetteEntities, +} from '../../../../../../step-forms/selectors' +import { getFormErrorsMappedToField, getFormLevelError } from '../../utils' +import { getEnableReturnTip } from '../../../../../../feature-flags/selectors' + +import { + ChangeTipField, + DropTipField, + LabwareField, + PartialTipField, + PathField, + PickUpTipField, + PipetteField, + TiprackField, + TipWellSelectionField, + VolumeField, + WellSelectionField, +} from '../../PipetteFields' + +import type { FieldPropsByName } from '../../types' +import type { FormData } from '../../../../../../form-types' +import type { StepFormErrors } from '../../../../../../steplist' + +interface SingleStepMoveLiquidToolsProps { + propsForFields: FieldPropsByName + formData: FormData + visibleFormErrors: StepFormErrors +} + +export function SingleStepMoveLiquidTools({ + propsForFields, + formData, + visibleFormErrors, +}: SingleStepMoveLiquidToolsProps): JSX.Element { + const { t } = useTranslation('protocol_steps') + const labwares = useSelector(getLabwareEntities) + const pipettes = useSelector(getPipetteEntities) + const additionalEquipmentEntities = useSelector( + getAdditionalEquipmentEntities + ) + const enableReturnTip = useSelector(getEnableReturnTip) + + const { pipette, tipRack } = propsForFields + const is96Channel = + pipette.value != null && pipettes[String(pipette.value)].name === 'p1000_96' + const userSelectedDropTipLocation = + labwares[String(propsForFields.dropTip_location.value)] != null + const userSelectedPickUpTipLocation = + labwares[String(propsForFields.pickUpTip_location.value)] != null + const isDisposalLocation = + additionalEquipmentEntities[String(propsForFields.dispense_labware.value)] + ?.name === 'wasteChute' || + additionalEquipmentEntities[String(propsForFields.dispense_labware.value)] + ?.name === 'trashBin' + const mappedErrorsToField = getFormErrorsMappedToField(visibleFormErrors) + + return ( + + + {is96Channel ? ( + <> + + + + ) : null} + + + + + + + error.dependentFields.includes('aspirate_wells') + ) ?? false + } + errorToShow={getFormLevelError('aspirate_wells', mappedErrorsToField)} + /> + + + + + {isDisposalLocation ? null : ( + + error.dependentFields.includes('dispense_wells') + ) ?? false + } + errorToShow={getFormLevelError( + 'dispense_wells', + mappedErrorsToField + )} + /> + )} + + + + + + + + {enableReturnTip ? ( + <> + + + {userSelectedPickUpTipLocation ? ( + <> + + + ) : null} + + ) : null} + + + {userSelectedDropTipLocation && enableReturnTip ? ( + <> + + + + ) : null} + + ) +} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/MoveLiquidTools.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/MoveLiquidTools.test.tsx new file mode 100644 index 00000000000..e2f26d86c36 --- /dev/null +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/MoveLiquidTools.test.tsx @@ -0,0 +1,56 @@ +import { describe, it, beforeEach, vi } from 'vitest' +import { screen } from '@testing-library/react' + +import { renderWithProviders } from '../../../../../../../__testing-utils__' + +import { SingleStepMoveLiquidTools } from '../SingleStepMoveLiquidTools' +import { MultipleStepsMoveLiquidTools } from '../MultipleStepsMoveLiquidTools' + +import { MoveLiquidTools } from '../' + +import type { ComponentProps } from 'react' +import type { FieldPropsByName } from '../../../types' +import type { FormData } from '../../../../../../../form-types' +import type { StepFormErrors } from '../../../../../../../steplist' + +vi.mock('../SingleStepMoveLiquidTools') +vi.mock('../MultipleStepsMoveLiquidTools') + +const render = (props: ComponentProps) => { + return renderWithProviders() +} + +describe('MoveLiquidTools', () => { + let props: ComponentProps + + beforeEach(() => { + props = { + toolboxStep: 0, + propsForFields: {} as FieldPropsByName, + formData: {} as FormData, + visibleFormErrors: {} as StepFormErrors, + tab: 'aspirate', + setTab: vi.fn(), + focusHandlers: {} as any, + showFormErrors: false, + } + + vi.mocked(SingleStepMoveLiquidTools).mockReturnValue( +
mock SingleStepMoveLiquidTools
+ ) + vi.mocked(MultipleStepsMoveLiquidTools).mockReturnValue( +
mock MultipleStepsMoveLiquidTools
+ ) + }) + + it('renders SingleStepMoveLiquidTools when there is only one step', () => { + render(props) + screen.getByText('mock SingleStepMoveLiquidTools') + }) + + it('renders MultipleStepsMoveLiquidTools when there are multiple steps', () => { + props.toolboxStep = 3 + render(props) + screen.getByText('mock MultipleStepsMoveLiquidTools') + }) +}) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/SingleStepMoveLiquidTools.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/SingleStepMoveLiquidTools.test.tsx new file mode 100644 index 00000000000..f13beb33120 --- /dev/null +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/SingleStepMoveLiquidTools.test.tsx @@ -0,0 +1,109 @@ +import { describe, it, beforeEach, vi } from 'vitest' +import { screen } from '@testing-library/react' +import { fixture96Plate } from '@opentrons/shared-data' + +import { renderWithProviders } from '../../../../../../../__testing-utils__' +import { i18n } from '../../../../../../../assets/localization' +import { + getAdditionalEquipmentEntities, + getLabwareEntities, + getPipetteEntities, +} from '../../../../../../../step-forms/selectors' +import { + PipetteField, + TiprackField, + LabwareField, + WellSelectionField, + VolumeField, + PathField, + ChangeTipField, + DropTipField, + PickUpTipField, + TipWellSelectionField, +} from '../../../PipetteFields' +import { getEnableReturnTip } from '../../../../../../../feature-flags/selectors' +import propsForFieldsForSingleStep from '../../../../../../../__fixtures__/propsForFieldsForSingleStep.json' +import formDataForSingleStep from '../../../../../../../__fixtures__/formDataForSingleStep.json' +import { SingleStepMoveLiquidTools } from '../SingleStepMoveLiquidTools' + +import type { ComponentProps } from 'react' +import type { LabwareDefinition2 } from '@opentrons/shared-data' + +vi.mock('../../../../../../../step-forms/selectors') +vi.mock('../../../PipetteFields') +vi.mock('../../../../../../../feature-flags/selectors') + +const labwareId = 'mockLabwareId' +const pipetteId = 'mockPipetteId' + +const render = (props: ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('SingleStepMoveLiquidTools', () => { + let props: ComponentProps + beforeEach(() => { + props = { + propsForFields: propsForFieldsForSingleStep as any, + formData: formDataForSingleStep as any, + visibleFormErrors: [] as any, + } + + vi.mocked(getLabwareEntities).mockReturnValue({ + labwareId: { + id: labwareId, + labwareDefURI: 'mockUri', + def: fixture96Plate as LabwareDefinition2, + pythonName: 'mockPythonName', + }, + }) + + vi.mocked(getPipetteEntities).mockReturnValue({ + [pipetteId]: { + name: 'p50_single_flex', + spec: {} as any, + id: pipetteId, + tiprackLabwareDef: [], + tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], + pythonName: 'mockPythonName', + }, + }) + vi.mocked(getAdditionalEquipmentEntities).mockReturnValue({}) + + vi.mocked(PipetteField).mockReturnValue(
mock PipetteField
) + vi.mocked(TiprackField).mockReturnValue(
mock TiprackField
) + vi.mocked(LabwareField).mockReturnValue(
mock LabwareField
) + vi.mocked(WellSelectionField).mockReturnValue( +
mock WellSelectionField
+ ) + vi.mocked(VolumeField).mockReturnValue(
mock VolumeField
) + vi.mocked(PathField).mockReturnValue(
mock PathField
) + vi.mocked(ChangeTipField).mockReturnValue(
mock ChangeTipField
) + vi.mocked(DropTipField).mockReturnValue(
mock DropTipField
) + vi.mocked(PickUpTipField).mockReturnValue(
mock PickUpTipField
) + vi.mocked(TipWellSelectionField).mockReturnValue( +
mock TipWellSelectionField
+ ) + vi.mocked(getEnableReturnTip).mockReturnValue(false) + }) + + it('renders fields', () => { + render(props) + screen.getByText('mock PipetteField') + screen.getByText('mock TiprackField') + screen.getAllByText('mock LabwareField') + screen.getAllByText('mock WellSelectionField') + screen.getByText('mock VolumeField') + screen.getByText('mock PathField') + screen.getByText('mock ChangeTipField') + screen.getByText('mock DropTipField') + }) + + it('renders fields when feature flag is enabled', () => { + vi.mocked(getEnableReturnTip).mockReturnValue(true) + render(props) + screen.getByText('mock PickUpTipField') + }) +}) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx index da137eccf9c..551b94aec1b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx @@ -1,65 +1,7 @@ -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { - ALIGN_CENTER, - COLORS, - DIRECTION_COLUMN, - Divider, - Flex, - Icon, - ListItem, - SPACING, - StyledText, - Tabs, - Tooltip, - useHoverTooltip, -} from '@opentrons/components' -import { getTrashOrLabware } from '@opentrons/step-generation' -import { - getEnableLiquidClasses, - getEnableReturnTip, -} from '../../../../../../feature-flags/selectors' -import { - getAdditionalEquipmentEntities, - getLabwareEntities, - getPipetteEntities, -} from '../../../../../../step-forms/selectors' -import { - CheckboxExpandStepFormField, - InputStepFormField, - ToggleStepFormField, -} from '../../../../../../molecules' -import { - BlowoutLocationField, - BlowoutOffsetField, - ChangeTipField, - DisposalField, - DropTipField, - FlowRateField, - LabwareField, - PartialTipField, - PathField, - PickUpTipField, - PipetteField, - PositionField, - TiprackField, - TipWellSelectionField, - VolumeField, - WellSelectionField, - WellsOrderField, -} from '../../PipetteFields' -import { - getBlowoutLocationOptionsForForm, - getFormErrorsMappedToField, - getFormLevelError, - getLabwareFieldForPositioningField, -} from '../../utils' -import type { StepFieldName } from '../../../../../../form-types' -import type { StepFormProps } from '../../types' +import { SingleStepMoveLiquidTools } from './SingleStepMoveLiquidTools' +import { MultipleStepsMoveLiquidTools } from './MultipleStepsMoveLiquidTools' -const makeAddFieldNamePrefix = (prefix: string) => ( - fieldName: string -): StepFieldName => `${prefix}_${fieldName}` +import type { StepFormProps } from '../../types' export function MoveLiquidTools(props: StepFormProps): JSX.Element { const { @@ -71,557 +13,21 @@ export function MoveLiquidTools(props: StepFormProps): JSX.Element { tab, setTab, } = props - const [targetProps, tooltipProps] = useHoverTooltip() - const { t, i18n } = useTranslation(['protocol_steps', 'form', 'tooltip']) - const { path } = formData - const additionalEquipmentEntities = useSelector( - getAdditionalEquipmentEntities - ) - const enableLiquidClasses = useSelector(getEnableLiquidClasses) - const enableReturnTip = useSelector(getEnableReturnTip) - const labwares = useSelector(getLabwareEntities) - const pipettes = useSelector(getPipetteEntities) - const addFieldNamePrefix = makeAddFieldNamePrefix(tab) - - const isWasteChuteSelected = - propsForFields.dispense_labware?.value != null - ? additionalEquipmentEntities[ - String(propsForFields.dispense_labware.value) - ]?.name === 'wasteChute' - : false - const isTrashBinSelected = - propsForFields.dispense_labware?.value != null - ? additionalEquipmentEntities[ - String(propsForFields.dispense_labware.value) - ]?.name === 'trashBin' - : false - const userSelectedPickUpTipLocation = - labwares[String(propsForFields.pickUpTip_location.value)] != null - const userSelectedDropTipLocation = - labwares[String(propsForFields.dropTip_location.value)] != null - - const is96Channel = - propsForFields.pipette.value != null && - pipettes[String(propsForFields.pipette.value)].name === 'p1000_96' - const isDisposalLocation = - additionalEquipmentEntities[String(propsForFields.dispense_labware.value)] - ?.name === 'wasteChute' || - additionalEquipmentEntities[String(propsForFields.dispense_labware.value)] - ?.name === 'trashBin' - - const destinationLabwareType = - formData.dispense_labware != null - ? getTrashOrLabware( - labwares, - additionalEquipmentEntities, - formData.dispense_labware as string - ) - : null - const isDestinationTrash = - destinationLabwareType != null - ? ['trashBin', 'wasteChute'].includes(destinationLabwareType) - : false - const dispenseMixDisabledTooltipText = t( - `tooltip:step_fields.moveLiquid.disabled.${ - isDestinationTrash ? 'dispense_mix_checkbox' : 'dispense_mix_checkbox_2' - }` - ) - const aspirateTab = { - text: t('aspirate'), - isActive: tab === 'aspirate', - onClick: () => { - setTab('aspirate') - setShowFormErrors?.(false) - }, - } - const dispenseTab = { - text: t('dispense'), - - isActive: tab === 'dispense', - onClick: () => { - setTab('dispense') - setShowFormErrors?.(false) - }, - } - const hideWellOrderField = - tab === 'dispense' && (isWasteChuteSelected || isTrashBinSelected) - - const mappedErrorsToField = getFormErrorsMappedToField(visibleFormErrors) return toolboxStep === 0 ? ( - - - {is96Channel ? ( - <> - - - - ) : null} - - - - - - - error.dependentFields.includes('aspirate_wells') - ) ?? false - } - errorToShow={getFormLevelError('aspirate_wells', mappedErrorsToField)} - /> - - - - - {isDisposalLocation ? null : ( - - error.dependentFields.includes('dispense_wells') - ) ?? false - } - errorToShow={getFormLevelError( - 'dispense_wells', - mappedErrorsToField - )} - /> - )} - - - - - - - - {enableReturnTip ? ( - <> - - - {userSelectedPickUpTipLocation ? ( - <> - - - ) : null} - - ) : null} - - - {userSelectedDropTipLocation && enableReturnTip ? ( - <> - - - - ) : null} - + ) : ( - - - - - - - - {hideWellOrderField ? null : ( - - )} - - - {enableLiquidClasses ? ( - <> - - - - - {t('protocol_steps:submerge')} - - - - - - {t(`tooltip:step_fields.defaults.${tab}_submerge`)} - - - - - - - - - - - ) : null} - - - - {t('protocol_steps:advanced_settings')} - - {tab === 'aspirate' ? ( - - ) : null} - - {formData[`${tab}_mix_checkbox`] === true ? ( - - - - - ) : null} - - - {formData[`${tab}_delay_checkbox`] === true ? ( - - - - - ) : null} - - {tab === 'dispense' ? ( - - {formData.blowout_checkbox === true ? ( - - - - - - ) : null} - - ) : null} - - {formData[`${tab}_touchTip_checkbox`] === true ? ( - - ) : null} - - - {formData[`${tab}_airGap_checkbox`] === true ? ( - - ) : null} - - {path === 'multiDispense' && tab === 'dispense' && ( - - )} - - + ) } diff --git a/protocol-designer/src/resources/types.ts b/protocol-designer/src/resources/types.ts new file mode 100644 index 00000000000..2ba80485797 --- /dev/null +++ b/protocol-designer/src/resources/types.ts @@ -0,0 +1,3 @@ +export type MoveLiquidPrefixType = 'aspirate' | 'dispense' | 'mix' + +export type FlowRateType = 'aspirate' | 'dispense' | 'blowout' diff --git a/protocol-designer/src/steplist/formLevel/errors.ts b/protocol-designer/src/steplist/formLevel/errors.ts index eb851637d32..eeda0294b68 100644 --- a/protocol-designer/src/steplist/formLevel/errors.ts +++ b/protocol-designer/src/steplist/formLevel/errors.ts @@ -23,6 +23,7 @@ import type { ReactNode } from 'react' import type { LabwareDefinition2, PipetteV2Specs } from '@opentrons/shared-data' import type { LabwareEntities, PipetteEntity } from '@opentrons/step-generation' import type { StepFieldName } from '../../form-types' +import type { LiquidHandlingTab } from '../../pages/Designer/ProtocolSteps/StepForm/types' /******************* ** Error Messages ** ********************/ @@ -59,7 +60,7 @@ export interface FormError { showAtField?: boolean showAtForm?: boolean page?: number - tab?: 'aspirate' | 'dispense' + tab?: LiquidHandlingTab } const INCOMPATIBLE_ASPIRATE_LABWARE: FormError = { title: 'Selected aspirate labware is incompatible with pipette', From 731fb9e908562d4784a20554b166a9ac4a0fbb53 Mon Sep 17 00:00:00 2001 From: koji Date: Tue, 11 Feb 2025 15:14:11 -0500 Subject: [PATCH 81/81] feat(protocol-designer): add TextAreaField component to protocol-designer (#17487) * feat(protocol-designer): add TextAreaField component to protocol-designer --- .../TextAreaField/TextAreaField.stories.tsx | 46 +++ .../__tests__/TextAreaField.test.tsx | 69 ++++ .../src/molecules/TextAreaField/index.tsx | 314 ++++++++++++++++++ protocol-designer/src/molecules/index.ts | 1 + .../CreateNewProtocolWizard/AddMetadata.tsx | 30 +- 5 files changed, 442 insertions(+), 18 deletions(-) create mode 100644 protocol-designer/src/molecules/TextAreaField/TextAreaField.stories.tsx create mode 100644 protocol-designer/src/molecules/TextAreaField/__tests__/TextAreaField.test.tsx create mode 100644 protocol-designer/src/molecules/TextAreaField/index.tsx diff --git a/protocol-designer/src/molecules/TextAreaField/TextAreaField.stories.tsx b/protocol-designer/src/molecules/TextAreaField/TextAreaField.stories.tsx new file mode 100644 index 00000000000..ec0cf083d27 --- /dev/null +++ b/protocol-designer/src/molecules/TextAreaField/TextAreaField.stories.tsx @@ -0,0 +1,46 @@ +import * as React from 'react' +import { + DIRECTION_COLUMN, + Flex, + SPACING, + VIEWPORT, +} from '@opentrons/components' +import { TextAreaField as TextAreaFieldComponent } from '.' + +import type { ComponentProps } from 'react' +import type { Meta, StoryObj } from '@storybook/react' + +const meta: Meta = { + // ToDo (kk05/02/2024) this should be in Library but at this moment there is the same name component in components + // The unification for this component will be done when the old component is retired completely. + title: 'Protocol-Designer/Molecules/TextAreaField', + component: TextAreaFieldComponent, + parameters: VIEWPORT.touchScreenViewport, + argTypes: {}, +} + +export default meta +type Story = StoryObj + +export const TextAreaField: Story = ( + args: ComponentProps +) => { + const [value, setValue] = React.useState(args.value) + return ( + + { + setValue(e.currentTarget.value) + }} + /> + + ) +} + +TextAreaField.args = { + title: 'TextAreaField', + height: '6.8125rem', + placeholder: 'Placeholder Text', +} diff --git a/protocol-designer/src/molecules/TextAreaField/__tests__/TextAreaField.test.tsx b/protocol-designer/src/molecules/TextAreaField/__tests__/TextAreaField.test.tsx new file mode 100644 index 00000000000..ce7a90feef4 --- /dev/null +++ b/protocol-designer/src/molecules/TextAreaField/__tests__/TextAreaField.test.tsx @@ -0,0 +1,69 @@ +import { describe, it, beforeEach, vi, expect } from 'vitest' +import { screen, fireEvent } from '@testing-library/react' + +import { renderWithProviders } from '../../../__testing-utils__' +import { TextAreaField } from '../' + +import type { ComponentProps } from 'react' + +const render = (props: ComponentProps) => { + return renderWithProviders() +} + +describe('TextAreaField', () => { + let props: ComponentProps + + beforeEach(() => { + props = { + title: 'TextAreaField', + placeholder: 'Enter text...', + value: '', + onChange: vi.fn(), + } + }) + + it('renders the TextAreaField component', () => { + render(props) + screen.getByText('TextAreaField') + expect(screen.getByTestId('TextAreaField')).toBeInTheDocument() + }) + + it('displays the correct placeholder text', () => { + render(props) + expect(screen.getByPlaceholderText('Enter text...')).toBeInTheDocument() + }) + + it('updates value when user types', () => { + render(props) + const textarea = screen.getByTestId('TextAreaField') + + fireEvent.change(textarea, { target: { value: 'Hello, world!' } }) + + expect(props.onChange).toHaveBeenCalledTimes(1) + }) + + it('disables the textarea when disabled prop is true', () => { + props.disabled = true + render(props) + expect(screen.getByTestId('TextAreaField')).toBeDisabled() + }) + + it('displays an error message when error prop is provided', () => { + props.error = 'Error: Invalid input' + render(props) + + expect(screen.getByText('Error: Invalid input')).toBeInTheDocument() + }) + + it('display an icon when tooltip prop is provided', () => { + props.tooltipText = 'ot-icon-check' + render(props) + screen.getByTestId('tooltip-icon') + }) + + it('display left icon when leftIcon prop is provided', () => { + props.leftIcon = 'information' + render(props) + screen.getByTestId('left-icon') + }) +}) diff --git a/protocol-designer/src/molecules/TextAreaField/index.tsx b/protocol-designer/src/molecules/TextAreaField/index.tsx new file mode 100644 index 00000000000..7bc91ea616a --- /dev/null +++ b/protocol-designer/src/molecules/TextAreaField/index.tsx @@ -0,0 +1,314 @@ +import { useEffect, useState, forwardRef } from 'react' +import styled, { css } from 'styled-components' +import { + ALIGN_CENTER, + BORDERS, + COLORS, + DIRECTION_COLUMN, + DIRECTION_ROW, + Flex, + Icon, + PRODUCT, + SPACING, + StyledText, + TEXT_ALIGN_RIGHT, + Tooltip, + TYPOGRAPHY, + useHoverTooltip, +} from '@opentrons/components' + +import type { + ChangeEventHandler, + FocusEvent, + MouseEvent, + MutableRefObject, +} from 'react' +import type { FlattenSimpleInterpolation } from 'styled-components' +import type { IconName } from '@opentrons/components' + +const COLOR_WARNING_DARK = '#9e5e00' // ToDo (kk:08/13/2024) replace this with COLORS + +// hook to detect tab focus vs mouse focus +const useFocusVisible = (): boolean => { + const [isKeyboardFocus, setIsKeyboardFocus] = useState(false) + + useEffect(() => { + const handleKeyDown = (): void => { + setIsKeyboardFocus(true) + } + const handleMouseDown = (): void => { + setIsKeyboardFocus(false) + } + + document.addEventListener('keydown', handleKeyDown) + document.addEventListener('mousedown', handleMouseDown) + + return () => { + document.removeEventListener('keydown', handleKeyDown) + document.removeEventListener('mousedown', handleMouseDown) + } + }, []) + + return isKeyboardFocus +} + +export interface TextAreaFieldProps { + /** field is disabled if value is true */ + disabled?: boolean + /** change handler */ + onChange?: ChangeEventHandler + /** name of field in form */ + name?: string + /** optional ID of