From 31fcc9885c6be2b077f2b865f96fe99e981529c1 Mon Sep 17 00:00:00 2001 From: Shlok Amin Date: Tue, 9 Nov 2021 16:11:45 -0500 Subject: [PATCH] feat(app): add PE analysis schema v6 adapter * feat(app): add PE analysis schema v6 adapter #8661 --- api-client/src/protocols/types.ts | 44 +- app/src/organisms/RunDetails/hooks.ts | 16 +- .../protocols/useCreateProtocolMutation.ts | 12 +- .../helpers/__tests__/schemaV6Adapter.test.ts | 6397 +++++++++++++++++ shared-data/js/helpers/index.ts | 1 + shared-data/js/helpers/schemaV6Adapter.ts | 87 + shared-data/js/types.ts | 46 + .../protocol/types/schemaV6/command/index.ts | 3 +- 8 files changed, 6558 insertions(+), 48 deletions(-) create mode 100644 shared-data/js/helpers/__tests__/schemaV6Adapter.test.ts create mode 100644 shared-data/js/helpers/schemaV6Adapter.ts diff --git a/api-client/src/protocols/types.ts b/api-client/src/protocols/types.ts index ec4d87d2869..e6e21ee57a8 100644 --- a/api-client/src/protocols/types.ts +++ b/api-client/src/protocols/types.ts @@ -1,21 +1,6 @@ -import type { PipetteName, Command } from '@opentrons/shared-data' +import type { ProtocolResource } from '@opentrons/shared-data' import type { ResourceLinks, ErrorDetails } from '../types' -export interface LoadedPipette { - id: string - pipetteName: PipetteName - mount: 'left' | 'right' -} - -export interface LoadedLabware { - id: string - loadName: string - definitionUri: string - location: { - slot: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 - } -} - export interface ProtocolMetadata { protocolName?: string author?: string @@ -28,37 +13,14 @@ export interface ProtocolMetadata { [key: string]: unknown } -export interface PendingProtocolAnalysis { - id: string - status?: 'pending' -} - -export interface CompletedProtocolAnalysis { - id: string - status?: 'completed' - result: 'ok' | 'not-ok' | 'error' - pipettes: LoadedPipette[] - labware: LoadedLabware[] - commands: Command[] - errors: string[] -} - -export interface ProtocolData { - id: string - createdAt: string - protocolType: 'json' | 'python' - metadata: ProtocolMetadata - analyses: PendingProtocolAnalysis | CompletedProtocolAnalysis -} - export interface Protocol { links?: ResourceLinks - data: ProtocolData + data: ProtocolResource } export interface Protocols { links?: ResourceLinks - data: ProtocolData[] + data: ProtocolResource[] } export interface ProtocolFileInvalid extends ErrorDetails { diff --git a/app/src/organisms/RunDetails/hooks.ts b/app/src/organisms/RunDetails/hooks.ts index e945bf10cd5..973b290260a 100644 --- a/app/src/organisms/RunDetails/hooks.ts +++ b/app/src/organisms/RunDetails/hooks.ts @@ -1,7 +1,8 @@ import { useSelector } from 'react-redux' -import { getProtocolData, getProtocolName } from '../../redux/protocol' +import { getProtocolName } from '../../redux/protocol' +import { useCurrentProtocolRun } from '../ProtocolUpload/useCurrentProtocolRun' -import type { ProtocolFile } from '@opentrons/shared-data' +import { schemaV6Adapter, ProtocolFile } from '@opentrons/shared-data' import type { State } from '../../redux/types' interface ProtocolDetails { @@ -10,9 +11,14 @@ interface ProtocolDetails { } export function useProtocolDetails(): ProtocolDetails { - const protocolData = useSelector((state: State) => - getProtocolData(state) - ) as ProtocolFile<{}> | null + let protocolData: ProtocolFile<{}> | null = null + const protocolAnalysis = useCurrentProtocolRun().protocolRecord?.data.analyses + if (protocolAnalysis != null) { + const lastProtocolAnalysis = protocolAnalysis[protocolAnalysis.length - 1] + if (lastProtocolAnalysis.status === 'completed') { + protocolData = schemaV6Adapter(lastProtocolAnalysis) + } + } const displayName = useSelector((state: State) => getProtocolName(state)) return { displayName, protocolData } } diff --git a/react-api-client/src/protocols/useCreateProtocolMutation.ts b/react-api-client/src/protocols/useCreateProtocolMutation.ts index 84ce2b727c3..4c97163de2c 100644 --- a/react-api-client/src/protocols/useCreateProtocolMutation.ts +++ b/react-api-client/src/protocols/useCreateProtocolMutation.ts @@ -34,7 +34,17 @@ export function useCreateProtocolMutation( (protocolFiles: File[]) => createProtocol(host as HostConfig, protocolFiles).then(response => { const protocolId = response.data.data.id - queryClient.setQueryData([host, 'protocols', protocolId], response.data) + queryClient + .invalidateQueries([host, 'protocols']) + .then(() => + queryClient.setQueryData( + [host, 'protocols', protocolId], + response.data + ) + ) + .catch(e => { + console.error(e) + }) return response.data }), options diff --git a/shared-data/js/helpers/__tests__/schemaV6Adapter.test.ts b/shared-data/js/helpers/__tests__/schemaV6Adapter.test.ts new file mode 100644 index 00000000000..f5726ac52d8 --- /dev/null +++ b/shared-data/js/helpers/__tests__/schemaV6Adapter.test.ts @@ -0,0 +1,6397 @@ +import { schemaV6Adapter } from '../schemaV6Adapter' +import type { ProtocolResource } from '../../types' + +describe('schema v6 adapter', () => { + let v6Analysis: ProtocolResource['analyses'][0] + beforeEach(() => { + v6Analysis = { + id: '02c3bff7-fc12-4a92-ba7d-7b88bc4c5c0d', + status: 'completed', + result: 'ok', + pipettes: [ + { + id: 'pipette-0', + pipetteName: 'p300_single_gen2', + mount: 'left', + }, + { + id: 'pipette-1', + pipetteName: 'p300_multi', + mount: 'right', + }, + ], + labware: [ + { + id: 'fixedTrash', + loadName: 'opentrons_1_trash_1100ml_fixed', + definitionUri: 'opentrons/opentrons_1_trash_1100ml_fixed/1', + location: { + slot: 12, + }, + }, + { + id: 'labware-0', + loadName: 'opentrons_1_trash_1100ml_fixed', + definitionUri: 'opentrons/opentrons_1_trash_1100ml_fixed/1', + location: { + slot: 12, + }, + }, + { + id: 'labware-1', + loadName: 'opentrons_96_tiprack_300ul', + definitionUri: 'opentrons/opentrons_96_tiprack_300ul/1', + location: { + slot: 1, + }, + }, + ], + commands: [ + { + id: 'commands.LOAD_PIPETTE-0', + createdAt: '2021-11-08T21:54:22.888675+00:00', + commandType: 'loadPipette', + status: 'succeeded', + data: { + pipetteName: 'p300_single_gen2', + mount: 'left', + pipetteId: null, + }, + result: { + pipetteId: 'pipette-0', + }, + startedAt: '2021-11-08T21:54:22.888675+00:00', + completedAt: '2021-11-08T21:54:22.888675+00:00', + }, + { + id: 'commands.LOAD_PIPETTE-1', + createdAt: '2021-11-08T21:54:22.891302+00:00', + commandType: 'loadPipette', + status: 'succeeded', + data: { + pipetteName: 'p300_multi', + mount: 'right', + pipetteId: null, + }, + result: { + pipetteId: 'pipette-1', + }, + error: null, + startedAt: '2021-11-08T21:54:22.891302+00:00', + completedAt: '2021-11-08T21:54:22.891302+00:00', + }, + { + id: 'commands.LOAD_LABWARE-0', + createdAt: '2021-11-08T21:54:23.205318+00:00', + commandType: 'loadLabware', + status: 'succeeded', + data: { + location: { + slot: 12, + }, + loadName: 'opentrons_1_trash_1100ml_fixed', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + result: { + labwareId: 'labware-0', + definition: { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons Fixed Trash', + displayCategory: 'trash', + displayVolumeUnits: 'mL', + tags: [], + }, + brand: { + brand: 'Opentrons', + brandId: null, + links: null, + }, + parameters: { + format: 'trash', + quirks: [ + 'fixedTrash', + 'centerMultichannelOnWells', + 'touchTipDisabled', + ], + isTiprack: false, + tipLength: null, + tipOverlap: null, + loadName: 'opentrons_1_trash_1100ml_fixed', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + ordering: [['A1']], + cornerOffsetFromSlot: { + x: 0, + y: 0, + z: 0, + }, + dimensions: { + yDimension: 165.86, + zDimension: 82, + xDimension: 172.86, + }, + wells: { + A1: { + depth: 0, + x: 82.84, + y: 80, + z: 82, + totalLiquidVolume: 1100000, + xDimension: 107.11, + yDimension: 165.67, + diameter: null, + shape: 'rectangular', + }, + }, + groups: [ + { + wells: ['A1'], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + calibration: { + x: 0, + y: 0, + z: 0, + }, + }, + error: null, + startedAt: '2021-11-08T21:54:23.205318+00:00', + completedAt: '2021-11-08T21:54:23.205318+00:00', + }, + { + id: 'commands.LOAD_LABWARE-1', + createdAt: '2021-11-08T21:54:23.217458+00:00', + commandType: 'loadLabware', + status: 'succeeded', + data: { + location: { + slot: 1, + }, + loadName: 'opentrons_96_tiprack_300ul', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + result: { + labwareId: 'labware-1', + definition: { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons 96 Tip Rack 300 µL', + displayCategory: 'tipRack', + displayVolumeUnits: 'µL', + tags: [], + }, + brand: { + brand: 'Opentrons', + brandId: [], + links: [ + 'https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips', + ], + }, + parameters: { + format: '96Standard', + quirks: null, + isTiprack: true, + tipLength: 59.3, + tipOverlap: 7.47, + loadName: 'opentrons_96_tiprack_300ul', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + 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'], + ], + cornerOffsetFromSlot: { + x: 0, + y: 0, + z: 0, + }, + dimensions: { + yDimension: 85.48, + zDimension: 64.49, + xDimension: 127.76, + }, + wells: { + A1: { + depth: 59.3, + x: 14.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B1: { + depth: 59.3, + x: 14.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C1: { + depth: 59.3, + x: 14.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D1: { + depth: 59.3, + x: 14.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E1: { + depth: 59.3, + x: 14.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F1: { + depth: 59.3, + x: 14.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G1: { + depth: 59.3, + x: 14.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H1: { + depth: 59.3, + x: 14.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A2: { + depth: 59.3, + x: 23.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B2: { + depth: 59.3, + x: 23.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C2: { + depth: 59.3, + x: 23.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D2: { + depth: 59.3, + x: 23.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E2: { + depth: 59.3, + x: 23.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F2: { + depth: 59.3, + x: 23.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G2: { + depth: 59.3, + x: 23.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H2: { + depth: 59.3, + x: 23.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A3: { + depth: 59.3, + x: 32.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B3: { + depth: 59.3, + x: 32.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C3: { + depth: 59.3, + x: 32.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D3: { + depth: 59.3, + x: 32.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E3: { + depth: 59.3, + x: 32.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F3: { + depth: 59.3, + x: 32.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G3: { + depth: 59.3, + x: 32.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H3: { + depth: 59.3, + x: 32.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A4: { + depth: 59.3, + x: 41.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B4: { + depth: 59.3, + x: 41.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C4: { + depth: 59.3, + x: 41.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D4: { + depth: 59.3, + x: 41.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E4: { + depth: 59.3, + x: 41.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F4: { + depth: 59.3, + x: 41.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G4: { + depth: 59.3, + x: 41.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H4: { + depth: 59.3, + x: 41.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A5: { + depth: 59.3, + x: 50.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B5: { + depth: 59.3, + x: 50.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C5: { + depth: 59.3, + x: 50.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D5: { + depth: 59.3, + x: 50.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E5: { + depth: 59.3, + x: 50.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F5: { + depth: 59.3, + x: 50.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G5: { + depth: 59.3, + x: 50.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H5: { + depth: 59.3, + x: 50.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A6: { + depth: 59.3, + x: 59.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B6: { + depth: 59.3, + x: 59.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C6: { + depth: 59.3, + x: 59.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D6: { + depth: 59.3, + x: 59.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E6: { + depth: 59.3, + x: 59.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F6: { + depth: 59.3, + x: 59.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G6: { + depth: 59.3, + x: 59.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H6: { + depth: 59.3, + x: 59.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A7: { + depth: 59.3, + x: 68.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B7: { + depth: 59.3, + x: 68.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C7: { + depth: 59.3, + x: 68.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D7: { + depth: 59.3, + x: 68.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E7: { + depth: 59.3, + x: 68.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F7: { + depth: 59.3, + x: 68.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G7: { + depth: 59.3, + x: 68.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H7: { + depth: 59.3, + x: 68.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A8: { + depth: 59.3, + x: 77.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B8: { + depth: 59.3, + x: 77.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C8: { + depth: 59.3, + x: 77.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D8: { + depth: 59.3, + x: 77.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E8: { + depth: 59.3, + x: 77.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F8: { + depth: 59.3, + x: 77.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G8: { + depth: 59.3, + x: 77.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H8: { + depth: 59.3, + x: 77.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A9: { + depth: 59.3, + x: 86.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B9: { + depth: 59.3, + x: 86.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C9: { + depth: 59.3, + x: 86.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D9: { + depth: 59.3, + x: 86.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E9: { + depth: 59.3, + x: 86.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F9: { + depth: 59.3, + x: 86.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G9: { + depth: 59.3, + x: 86.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H9: { + depth: 59.3, + x: 86.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A10: { + depth: 59.3, + x: 95.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B10: { + depth: 59.3, + x: 95.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C10: { + depth: 59.3, + x: 95.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D10: { + depth: 59.3, + x: 95.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E10: { + depth: 59.3, + x: 95.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F10: { + depth: 59.3, + x: 95.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G10: { + depth: 59.3, + x: 95.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H10: { + depth: 59.3, + x: 95.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A11: { + depth: 59.3, + x: 104.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B11: { + depth: 59.3, + x: 104.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C11: { + depth: 59.3, + x: 104.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D11: { + depth: 59.3, + x: 104.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E11: { + depth: 59.3, + x: 104.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F11: { + depth: 59.3, + x: 104.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G11: { + depth: 59.3, + x: 104.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H11: { + depth: 59.3, + x: 104.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A12: { + depth: 59.3, + x: 113.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B12: { + depth: 59.3, + x: 113.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C12: { + depth: 59.3, + x: 113.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D12: { + depth: 59.3, + x: 113.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E12: { + depth: 59.3, + x: 113.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F12: { + depth: 59.3, + x: 113.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G12: { + depth: 59.3, + x: 113.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H12: { + depth: 59.3, + x: 113.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + }, + groups: [ + { + 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', + ], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + calibration: { + x: 0, + y: 0, + z: 0, + }, + }, + error: null, + startedAt: '2021-11-08T21:54:23.217458+00:00', + completedAt: '2021-11-08T21:54:23.217458+00:00', + }, + { + id: 'command.PICK_UP_TIP-0', + createdAt: '2021-11-08T21:54:23.241362+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.241362+00:00', + completedAt: '2021-11-08T21:54:23.242932+00:00', + }, + { + id: 'command.ASPIRATE-0', + createdAt: '2021-11-08T21:54:23.244715+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A1 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.244715+00:00', + completedAt: '2021-11-08T21:54:23.244944+00:00', + }, + { + id: 'command.DISPENSE-0', + createdAt: '2021-11-08T21:54:23.245806+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A12 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.245806+00:00', + completedAt: '2021-11-08T21:54:23.245974+00:00', + }, + { + id: 'command.DROP_TIP-0', + createdAt: '2021-11-08T21:54:23.246196+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.246196+00:00', + completedAt: '2021-11-08T21:54:23.246900+00:00', + }, + { + id: 'command.PICK_UP_TIP-1', + createdAt: '2021-11-08T21:54:23.247412+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.247412+00:00', + completedAt: '2021-11-08T21:54:23.251000+00:00', + }, + { + id: 'command.ASPIRATE-1', + createdAt: '2021-11-08T21:54:23.252220+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A3 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.252220+00:00', + completedAt: '2021-11-08T21:54:23.252402+00:00', + }, + { + id: 'command.DISPENSE-1', + createdAt: '2021-11-08T21:54:23.253361+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A10 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.253361+00:00', + completedAt: '2021-11-08T21:54:23.253609+00:00', + }, + { + id: 'command.DROP_TIP-1', + createdAt: '2021-11-08T21:54:23.253973+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.253973+00:00', + completedAt: '2021-11-08T21:54:23.255007+00:00', + }, + { + id: 'command.PICK_UP_TIP-2', + createdAt: '2021-11-08T21:54:23.255801+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A3 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.255801+00:00', + completedAt: '2021-11-08T21:54:23.258009+00:00', + }, + { + id: 'command.ASPIRATE-2', + createdAt: '2021-11-08T21:54:23.259154+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.259154+00:00', + completedAt: '2021-11-08T21:54:23.259319+00:00', + }, + { + id: 'command.DISPENSE-2', + createdAt: '2021-11-08T21:54:23.259951+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.259951+00:00', + completedAt: '2021-11-08T21:54:23.260071+00:00', + }, + { + id: 'command.DROP_TIP-2', + createdAt: '2021-11-08T21:54:23.260243+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.260243+00:00', + completedAt: '2021-11-08T21:54:23.260689+00:00', + }, + { + id: 'command.PICK_UP_TIP-3', + createdAt: '2021-11-08T21:54:23.261103+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A4 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.261103+00:00', + completedAt: '2021-11-08T21:54:23.262416+00:00', + }, + { + id: 'command.ASPIRATE-3', + createdAt: '2021-11-08T21:54:23.263503+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.263503+00:00', + completedAt: '2021-11-08T21:54:23.263658+00:00', + }, + { + id: 'command.DISPENSE-3', + createdAt: '2021-11-08T21:54:23.264348+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.264348+00:00', + completedAt: '2021-11-08T21:54:23.264545+00:00', + }, + { + id: 'command.DROP_TIP-3', + createdAt: '2021-11-08T21:54:23.264835+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.264835+00:00', + completedAt: '2021-11-08T21:54:23.265412+00:00', + }, + { + id: 'command.PICK_UP_TIP-4', + createdAt: '2021-11-08T21:54:23.265849+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A5 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.265849+00:00', + completedAt: '2021-11-08T21:54:23.269049+00:00', + }, + { + id: 'command.ASPIRATE-4', + createdAt: '2021-11-08T21:54:23.270847+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.270847+00:00', + completedAt: '2021-11-08T21:54:23.271033+00:00', + }, + { + id: 'command.DISPENSE-4', + createdAt: '2021-11-08T21:54:23.271710+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.271710+00:00', + completedAt: '2021-11-08T21:54:23.271833+00:00', + }, + { + id: 'command.DROP_TIP-4', + createdAt: '2021-11-08T21:54:23.272099+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.272099+00:00', + completedAt: '2021-11-08T21:54:23.272887+00:00', + }, + { + id: 'command.PICK_UP_TIP-5', + createdAt: '2021-11-08T21:54:23.273496+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A6 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.273496+00:00', + completedAt: '2021-11-08T21:54:23.276642+00:00', + }, + { + id: 'command.ASPIRATE-5', + createdAt: '2021-11-08T21:54:23.278456+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.278456+00:00', + completedAt: '2021-11-08T21:54:23.278651+00:00', + }, + { + id: 'command.DISPENSE-5', + createdAt: '2021-11-08T21:54:23.279405+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.279405+00:00', + completedAt: '2021-11-08T21:54:23.279565+00:00', + }, + { + id: 'command.DROP_TIP-5', + createdAt: '2021-11-08T21:54:23.279837+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.279837+00:00', + completedAt: '2021-11-08T21:54:23.280807+00:00', + }, + { + id: 'command.PICK_UP_TIP-6', + createdAt: '2021-11-08T21:54:23.282410+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A7 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.282410+00:00', + completedAt: '2021-11-08T21:54:23.285054+00:00', + }, + { + id: 'command.ASPIRATE-6', + createdAt: '2021-11-08T21:54:23.286588+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.286588+00:00', + completedAt: '2021-11-08T21:54:23.286870+00:00', + }, + { + id: 'command.DISPENSE-6', + createdAt: '2021-11-08T21:54:23.287947+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.287947+00:00', + completedAt: '2021-11-08T21:54:23.288257+00:00', + }, + { + id: 'command.DROP_TIP-6', + createdAt: '2021-11-08T21:54:23.288631+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.288631+00:00', + completedAt: '2021-11-08T21:54:23.289650+00:00', + }, + { + id: 'command.PICK_UP_TIP-7', + createdAt: '2021-11-08T21:54:23.290884+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A8 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.290884+00:00', + completedAt: '2021-11-08T21:54:23.293553+00:00', + }, + { + id: 'command.ASPIRATE-7', + createdAt: '2021-11-08T21:54:23.294876+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.294876+00:00', + completedAt: '2021-11-08T21:54:23.295176+00:00', + }, + { + id: 'command.DISPENSE-7', + createdAt: '2021-11-08T21:54:23.296318+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.296318+00:00', + completedAt: '2021-11-08T21:54:23.296495+00:00', + }, + { + id: 'command.DROP_TIP-7', + createdAt: '2021-11-08T21:54:23.296680+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.296680+00:00', + completedAt: '2021-11-08T21:54:23.297129+00:00', + }, + { + id: 'command.PICK_UP_TIP-8', + createdAt: '2021-11-08T21:54:23.297536+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A9 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.297536+00:00', + completedAt: '2021-11-08T21:54:23.300979+00:00', + }, + { + id: 'command.ASPIRATE-8', + createdAt: '2021-11-08T21:54:23.302123+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.302123+00:00', + completedAt: '2021-11-08T21:54:23.302281+00:00', + }, + { + id: 'command.DISPENSE-8', + createdAt: '2021-11-08T21:54:23.302904+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.302904+00:00', + completedAt: '2021-11-08T21:54:23.303024+00:00', + }, + { + id: 'command.DROP_TIP-8', + createdAt: '2021-11-08T21:54:23.303206+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.303206+00:00', + completedAt: '2021-11-08T21:54:23.303653+00:00', + }, + { + id: 'command.PICK_UP_TIP-9', + createdAt: '2021-11-08T21:54:23.304065+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A10 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.304065+00:00', + completedAt: '2021-11-08T21:54:23.305518+00:00', + }, + { + id: 'command.ASPIRATE-9', + createdAt: '2021-11-08T21:54:23.307065+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.307065+00:00', + completedAt: '2021-11-08T21:54:23.307273+00:00', + }, + { + id: 'command.DISPENSE-9', + createdAt: '2021-11-08T21:54:23.308079+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.308079+00:00', + completedAt: '2021-11-08T21:54:23.308277+00:00', + }, + { + id: 'command.DROP_TIP-9', + createdAt: '2021-11-08T21:54:23.308514+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.308514+00:00', + completedAt: '2021-11-08T21:54:23.309045+00:00', + }, + { + id: 'command.PICK_UP_TIP-10', + createdAt: '2021-11-08T21:54:23.309735+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A11 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.309735+00:00', + completedAt: '2021-11-08T21:54:23.311867+00:00', + }, + { + id: 'command.ASPIRATE-10', + createdAt: '2021-11-08T21:54:23.313299+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.313299+00:00', + completedAt: '2021-11-08T21:54:23.313515+00:00', + }, + { + id: 'command.DISPENSE-10', + createdAt: '2021-11-08T21:54:23.314602+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.314602+00:00', + completedAt: '2021-11-08T21:54:23.315123+00:00', + }, + { + id: 'command.DROP_TIP-10', + createdAt: '2021-11-08T21:54:23.315782+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.315782+00:00', + completedAt: '2021-11-08T21:54:23.316712+00:00', + }, + { + id: 'command.PICK_UP_TIP-11', + createdAt: '2021-11-08T21:54:23.317233+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A12 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.317233+00:00', + completedAt: '2021-11-08T21:54:23.318958+00:00', + }, + { + id: 'command.ASPIRATE-11', + createdAt: '2021-11-08T21:54:23.320183+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.320183+00:00', + completedAt: '2021-11-08T21:54:23.320351+00:00', + }, + { + id: 'command.DISPENSE-11', + createdAt: '2021-11-08T21:54:23.321008+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.321008+00:00', + completedAt: '2021-11-08T21:54:23.321187+00:00', + }, + { + id: 'command.DROP_TIP-11', + createdAt: '2021-11-08T21:54:23.321442+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.321442+00:00', + completedAt: '2021-11-08T21:54:23.322124+00:00', + }, + { + id: 'command.PICK_UP_TIP-12', + createdAt: '2021-11-08T21:54:23.322871+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.322871+00:00', + completedAt: '2021-11-08T21:54:23.324425+00:00', + }, + { + id: 'command.ASPIRATE-12', + createdAt: '2021-11-08T21:54:23.325522+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.325522+00:00', + completedAt: '2021-11-08T21:54:23.325697+00:00', + }, + { + id: 'command.MOVE_TO-0', + createdAt: '2021-11-08T21:54:23.326058+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A4 of NEST 12 Well Reservoir 15 mL on 6', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.326058+00:00', + completedAt: '2021-11-08T21:54:23.326413+00:00', + }, + { + id: 'command.DELAY-0', + createdAt: '2021-11-08T21:54:23.326712+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.326712+00:00', + completedAt: '2021-11-08T21:54:23.327363+00:00', + }, + { + id: 'command.DISPENSE-12', + createdAt: '2021-11-08T21:54:23.328064+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.328064+00:00', + completedAt: '2021-11-08T21:54:23.328193+00:00', + }, + { + id: 'command.DROP_TIP-12', + createdAt: '2021-11-08T21:54:23.328386+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.328386+00:00', + completedAt: '2021-11-08T21:54:23.328836+00:00', + }, + { + id: 'command.THERMOCYCLER_OPEN-0', + createdAt: '2021-11-08T21:54:23.329003+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.THERMOCYCLER_OPEN', + legacyCommandText: 'Opening Thermocycler lid', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.329003+00:00', + completedAt: '2021-11-08T21:54:23.330888+00:00', + }, + { + id: 'command.MOVE_TO-1', + createdAt: '2021-11-08T21:54:23.330157+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: 'Moving to (347.84000000000003, 351.5, 247.45)', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.330157+00:00', + completedAt: '2021-11-08T21:54:23.330471+00:00', + }, + { + id: 'command.THERMOCYCLER_SET_LID_TEMP-0', + createdAt: '2021-11-08T21:54:23.331094+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.THERMOCYCLER_SET_LID_TEMP', + legacyCommandText: + 'Setting Thermocycler lid temperature to 50.0 °C', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.331094+00:00', + completedAt: '2021-11-08T21:54:23.331522+00:00', + }, + { + id: 'command.PICK_UP_TIP-13', + createdAt: '2021-11-08T21:54:23.332086+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.332086+00:00', + completedAt: '2021-11-08T21:54:23.333153+00:00', + }, + { + id: 'command.ASPIRATE-13', + createdAt: '2021-11-08T21:54:23.334494+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.334494+00:00', + completedAt: '2021-11-08T21:54:23.334687+00:00', + }, + { + id: 'command.MOVE_TO-2', + createdAt: '2021-11-08T21:54:23.335133+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.335133+00:00', + completedAt: '2021-11-08T21:54:23.335498+00:00', + }, + { + id: 'command.AIR_GAP-0', + createdAt: '2021-11-08T21:54:23.335679+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.AIR_GAP', + legacyCommandText: 'Air gap', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.335679+00:00', + completedAt: '2021-11-08T21:54:23.336423+00:00', + }, + { + id: 'command.ASPIRATE-14', + createdAt: '2021-11-08T21:54:23.336246+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.336246+00:00', + completedAt: '2021-11-08T21:54:23.336357+00:00', + }, + { + id: 'command.DISPENSE-13', + createdAt: '2021-11-08T21:54:23.337141+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.337141+00:00', + completedAt: '2021-11-08T21:54:23.337253+00:00', + }, + { + id: 'command.DELAY-1', + createdAt: '2021-11-08T21:54:23.337387+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.337387+00:00', + completedAt: '2021-11-08T21:54:23.337930+00:00', + }, + { + id: 'command.DISPENSE-14', + createdAt: '2021-11-08T21:54:23.338658+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.338658+00:00', + completedAt: '2021-11-08T21:54:23.338780+00:00', + }, + { + id: 'command.MOVE_TO-3', + createdAt: '2021-11-08T21:54:23.339141+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.339141+00:00', + completedAt: '2021-11-08T21:54:23.339486+00:00', + }, + { + id: 'command.DELAY-2', + createdAt: '2021-11-08T21:54:23.339625+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.339625+00:00', + completedAt: '2021-11-08T21:54:23.340221+00:00', + }, + { + id: 'command.DROP_TIP-13', + createdAt: '2021-11-08T21:54:23.340413+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.340413+00:00', + completedAt: '2021-11-08T21:54:23.340850+00:00', + }, + ], + errors: [], + } as any + }) + it('should convert a PE analysis response to a schema v6 like object', () => { + const expected = { + pipettes: { + 'pipette-0': { name: 'p300_single_gen2' }, + 'pipette-1': { name: 'p300_multi' }, + }, + labware: { + 'labware-0': { + definitionId: 'opentrons/opentrons_1_trash_1100ml_fixed/1_id', + displayName: 'Opentrons Fixed Trash', + }, + 'labware-1': { + definitionId: 'opentrons/opentrons_96_tiprack_300ul/1_id', + displayName: 'Opentrons 96 Tip Rack 300 µL', + }, + }, + labwareDefinitions: { + 'opentrons/opentrons_1_trash_1100ml_fixed/1_id': { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons Fixed Trash', + displayCategory: 'trash', + displayVolumeUnits: 'mL', + tags: [], + }, + brand: { brand: 'Opentrons', brandId: null, links: null }, + parameters: { + format: 'trash', + quirks: [ + 'fixedTrash', + 'centerMultichannelOnWells', + 'touchTipDisabled', + ], + isTiprack: false, + tipLength: null, + tipOverlap: null, + loadName: 'opentrons_1_trash_1100ml_fixed', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + ordering: [['A1']], + cornerOffsetFromSlot: { x: 0, y: 0, z: 0 }, + dimensions: { + yDimension: 165.86, + zDimension: 82, + xDimension: 172.86, + }, + wells: { + A1: { + depth: 0, + x: 82.84, + y: 80, + z: 82, + totalLiquidVolume: 1100000, + xDimension: 107.11, + yDimension: 165.67, + diameter: null, + shape: 'rectangular', + }, + }, + groups: [ + { + wells: ['A1'], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + 'opentrons/opentrons_96_tiprack_300ul/1_id': { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons 96 Tip Rack 300 µL', + displayCategory: 'tipRack', + displayVolumeUnits: 'µL', + tags: [], + }, + brand: { + brand: 'Opentrons', + brandId: [], + links: [ + 'https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips', + ], + }, + parameters: { + format: '96Standard', + quirks: null, + isTiprack: true, + tipLength: 59.3, + tipOverlap: 7.47, + loadName: 'opentrons_96_tiprack_300ul', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + 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'], + ], + cornerOffsetFromSlot: { x: 0, y: 0, z: 0 }, + dimensions: { + yDimension: 85.48, + zDimension: 64.49, + xDimension: 127.76, + }, + wells: { + A1: { + depth: 59.3, + x: 14.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B1: { + depth: 59.3, + x: 14.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C1: { + depth: 59.3, + x: 14.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D1: { + depth: 59.3, + x: 14.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E1: { + depth: 59.3, + x: 14.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F1: { + depth: 59.3, + x: 14.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G1: { + depth: 59.3, + x: 14.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H1: { + depth: 59.3, + x: 14.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A2: { + depth: 59.3, + x: 23.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B2: { + depth: 59.3, + x: 23.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C2: { + depth: 59.3, + x: 23.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D2: { + depth: 59.3, + x: 23.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E2: { + depth: 59.3, + x: 23.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F2: { + depth: 59.3, + x: 23.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G2: { + depth: 59.3, + x: 23.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H2: { + depth: 59.3, + x: 23.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A3: { + depth: 59.3, + x: 32.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B3: { + depth: 59.3, + x: 32.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C3: { + depth: 59.3, + x: 32.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D3: { + depth: 59.3, + x: 32.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E3: { + depth: 59.3, + x: 32.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F3: { + depth: 59.3, + x: 32.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G3: { + depth: 59.3, + x: 32.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H3: { + depth: 59.3, + x: 32.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A4: { + depth: 59.3, + x: 41.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B4: { + depth: 59.3, + x: 41.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C4: { + depth: 59.3, + x: 41.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D4: { + depth: 59.3, + x: 41.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E4: { + depth: 59.3, + x: 41.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F4: { + depth: 59.3, + x: 41.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G4: { + depth: 59.3, + x: 41.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H4: { + depth: 59.3, + x: 41.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A5: { + depth: 59.3, + x: 50.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B5: { + depth: 59.3, + x: 50.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C5: { + depth: 59.3, + x: 50.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D5: { + depth: 59.3, + x: 50.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E5: { + depth: 59.3, + x: 50.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F5: { + depth: 59.3, + x: 50.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G5: { + depth: 59.3, + x: 50.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H5: { + depth: 59.3, + x: 50.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A6: { + depth: 59.3, + x: 59.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B6: { + depth: 59.3, + x: 59.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C6: { + depth: 59.3, + x: 59.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D6: { + depth: 59.3, + x: 59.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E6: { + depth: 59.3, + x: 59.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F6: { + depth: 59.3, + x: 59.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G6: { + depth: 59.3, + x: 59.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H6: { + depth: 59.3, + x: 59.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A7: { + depth: 59.3, + x: 68.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B7: { + depth: 59.3, + x: 68.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C7: { + depth: 59.3, + x: 68.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D7: { + depth: 59.3, + x: 68.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E7: { + depth: 59.3, + x: 68.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F7: { + depth: 59.3, + x: 68.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G7: { + depth: 59.3, + x: 68.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H7: { + depth: 59.3, + x: 68.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A8: { + depth: 59.3, + x: 77.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B8: { + depth: 59.3, + x: 77.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C8: { + depth: 59.3, + x: 77.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D8: { + depth: 59.3, + x: 77.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E8: { + depth: 59.3, + x: 77.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F8: { + depth: 59.3, + x: 77.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G8: { + depth: 59.3, + x: 77.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H8: { + depth: 59.3, + x: 77.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A9: { + depth: 59.3, + x: 86.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B9: { + depth: 59.3, + x: 86.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C9: { + depth: 59.3, + x: 86.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D9: { + depth: 59.3, + x: 86.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E9: { + depth: 59.3, + x: 86.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F9: { + depth: 59.3, + x: 86.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G9: { + depth: 59.3, + x: 86.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H9: { + depth: 59.3, + x: 86.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A10: { + depth: 59.3, + x: 95.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B10: { + depth: 59.3, + x: 95.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C10: { + depth: 59.3, + x: 95.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D10: { + depth: 59.3, + x: 95.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E10: { + depth: 59.3, + x: 95.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F10: { + depth: 59.3, + x: 95.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G10: { + depth: 59.3, + x: 95.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H10: { + depth: 59.3, + x: 95.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A11: { + depth: 59.3, + x: 104.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B11: { + depth: 59.3, + x: 104.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C11: { + depth: 59.3, + x: 104.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D11: { + depth: 59.3, + x: 104.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E11: { + depth: 59.3, + x: 104.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F11: { + depth: 59.3, + x: 104.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G11: { + depth: 59.3, + x: 104.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H11: { + depth: 59.3, + x: 104.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A12: { + depth: 59.3, + x: 113.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B12: { + depth: 59.3, + x: 113.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C12: { + depth: 59.3, + x: 113.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D12: { + depth: 59.3, + x: 113.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E12: { + depth: 59.3, + x: 113.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F12: { + depth: 59.3, + x: 113.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G12: { + depth: 59.3, + x: 113.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H12: { + depth: 59.3, + x: 113.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + }, + groups: [ + { + 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', + ], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + }, + commands: [ + { + id: 'commands.LOAD_PIPETTE-0', + createdAt: '2021-11-08T21:54:22.888675+00:00', + commandType: 'loadPipette', + status: 'succeeded', + data: { + pipetteName: 'p300_single_gen2', + mount: 'left', + pipetteId: null, + }, + result: { pipetteId: 'pipette-0' }, + startedAt: '2021-11-08T21:54:22.888675+00:00', + completedAt: '2021-11-08T21:54:22.888675+00:00', + params: { + pipetteName: 'p300_single_gen2', + mount: 'left', + pipetteId: null, + }, + }, + { + id: 'commands.LOAD_PIPETTE-1', + createdAt: '2021-11-08T21:54:22.891302+00:00', + commandType: 'loadPipette', + status: 'succeeded', + data: { pipetteName: 'p300_multi', mount: 'right', pipetteId: null }, + result: { pipetteId: 'pipette-1' }, + error: null, + startedAt: '2021-11-08T21:54:22.891302+00:00', + completedAt: '2021-11-08T21:54:22.891302+00:00', + params: { + pipetteName: 'p300_multi', + mount: 'right', + pipetteId: null, + }, + }, + { + id: 'commands.LOAD_LABWARE-0', + createdAt: '2021-11-08T21:54:23.205318+00:00', + commandType: 'loadLabware', + status: 'succeeded', + data: { + location: { slot: 12 }, + loadName: 'opentrons_1_trash_1100ml_fixed', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + result: { + labwareId: 'labware-0', + definition: { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons Fixed Trash', + displayCategory: 'trash', + displayVolumeUnits: 'mL', + tags: [], + }, + brand: { brand: 'Opentrons', brandId: null, links: null }, + parameters: { + format: 'trash', + quirks: [ + 'fixedTrash', + 'centerMultichannelOnWells', + 'touchTipDisabled', + ], + isTiprack: false, + tipLength: null, + tipOverlap: null, + loadName: 'opentrons_1_trash_1100ml_fixed', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + ordering: [['A1']], + cornerOffsetFromSlot: { x: 0, y: 0, z: 0 }, + dimensions: { + yDimension: 165.86, + zDimension: 82, + xDimension: 172.86, + }, + wells: { + A1: { + depth: 0, + x: 82.84, + y: 80, + z: 82, + totalLiquidVolume: 1100000, + xDimension: 107.11, + yDimension: 165.67, + diameter: null, + shape: 'rectangular', + }, + }, + groups: [ + { + wells: ['A1'], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + calibration: { x: 0, y: 0, z: 0 }, + }, + error: null, + startedAt: '2021-11-08T21:54:23.205318+00:00', + completedAt: '2021-11-08T21:54:23.205318+00:00', + params: { + location: { slot: 12 }, + loadName: 'opentrons_1_trash_1100ml_fixed', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + }, + { + id: 'commands.LOAD_LABWARE-1', + createdAt: '2021-11-08T21:54:23.217458+00:00', + commandType: 'loadLabware', + status: 'succeeded', + data: { + location: { slot: 1 }, + loadName: 'opentrons_96_tiprack_300ul', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + result: { + labwareId: 'labware-1', + definition: { + schemaVersion: 2, + version: 1, + namespace: 'opentrons', + metadata: { + displayName: 'Opentrons 96 Tip Rack 300 µL', + displayCategory: 'tipRack', + displayVolumeUnits: 'µL', + tags: [], + }, + brand: { + brand: 'Opentrons', + brandId: [], + links: [ + 'https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips', + ], + }, + parameters: { + format: '96Standard', + quirks: null, + isTiprack: true, + tipLength: 59.3, + tipOverlap: 7.47, + loadName: 'opentrons_96_tiprack_300ul', + isMagneticModuleCompatible: false, + magneticModuleEngageHeight: null, + }, + 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'], + ], + cornerOffsetFromSlot: { x: 0, y: 0, z: 0 }, + dimensions: { + yDimension: 85.48, + zDimension: 64.49, + xDimension: 127.76, + }, + wells: { + A1: { + depth: 59.3, + x: 14.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B1: { + depth: 59.3, + x: 14.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C1: { + depth: 59.3, + x: 14.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D1: { + depth: 59.3, + x: 14.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E1: { + depth: 59.3, + x: 14.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F1: { + depth: 59.3, + x: 14.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G1: { + depth: 59.3, + x: 14.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H1: { + depth: 59.3, + x: 14.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A2: { + depth: 59.3, + x: 23.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B2: { + depth: 59.3, + x: 23.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C2: { + depth: 59.3, + x: 23.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D2: { + depth: 59.3, + x: 23.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E2: { + depth: 59.3, + x: 23.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F2: { + depth: 59.3, + x: 23.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G2: { + depth: 59.3, + x: 23.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H2: { + depth: 59.3, + x: 23.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A3: { + depth: 59.3, + x: 32.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B3: { + depth: 59.3, + x: 32.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C3: { + depth: 59.3, + x: 32.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D3: { + depth: 59.3, + x: 32.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E3: { + depth: 59.3, + x: 32.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F3: { + depth: 59.3, + x: 32.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G3: { + depth: 59.3, + x: 32.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H3: { + depth: 59.3, + x: 32.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A4: { + depth: 59.3, + x: 41.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B4: { + depth: 59.3, + x: 41.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C4: { + depth: 59.3, + x: 41.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D4: { + depth: 59.3, + x: 41.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E4: { + depth: 59.3, + x: 41.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F4: { + depth: 59.3, + x: 41.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G4: { + depth: 59.3, + x: 41.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H4: { + depth: 59.3, + x: 41.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A5: { + depth: 59.3, + x: 50.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B5: { + depth: 59.3, + x: 50.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C5: { + depth: 59.3, + x: 50.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D5: { + depth: 59.3, + x: 50.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E5: { + depth: 59.3, + x: 50.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F5: { + depth: 59.3, + x: 50.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G5: { + depth: 59.3, + x: 50.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H5: { + depth: 59.3, + x: 50.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A6: { + depth: 59.3, + x: 59.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B6: { + depth: 59.3, + x: 59.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C6: { + depth: 59.3, + x: 59.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D6: { + depth: 59.3, + x: 59.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E6: { + depth: 59.3, + x: 59.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F6: { + depth: 59.3, + x: 59.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G6: { + depth: 59.3, + x: 59.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H6: { + depth: 59.3, + x: 59.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A7: { + depth: 59.3, + x: 68.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B7: { + depth: 59.3, + x: 68.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C7: { + depth: 59.3, + x: 68.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D7: { + depth: 59.3, + x: 68.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E7: { + depth: 59.3, + x: 68.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F7: { + depth: 59.3, + x: 68.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G7: { + depth: 59.3, + x: 68.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H7: { + depth: 59.3, + x: 68.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A8: { + depth: 59.3, + x: 77.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B8: { + depth: 59.3, + x: 77.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C8: { + depth: 59.3, + x: 77.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D8: { + depth: 59.3, + x: 77.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E8: { + depth: 59.3, + x: 77.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F8: { + depth: 59.3, + x: 77.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G8: { + depth: 59.3, + x: 77.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H8: { + depth: 59.3, + x: 77.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A9: { + depth: 59.3, + x: 86.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B9: { + depth: 59.3, + x: 86.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C9: { + depth: 59.3, + x: 86.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D9: { + depth: 59.3, + x: 86.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E9: { + depth: 59.3, + x: 86.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F9: { + depth: 59.3, + x: 86.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G9: { + depth: 59.3, + x: 86.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H9: { + depth: 59.3, + x: 86.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A10: { + depth: 59.3, + x: 95.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B10: { + depth: 59.3, + x: 95.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C10: { + depth: 59.3, + x: 95.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D10: { + depth: 59.3, + x: 95.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E10: { + depth: 59.3, + x: 95.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F10: { + depth: 59.3, + x: 95.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G10: { + depth: 59.3, + x: 95.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H10: { + depth: 59.3, + x: 95.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A11: { + depth: 59.3, + x: 104.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B11: { + depth: 59.3, + x: 104.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C11: { + depth: 59.3, + x: 104.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D11: { + depth: 59.3, + x: 104.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E11: { + depth: 59.3, + x: 104.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F11: { + depth: 59.3, + x: 104.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G11: { + depth: 59.3, + x: 104.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H11: { + depth: 59.3, + x: 104.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + A12: { + depth: 59.3, + x: 113.38, + y: 74.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + B12: { + depth: 59.3, + x: 113.38, + y: 65.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + C12: { + depth: 59.3, + x: 113.38, + y: 56.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + D12: { + depth: 59.3, + x: 113.38, + y: 47.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + E12: { + depth: 59.3, + x: 113.38, + y: 38.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + F12: { + depth: 59.3, + x: 113.38, + y: 29.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + G12: { + depth: 59.3, + x: 113.38, + y: 20.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + H12: { + depth: 59.3, + x: 113.38, + y: 11.24, + z: 5.39, + totalLiquidVolume: 300, + xDimension: null, + yDimension: null, + diameter: 5.23, + shape: 'circular', + }, + }, + groups: [ + { + 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', + ], + metadata: { + displayName: null, + displayCategory: null, + wellBottomShape: null, + }, + brand: null, + }, + ], + }, + calibration: { x: 0, y: 0, z: 0 }, + }, + error: null, + startedAt: '2021-11-08T21:54:23.217458+00:00', + completedAt: '2021-11-08T21:54:23.217458+00:00', + params: { + location: { slot: 1 }, + loadName: 'opentrons_96_tiprack_300ul', + namespace: 'opentrons', + version: 1, + labwareId: null, + }, + }, + { + id: 'command.PICK_UP_TIP-0', + createdAt: '2021-11-08T21:54:23.241362+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.241362+00:00', + completedAt: '2021-11-08T21:54:23.242932+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-0', + createdAt: '2021-11-08T21:54:23.244715+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A1 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.244715+00:00', + completedAt: '2021-11-08T21:54:23.244944+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A1 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + }, + { + id: 'command.DISPENSE-0', + createdAt: '2021-11-08T21:54:23.245806+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A12 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.245806+00:00', + completedAt: '2021-11-08T21:54:23.245974+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A12 of NEST 12 Well Reservoir 15 mL on 6 at 46.43 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-0', + createdAt: '2021-11-08T21:54:23.246196+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.246196+00:00', + completedAt: '2021-11-08T21:54:23.246900+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-1', + createdAt: '2021-11-08T21:54:23.247412+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.247412+00:00', + completedAt: '2021-11-08T21:54:23.251000+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-1', + createdAt: '2021-11-08T21:54:23.252220+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A3 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.252220+00:00', + completedAt: '2021-11-08T21:54:23.252402+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A3 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-1', + createdAt: '2021-11-08T21:54:23.253361+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A10 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.253361+00:00', + completedAt: '2021-11-08T21:54:23.253609+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A10 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-1', + createdAt: '2021-11-08T21:54:23.253973+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.253973+00:00', + completedAt: '2021-11-08T21:54:23.255007+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-2', + createdAt: '2021-11-08T21:54:23.255801+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A3 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.255801+00:00', + completedAt: '2021-11-08T21:54:23.258009+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A3 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-2', + createdAt: '2021-11-08T21:54:23.259154+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.259154+00:00', + completedAt: '2021-11-08T21:54:23.259319+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-2', + createdAt: '2021-11-08T21:54:23.259951+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.259951+00:00', + completedAt: '2021-11-08T21:54:23.260071+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-2', + createdAt: '2021-11-08T21:54:23.260243+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.260243+00:00', + completedAt: '2021-11-08T21:54:23.260689+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-3', + createdAt: '2021-11-08T21:54:23.261103+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A4 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.261103+00:00', + completedAt: '2021-11-08T21:54:23.262416+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A4 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-3', + createdAt: '2021-11-08T21:54:23.263503+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.263503+00:00', + completedAt: '2021-11-08T21:54:23.263658+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-3', + createdAt: '2021-11-08T21:54:23.264348+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.264348+00:00', + completedAt: '2021-11-08T21:54:23.264545+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-3', + createdAt: '2021-11-08T21:54:23.264835+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.264835+00:00', + completedAt: '2021-11-08T21:54:23.265412+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-4', + createdAt: '2021-11-08T21:54:23.265849+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A5 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.265849+00:00', + completedAt: '2021-11-08T21:54:23.269049+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A5 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-4', + createdAt: '2021-11-08T21:54:23.270847+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.270847+00:00', + completedAt: '2021-11-08T21:54:23.271033+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-4', + createdAt: '2021-11-08T21:54:23.271710+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.271710+00:00', + completedAt: '2021-11-08T21:54:23.271833+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-4', + createdAt: '2021-11-08T21:54:23.272099+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.272099+00:00', + completedAt: '2021-11-08T21:54:23.272887+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-5', + createdAt: '2021-11-08T21:54:23.273496+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A6 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.273496+00:00', + completedAt: '2021-11-08T21:54:23.276642+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A6 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-5', + createdAt: '2021-11-08T21:54:23.278456+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.278456+00:00', + completedAt: '2021-11-08T21:54:23.278651+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-5', + createdAt: '2021-11-08T21:54:23.279405+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.279405+00:00', + completedAt: '2021-11-08T21:54:23.279565+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-5', + createdAt: '2021-11-08T21:54:23.279837+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.279837+00:00', + completedAt: '2021-11-08T21:54:23.280807+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-6', + createdAt: '2021-11-08T21:54:23.282410+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A7 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.282410+00:00', + completedAt: '2021-11-08T21:54:23.285054+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A7 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-6', + createdAt: '2021-11-08T21:54:23.286588+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.286588+00:00', + completedAt: '2021-11-08T21:54:23.286870+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-6', + createdAt: '2021-11-08T21:54:23.287947+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.287947+00:00', + completedAt: '2021-11-08T21:54:23.288257+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-6', + createdAt: '2021-11-08T21:54:23.288631+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.288631+00:00', + completedAt: '2021-11-08T21:54:23.289650+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-7', + createdAt: '2021-11-08T21:54:23.290884+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A8 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.290884+00:00', + completedAt: '2021-11-08T21:54:23.293553+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A8 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-7', + createdAt: '2021-11-08T21:54:23.294876+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.294876+00:00', + completedAt: '2021-11-08T21:54:23.295176+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-7', + createdAt: '2021-11-08T21:54:23.296318+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.296318+00:00', + completedAt: '2021-11-08T21:54:23.296495+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-7', + createdAt: '2021-11-08T21:54:23.296680+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.296680+00:00', + completedAt: '2021-11-08T21:54:23.297129+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-8', + createdAt: '2021-11-08T21:54:23.297536+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A9 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.297536+00:00', + completedAt: '2021-11-08T21:54:23.300979+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A9 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-8', + createdAt: '2021-11-08T21:54:23.302123+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.302123+00:00', + completedAt: '2021-11-08T21:54:23.302281+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-8', + createdAt: '2021-11-08T21:54:23.302904+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.302904+00:00', + completedAt: '2021-11-08T21:54:23.303024+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-8', + createdAt: '2021-11-08T21:54:23.303206+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.303206+00:00', + completedAt: '2021-11-08T21:54:23.303653+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-9', + createdAt: '2021-11-08T21:54:23.304065+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A10 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.304065+00:00', + completedAt: '2021-11-08T21:54:23.305518+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A10 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-9', + createdAt: '2021-11-08T21:54:23.307065+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.307065+00:00', + completedAt: '2021-11-08T21:54:23.307273+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-9', + createdAt: '2021-11-08T21:54:23.308079+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.308079+00:00', + completedAt: '2021-11-08T21:54:23.308277+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-9', + createdAt: '2021-11-08T21:54:23.308514+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.308514+00:00', + completedAt: '2021-11-08T21:54:23.309045+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-10', + createdAt: '2021-11-08T21:54:23.309735+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A11 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.309735+00:00', + completedAt: '2021-11-08T21:54:23.311867+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A11 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-10', + createdAt: '2021-11-08T21:54:23.313299+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.313299+00:00', + completedAt: '2021-11-08T21:54:23.313515+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-10', + createdAt: '2021-11-08T21:54:23.314602+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.314602+00:00', + completedAt: '2021-11-08T21:54:23.315123+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-10', + createdAt: '2021-11-08T21:54:23.315782+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.315782+00:00', + completedAt: '2021-11-08T21:54:23.316712+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-11', + createdAt: '2021-11-08T21:54:23.317233+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A12 of Opentrons 96 Tip Rack 300 µL on 1', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.317233+00:00', + completedAt: '2021-11-08T21:54:23.318958+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A12 of Opentrons 96 Tip Rack 300 µL on 1', + }, + }, + { + id: 'command.ASPIRATE-11', + createdAt: '2021-11-08T21:54:23.320183+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.320183+00:00', + completedAt: '2021-11-08T21:54:23.320351+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-11', + createdAt: '2021-11-08T21:54:23.321008+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.321008+00:00', + completedAt: '2021-11-08T21:54:23.321187+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-11', + createdAt: '2021-11-08T21:54:23.321442+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.321442+00:00', + completedAt: '2021-11-08T21:54:23.322124+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.PICK_UP_TIP-12', + createdAt: '2021-11-08T21:54:23.322871+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.322871+00:00', + completedAt: '2021-11-08T21:54:23.324425+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A1 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + }, + { + id: 'command.ASPIRATE-12', + createdAt: '2021-11-08T21:54:23.325522+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.325522+00:00', + completedAt: '2021-11-08T21:54:23.325697+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 100.0 uL from A4 of NEST 12 Well Reservoir 15 mL on 6 at 150.0 uL/sec', + }, + }, + { + id: 'command.MOVE_TO-0', + createdAt: '2021-11-08T21:54:23.326058+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A4 of NEST 12 Well Reservoir 15 mL on 6', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.326058+00:00', + completedAt: '2021-11-08T21:54:23.326413+00:00', + params: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A4 of NEST 12 Well Reservoir 15 mL on 6', + }, + }, + { + id: 'command.DELAY-0', + createdAt: '2021-11-08T21:54:23.326712+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.326712+00:00', + completedAt: '2021-11-08T21:54:23.327363+00:00', + params: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + }, + { + id: 'command.DISPENSE-12', + createdAt: '2021-11-08T21:54:23.328064+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.328064+00:00', + completedAt: '2021-11-08T21:54:23.328193+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 100.0 uL into A8 of NEST 12 Well Reservoir 15 mL on 6 at 300.0 uL/sec', + }, + }, + { + id: 'command.DROP_TIP-12', + createdAt: '2021-11-08T21:54:23.328386+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.328386+00:00', + completedAt: '2021-11-08T21:54:23.328836+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + { + id: 'command.THERMOCYCLER_OPEN-0', + createdAt: '2021-11-08T21:54:23.329003+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.THERMOCYCLER_OPEN', + legacyCommandText: 'Opening Thermocycler lid', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.329003+00:00', + completedAt: '2021-11-08T21:54:23.330888+00:00', + params: { + legacyCommandType: 'command.THERMOCYCLER_OPEN', + legacyCommandText: 'Opening Thermocycler lid', + }, + }, + { + id: 'command.MOVE_TO-1', + createdAt: '2021-11-08T21:54:23.330157+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: 'Moving to (347.84000000000003, 351.5, 247.45)', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.330157+00:00', + completedAt: '2021-11-08T21:54:23.330471+00:00', + params: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: 'Moving to (347.84000000000003, 351.5, 247.45)', + }, + }, + { + id: 'command.THERMOCYCLER_SET_LID_TEMP-0', + createdAt: '2021-11-08T21:54:23.331094+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.THERMOCYCLER_SET_LID_TEMP', + legacyCommandText: + 'Setting Thermocycler lid temperature to 50.0 °C', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.331094+00:00', + completedAt: '2021-11-08T21:54:23.331522+00:00', + params: { + legacyCommandType: 'command.THERMOCYCLER_SET_LID_TEMP', + legacyCommandText: + 'Setting Thermocycler lid temperature to 50.0 °C', + }, + }, + { + id: 'command.PICK_UP_TIP-13', + createdAt: '2021-11-08T21:54:23.332086+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.332086+00:00', + completedAt: '2021-11-08T21:54:23.333153+00:00', + params: { + legacyCommandType: 'command.PICK_UP_TIP', + legacyCommandText: + 'Picking up tip from A2 of Opentrons 96 Tip Rack 300 µL (1) on 2', + }, + }, + { + id: 'command.ASPIRATE-13', + createdAt: '2021-11-08T21:54:23.334494+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.334494+00:00', + completedAt: '2021-11-08T21:54:23.334687+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + }, + { + id: 'command.MOVE_TO-2', + createdAt: '2021-11-08T21:54:23.335133+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.335133+00:00', + completedAt: '2021-11-08T21:54:23.335498+00:00', + params: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + }, + { + id: 'command.AIR_GAP-0', + createdAt: '2021-11-08T21:54:23.335679+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.AIR_GAP', + legacyCommandText: 'Air gap', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.335679+00:00', + completedAt: '2021-11-08T21:54:23.336423+00:00', + params: { + legacyCommandType: 'command.AIR_GAP', + legacyCommandText: 'Air gap', + }, + }, + { + id: 'command.ASPIRATE-14', + createdAt: '2021-11-08T21:54:23.336246+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.336246+00:00', + completedAt: '2021-11-08T21:54:23.336357+00:00', + params: { + legacyCommandType: 'command.ASPIRATE', + legacyCommandText: + 'Aspirating 30.0 uL from A2 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 150.0 uL/sec', + }, + }, + { + id: 'command.DISPENSE-13', + createdAt: '2021-11-08T21:54:23.337141+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.337141+00:00', + completedAt: '2021-11-08T21:54:23.337253+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + }, + { + id: 'command.DELAY-1', + createdAt: '2021-11-08T21:54:23.337387+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.337387+00:00', + completedAt: '2021-11-08T21:54:23.337930+00:00', + params: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + }, + { + id: 'command.DISPENSE-14', + createdAt: '2021-11-08T21:54:23.338658+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.338658+00:00', + completedAt: '2021-11-08T21:54:23.338780+00:00', + params: { + legacyCommandType: 'command.DISPENSE', + legacyCommandText: + 'Dispensing 30.0 uL into A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7 at 300.0 uL/sec', + }, + }, + { + id: 'command.MOVE_TO-3', + createdAt: '2021-11-08T21:54:23.339141+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.339141+00:00', + completedAt: '2021-11-08T21:54:23.339486+00:00', + params: { + legacyCommandType: 'command.MOVE_TO', + legacyCommandText: + 'Moving to A11 of NEST 96 Well Plate 100 µL PCR Full Skirt on Thermocycler Module on 7', + }, + }, + { + id: 'command.DELAY-2', + createdAt: '2021-11-08T21:54:23.339625+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.339625+00:00', + completedAt: '2021-11-08T21:54:23.340221+00:00', + params: { + legacyCommandType: 'command.DELAY', + legacyCommandText: 'Delaying for 0 minutes and 1.0 seconds', + }, + }, + { + id: 'command.DROP_TIP-13', + createdAt: '2021-11-08T21:54:23.340413+00:00', + commandType: 'custom', + status: 'succeeded', + data: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + result: null, + error: null, + startedAt: '2021-11-08T21:54:23.340413+00:00', + completedAt: '2021-11-08T21:54:23.340850+00:00', + params: { + legacyCommandType: 'command.DROP_TIP', + legacyCommandText: 'Dropping tip into A1 of Trash on 12', + }, + }, + ], + } + + expect(schemaV6Adapter(v6Analysis)).toEqual(expected) + }) +}) diff --git a/shared-data/js/helpers/index.ts b/shared-data/js/helpers/index.ts index 0234d0de836..904d009f90e 100644 --- a/shared-data/js/helpers/index.ts +++ b/shared-data/js/helpers/index.ts @@ -7,6 +7,7 @@ import type { LabwareDefinition2 } from '../types' export { getWellNamePerMultiTip } from './getWellNamePerMultiTip' export { getWellTotalVolume } from './getWellTotalVolume' export { wellIsRect } from './wellIsRect' +export { schemaV6Adapter } from './schemaV6Adapter' export * from './parseProtocolData' export * from './volume' diff --git a/shared-data/js/helpers/schemaV6Adapter.ts b/shared-data/js/helpers/schemaV6Adapter.ts new file mode 100644 index 00000000000..e800d143bae --- /dev/null +++ b/shared-data/js/helpers/schemaV6Adapter.ts @@ -0,0 +1,87 @@ +import { getLabwareDisplayName } from '.' +import type { Command, ProtocolFile } from '../../protocol' +import type { LoadLabwareCommand } from '../../protocol/types/schemaV6/command/setup' +import type { PipetteName } from '../pipettes' +import type { ProtocolResource, LabwareDefinition2 } from '../types' +// This adapter exists to resolve the interface mismatch between the PE analysis response +// and the protocol schema v6 interface. Much of this logic should be deleted once we resolve +// these discrepencies on the server side +export const schemaV6Adapter = ( + protocolAnalyses: ProtocolResource['analyses'][0] +): ProtocolFile<{}> => { + if (protocolAnalyses != null && protocolAnalyses.status === 'completed') { + const pipettes: { + [pipetteId: string]: { name: PipetteName } + } = protocolAnalyses.pipettes.reduce((acc, pipette) => { + return { + ...acc, + [pipette.id]: { + name: pipette.pipetteName, + }, + } + }, {}) + + const labware: { + [labwareId: string]: { + definitionId: string + displayName?: string + } + } = protocolAnalyses.labware.reduce((acc, labware) => { + const labwareId = labware.id + if (labwareId === 'fixedTrash') { + return { ...acc } + } + const labwareDef: LabwareDefinition2 = protocolAnalyses.commands.find( + (command: Command) => + command.commandType === 'loadLabware' && + command.result?.labwareId === labwareId + )?.result.definition + + return { + ...acc, + [labwareId]: { + definitionId: `${labware.definitionUri}_id`, + displayName: getLabwareDisplayName(labwareDef), + }, + } + }, {}) + + const labwareDefinitions: { + [definitionId: string]: LabwareDefinition2 + } = protocolAnalyses.commands + .filter( + (command: Command): command is LoadLabwareCommand => + command.commandType === 'loadLabware' + ) + .reduce((acc, command: LoadLabwareCommand) => { + // @ts-expect-error at the time this adapter is being used the commands should all be resolved + const labwareDef: LabwareDefinition2 = command.result?.definition + const labwareId = command.result?.labwareId ?? '' + const definitionUri = protocolAnalyses.labware.find( + labware => labware.id === labwareId + )?.definitionUri + const definitionId = `${definitionUri}_id` + + return { + ...acc, + [definitionId]: labwareDef, + } + }, {}) + + const commands = protocolAnalyses.commands.map(command => ({ + ...command, + // @ts-expect-error delete this once the backend renames "data" to "params" + params: command.data, + })) + + // @ts-expect-error this is a v6 like object that does not quite match the v6 spec at the moment + return { + pipettes, + labware, + labwareDefinitions, + commands, + } + } + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + return {} as ProtocolFile<{}> +} diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index 2dad5eebbc8..d2d8ee614f2 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -16,6 +16,8 @@ import { RIGHT, } from './constants' import type { INode } from 'svgson' +import type { Command } from '../protocol' +import type { PipetteName } from './pipettes' // TODO Ian 2019-06-04 split this out into eg ../labware/flowTypes/labwareV1.js export interface WellDefinition { @@ -354,3 +356,47 @@ export interface PipetteModelSpecs extends PipetteNameSpecs { value: number } } +export interface ProtocolMetadata { + protocolName?: string + author?: string + description?: string | null + created?: number + lastModified?: number | null + category?: string | null + subcategory?: string | null + tags?: string[] + [key: string]: unknown +} +export interface PendingProtocolAnalysis { + id: string + status?: 'pending' +} +export interface LoadedPipette { + id: string + pipetteName: PipetteName + mount: 'left' | 'right' +} +export interface LoadedLabware { + id: string + loadName: string + definitionUri: string + location: { + slot: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 + } +} +export interface CompletedProtocolAnalysis { + id: string + status?: 'completed' + result: 'ok' | 'not-ok' | 'error' + pipettes: LoadedPipette[] + labware: LoadedLabware[] + commands: Command[] + errors: string[] +} +export interface ProtocolResource { + id: string + createdAt: string + protocolType: 'json' | 'python' + metadata: ProtocolMetadata + analyses: PendingProtocolAnalysis[] | CompletedProtocolAnalysis[] +} diff --git a/shared-data/protocol/types/schemaV6/command/index.ts b/shared-data/protocol/types/schemaV6/command/index.ts index f8f2823e59d..e9ece245816 100644 --- a/shared-data/protocol/types/schemaV6/command/index.ts +++ b/shared-data/protocol/types/schemaV6/command/index.ts @@ -9,7 +9,7 @@ import type { TimingCommand } from './timing' // the command's identity and parameters which can be known prior to runtime interface CommandRunTimeInfo { status?: 'queued' | 'running' | 'succeeded' | 'failed' - error?: string + error?: string | null createdAt?: string startedAt?: string completedAt?: string @@ -18,6 +18,7 @@ interface CommandRunTimeInfo { // all commands must have an id export interface CommonCommandInfo extends CommandRunTimeInfo { id: string + result?: any // TODO: gather types for what each command's expected result should be } export type Command =