diff --git a/api-client/src/modules/api-types.ts b/api-client/src/modules/api-types.ts index 17c3bd53fcf..d4755b69f57 100644 --- a/api-client/src/modules/api-types.ts +++ b/api-client/src/modules/api-types.ts @@ -10,6 +10,7 @@ interface PhysicalPort { port: number hub: boolean portGroup: PortGroup + hubPort?: number } type ModuleOffsetSource = diff --git a/api/docs/v2/pipettes/characteristics.rst b/api/docs/v2/pipettes/characteristics.rst index 9203dd81816..00971d71832 100644 --- a/api/docs/v2/pipettes/characteristics.rst +++ b/api/docs/v2/pipettes/characteristics.rst @@ -184,29 +184,32 @@ These flow rates will remain in effect until you change the ``flow_rate`` attrib Flex Pipette Flow Rates ----------------------- -Flex pipette flow rates depend on pipette volume and tip capacity. Each pipette–tip combination has a default flow rate for aspirating, dispensing, and blowing out liquid. When using a 50 µL pipette, you should only use 50 µL tips. - -.. list-table:: - :header-rows: 1 - - * - Pipette Model - - Tip Capacity (µL) - - Flow Rate (µL/s) - * - 50 µL (1- and 8-channel) - - 50 - - 57 - * - 1000 µL (1-, 8-, and 96-channel) - - 50 - - 478 - * - 1000 µL (1-, 8-, and 96-channel) - - 200 - - 716 - * - 1000 µL (1-, 8-, and 96-channel) - - 1000 - - 716 - - -Additionally, all Flex pipettes have a well bottom clearance of 1 mm for aspirate and dispense actions. +The following table provides data on the default aspirate, dispense, and blowout flow rates (in µL/s) for Flex pipettes. Default flow rates for each pipette-tip combination are the same across all three actions. + +.. Excludes low-vol 96 channel. Not yet released. + ++-----------------------------+-------------------+------------------------+ +| Pipette Model | Tip Capacity (µL) | Default Flow Rate (µL) | ++=============================+===================+========================+ +| 1- and 8-channel (50 µL) | 50 | 35 | ++-----------------------------+-------------------+------------------------+ +| 1- and 8-channel (1000 µL) | 50 | 478 | ++ +-------------------+------------------------+ +| | 200 | 716 | ++ +-------------------+------------------------+ +| | 1000 | 716 | ++-----------------------------+-------------------+------------------------+ +| 96-channel (5-1000 µL) | 50 | 6 | ++ +-------------------+------------------------+ +| | 200 | 80 | ++ +-------------------+------------------------+ +| | 1000 | 160 | ++-----------------------------+-------------------+------------------------+ + +Additionally: + +- When using a 50 µL pipette, you should only use 50 µL tips. +- All Flex pipettes have a well bottom clearance of 1 mm for aspirate and dispense actions. .. _ot2-flow-rates: diff --git a/api/src/opentrons/drivers/flex_stacker/driver.py b/api/src/opentrons/drivers/flex_stacker/driver.py index 270cd759f90..e96a3a96095 100644 --- a/api/src/opentrons/drivers/flex_stacker/driver.py +++ b/api/src/opentrons/drivers/flex_stacker/driver.py @@ -67,14 +67,14 @@ max_speed=10.0, acceleration=100.0, max_speed_discont=40, - current=1.8, + current=1.5, ), "move": MoveParams( StackerAxis.Z, max_speed=200.0, acceleration=500.0, max_speed_discont=40, - current=1.8, + current=1.5, ), }, StackerAxis.L: { diff --git a/api/src/opentrons/hardware_control/modules/flex_stacker.py b/api/src/opentrons/hardware_control/modules/flex_stacker.py index 136ac1d18bc..3c12673a1a5 100644 --- a/api/src/opentrons/hardware_control/modules/flex_stacker.py +++ b/api/src/opentrons/hardware_control/modules/flex_stacker.py @@ -273,7 +273,9 @@ async def move_axis( await self.reset_stall_detected() motion_params = STACKER_MOTION_CONFIG[axis]["move"] await self._driver.set_run_current(axis, current or motion_params.current or 0) - if any([speed, acceleration]): + if any([speed, acceleration, current]): + motion_params = self._reader.motion_params[axis] + motion_params.current = current or motion_params.current motion_params.max_speed = speed or motion_params.max_speed motion_params.acceleration = acceleration or motion_params.acceleration distance = direction.distance(distance) @@ -391,8 +393,11 @@ async def store_labware(self, labware_height: float) -> bool: # Transfer await self.open_latch() - await self.move_axis(StackerAxis.Z, Direction.EXTEND, (labware_height / 2)) - await self.home_axis(StackerAxis.Z, Direction.EXTEND) + z_speed = (STACKER_MOTION_CONFIG[StackerAxis.Z]["move"].max_speed or 0) / 2 + await self.move_axis( + StackerAxis.Z, Direction.EXTEND, (labware_height / 2), z_speed + ) + await self.home_axis(StackerAxis.Z, Direction.EXTEND, z_speed) await self.close_latch() # Move Z then X axis @@ -448,7 +453,7 @@ async def get_limit_switch_status(self) -> None: async def get_motion_parameters(self) -> None: """Get the motion parameters used by the axis motors.""" - self.move_params = { + self.motion_params = { axis: await self._driver.get_motion_params(axis) for axis in StackerAxis } diff --git a/app/src/assets/localization/en/quick_transfer.json b/app/src/assets/localization/en/quick_transfer.json index 2ebdb5699b8..c448de06a72 100644 --- a/app/src/assets/localization/en/quick_transfer.json +++ b/app/src/assets/localization/en/quick_transfer.json @@ -132,10 +132,10 @@ "touch_tip": "Touch tip", "touch_tip_after_aspirating": "Touch tip after aspirating", "touch_tip_before_dispensing": "Touch tip before dispensing", - "touch_tip_position_mm": "Touch tip position from bottom of well (mm)", + "touch_tip_position_mm": "Touch tip position from top of well (mm)", "touch_tip_value": "{{position}} mm from bottom", "use_deck_slots": "Quick transfers use deck slots B2-D2. These slots hold a tip rack, a source labware, and a destination labware.Make sure that your deck configuration is up to date to avoid collisions.", - "value_out_of_range": "Value must be between {{min}}-{{max}}", + "value_out_of_range": "Value must be between {{min}} to {{max}}", "too_many_pins_body": "Remove a quick transfer in order to add more transfers to your pinned list.", "too_many_pins_header": "You've hit your max!", "transfer_analysis_failed": "quick transfer analysis failed", diff --git a/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx b/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx index b4b8f462d7f..f6d633737cf 100644 --- a/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx +++ b/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx @@ -47,6 +47,10 @@ import { TRASH_BIN_ADAPTER_FIXTURE, WASTE_CHUTE_CUTOUT, WASTE_CHUTE_FIXTURES, + FLEX_STACKER_MODULE_V1, + FLEX_STACKER_V1_FIXTURE, + FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE, + FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE, } from '@opentrons/shared-data' import { ODD_FOCUS_VISIBLE } from '/app/atoms/buttons/constants' @@ -249,6 +253,52 @@ export function AddFixtureModal({ ] } } + if ( + cutoutId === 'cutoutD3' && + unconfiguredMods.some(m => m.moduleModel === FLEX_STACKER_MODULE_V1) + ) { + const unconfiguredFlexStackers: CutoutConfig[][] = [] + unconfiguredMods + .filter(mod => mod.moduleModel === FLEX_STACKER_MODULE_V1) + .forEach(mod => { + unconfiguredFlexStackers.push([ + { + cutoutId, + cutoutFixtureId: FLEX_STACKER_V1_FIXTURE, + opentronsModuleSerialNumber: mod.serialNumber, + }, + ]) + unconfiguredFlexStackers.push([ + { + cutoutId, + cutoutFixtureId: FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE, + opentronsModuleSerialNumber: mod.serialNumber, + }, + ]) + unconfiguredFlexStackers.push([ + { + cutoutId, + cutoutFixtureId: FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE, + opentronsModuleSerialNumber: mod.serialNumber, + }, + ]) + }) + availableOptions.push(...unconfiguredFlexStackers) + } else if ( + STAGING_AREA_CUTOUTS.includes(cutoutId) && + unconfiguredMods.some(m => m.moduleModel === FLEX_STACKER_MODULE_V1) + ) { + const unconfiguredFlexStackers = unconfiguredMods + .filter(mod => mod.moduleModel === FLEX_STACKER_MODULE_V1) + .map(mod => [ + { + cutoutId, + cutoutFixtureId: FLEX_STACKER_V1_FIXTURE, + opentronsModuleSerialNumber: mod.serialNumber, + }, + ]) + availableOptions = [...availableOptions, ...unconfiguredFlexStackers] + } } else if (optionStage === 'wasteChuteOptions') { availableOptions = WASTE_CHUTE_FIXTURES.map(fixture => [ { @@ -315,22 +365,30 @@ export function AddFixtureModal({ closeModal() } - const fixtureOptions = availableOptions.map(cutoutConfigs => ( - m.serialNumber === cutoutConfigs[0].opentronsModuleSerialNumber - )?.usbPort.port - )} - buttonText={t('add')} - onClickHandler={() => { - handleAddFixture(cutoutConfigs) - }} - isOnDevice={isOnDevice} - /> - )) + const fixtureOptions = availableOptions.map(cutoutConfigs => { + const usbPort = (modulesData?.data ?? []).find( + m => m.serialNumber === cutoutConfigs[0].opentronsModuleSerialNumber + )?.usbPort + const portDisplay = + usbPort?.hubPort != null + ? `${usbPort.port}.${usbPort.hubPort}` + : usbPort?.port + + return ( + { + handleAddFixture(cutoutConfigs) + }} + isOnDevice={isOnDevice} + /> + ) + }) return ( <> diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx index 41780d65181..4133c9cbec7 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx @@ -47,10 +47,12 @@ export function TouchTip(props: TouchTipProps): JSX.Element { : state.touchTipDispense != null ) const [currentStep, setCurrentStep] = useState(1) - const [position, setPosition] = useState( - kind === 'aspirate' - ? state.touchTipAspirate ?? null - : state.touchTipDispense ?? null + const touchTipAspirate = + state.touchTipAspirate != null ? state.touchTipAspirate.toString() : null + const touchTipDispense = + state.touchTipDispense != null ? state.touchTipDispense.toString() : null + const [position, setPosition] = useState( + kind === 'aspirate' ? touchTipAspirate : touchTipDispense ) const touchTipAction = @@ -94,7 +96,10 @@ export function TouchTip(props: TouchTipProps): JSX.Element { setCurrentStep(2) } } else if (currentStep === 2) { - dispatch({ type: touchTipAction, position: position ?? undefined }) + dispatch({ + type: touchTipAction, + position: position != null ? parseInt(position) : undefined, + }) trackEventWithRobotSerial({ name: ANALYTICS_QUICK_TRANSFER_SETTING_SAVED, properties: { @@ -130,10 +135,13 @@ export function TouchTip(props: TouchTipProps): JSX.Element { } // the allowed range for touch tip is half the height of the well to 1x the height - const positionRange = { min: Math.round(wellHeight / 2), max: wellHeight } + const positionRange = { min: -Math.round(wellHeight / 2), max: 0 } const positionError = position !== null && - (position < positionRange.min || position > positionRange.max) + (position === '-' || + position.indexOf('-') !== position.lastIndexOf('-') || + Number(position) < positionRange.min || + Number(position) > positionRange.max) ? t(`value_out_of_range`, { min: positionRange.min, max: Math.floor(positionRange.max), @@ -197,8 +205,8 @@ export function TouchTip(props: TouchTipProps): JSX.Element { marginTop={SPACING.spacing68} > { - setPosition(Number(e)) + setPosition(e) }} /> diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/AirGap.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/AirGap.test.tsx index f1e6245389f..e80edeb94f9 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/AirGap.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/AirGap.test.tsx @@ -123,7 +123,7 @@ describe('AirGap', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Air gap volume (µL)', - error: 'Value must be between 1-180', + error: 'Value must be between 1 to 180', readOnly: true, type: 'number', value: 0, @@ -152,7 +152,7 @@ describe('AirGap', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Air gap volume (µL)', - error: 'Value must be between 1-80', + error: 'Value must be between 1 to 80', readOnly: true, type: 'number', value: 0, @@ -179,7 +179,7 @@ describe('AirGap', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Air gap volume (µL)', - error: 'Value must be between 1-140', + error: 'Value must be between 1 to 140', readOnly: true, type: 'number', value: 0, @@ -204,7 +204,7 @@ describe('AirGap', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Air gap volume (µL)', - error: 'Value must be between 1-200', + error: 'Value must be between 1 to 200', readOnly: true, type: 'number', value: 0, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Delay.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Delay.test.tsx index 32b26e4712f..adcec561544 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Delay.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Delay.test.tsx @@ -132,7 +132,7 @@ describe('Delay', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Delay duration (seconds)', - error: 'Value must be between 1-9999999999', + error: 'Value must be between 1 to 9999999999', readOnly: true, type: 'number', value: 0, @@ -158,7 +158,7 @@ describe('Delay', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Delay position from bottom of well (mm)', - error: 'Value must be between 1-100', + error: 'Value must be between 1 to 100', readOnly: true, type: 'number', value: 0, @@ -188,7 +188,7 @@ describe('Delay', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Delay position from bottom of well (mm)', - error: 'Value must be between 1-400', + error: 'Value must be between 1 to 400', readOnly: true, type: 'number', value: 0, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/FlowRate.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/FlowRate.test.tsx index 413af34ce99..9e75a5d407b 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/FlowRate.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/FlowRate.test.tsx @@ -133,7 +133,7 @@ describe('FlowRate', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Aspirate flow rate (µL/s)', - error: 'Value must be between 1-92', + error: 'Value must be between 1 to 92', readOnly: true, type: 'number', value: 0, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Mix.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Mix.test.tsx index 298bd040f1c..ce29e6eb041 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Mix.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/Mix.test.tsx @@ -132,7 +132,7 @@ describe('Mix', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Mix volume (µL)', - error: 'Value must be between 1-200', + error: 'Value must be between 1 to 200', readOnly: true, type: 'number', value: 0, @@ -158,7 +158,7 @@ describe('Mix', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Mix repetitions', - error: 'Value must be between 1-999', + error: 'Value must be between 1 to 999', readOnly: true, type: 'number', value: 0, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/PipettePath.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/PipettePath.test.tsx index 536c14bbbfd..fa5245e0fe9 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/PipettePath.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/PipettePath.test.tsx @@ -196,7 +196,7 @@ describe('PipettePath', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Disposal volume (µL)', - error: 'Value must be between 1-160', + error: 'Value must be between 1 to 160', readOnly: true, type: 'number', value: 201, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TipPosition.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TipPosition.test.tsx index 02e5022785c..ea9c770edbb 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TipPosition.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TipPosition.test.tsx @@ -130,7 +130,7 @@ describe('TipPosition', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Distance from bottom of well (mm)', - error: 'Value must be between 1-100', + error: 'Value must be between 1 to 100', readOnly: true, type: 'text', value: 0, @@ -153,7 +153,7 @@ describe('TipPosition', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Distance from bottom of well (mm)', - error: 'Value must be between 1-400', + error: 'Value must be between 1 to 400', readOnly: true, type: 'text', value: 0, diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TouchTip.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TouchTip.test.tsx index a5338c8aa71..a8c353272c9 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TouchTip.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/QuickTransferAdvancedSettings/TouchTip.test.tsx @@ -110,11 +110,11 @@ describe('TouchTip', () => { fireEvent.click(continueBtn) expect(vi.mocked(InputField)).toHaveBeenCalledWith( { - title: 'Touch tip position from bottom of well (mm)', + title: 'Touch tip position from top of well (mm)', error: null, readOnly: true, - type: 'number', - value: null, + type: 'text', + value: '', }, {} ) @@ -136,15 +136,19 @@ describe('TouchTip', () => { fireEvent.click(enabledBtn) const continueBtn = screen.getByText('Continue') fireEvent.click(continueBtn) - const numButton = screen.getByText('0') + const negButton = screen.getByText('-') + fireEvent.click(negButton) + const numButton = screen.getByText('9') fireEvent.click(numButton) + const secondNumButton = screen.getByText('8') + fireEvent.click(secondNumButton) expect(vi.mocked(InputField)).toHaveBeenCalledWith( { - title: 'Touch tip position from bottom of well (mm)', - error: 'Value must be between 25-50', + title: 'Touch tip position from top of well (mm)', + error: 'Value must be between -25 to 0', readOnly: true, - type: 'number', - value: 0, + type: 'text', + value: '-98', }, {} ) @@ -162,15 +166,15 @@ describe('TouchTip', () => { fireEvent.click(enabledBtn) const continueBtn = screen.getByText('Continue') fireEvent.click(continueBtn) - const numButton = screen.getByText('0') + const numButton = screen.getByText('1') fireEvent.click(numButton) expect(vi.mocked(InputField)).toHaveBeenCalledWith( { - title: 'Touch tip position from bottom of well (mm)', - error: 'Value must be between 100-200', + title: 'Touch tip position from top of well (mm)', + error: 'Value must be between -100 to 0', readOnly: true, - type: 'number', - value: 0, + type: 'text', + value: '1', }, {} ) @@ -184,7 +188,7 @@ describe('TouchTip', () => { fireEvent.click(enabledBtn) const continueBtn = screen.getByText('Continue') fireEvent.click(continueBtn) - const numButton = screen.getByText('4') + const numButton = screen.getByText('0') fireEvent.click(numButton) fireEvent.click(numButton) const saveBtn = screen.getByText('Save') @@ -198,7 +202,7 @@ describe('TouchTip', () => { ...props, state: { ...props.state, - touchTipAspirate: 32, + touchTipAspirate: -25, }, } render(props) @@ -206,11 +210,11 @@ describe('TouchTip', () => { fireEvent.click(continueBtn) expect(vi.mocked(InputField)).toHaveBeenCalledWith( { - title: 'Touch tip position from bottom of well (mm)', + title: 'Touch tip position from top of well (mm)', error: null, readOnly: true, - type: 'number', - value: 32, + type: 'text', + value: '-25', }, {} ) @@ -222,7 +226,7 @@ describe('TouchTip', () => { kind: 'dispense', state: { ...props.state, - touchTipDispense: 118, + touchTipDispense: -8, }, } render(props) @@ -230,11 +234,11 @@ describe('TouchTip', () => { fireEvent.click(continueBtn) expect(vi.mocked(InputField)).toHaveBeenCalledWith( { - title: 'Touch tip position from bottom of well (mm)', + title: 'Touch tip position from top of well (mm)', error: null, readOnly: true, - type: 'number', - value: 118, + type: 'text', + value: '-8', }, {} ) diff --git a/app/src/organisms/ODD/QuickTransferFlow/__tests__/VolumeEntry.test.tsx b/app/src/organisms/ODD/QuickTransferFlow/__tests__/VolumeEntry.test.tsx index e96ea2515cd..d6fa82ec5e1 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/__tests__/VolumeEntry.test.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/__tests__/VolumeEntry.test.tsx @@ -161,7 +161,7 @@ describe('VolumeEntry', () => { expect(vi.mocked(InputField)).toHaveBeenCalledWith( { title: 'Aspirate volume per well (µL)', - error: 'Value must be between 5-50', + error: 'Value must be between 5 to 50', readOnly: true, type: 'text', value: '90', diff --git a/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts b/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts index 517e0aabb0d..a2150fd22e8 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts +++ b/app/src/organisms/ODD/QuickTransferFlow/utils/generateQuickTransferArgs.ts @@ -4,7 +4,6 @@ import { orderWells, getAllDefinitions, getLabwareDefURI, - getWellsDepth, getTipTypeFromTipRackDefinition, TRASH_BIN_ADAPTER_FIXTURE, WASTE_CHUTE_FIXTURES, @@ -322,6 +321,12 @@ export function generateQuickTransferArgs( if (pipetteEntity.spec.channels === 96) { nozzles = 'ALL' as NozzleConfigurationStyle } + const touchTipAfterDispenseOffsetMmFromTop = + quickTransferState.touchTipDispense ?? DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + + const touchTipAfterAspirateOffsetMmFromTop = + quickTransferState.touchTipAspirate ?? DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + const commonFields = { pipette: pipetteEntity.id, volume: quickTransferState.volume, @@ -355,19 +360,9 @@ export function generateQuickTransferArgs( aspirateAirGapVolume: quickTransferState.airGapAspirate ?? null, dispenseAirGapVolume: quickTransferState.airGapDispense ?? null, touchTipAfterAspirate: quickTransferState.touchTipAspirate != null, - touchTipAfterAspirateOffsetMmFromBottom: - quickTransferState.touchTipAspirate ?? - getWellsDepth(quickTransferState.source, sourceWells) + - DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP, + touchTipAfterAspirateOffsetMmFromTop, touchTipAfterDispense: quickTransferState.touchTipDispense != null, - touchTipAfterDispenseOffsetMmFromBottom: - quickTransferState.touchTipDispense ?? - getWellsDepth( - quickTransferState.destination === 'source' - ? quickTransferState.source - : quickTransferState.destination, - destWells - ) + DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP, + touchTipAfterDispenseOffsetMmFromTop, dropTipLocation, aspirateXOffset: 0, aspirateYOffset: 0, diff --git a/components/src/hardware-sim/DeckConfigurator/FlexStackerFixture.tsx b/components/src/hardware-sim/DeckConfigurator/FlexStackerFixture.tsx new file mode 100644 index 00000000000..55866fe1c8d --- /dev/null +++ b/components/src/hardware-sim/DeckConfigurator/FlexStackerFixture.tsx @@ -0,0 +1,96 @@ +import { Icon } from '../../icons' +import { Btn, Text } from '../../primitives' +import { TYPOGRAPHY } from '../../ui-style-constants' +import { COLORS } from '../../helix-design-system' +import { RobotCoordsForeignObject } from '../Deck/RobotCoordsForeignObject' +import { + COLUMN_3_X_ADJUSTMENT, + CONFIG_STYLE_EDITABLE, + CONFIG_STYLE_READ_ONLY, + FIXTURE_HEIGHT, + STAGING_AREA_FIXTURE_WIDTH, + Y_ADJUSTMENT, + CONFIG_STYLE_SELECTED, +} from './constants' + +import type { + CutoutFixtureId, + CutoutId, + DeckDefinition, +} from '@opentrons/shared-data' + +interface FlexStackerFixtureProps { + deckDefinition: DeckDefinition + fixtureLocation: CutoutId + cutoutFixtureId: CutoutFixtureId + hasWasteChute: boolean + handleClickRemove?: ( + fixtureLocation: CutoutId, + cutoutFixtureId: CutoutFixtureId + ) => void + selected?: boolean +} + +const FLEX_STACKER_FIXTURE_DISPLAY_NAME = 'Stacker' +const FLEX_STACKER_WASTE_CHUTE_DISPLAY_NAME = 'Stacker + Waste chute' + +export function FlexStackerFixture( + props: FlexStackerFixtureProps +): JSX.Element { + const { + deckDefinition, + handleClickRemove, + fixtureLocation, + cutoutFixtureId, + hasWasteChute, + selected = false, + } = props + + const cutoutDef = deckDefinition.locations.cutouts.find( + cutout => cutout.id === fixtureLocation + ) + + /** + * deck definition cutout position is the position of the single slot located within that cutout + * so, to get the position of the cutout itself we must add an adjustment to the slot position + * the adjustment for x is different for right side/left side + */ + const [xSlotPosition = 0, ySlotPosition = 0] = cutoutDef?.position ?? [] + + const x = xSlotPosition + COLUMN_3_X_ADJUSTMENT + + const y = ySlotPosition + Y_ADJUSTMENT + + const editableStyle = selected ? CONFIG_STYLE_SELECTED : CONFIG_STYLE_EDITABLE + return ( + + { + handleClickRemove(fixtureLocation, cutoutFixtureId) + } + : () => {} + } + > + + {hasWasteChute + ? FLEX_STACKER_WASTE_CHUTE_DISPLAY_NAME + : FLEX_STACKER_FIXTURE_DISPLAY_NAME} + + {handleClickRemove != null ? ( + + ) : null} + + + ) +} diff --git a/components/src/hardware-sim/DeckConfigurator/index.tsx b/components/src/hardware-sim/DeckConfigurator/index.tsx index 4a90a182cee..27a6ff46886 100644 --- a/components/src/hardware-sim/DeckConfigurator/index.tsx +++ b/components/src/hardware-sim/DeckConfigurator/index.tsx @@ -11,6 +11,8 @@ import { TEMPERATURE_MODULE_V2_FIXTURE, MAGNETIC_BLOCK_V1_FIXTURE, ABSORBANCE_READER_V1_FIXTURE, + FLEX_STACKER_V1_FIXTURE, + FLEX_STACKER_FIXTURES, STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, THERMOCYCLER_MODULE_CUTOUTS, } from '@opentrons/shared-data' @@ -24,6 +26,12 @@ import { StagingAreaConfigFixture } from './StagingAreaConfigFixture' import { TrashBinConfigFixture } from './TrashBinConfigFixture' import { WasteChuteConfigFixture } from './WasteChuteConfigFixture' import { StaticFixture } from './StaticFixture' +import { TemperatureModuleFixture } from './TemperatureModuleFixture' +import { HeaterShakerFixture } from './HeaterShakerFixture' +import { MagneticBlockFixture } from './MagneticBlockFixture' +import { ThermocyclerFixture } from './ThermocyclerFixture' +import { AbsorbanceReaderFixture } from './AbsorbanceReaderFixture' +import { FlexStackerFixture } from './FlexStackerFixture' import type { ReactNode } from 'react' import type { @@ -31,11 +39,6 @@ import type { CutoutId, DeckConfiguration, } from '@opentrons/shared-data' -import { TemperatureModuleFixture } from './TemperatureModuleFixture' -import { HeaterShakerFixture } from './HeaterShakerFixture' -import { MagneticBlockFixture } from './MagneticBlockFixture' -import { ThermocyclerFixture } from './ThermocyclerFixture' -import { AbsorbanceReaderFixture } from './AbsorbanceReaderFixture' export * from './constants' @@ -116,6 +119,9 @@ export function DeckConfigurator(props: DeckConfiguratorProps): JSX.Element { ({ cutoutFixtureId }) => cutoutFixtureId === STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE ) + const flexStackerFixtures = deckConfig.filter(({ cutoutFixtureId }) => + FLEX_STACKER_FIXTURES.includes(cutoutFixtureId) + ) return ( ))} + {flexStackerFixtures.map(({ cutoutId, cutoutFixtureId }) => ( + + ))} {additionalStaticFixtures?.map(staticFixture => ( { const testCases: MigrateTestCase[] = [ { - title: 'example_1_1_0 (schema 1, PD version 1.1.1) -> PD 8.2.x, schema 8', + title: 'example_1_1_0 (schema 1, PD version 1.1.1) -> PD 8.5.x, schema 8', importTestFile: TestFilePath.Example_1_1_0, expectedTestFile: TestFilePath.Example_1_1_0V8, unusedHardware: true, migrationModal: 'newLabwareDefs', }, { - title: 'doItAllV3 (schema 3, PD version 4.0.0) -> PD 8.2.x, schema 8', + title: 'doItAllV3 (schema 3, PD version 4.0.0) -> PD 8.5.x, schema 8', importTestFile: TestFilePath.DoItAllV3V4, expectedTestFile: TestFilePath.DoItAllV3MigratedToV8, unusedHardware: false, migrationModal: 'v8.1', }, { - title: 'doItAllV4 (schema 4, PD version 4.0.0) -> PD 8.2.x, schema 8', + title: 'doItAllV4 (schema 4, PD version 4.0.0) -> PD 8.5.x, schema 8', importTestFile: TestFilePath.DoItAllV4V4, expectedTestFile: TestFilePath.DoItAllV4MigratedToV8, unusedHardware: false, @@ -33,7 +33,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { }, { title: - 'doItAllv7MigratedToV8 (schema 7, PD version 8.0.0) -> should migrate to 8.2.x, schema 8', + 'doItAllv7MigratedToV8 (schema 7, PD version 8.0.0) -> should migrate to 8.5.x, schema 8', importTestFile: TestFilePath.DoItAllV7, expectedTestFile: TestFilePath.DoItAllV7MigratedToV8, unusedHardware: false, @@ -41,7 +41,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { }, { title: - '96-channel full and column schema 8 -> should migrate to 8.2.x, schema 8', + '96-channel full and column schema 8 -> should migrate to 8.5.x, schema 8', importTestFile: TestFilePath.NinetySixChannelFullAndColumn, expectedTestFile: TestFilePath.NinetySixChannelFullAndColumn, unusedHardware: false, @@ -49,7 +49,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { }, { title: - 'doItAllV8 flex robot -> reimported, should migrate to 8.2.x, schema 8', + 'doItAllV8 flex robot -> reimported, should migrate to 8.5.x, schema 8', importTestFile: TestFilePath.DoItAllV8, expectedTestFile: TestFilePath.DoItAllV8, unusedHardware: false, @@ -57,7 +57,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { }, { title: - 'new advanced settings with multi temp => reimported, should not migrate and stay at 8.2.x, schema 8', + 'new advanced settings with multi temp => reimported, should not migrate and stay at 8.5.x, schema 8', importTestFile: TestFilePath.NewAdvancedSettingsAndMultiTemp, expectedTestFile: TestFilePath.NewAdvancedSettingsAndMultiTemp, unusedHardware: false, @@ -65,7 +65,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { }, { title: - 'thermocycler on Ot2 (schema 7, PD version 7.0.0) -> should migrate to 8.2.x, schema 8', + 'thermocycler on Ot2 (schema 7, PD version 7.0.0) -> should migrate to 8.5.x, schema 8', importTestFile: TestFilePath.ThermocyclerOnOt2V7, expectedTestFile: TestFilePath.ThermocyclerOnOt2V7MigratedToV8, migrationModal: 'v8.1', diff --git a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json index 0a88ef75afc..e4419499678 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json @@ -6,16 +6,16 @@ "author": "Fixture", "description": "Test all v3 commands", "created": 1585930833548, - "lastModified": 1731344391861, + "lastModified": 1738157114365, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 16:56:05 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_96_tiprack_300ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "Water", @@ -38,22 +41,86 @@ }, "ingredLocations": { "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { - "A1": { "0": { "volume": 100 } }, - "B1": { "0": { "volume": 100 } }, - "C1": { "0": { "volume": 100 } }, - "D1": { "0": { "volume": 100 } }, - "E1": { "0": { "volume": 100 } }, - "F1": { "0": { "volume": 100 } }, - "G1": { "0": { "volume": 100 } }, - "H1": { "0": { "volume": 100 } }, - "A2": { "0": { "volume": 100 } }, - "B2": { "0": { "volume": 100 } }, - "C2": { "0": { "volume": 100 } }, - "D2": { "0": { "volume": 100 } }, - "E2": { "0": { "volume": 100 } }, - "F2": { "0": { "volume": 100 } }, - "G2": { "0": { "volume": 100 } }, - "H2": { "0": { "volume": 100 } } + "A1": { + "0": { + "volume": 100 + } + }, + "B1": { + "0": { + "volume": 100 + } + }, + "C1": { + "0": { + "volume": 100 + } + }, + "D1": { + "0": { + "volume": 100 + } + }, + "E1": { + "0": { + "volume": 100 + } + }, + "F1": { + "0": { + "volume": 100 + } + }, + "G1": { + "0": { + "volume": 100 + } + }, + "H1": { + "0": { + "volume": 100 + } + }, + "A2": { + "0": { + "volume": 100 + } + }, + "B2": { + "0": { + "volume": 100 + } + }, + "C2": { + "0": { + "volume": 100 + } + }, + "D2": { + "0": { + "volume": 100 + } + }, + "E2": { + "0": { + "volume": 100 + } + }, + "F2": { + "0": { + "volume": 100 + } + }, + "G2": { + "0": { + "volume": 100 + } + }, + "H2": { + "0": { + "volume": 100 + } + } } }, "savedStepForms": { @@ -83,7 +150,7 @@ "aspirate_mix_volume": "30", "aspirate_mmFromBottom": 1, "aspirate_touchTip_checkbox": true, - "aspirate_touchTip_mmFromBottom": 12.8, + "aspirate_touchTip_mmFromTop": -2, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -92,7 +159,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "cf94212f-07b9-4b05-b4ca-46e050bcd74f:trashBin", + "blowout_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -107,7 +174,7 @@ "dispense_mix_volume": null, "dispense_mmFromBottom": 0.5, "dispense_touchTip_checkbox": true, - "dispense_touchTip_mmFromBottom": 40, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "t2b", "dispense_wellOrder_second": "l2r", "dispense_wells": ["A1", "A2"], @@ -115,17 +182,18 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "dropTip_location": "cf94212f-07b9-4b05-b4ca-46e050bcd74f:trashBin", + "dropTip_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", "nozzles": null, "path": "multiDispense", "pipette": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "preWetTip": false, "tipRack": "opentrons/opentrons_96_tiprack_300ul/1", "volume": "40", - "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", + "dispense_touchTip_mmfromTop": -2 }, "54dc3200-75c7-11ea-b42f-4b64e50f43e5": { "moduleId": null, @@ -155,17 +223,17 @@ "aspirate_flowRate": 40, "blowout_checkbox": true, "blowout_flowRate": 46.43, - "blowout_location": "cf94212f-07b9-4b05-b4ca-46e050bcd74f:trashBin", + "blowout_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": 35, - "dropTip_location": "cf94212f-07b9-4b05-b4ca-46e050bcd74f:trashBin", + "dropTip_location": "64e49cf0-e3d6-4da3-966f-a3da759c57b8:trashBin", "labware": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": true, - "mix_touchTip_mmFromBottom": 11.8, + "mix_touchTip_mmFromTop": -3, "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", "mix_x_position": 0, @@ -176,10 +244,10 @@ "tipRack": "opentrons/opentrons_96_tiprack_300ul/1", "volume": "35", "wells": ["D2", "E2"], - "id": "a4cee9a0-75dc-11ea-b42f-4b64e50f43e5", "stepType": "mix", "stepName": "mix", - "stepDetails": "" + "stepDetails": "", + "id": "a4cee9a0-75dc-11ea-b42f-4b64e50f43e5" } }, "orderedStepIds": [ @@ -190,7 +258,10 @@ ] } }, - "robot": { "model": "OT-2 Standard", "deckId": "ot2_standard" }, + "robot": { + "model": "OT-2 Standard", + "deckId": "ot2_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_96_tiprack_300ul/1": { @@ -1206,7 +1277,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { "ordering": [ @@ -2107,7 +2182,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2218,7 +2295,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1": { "ordering": [ @@ -2507,10 +2588,18 @@ "displayCategory": "tubeRack", "wellBottomShape": "v" }, - "brand": { "brand": "generic", "brandId": [], "links": [] } + "brand": { + "brand": "generic", + "brandId": [], + "links": [] + } } ], - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } } }, "liquidSchemaId": "opentronsLiquidSchemaV1", @@ -2524,7 +2613,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "5eb673b3-81d8-47d4-8e0e-b4b82ada5a02", + "key": "3bed79e7-58b0-44f7-b69b-f6bbfca92050", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2533,7 +2622,7 @@ } }, { - "key": "949b68b3-c096-4156-9de2-b6df007cda2b", + "key": "4dde1dc9-5acc-472b-a31c-bde389335fa6", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2541,11 +2630,13 @@ "loadName": "opentrons_96_tiprack_300ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "2" } + "location": { + "slotName": "2" + } } }, { - "key": "936d0aa1-6614-4e02-9933-4daa17392d65", + "key": "224b643f-b209-4d3f-99c4-c277ea89bc8f", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2553,11 +2644,13 @@ "loadName": "nest_96_wellplate_100ul_pcr_full_skirt", "namespace": "opentrons", "version": 1, - "location": { "slotName": "1" } + "location": { + "slotName": "1" + } } }, { - "key": "9ef29387-29f5-43b7-b937-152a5bbfbd1e", + "key": "a4e63613-8f60-4bc7-bb1e-112564d35720", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2565,12 +2658,14 @@ "loadName": "opentrons_24_aluminumblock_generic_2ml_screwcap", "namespace": "opentrons", "version": 1, - "location": { "slotName": "3" } + "location": { + "slotName": "3" + } } }, { "commandType": "loadLiquid", - "key": "7884529a-98d0-4a6c-9f84-9e1fe1a4c253", + "key": "c820e00d-268f-4d4c-86ee-cdd27b529efc", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2596,12 +2691,15 @@ }, { "commandType": "waitForDuration", - "key": "dadad2c0-9c65-47ba-9b2c-5dd1cb651e5f", - "params": { "seconds": 62, "message": "" } + "key": "243817c3-d196-48ca-b644-2869c8831be8", + "params": { + "seconds": 62, + "message": "" + } }, { "commandType": "pickUpTip", - "key": "78595527-1473-4a0d-80e2-be6e91859074", + "key": "d9a2045f-f90d-4f38-9853-48ccee28ae19", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2610,7 +2708,7 @@ }, { "commandType": "aspirate", - "key": "ce5acab8-32aa-4355-a605-cd36b5877fad", + "key": "cd570d0a-52d3-4c05-be48-951c0c697a70", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2618,14 +2716,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "dispense", - "key": "967e6205-440a-4f35-ab90-4709ec40cf3c", + "key": "1324b2c8-7000-4eb5-bb99-8044e5d2d4a1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2633,14 +2735,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "aspirate", - "key": "5328590a-1106-4096-95eb-d7ed053e9b91", + "key": "d6fc2391-2fce-4757-841e-b812a0ca7cbd", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2648,14 +2754,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "dispense", - "key": "0464cec1-e2ab-4ce2-bdcf-0a61c37b5fa7", + "key": "0e182daa-bba3-4709-94a2-c09cadf77049", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2663,14 +2773,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "aspirate", - "key": "c74e5096-a002-4075-b537-b4e63f528f78", + "key": "8e66053b-fea4-4ac1-9509-23dd7371678b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 100, @@ -2678,24 +2792,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "touchTip", - "key": "920f458d-9756-49dd-b8a3-4bf5e5a3ce01", + "key": "39c918f8-615c-4a0d-99b7-d5439942ced3", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 12.8 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -2 + } + } } }, { "commandType": "dispense", - "key": "39c46730-e185-4195-8d92-17303a29787b", + "key": "5f583194-0869-4fc9-93f7-bc07580ff7ba", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2703,24 +2826,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "touchTip", - "key": "257bbcbf-2505-421a-abc2-49d9b73826d7", + "key": "670e4b7e-c246-4fba-8f76-490d0064f8e7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 40 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "dispense", - "key": "81ed30f9-92c0-47b7-b15d-11208eb1230d", + "key": "40cfe456-331b-43d8-bee0-1806d93b45a2", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2728,33 +2860,46 @@ "wellName": "A2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "touchTip", - "key": "88126279-08ad-447f-813f-0a89dcb3be86", + "key": "b8335845-cabd-4af1-ab1b-1379c7bcd62b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", "wellName": "A2", - "wellLocation": { "origin": "bottom", "offset": { "z": 40 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableArea", - "key": "408d599b-be52-4932-9fe4-63375c09a069", + "key": "c1d8d6b9-1a62-456f-8ca5-c4f21b3af4f3", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "603b2c89-46d9-4b9e-8f3f-4e91fdf9172f", + "key": "8352e715-668b-4f80-aa35-0d2776137243", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -2762,27 +2907,35 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "bc74c9ab-603d-4d40-9ebc-ffd374f18d00", + "key": "79c8d331-5c79-4f03-b8c5-4dc4b3315546", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "2f769f1e-fee9-430d-85d6-9fdf9719617a", - "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } + "key": "52ee7e0d-ccb4-4e1e-b706-0ee8f9037bcb", + "params": { + "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" + } }, { "commandType": "waitForResume", - "key": "a687a278-9cf7-4c4e-b716-2404315839ac", - "params": { "message": "Wait until user intervention" } + "key": "add4e276-fc31-4b72-a3c5-612506159a10", + "params": { + "message": "Wait until user intervention" + } }, { "commandType": "pickUpTip", - "key": "5ee67b7f-5569-4ea6-b5db-d97aa36bd2c8", + "key": "c3ced120-cd18-4abf-9e89-0cacea5a5da6", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2791,7 +2944,7 @@ }, { "commandType": "aspirate", - "key": "047cab23-b0e7-44cd-b911-69c08da2d1c8", + "key": "cc110c4c-0d07-4373-919a-7941b288a0f8", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2799,14 +2952,18 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "63af555a-236f-41c4-9b4b-971bed565100", + "key": "61d7a6ed-1fb7-4c5f-b8c0-b8a02385a9a5", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2814,14 +2971,18 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "aspirate", - "key": "fb3397df-bc10-4d00-9543-9f18f5c420ca", + "key": "1e1174dd-f3e9-446a-9e3d-46c68958487d", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2829,14 +2990,18 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "ef73d9c8-9503-445d-ba42-4a4b6bbbd6b1", + "key": "fc92a66c-c81d-4645-9761-17b82eace5ca", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2844,14 +3009,18 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "aspirate", - "key": "5b3cf83d-19a3-4b4e-8d5d-dd2d49a8a6f9", + "key": "d5ae7a38-aa11-47ea-a3a9-72dcc81bbed3", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2859,14 +3028,18 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "e152f451-c373-4d50-bd55-aaa8f02e63d4", + "key": "96411ac4-fe34-4d79-8197-69be37727d22", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2874,23 +3047,31 @@ "wellName": "D2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "moveToAddressableArea", - "key": "aacc7b9e-a3d5-4bb2-8574-4bbf8e7756b7", + "key": "2c6a94b7-ded9-4613-8440-07d61d1aeab9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "fc296c88-76b7-4d1a-bc5d-7af1d2c9ce76", + "key": "388ff506-8805-43c4-a28d-fdb1d71af2d6", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -2898,32 +3079,43 @@ }, { "commandType": "touchTip", - "key": "4e54d749-d1ec-47ba-ac06-dcb65f367313", + "key": "e5af286f-12fb-4f6a-9ce9-fdc4a2e630df", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "wellName": "D2", - "wellLocation": { "origin": "bottom", "offset": { "z": 11.8 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -3 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "cd0533d0-57d6-4f0d-a47a-c8c97deb4a99", + "key": "e2e64d0a-98f7-44b2-a30e-55f947ce383b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "ef18ea90-aba0-40e6-87cb-015905b606c7", - "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } + "key": "c66dab4c-5675-468f-a202-be5136e26d97", + "params": { + "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" + } }, { "commandType": "pickUpTip", - "key": "020e8352-eadd-4459-b4e7-00454434ff6a", + "key": "9b0ee879-5d40-44b4-b8d6-7de4dc308448", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2932,7 +3124,7 @@ }, { "commandType": "aspirate", - "key": "eb848013-b7ab-4811-bf9e-75d5206cd5ce", + "key": "59c5aff6-b946-4846-84a3-68701edbd869", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2940,14 +3132,18 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "3cd94443-6c0f-41bb-a656-07f2ed850206", + "key": "4b1e2446-55b0-4503-8528-c446066b8f95", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2955,14 +3151,18 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "aspirate", - "key": "f0c8d35c-86a0-4dc4-9f04-008d2ce1a133", + "key": "1454a903-58ab-401b-ba6e-682ee6144051", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2970,14 +3170,18 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "7b0ee80d-6f37-40f4-9932-e5f69f8e7d30", + "key": "b0f636be-6cce-4d2d-8526-51c80ed8fbe1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2985,14 +3189,18 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "aspirate", - "key": "e1bdbe8c-4ead-4589-af6e-a9aa97b7ef3a", + "key": "c2ad1175-0a40-4982-9fa9-1354744ca6d4", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3000,14 +3208,18 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 40 } }, { "commandType": "dispense", - "key": "e260db00-2659-476c-a240-d59dfcf63198", + "key": "d1147be5-d627-48ca-97a9-c92e643b313a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3015,23 +3227,31 @@ "wellName": "E2", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "moveToAddressableArea", - "key": "2eb6a735-e90c-4c38-b435-18048595ee2f", + "key": "563170a0-0e79-4992-8f1c-830653392ef7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "bb7ac475-5836-4ea7-9aed-c8f3eec59291", + "key": "40f0e993-5b4b-4d9e-b9df-a7ef8a3bdf9b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -3039,28 +3259,39 @@ }, { "commandType": "touchTip", - "key": "b0e8d063-8491-4eea-bdef-f34e7fcf14a8", + "key": "19a60b57-c610-4df1-88a2-5259038b3687", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "wellName": "E2", - "wellLocation": { "origin": "bottom", "offset": { "z": 11.8 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -3 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "256ba868-f582-43b9-867a-5ff91012b1ab", + "key": "f703c506-0bf4-4736-9790-7eab435672ae", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "8d34a054-235a-4918-9788-75e50b5e2e81", - "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } + "key": "49ded239-d74e-4a3f-944d-0b307cfa3de1", + "params": { + "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" + } } ], "commandAnnotationSchemaId": "opentronsCommandAnnotationSchemaV1", diff --git a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json index bf503ff3219..15032ca53cd 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json @@ -6,16 +6,16 @@ "author": "Fixture", "description": "Test all v4 commands", "created": 1585930833548, - "lastModified": 1731344437355, + "lastModified": 1738157148111, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 16:56:05 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_96_tiprack_300ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "Water", @@ -38,22 +41,86 @@ }, "ingredLocations": { "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { - "A1": { "0": { "volume": 100 } }, - "B1": { "0": { "volume": 100 } }, - "C1": { "0": { "volume": 100 } }, - "D1": { "0": { "volume": 100 } }, - "E1": { "0": { "volume": 100 } }, - "F1": { "0": { "volume": 100 } }, - "G1": { "0": { "volume": 100 } }, - "H1": { "0": { "volume": 100 } }, - "A2": { "0": { "volume": 100 } }, - "B2": { "0": { "volume": 100 } }, - "C2": { "0": { "volume": 100 } }, - "D2": { "0": { "volume": 100 } }, - "E2": { "0": { "volume": 100 } }, - "F2": { "0": { "volume": 100 } }, - "G2": { "0": { "volume": 100 } }, - "H2": { "0": { "volume": 100 } } + "A1": { + "0": { + "volume": 100 + } + }, + "B1": { + "0": { + "volume": 100 + } + }, + "C1": { + "0": { + "volume": 100 + } + }, + "D1": { + "0": { + "volume": 100 + } + }, + "E1": { + "0": { + "volume": 100 + } + }, + "F1": { + "0": { + "volume": 100 + } + }, + "G1": { + "0": { + "volume": 100 + } + }, + "H1": { + "0": { + "volume": 100 + } + }, + "A2": { + "0": { + "volume": 100 + } + }, + "B2": { + "0": { + "volume": 100 + } + }, + "C2": { + "0": { + "volume": 100 + } + }, + "D2": { + "0": { + "volume": 100 + } + }, + "E2": { + "0": { + "volume": 100 + } + }, + "F2": { + "0": { + "volume": 100 + } + }, + "G2": { + "0": { + "volume": 100 + } + }, + "H2": { + "0": { + "volume": 100 + } + } } }, "savedStepForms": { @@ -115,7 +182,7 @@ "aspirate_mix_volume": null, "aspirate_mmFromBottom": 1, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -124,7 +191,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "167531be-c08f-48d1-94d1-f71903140c6d:trashBin", + "blowout_location": "9bf036e9-ccfd-4732-80bc-d366731ce6d1:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -139,7 +206,7 @@ "dispense_mix_volume": null, "dispense_mmFromBottom": 0.5, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "t2b", "dispense_wellOrder_second": "l2r", "dispense_wells": ["A1"], @@ -147,17 +214,18 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "dropTip_location": "167531be-c08f-48d1-94d1-f71903140c6d:trashBin", + "dropTip_location": "9bf036e9-ccfd-4732-80bc-d366731ce6d1:trashBin", "nozzles": null, "path": "single", "pipette": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "preWetTip": false, "tipRack": "opentrons/opentrons_96_tiprack_300ul/1", "volume": "30", - "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", + "dispense_touchTip_mmfromTop": null }, "4f4057e0-75c7-11ea-b42f-4b64e50f43e5": { "engageHeight": "6", @@ -212,7 +280,10 @@ ] } }, - "robot": { "model": "OT-2 Standard", "deckId": "ot2_standard" }, + "robot": { + "model": "OT-2 Standard", + "deckId": "ot2_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_96_tiprack_300ul/1": { @@ -1228,7 +1299,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1": { "ordering": [ @@ -2129,7 +2204,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2240,7 +2317,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1": { "ordering": [ @@ -2529,10 +2610,18 @@ "displayCategory": "tubeRack", "wellBottomShape": "v" }, - "brand": { "brand": "generic", "brandId": [], "links": [] } + "brand": { + "brand": "generic", + "brandId": [], + "links": [] + } } ], - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } } }, "liquidSchemaId": "opentronsLiquidSchemaV1", @@ -2546,7 +2635,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "9dc2bc3a-d168-4d1d-b0fd-d245d40ec098", + "key": "8f11bef2-009b-4a4d-99f3-7c710ada996b", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2555,25 +2644,29 @@ } }, { - "key": "b82bae59-895e-4bd7-b99a-6cc71194ee8b", + "key": "9a510ad2-a606-4227-86e5-14635f3ec519", "commandType": "loadModule", "params": { "model": "magneticModuleV2", - "location": { "slotName": "1" }, + "location": { + "slotName": "1" + }, "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType" } }, { - "key": "60abede1-fbec-4bf1-8391-aea766f2a47f", + "key": "c98334f7-8f68-4f0b-9ff3-d98a85764e19", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", - "location": { "slotName": "3" }, + "location": { + "slotName": "3" + }, "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType" } }, { - "key": "60e77a8c-b589-4c8d-beee-0c523990ea16", + "key": "692d8775-0de4-472c-9e1a-0a7458e6c080", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2581,11 +2674,13 @@ "loadName": "opentrons_96_tiprack_300ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "2" } + "location": { + "slotName": "2" + } } }, { - "key": "c9e0ed1a-393a-4e24-9c38-09dbd077b1f4", + "key": "2f354149-0585-4fe6-ac4d-571e5d020f9a", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2599,7 +2694,7 @@ } }, { - "key": "3ece81f9-ab9e-45e2-983b-313f4590d1de", + "key": "e873508f-7a6b-472a-88cc-4d83a0d9d303", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2614,7 +2709,7 @@ }, { "commandType": "loadLiquid", - "key": "75a3d767-5bd8-4e53-bb21-c4ebf5fd5fa4", + "key": "0a0b8038-bf92-4829-9d3b-cd6e950aafd1", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2640,7 +2735,7 @@ }, { "commandType": "magneticModule/engage", - "key": "59f8a733-9ff9-48e9-8d96-f9eda394b2d6", + "key": "7d74d316-4910-4827-836e-bb211eb6f9f0", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType", "height": 6 @@ -2648,7 +2743,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "14f776bf-8090-44bd-a5a7-6a9dc5de83e4", + "key": "200de5f5-905a-4ea8-b48f-95b748597b56", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2656,12 +2751,15 @@ }, { "commandType": "waitForDuration", - "key": "89c7051a-2e03-4540-aa68-230b4aa2fa73", - "params": { "seconds": 62, "message": "" } + "key": "93982f84-7c02-4609-aac0-916c85341221", + "params": { + "seconds": 62, + "message": "" + } }, { "commandType": "pickUpTip", - "key": "f93df8a3-60cf-4757-9f84-1919a4c08ad8", + "key": "8336f57c-7e0d-41a7-b4a7-d76b6436c073", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2670,7 +2768,7 @@ }, { "commandType": "aspirate", - "key": "06deecf7-7e2e-4634-b421-ac4aa34f7dd6", + "key": "c7ada14a-1730-4237-9a6a-b9c9659cc70a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2678,14 +2776,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "dispense", - "key": "19ea41bb-b586-4890-9066-c1b52bb36b1c", + "key": "cb1db2cb-2901-4fac-9953-84227b284de9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2693,29 +2795,39 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "024b2758-3aeb-43c0-83ed-31968d312eb3", + "key": "3b131455-38d8-4657-a72a-154e3e2e79c9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "eff8e3c5-29cc-45d2-a9fa-9e387f8c47e4", - "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } + "key": "7fbc3b35-82c0-4db1-83ba-f079d1b6f8a7", + "params": { + "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" + } }, { "commandType": "pickUpTip", - "key": "d88115a0-7736-45d1-9d06-c0ea94f11635", + "key": "8facdb58-99b9-4838-8276-7c0e834ec587", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2724,7 +2836,7 @@ }, { "commandType": "aspirate", - "key": "6144ee81-8b1d-4cef-a35a-7b213d3b8a8c", + "key": "3284fa14-23dd-40c2-8e93-74ccd0ebb309", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2732,14 +2844,18 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "dispense", - "key": "da3aaaa3-1e5d-4492-8763-97b696119450", + "key": "f713e4a5-f9f0-4814-8856-c606f88d26e1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2747,29 +2863,39 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 46.43 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "2168d24b-a738-4505-925e-8285ae6ac620", + "key": "b05b8e43-b996-49d3-b5fe-0197a66783e9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "91da0a46-1eed-4bbc-a428-c9bd9e8ca8c4", - "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } + "key": "dc46cc37-9c1b-4da3-b8fc-60fff04b758c", + "params": { + "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" + } }, { "commandType": "temperatureModule/waitForTemperature", - "key": "b3bf1b53-015d-4141-b5b9-a03a265d9991", + "key": "d71653aa-0905-4d08-aa6c-661389fee829", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2777,15 +2903,17 @@ }, { "commandType": "magneticModule/disengage", - "key": "94500510-1a75-425a-a6c4-2a89c9ed1b50", + "key": "a156c1ba-2508-46b5-8318-f735bb8b42bb", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType" } }, { "commandType": "waitForResume", - "key": "993f2eaf-7348-4a29-be1c-61612a353639", - "params": { "message": "Wait until user intervention" } + "key": "c53a9aa2-c092-45d5-b427-2f2c6c7c9b8b", + "params": { + "message": "Wait until user intervention" + } } ], "commandAnnotationSchemaId": "opentronsCommandAnnotationSchemaV1", diff --git a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json index 4ba403c4590..1434bdfd45e 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json @@ -6,16 +6,16 @@ "author": "", "description": "", "created": 1689346890165, - "lastModified": 1731344479074, + "lastModified": 1738157178084, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 16:56:05 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -30,7 +30,10 @@ "opentrons/opentrons_flex_96_filtertiprack_50ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "Water", @@ -49,17 +52,53 @@ }, "ingredLocations": { "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { - "A1": { "0": { "volume": 100 } }, - "B1": { "0": { "volume": 100 } }, - "C1": { "0": { "volume": 100 } }, - "D1": { "0": { "volume": 100 } }, - "E1": { "0": { "volume": 100 } }, - "F1": { "0": { "volume": 100 } }, - "G1": { "0": { "volume": 100 } }, - "H1": { "0": { "volume": 100 } } + "A1": { + "0": { + "volume": 100 + } + }, + "B1": { + "0": { + "volume": 100 + } + }, + "C1": { + "0": { + "volume": 100 + } + }, + "D1": { + "0": { + "volume": 100 + } + }, + "E1": { + "0": { + "volume": 100 + } + }, + "F1": { + "0": { + "volume": 100 + } + }, + "G1": { + "0": { + "volume": 100 + } + }, + "H1": { + "0": { + "volume": 100 + } + } }, "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1": { - "A1": { "1": { "volume": 1000 } } + "A1": { + "1": { + "volume": 1000 + } + } } }, "savedStepForms": { @@ -161,7 +200,7 @@ "aspirate_mix_volume": null, "aspirate_mmFromBottom": null, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -170,7 +209,7 @@ "aspirate_y_position": 0, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "d5e65ebb-318b-4c78-8fc8-770b1d6100dc:trashBin", + "blowout_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -185,7 +224,7 @@ "dispense_mix_volume": null, "dispense_mmFromBottom": null, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "t2b", "dispense_wellOrder_second": "l2r", "dispense_wells": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], @@ -193,17 +232,18 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "100", - "dropTip_location": "d5e65ebb-318b-4c78-8fc8-770b1d6100dc:trashBin", + "dropTip_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", "nozzles": null, "path": "single", "pipette": "2e7c6344-58ab-465c-b542-489883cb63fe", "preWetTip": false, "tipRack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "volume": "100", - "id": "f9a294f1-f42b-4cae-893a-592405349d56", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "f9a294f1-f42b-4cae-893a-592405349d56", + "dispense_touchTip_mmfromTop": null }, "5fdb9a12-fab4-42fd-886f-40af107b15d6": { "aspirate_delay_checkbox": false, @@ -211,17 +251,17 @@ "aspirate_flowRate": null, "blowout_checkbox": false, "blowout_flowRate": null, - "blowout_location": "d5e65ebb-318b-4c78-8fc8-770b1d6100dc:trashBin", + "blowout_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": null, - "dropTip_location": "d5e65ebb-318b-4c78-8fc8-770b1d6100dc:trashBin", + "dropTip_location": "ba8cacad-80e9-4cb8-b16e-12a5dc3669f0:trashBin", "labware": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": false, - "mix_touchTip_mmFromBottom": null, + "mix_touchTip_mmFromTop": null, "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", "mix_x_position": 0, @@ -232,10 +272,10 @@ "tipRack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "volume": "10", "wells": ["A1"], - "id": "5fdb9a12-fab4-42fd-886f-40af107b15d6", "stepType": "mix", "stepName": "mix", - "stepDetails": "" + "stepDetails": "", + "id": "5fdb9a12-fab4-42fd-886f-40af107b15d6" }, "3901f6f9-cecd-4d2a-8d85-40d85f9f8b4f": { "labware": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -360,7 +400,10 @@ ] } }, - "robot": { "model": "OT-3 Standard", "deckId": "ot3_standard" }, + "robot": { + "model": "OT-3 Standard", + "deckId": "ot3_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_flex_96_filtertiprack_50ul/1": { @@ -378,7 +421,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons Flex 96 Filter Tip Rack 50 µL", "displayCategory": "tipRack", @@ -1373,23 +1419,43 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_flex_96_tiprack_adapter": { "x": 0, "y": 0, "z": 121 } + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } } }, "opentrons/opentrons_96_flat_bottom_adapter/1": { "ordering": [], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter", "displayCategory": "adapter", "displayVolumeUnits": "µL", "tags": [] }, - "dimensions": { "xDimension": 111, "yDimension": 75, "zDimension": 7.9 }, + "dimensions": { + "xDimension": 111, + "yDimension": 75, + "zDimension": 7.9 + }, "wells": {}, - "groups": [{ "metadata": {}, "wells": [] }], + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], "parameters": { "format": "96Standard", "quirks": [], @@ -1401,7 +1467,11 @@ "version": 1, "schemaVersion": 2, "allowedRoles": ["adapter"], - "cornerOffsetFromSlot": { "x": 8.5, "y": 5.5, "z": 0 } + "cornerOffsetFromSlot": { + "x": 8.5, + "y": 5.5, + "z": 0 + } }, "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { "ordering": [ @@ -2304,7 +2374,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2415,13 +2487,29 @@ "namespace": "opentrons", "version": 2, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.2 }, - "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 12.66 } + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.2 + }, + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 12.66 + } }, "stackingOffsetWithModule": { - "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.8 } + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.8 + } } }, "opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1": { @@ -2719,7 +2807,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/nest_96_wellplate_200ul_flat/2": { "ordering": [ @@ -3624,7 +3716,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "flat" }, + "metadata": { + "wellBottomShape": "flat" + }, "wells": [ "A1", "B1", @@ -3734,10 +3828,22 @@ "namespace": "opentrons", "version": 2, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_flat_bottom_adapter": { "x": 0, "y": 0, "z": 6.7 }, - "opentrons_aluminum_flat_bottom_plate": { "x": 0, "y": 0, "z": 5.55 } + "opentrons_96_flat_bottom_adapter": { + "x": 0, + "y": 0, + "z": 6.7 + }, + "opentrons_aluminum_flat_bottom_plate": { + "x": 0, + "y": 0, + "z": 5.55 + } } } }, @@ -3757,7 +3863,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "887aee95-507e-4e12-befb-fca0df6acd5b", + "key": "086f94d9-065f-4c44-8006-caf80b83783c", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3766,7 +3872,7 @@ } }, { - "key": "ef8f7d50-4fb2-42fc-96b2-1b09825f5de3", + "key": "505163b8-41fd-4983-93a7-be71a7d6ae9c", "commandType": "loadPipette", "params": { "pipetteName": "p50_multi_flex", @@ -3775,43 +3881,51 @@ } }, { - "key": "29625abf-a695-48ad-ae3f-74a484e5ed9b", + "key": "aec18895-04b5-4fef-a696-77741e3aea42", "commandType": "loadModule", "params": { "model": "magneticBlockV1", - "location": { "slotName": "D2" }, + "location": { + "slotName": "D2" + }, "moduleId": "1be16305-74e7-4bdb-9737-61ec726d2b44:magneticBlockType" } }, { - "key": "1ac087ae-c74a-4817-878d-98bdf3db848a", + "key": "f36b8ebe-0c9b-41bc-a1c0-eb754f7648f2", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", - "location": { "slotName": "D1" }, + "location": { + "slotName": "D1" + }, "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { - "key": "92265fb4-87cf-4602-baf1-a1e42abf72b3", + "key": "8db7cf16-2bf4-404d-9112-08c448797f28", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", - "location": { "slotName": "D3" }, + "location": { + "slotName": "D3" + }, "moduleId": "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType" } }, { - "key": "8ad9c496-dc5a-46dc-aabe-51917185f007", + "key": "cfe53e87-ab1d-487a-b48c-d7ae8f82da0f", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", - "location": { "slotName": "B1" }, + "location": { + "slotName": "B1" + }, "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { - "key": "892a61fd-b3ba-44c8-8404-811992894b80", + "key": "625d5aa2-3b3e-4eea-8255-906705b30f56", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter", @@ -3825,7 +3939,7 @@ } }, { - "key": "1ac6ba82-46d4-416e-a8b0-11c0fecf9140", + "key": "01f439b9-bd14-4b2a-829a-04dc59532b28", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Filter Tip Rack 50 µL", @@ -3833,11 +3947,13 @@ "loadName": "opentrons_flex_96_filtertiprack_50ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "C1" } + "location": { + "slotName": "C1" + } } }, { - "key": "980857c6-a7d8-45e6-8288-7b046e10ac3e", + "key": "ce2c9a52-8e8c-4499-a9f4-28d875310ddc", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -3851,7 +3967,7 @@ } }, { - "key": "dbe0a5ac-1af4-4002-8abb-8f525d2ddb68", + "key": "8e919382-c46f-4715-8acc-3e89d9ad20da", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap", @@ -3865,7 +3981,7 @@ } }, { - "key": "9751e295-7340-4f63-bdb2-b906a2d7b533", + "key": "e3c83855-cea3-4c64-9a83-4569d7ec6c1c", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 200 µL Flat", @@ -3880,16 +3996,18 @@ }, { "commandType": "loadLiquid", - "key": "0af3791b-6921-4c06-a79d-227342db1d93", + "key": "4e2f124b-fdbd-4468-b13f-ff623614c7d5", "params": { "liquidId": "1", "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", - "volumeByWell": { "A1": 1000 } + "volumeByWell": { + "A1": 1000 + } } }, { "commandType": "loadLiquid", - "key": "08e9de43-643d-48bd-a9d9-2d5df8685ffd", + "key": "d1b5d49e-0c3a-4fcf-8908-d5683f62ef8d", "params": { "liquidId": "0", "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -3907,7 +4025,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "db0ef747-eb15-4392-a794-f0d1e4dbccda", + "key": "92fc9b4c-1952-447a-a6fa-d3f8c572f74c", "params": { "moduleId": "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType", "celsius": 4 @@ -3915,7 +4033,7 @@ }, { "commandType": "heaterShaker/waitForTemperature", - "key": "4aacf1f1-deeb-4b2a-9000-c0280faa4687", + "key": "a0a69251-318f-42df-953f-de79a0caf8c7", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "celsius": 4 @@ -3923,14 +4041,14 @@ }, { "commandType": "thermocycler/closeLid", - "key": "7c7d8790-6b8e-47f5-8fe4-8a752646bb48", + "key": "86747e7e-5adf-4739-8372-da00fd6081f0", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "3d4b0df9-e2db-4a47-9cb5-78965dfd53df", + "key": "2c00f180-7898-461e-a7a2-d087e92812bb", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "celsius": 40 @@ -3938,47 +4056,53 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "df7b47c3-4a1d-417e-8148-114eff720a7e", + "key": "64440fd5-a728-4ad3-b5ac-8f952d0f6a10", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/runProfile", - "key": "749ef412-772e-4df5-b9f5-6611d50b7a36", + "key": "b5b4ff79-43a7-4ff5-91a1-fdc9e481190a", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "profile": [ - { "holdSeconds": 60, "celsius": 4 }, - { "holdSeconds": 120, "celsius": 10 } + { + "holdSeconds": 60, + "celsius": 4 + }, + { + "holdSeconds": 120, + "celsius": 10 + } ], "blockMaxVolumeUl": 10 } }, { "commandType": "thermocycler/deactivateBlock", - "key": "8ad948e1-d18b-4f79-a8bf-1ab607656b36", + "key": "4105ee32-8759-4410-b87f-15d19fa555dd", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateLid", - "key": "69de8a1f-6790-4a4d-afe9-35b4c39068a1", + "key": "7b8c3e27-58d7-4385-a1e9-3e4353b6c837", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/openLid", - "key": "492b24b0-11c5-4bcb-9ae7-5eede69948a5", + "key": "155179f3-86a7-4588-ade0-7f68fe5f0254", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "pickUpTip", - "key": "48daaa83-b255-47e7-8153-3877b8e6f07e", + "key": "4460ed34-d392-47ec-acc1-be1b1193282e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -3987,7 +4111,7 @@ }, { "commandType": "aspirate", - "key": "270b0416-b790-4e2d-b1c1-8936d6208471", + "key": "5d23683a-9a8b-4e0f-a934-faf55d04e62b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -3995,14 +4119,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "055f0831-391f-44f4-a948-cc9219d9afa8", + "key": "2ce5f9af-f4d3-4467-92f1-4a748db40c60", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4010,29 +4138,39 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "1d2ab878-315f-4b7d-9f4f-2c8ea6a97fe2", + "key": "a6c0a9ba-3986-4c58-9423-30d802dc7aa4", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "94fb65ce-697c-49b5-bc4e-fb0cc3500007", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "0e93144b-9c3d-4444-b69e-a2aa5a731886", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "764e4c75-458a-4d8f-9a7f-e9d63da2cbc5", + "key": "5a636309-7090-49fc-8630-c1d00b014427", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4041,7 +4179,7 @@ }, { "commandType": "aspirate", - "key": "dc4fd07a-a653-4bd7-bf7e-43ab5e24b80d", + "key": "dfe14619-1011-4e6d-a6f5-ec4412332cb1", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4049,14 +4187,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "eb6976b2-6b88-40fc-a0b7-ad72d959fe7e", + "key": "d47fae77-e4b8-47bd-8749-ed3b1ae597a5", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4064,29 +4206,39 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "0a696e1d-e207-49d0-875a-a10b50ed1f5a", + "key": "152e5896-8695-4805-b85c-819db216921c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "b39fa5a0-63dc-4cc7-92ce-828b345324ef", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "a85f27c1-2384-4da8-98a8-108836e8eb71", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "06ef1868-96d0-4dd1-b85e-167da4ea05f0", + "key": "d45ffd65-eff6-4a8b-bd6f-5abde6dbf388", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4095,7 +4247,7 @@ }, { "commandType": "aspirate", - "key": "8d957583-f0ba-4799-9fb7-5bb73fefcf75", + "key": "ea9a5388-329c-4587-8363-549269e6a4c8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4103,14 +4255,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "bc58797b-31ae-4b87-829b-84f9b5c5446e", + "key": "d496cd3f-2189-438e-b9d5-95c698d8a6c0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4118,29 +4274,39 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "c2f0bccf-03b1-4069-8b95-3657b32d841f", + "key": "7c444a4b-626d-449c-98a9-beeaf09e9196", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "e14328bc-0b63-48e4-99ad-43be80f4fd2d", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "168dc853-1c29-4304-aa4c-5d706d2863a9", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "3f605100-7eed-467b-8783-8ffdcf9b7fa7", + "key": "3e501992-3a68-48a3-8a35-c97f6d922fb5", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4149,7 +4315,7 @@ }, { "commandType": "aspirate", - "key": "8bfe3f3f-265f-4efe-b15a-2f514518bcef", + "key": "e414d931-38f5-4ca3-93e0-28ab8d09a5ce", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4157,14 +4323,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "03a5fc4d-da4c-4a35-9b83-43c098b89fbe", + "key": "1b30be1e-9ab1-4ad2-8528-d0aac15649be", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4172,29 +4342,39 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "02f8b32b-f284-45b9-a87c-9fbebd0a9643", + "key": "333263db-9887-48f9-9cec-5e76264d02de", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "ed9a198d-8be1-4633-91ff-2b2a3d76d42c", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "0613a633-8c69-4273-a40b-25f7d432b9ef", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "f191fabd-2496-40cb-a7d6-8f3ec117d115", + "key": "dce17552-dc58-4420-9566-720bd62d2723", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4203,7 +4383,7 @@ }, { "commandType": "aspirate", - "key": "8a354f35-1aa1-4a96-b0ea-67411d21cb2c", + "key": "d102217f-33c0-4f6d-81e8-ebfa23227b3b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4211,14 +4391,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "b44e4449-c28e-4aae-b269-a1d382634a98", + "key": "5624dd4a-9428-4764-b72b-854c372ac9b9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4226,29 +4410,39 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "d81b7400-11c0-458b-b18e-6fe0c2eda148", + "key": "c9bb306f-9769-4fdf-8425-e6ef485b8053", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "51c547bd-a33f-47b8-8d83-6bbe3bcd100e", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "4d34ac41-1e14-47dc-bddd-e035bc34562c", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "18d87e96-962d-4d43-802d-aee8b786485e", + "key": "0737c0cc-cf01-4fa0-b624-ba162f8a5daf", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4257,7 +4451,7 @@ }, { "commandType": "aspirate", - "key": "2f67c8b4-3946-4270-951a-ef0615cd350c", + "key": "d121c382-86f2-4743-b043-d8f3606186de", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4265,14 +4459,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "0120cb1c-3610-43f6-b521-529aea32b8ac", + "key": "5b3da3c8-578e-4570-a9c0-12ba4eccd8ef", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4280,29 +4478,39 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "de434c5e-7d65-4c86-9f0e-faa91e81f8cc", + "key": "7a73f125-8cea-4846-9503-b1c15b16ca7f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "337efcb1-c1ad-4564-9ac3-c626c222ffe8", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "ad8346ba-09c0-48e5-a4e2-585992b780ff", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "df4d642a-bab5-4dd4-94c1-cca74d57d7b4", + "key": "bb55a704-2741-4543-8ec9-9d7cbe646913", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4311,7 +4519,7 @@ }, { "commandType": "aspirate", - "key": "02e1ddb4-50b7-4578-b79d-7b4e3e14ffe6", + "key": "fa987ffe-4b77-4f23-87e3-26ffff498da2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4319,14 +4527,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "493e252e-258d-4a2e-88ff-5c78373cbdd9", + "key": "e2fead50-1166-45a6-9a7c-19239a635dcb", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4334,29 +4546,39 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "4c580d3a-6195-4782-a7c0-ea8967887ba9", + "key": "37bd2126-ea04-43d9-8153-abca7aa37bf2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "50839851-407c-47a7-83ff-0f8d776c5114", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "f2254539-3d1c-475f-9545-2254338bc877", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "da3ab40c-1e79-4a12-96b0-912fd05e3cfa", + "key": "d238b33c-0a51-4593-884d-f294ca9b34bd", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4365,7 +4587,7 @@ }, { "commandType": "aspirate", - "key": "890aa1c0-86c4-489c-8c67-6b4713d8a926", + "key": "d8cc4fb2-c789-4c19-a279-3ab277db620a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4373,14 +4595,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "17b87840-4838-43d9-ae4e-7466423dd94c", + "key": "04130047-9fc1-4a1d-a437-6d35c9bbc736", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4388,29 +4614,39 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9c3a705f-97cf-40cc-99f2-9b1629f76c47", + "key": "ea98ad61-5358-4695-aeac-5c45e45f3945", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "1621491e-e703-421a-8d72-244f4d916eef", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "aa748779-1bee-4277-9a0b-cef4c9596db2", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "604c0c35-ef7a-4d97-9cd2-d2ceacdb3a79", + "key": "1104a432-4c46-4048-a167-66935bcbbe46", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4419,7 +4655,7 @@ }, { "commandType": "aspirate", - "key": "9beb1dba-1af3-4de5-a435-c9ce2e803a1f", + "key": "96051ed2-d577-406e-8fcc-6d57489b8098", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4427,14 +4663,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "ec47755c-f777-4a67-a7e4-88e3c5dc079f", + "key": "2aa56498-12ea-4ed1-8d1f-cfc771631231", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4442,29 +4682,39 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "130577d9-f904-460f-b0d8-8906c3208ba5", + "key": "feec6043-4715-4e0f-8ffb-c7e11625b8ae", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "fd629662-f71d-4d06-8731-b9a1c4b86240", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "18c174f1-00c7-4429-a00d-1fb23fa1ab95", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "a73b0c2e-2cb2-48ae-8aa2-884c9c38ced4", + "key": "c6e4b756-57e6-4b99-a13f-b4cc9f68007e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4473,7 +4723,7 @@ }, { "commandType": "aspirate", - "key": "b48548ce-b630-4923-a47d-1168bfd99bc3", + "key": "f2d8efcd-563d-400e-a517-19c2e5b6daff", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4481,14 +4731,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "869ef98e-183c-404f-ab56-0239836a53bc", + "key": "a167d2fa-005b-4cd7-b877-bc9bc7118576", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4496,29 +4750,39 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "1eb6b94f-b928-4ae2-b54d-60a6ad685261", + "key": "d9b25719-f389-47d7-969c-f4b9d5eac924", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "d451de07-77c8-4447-9bee-6e02ecb6c9a8", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "f120bb0a-aeb5-456f-9400-61c0d086405c", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "e3b57c34-8862-488f-882a-a6c0ed3aab91", + "key": "181f302a-6f86-43ea-8bec-34787329ea91", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4527,7 +4791,7 @@ }, { "commandType": "aspirate", - "key": "7bfcee1f-c539-4f71-86fd-2a4ce45e72c5", + "key": "7af713fd-92ec-4125-9fdc-c4caf6d96881", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4535,14 +4799,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "1933daa4-0769-4b1a-85a3-662009a08ff3", + "key": "74f0f1d4-ede7-4034-bb8a-569af6e51116", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4550,29 +4818,39 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "be69e705-e90b-45ba-b80a-d750a69fbf00", + "key": "e1062927-fbc0-43f4-aec0-2c4db796f520", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "f70cf632-8b51-425d-b038-8a15ff2646bd", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "4fb208b2-406f-41d9-bd75-1bb25c7b6090", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "70420b51-c232-4a9a-b7f8-b71ae7d1c44a", + "key": "99e371f5-ac49-40f5-b077-0ba095fb8b0e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4581,7 +4859,7 @@ }, { "commandType": "aspirate", - "key": "a4a03e0f-a624-4a2e-8474-4ce0e584c692", + "key": "36456527-abc3-46b3-9be8-d8c3e35d7589", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4589,14 +4867,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "21151169-b36b-47bf-ad6a-6d736975b965", + "key": "fcc09ee3-1280-42ad-9c96-5a35cc7e3682", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4604,29 +4886,39 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "3ec664a4-e16e-47db-8165-f77243dc94ee", + "key": "973f8392-57e1-4436-8ff3-066370111552", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "7d14859f-aa90-4eb7-847f-3dfd0bb38ad6", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "61e589ec-3621-4296-832e-ddf05ed87d71", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "49a3b10f-2a40-4564-9663-183f915f065f", + "key": "dee716cf-0a38-434f-87cf-ed2db7753f22", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4635,7 +4927,7 @@ }, { "commandType": "aspirate", - "key": "9fde5527-9494-4db3-83a7-87fe9dc4d8f9", + "key": "2de3cf3c-ec05-4c71-8da5-5f202dd2067d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4643,14 +4935,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "f4cdf6e2-b8b6-44be-8979-ba02dba58dca", + "key": "27a832fc-a5da-4c38-ba4f-53fe056a3289", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4658,29 +4954,39 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "3349573e-f925-4505-8223-5281cd79131e", + "key": "272a9711-02c5-4290-8ef5-82c66ae6db99", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "634d3638-535c-4dd9-8544-bc01a293699c", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "9b5c566f-2fb7-4803-9f87-d613609a1766", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "8fcca86a-4d50-4546-98ac-8af62f0d0650", + "key": "c4e4cc2b-1151-471b-82d4-75291a5a85fc", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4689,7 +4995,7 @@ }, { "commandType": "aspirate", - "key": "6a74770f-dca5-4819-8af5-4d322616aef9", + "key": "134995c4-0c67-4fbc-be2a-60c9284e30a9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4697,14 +5003,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "eb283f45-95a1-414a-a125-c98649b2d5ff", + "key": "4db8313b-64f1-499b-9f52-4df29c5d4ca7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4712,29 +5022,39 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "a16f16d6-2d46-40c7-a133-4f9abd72cf48", + "key": "f2bbe525-de0c-4309-90c9-d09ca189f8de", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "fb5846b6-0d7b-4747-b27f-fd6f2d2f1575", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "56125dae-842e-45c7-af67-ffdeb9fb6869", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "d90d2351-8a74-4912-9e46-5c9635de351d", + "key": "d2b518d3-97d0-4a59-80c7-7a73a64579d3", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4743,7 +5063,7 @@ }, { "commandType": "aspirate", - "key": "e143a895-a495-4e36-899d-ae2ca6d3bda6", + "key": "72198d46-cbfb-4b7a-9a26-d1ea9f7dff77", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4751,14 +5071,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "87c77c51-adb3-49fa-ad44-9288625d4b35", + "key": "138f0bf8-14f1-431b-9db6-8566a9078e83", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4766,29 +5090,39 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "6f7d9b7e-9483-4611-8017-a16229d0dfe0", + "key": "a6f012e5-f1e3-46fe-8243-4f64987786bf", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "628753d7-3932-4632-a5ec-a41795c9c774", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "c3f57ad8-cf7d-42ba-b009-f62e309b9c7c", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "bbbfc586-62ca-40c0-8024-1913916a5ac4", + "key": "6590c871-dbef-474b-86f8-1c4b71388df2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4797,7 +5131,7 @@ }, { "commandType": "aspirate", - "key": "b6123803-d123-4c3c-a51c-db80ffe80926", + "key": "ce93c608-81b7-4a26-b5fd-b6cfa4004ce4", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4805,14 +5139,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "dispense", - "key": "e17617fc-2e85-43a5-a67b-15f7eff630ee", + "key": "6c20edf3-2d8e-48e1-b872-708e23b71e5d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4820,29 +5158,39 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "60b55771-dbf8-460f-88b6-a6511398b61b", + "key": "4ae15bd8-e502-4267-a1ef-844ccd97fe73", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "2be58694-e996-4547-84d7-47b63b7b5cb7", - "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } + "key": "9358bb52-e112-4ac8-ac27-c75fa3a31129", + "params": { + "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" + } }, { "commandType": "pickUpTip", - "key": "adc4dc42-ed18-4549-a922-186e5d8c8e91", + "key": "1e35aa06-95f7-4073-8f8f-68fdc557e3bc", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4851,7 +5199,7 @@ }, { "commandType": "configureForVolume", - "key": "81502381-d22e-435c-a1c6-a6561abf4c14", + "key": "1953c27c-abd9-4284-80b5-42c1df10bfa9", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10 @@ -4859,7 +5207,7 @@ }, { "commandType": "aspirate", - "key": "9d0eef4b-26e2-4b6d-bf83-72b57f00247d", + "key": "ae530f5a-e921-4cbb-bea2-8563e38d6966", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4867,14 +5215,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "dispense", - "key": "b689a855-ff45-46d6-8f99-96f5b3480122", + "key": "756cfa2f-0df6-4d73-8dd0-4869c25aaa00", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4882,14 +5234,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 57 } }, { "commandType": "aspirate", - "key": "a6567fc7-664e-4d28-861f-8620923fc83f", + "key": "e12837d4-0bc3-454e-80a5-a530a046b03c", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4897,14 +5253,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 35 } }, { "commandType": "dispense", - "key": "68593075-6c39-485d-8fee-4cea9c3e5eb0", + "key": "1435fcd2-2e3d-480b-9b3c-c606b83e1507", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4912,66 +5272,83 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 57 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "4137561c-659a-4d7a-9e8a-c05aa15d4891", + "key": "3e9986af-42fe-4168-b49d-67b25072aedb", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "a5389c1e-2544-44ae-9b03-a3464899f971", - "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193" } + "key": "c51cf48c-ff9f-4329-b2bb-475589c03cc8", + "params": { + "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193" + } }, { "commandType": "moveLabware", - "key": "950063e3-0e7c-4859-a513-45e7a39444ab", + "key": "ca2b894f-a4d4-425a-b85b-9954f9b61819", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", - "newLocation": { "slotName": "B2" } + "newLocation": { + "slotName": "B2" + } } }, { "commandType": "waitForDuration", - "key": "55dd1085-976e-4145-b4fe-2a6797e0d8be", - "params": { "seconds": 60, "message": "" } + "key": "4f455d59-03a6-4b79-be48-64db49d6ff59", + "params": { + "seconds": 60, + "message": "" + } }, { "commandType": "moveLabware", - "key": "5e1ac5e8-1da6-4fb9-a11c-b078d693afa0", + "key": "4481fc65-451f-4c8f-aa14-2b369a600312", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", - "newLocation": { "slotName": "C3" } + "newLocation": { + "slotName": "C3" + } } }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "c27f07bc-657a-4aae-942a-50df0a2ad167", + "key": "3e22fda8-3a29-4ec1-a8c5-4a1c2311537b", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "058c70b9-7a15-4d4b-80f6-f5d8f0437c81", + "key": "68523f3c-f1be-46ec-b235-768fad253de5", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "182690d7-0c0a-4cb7-9022-85cca4761637", + "key": "364c37d4-826a-4d67-ae4a-8c3a4f246577", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "rpm": 500 @@ -4979,28 +5356,28 @@ }, { "commandType": "heaterShaker/deactivateHeater", - "key": "a2e67135-b880-449d-b114-58bd02a3de57", + "key": "d5c426ba-1acc-440c-939b-9c0be548a4a3", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "727d5986-def0-4c44-b337-1f327f68f908", + "key": "ff1818d5-6f75-44f5-bfd2-fe5bc202e050", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "6b2ed1dd-3d71-45b0-84f5-fb7153a6f325", + "key": "497f9b04-7d40-47ae-9a87-185280821361", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "f2ecdb28-afae-4342-b441-61fe38d9e069", + "key": "1ab82be8-439a-4c7f-ae3d-2421bc2b85a6", "params": { "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", "strategy": "manualMoveWithPause", @@ -5009,11 +5386,13 @@ }, { "commandType": "moveLabware", - "key": "8f88f8b7-69dd-43c2-b3ce-0404a80c13a6", + "key": "6dc1e703-64ee-48ad-a5e5-451ce9eb917a", "params": { "labwareId": "239ceac8-23ec-4900-810a-70aeef880273:opentrons/nest_96_wellplate_200ul_flat/2", "strategy": "manualMoveWithPause", - "newLocation": { "slotName": "C2" } + "newLocation": { + "slotName": "C2" + } } } ], diff --git a/protocol-designer/fixtures/protocol/8/doItAllV8.json b/protocol-designer/fixtures/protocol/8/doItAllV8.json index 9206bdcf267..ce0ea883b0f 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV8.json @@ -6,16 +6,16 @@ "author": "", "description": "", "created": 1701659107408, - "lastModified": 1731356308207, + "lastModified": 1738157218097, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.2", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 20:18:16 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_flex_96_tiprack_1000ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "h20", @@ -46,17 +49,53 @@ }, "ingredLocations": { "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1": { - "A1": { "0": { "volume": 10000 } } + "A1": { + "0": { + "volume": 10000 + } + } }, "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2": { - "A1": { "1": { "volume": 100 } }, - "B1": { "1": { "volume": 100 } }, - "C1": { "1": { "volume": 100 } }, - "D1": { "1": { "volume": 100 } }, - "E1": { "1": { "volume": 100 } }, - "F1": { "1": { "volume": 100 } }, - "G1": { "1": { "volume": 100 } }, - "H1": { "1": { "volume": 100 } } + "A1": { + "1": { + "volume": 100 + } + }, + "B1": { + "1": { + "volume": 100 + } + }, + "C1": { + "1": { + "volume": 100 + } + }, + "D1": { + "1": { + "volume": 100 + } + }, + "E1": { + "1": { + "volume": 100 + } + }, + "F1": { + "1": { + "volume": 100 + } + }, + "G1": { + "1": { + "volume": 100 + } + }, + "H1": { + "1": { + "volume": 100 + } + } } }, "savedStepForms": { @@ -121,7 +160,7 @@ "aspirate_mix_volume": null, "aspirate_mmFromBottom": null, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -145,7 +184,7 @@ "dispense_mix_volume": null, "dispense_mmFromBottom": null, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "t2b", "dispense_wellOrder_second": "l2r", "dispense_wells": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], @@ -160,10 +199,11 @@ "preWetTip": false, "tipRack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "volume": "100", - "id": "d2f74144-a7bf-4ba2-aaab-30d70b2b62c7", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "d2f74144-a7bf-4ba2-aaab-30d70b2b62c7", + "dispense_touchTip_mmfromTop": null }, "240a2c96-3db8-4679-bdac-049306b7b9c4": { "blockIsActive": true, @@ -306,7 +346,10 @@ ] } }, - "robot": { "model": "OT-3 Standard", "deckId": "ot3_standard" }, + "robot": { + "model": "OT-3 Standard", + "deckId": "ot3_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_flex_96_tiprack_1000ul/1": { @@ -324,7 +367,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", "displayCategory": "tipRack", @@ -1319,9 +1365,17 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_flex_96_tiprack_adapter": { "x": 0, "y": 0, "z": 121 } + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } } }, "opentrons/opentrons_96_pcr_adapter/1": { @@ -1339,7 +1393,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", "displayCategory": "adapter", @@ -2219,7 +2276,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2331,11 +2390,23 @@ "version": 1, "schemaVersion": 2, "allowedRoles": ["adapter"], - "cornerOffsetFromSlot": { "x": 8.5, "y": 5.5, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 8.5, + "y": 5.5, + "z": 0 + }, "gripperOffsets": { "default": { - "pickUpOffset": { "x": 0, "y": 0, "z": 0 }, - "dropOffset": { "x": 0, "y": 0, "z": 1 } + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + }, + "dropOffset": { + "x": 0, + "y": 0, + "z": 1 + } } } }, @@ -2367,14 +2438,34 @@ "yDimension": 85.48, "zDimension": 16 }, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.95 }, - "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 11.91 } + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.95 + }, + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 11.91 + } }, "stackingOffsetWithModule": { - "magneticBlockV1": { "x": 0, "y": 0, "z": 3.54 }, - "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.7 } + "magneticBlockV1": { + "x": 0, + "y": 0, + "z": 3.54 + }, + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.7 + } }, "gripForce": 15, "gripHeightFromLabwareBottom": 10, @@ -3260,7 +3351,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -3395,7 +3488,12 @@ } }, "groups": [ - { "wells": ["A1"], "metadata": { "wellBottomShape": "flat" } } + { + "wells": ["A1"], + "metadata": { + "wellBottomShape": "flat" + } + } ], "parameters": { "format": "trough", @@ -3407,12 +3505,20 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } } }, "liquidSchemaId": "opentronsLiquidSchemaV1", "liquids": { - "0": { "displayName": "h20", "description": "", "displayColor": "#b925ff" }, + "0": { + "displayName": "h20", + "description": "", + "displayColor": "#b925ff" + }, "1": { "displayName": "sample", "description": "", @@ -3422,7 +3528,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "613fa8b3-d474-4588-ac4d-a9a2919258d6", + "key": "fdb1f640-85f6-4bcf-bfff-63e37f55ce27", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3431,25 +3537,29 @@ } }, { - "key": "74941d9f-df2a-481a-bda4-8f8e0cf7c3d3", + "key": "5913deb1-157f-4ac4-bcbc-f8915aa68fa2", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", - "location": { "slotName": "D1" }, + "location": { + "slotName": "D1" + }, "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { - "key": "b3efcc42-cf36-478e-855f-02678a436a4f", + "key": "279b491f-78fe-4147-bdbd-31469adf8c01", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", - "location": { "slotName": "B1" }, + "location": { + "slotName": "B1" + }, "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { - "key": "a33fd569-8a25-4619-9a46-e415b68fa195", + "key": "d4a96fb9-9d44-444b-8eef-f69bee47b4f7", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", @@ -3463,7 +3573,7 @@ } }, { - "key": "e3ecedc5-c7b0-4714-857b-34591cf01b9a", + "key": "c3a137ef-3ecd-44c7-9221-7167c6576d5b", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", @@ -3471,11 +3581,13 @@ "loadName": "opentrons_flex_96_tiprack_1000ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "C2" } + "location": { + "slotName": "C2" + } } }, { - "key": "393baa4d-d46f-4bee-9a32-9899abbaca6b", + "key": "83929c9c-e7b0-49a3-a369-d2061a29af8f", "commandType": "loadLabware", "params": { "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", @@ -3489,7 +3601,7 @@ } }, { - "key": "34c6b521-6d32-4d46-af48-2d62cb04dd38", + "key": "e16a38b6-1a7a-47e0-bd3f-10f3044813dc", "commandType": "loadLabware", "params": { "displayName": "Axygen 1 Well Reservoir 90 mL", @@ -3497,12 +3609,14 @@ "loadName": "axygen_1_reservoir_90ml", "namespace": "opentrons", "version": 1, - "location": { "addressableAreaName": "A4" } + "location": { + "addressableAreaName": "A4" + } } }, { "commandType": "loadLiquid", - "key": "785d7faf-197a-49c5-889c-a2fbe4cd7901", + "key": "5eef2542-3751-49f9-a83f-cdfbdb3bcd60", "params": { "liquidId": "1", "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", @@ -3520,32 +3634,36 @@ }, { "commandType": "loadLiquid", - "key": "908876b2-ff21-4ad8-ac8a-80b0919bc503", + "key": "347a434b-a0e3-40ab-9821-4bd8b5fa22cd", "params": { "liquidId": "0", "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", - "volumeByWell": { "A1": 10000 } + "volumeByWell": { + "A1": 10000 + } } }, { "commandType": "thermocycler/openLid", - "key": "729ae36c-e915-4b3d-aaab-68b2d30bc9af", + "key": "bfc09a97-2926-4995-9fb2-0e014373d0e1", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "moveLabware", - "key": "fcfc7848-643f-4942-82f3-f2d3a7756312", + "key": "767e876f-0cb7-4d0c-a5ff-a415585d6a62", "params": { "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", "strategy": "usingGripper", - "newLocation": { "slotName": "C1" } + "newLocation": { + "slotName": "C1" + } } }, { "commandType": "pickUpTip", - "key": "59de9d2e-7188-4aa0-9d28-2d57536ebfd4", + "key": "8d183275-f3e4-4e20-a148-1280a28be7ea", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3554,7 +3672,7 @@ }, { "commandType": "aspirate", - "key": "7bc2edf1-1931-47cc-a297-e9a96154d758", + "key": "63759336-84a5-4812-b762-1a9aebf34cfe", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3562,14 +3680,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "e2a202af-bea8-4471-a3fe-e8b4ea813c12", + "key": "ff8ba56e-1a2c-49d7-852b-9bad8dbf34b0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3577,28 +3699,38 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "78da1188-798f-4bcb-a572-56191f70bf7a", + "key": "1b1844e7-f89f-4594-b76a-e789972a6495", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "40daa36b-d58f-4116-97ab-61750d945433", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "0bb4b9ce-c7f1-4436-be9f-682ba654c130", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "3946b410-290b-4cbb-ae2d-16a89b027951", + "key": "f6ff0fe7-1331-4c28-81ff-a35fed4ad8e5", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3607,7 +3739,7 @@ }, { "commandType": "aspirate", - "key": "efc2ffce-584d-4e5f-98da-c51879ad40dd", + "key": "c5cd2686-6a09-4b35-b098-c57eac017185", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3615,14 +3747,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "e2ba3f45-3c0a-4b2c-b0ff-ee9059b8f636", + "key": "2f187fb7-9fea-4854-9e98-a311d265bcb6", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3630,28 +3766,38 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "f74b0187-1e0d-480d-a787-31ac9123249c", + "key": "1307485b-cd41-47a5-a044-b028c8224d4f", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "e9695c8d-240e-4073-9476-cad8fafb2ac3", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "8ade5883-8117-425e-8a60-4670efeb9883", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "0b9d824c-b718-46c0-a1dc-cffbdbe282c2", + "key": "cb28e92b-993f-474e-bc73-e72764652c1a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3660,7 +3806,7 @@ }, { "commandType": "aspirate", - "key": "230d103e-5ea1-435d-b659-a892d84de899", + "key": "14f97753-b078-482a-bf27-204bc3ce8c61", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3668,14 +3814,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "38c76234-14c2-4448-bdfc-66de646cb62c", + "key": "5810d6b0-8e1e-4ee8-b89d-bd298e452fbf", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3683,28 +3833,38 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "ca97dd08-5b30-412f-922c-ad28deae49bd", + "key": "2e29334d-4195-40ad-a423-f7200177caae", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "4712d54c-ba9f-48a4-9dcd-d2c54e09421b", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "d17b7128-1a57-4ef2-b46b-280e97b564c3", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "9e400b7d-6442-4f60-9a48-af811dd656f7", + "key": "4e957f48-d363-48b3-ab6c-7c32c0d5ab80", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3713,7 +3873,7 @@ }, { "commandType": "aspirate", - "key": "7f2c3358-ad09-4e5d-ae0c-a09d9c4d32fa", + "key": "1de52706-ab40-48ac-9114-b918de28d0ed", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3721,14 +3881,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "ffd130d5-374f-4554-8dee-0d16358a73b2", + "key": "6bdc0516-21ac-48a4-9323-2712e60afe7e", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3736,28 +3900,38 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "747dd6ab-2a6e-4b7b-a2ee-43d896282ed5", + "key": "c273367a-57a3-4879-9a2d-93d8ab671265", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "212a3a1d-6539-496c-905a-dfd918b6524e", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "5e2e4629-426f-41c5-af38-4a252ef544f6", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "e9dd3348-c92f-40db-89c9-6e761d0d2c17", + "key": "6aa9ea70-9d0c-4c9a-8b26-d168c66edcac", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3766,7 +3940,7 @@ }, { "commandType": "aspirate", - "key": "25dab6fb-d602-429e-9e36-06e485cee277", + "key": "c1848064-ccac-4488-b658-54765b53c014", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3774,14 +3948,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "dd4f4c2d-6d00-4911-8bff-eb0f1c1ce085", + "key": "79622aac-e2ae-4578-8ea8-5288d566b17b", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3789,28 +3967,38 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "ebfc5f04-1a12-4bd9-996c-3f0525294a05", + "key": "0a2c66b2-97cc-45ae-ad05-d4e644b5d09d", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "cd7cbde3-eea8-4243-a970-ca56008c1671", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "88141e29-f3e9-456a-9227-53cc3e4b7306", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "b57097bb-ddd7-4525-899a-114c2dd4d6ea", + "key": "493734a6-abb9-4e4a-bbd7-9b7b46a18b21", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3819,7 +4007,7 @@ }, { "commandType": "aspirate", - "key": "f60207d8-728d-469a-a0ef-5d768518f0d2", + "key": "17284684-55c4-477a-a775-33989cccb7a7", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3827,14 +4015,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "16836abd-98cc-4e3c-8f0e-6080ca9b3370", + "key": "f1acfe9d-4496-433e-b40f-1a5409ff4094", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3842,28 +4034,38 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "535110d0-797d-403d-bd73-e1856df31ba2", + "key": "025a6244-db88-4635-95a0-14648468a844", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "524c64c3-7148-47af-8644-48fe10b33711", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "8257d866-81f5-4327-8fde-908c2cc58f4b", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "5ee7191b-933e-4d18-ac03-9327b791020f", + "key": "3f000483-4802-4332-9ed8-7986267d4bf0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3872,7 +4074,7 @@ }, { "commandType": "aspirate", - "key": "ce003b5e-eae4-4736-93f5-dedcc4ce3151", + "key": "cc718e17-898c-475e-8213-18a8c4e7de63", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3880,14 +4082,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "57fb34af-ec8e-4d4a-b88a-0f61a923c5de", + "key": "9b2d6845-866c-4cbb-85c5-be29f0e59c7f", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3895,28 +4101,38 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "1ace6a5a-ca8a-434d-9742-d7d9e1e18ade", + "key": "e204cacd-03f9-4f52-a48a-a4fba1f217c4", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "b3f98eee-0a07-489d-bdc3-f7c1784a9a15", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "3f3a6583-8548-4e1b-af12-c4157c573aa6", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "pickUpTip", - "key": "50e1881e-062a-4d76-b7f8-4a38999b4c77", + "key": "3000eef7-2dbb-49b7-8242-b5f71cee8e84", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3925,7 +4141,7 @@ }, { "commandType": "aspirate", - "key": "38b5468d-0025-4819-aeca-fdd9dfd40f82", + "key": "4e21f8b9-a480-43a5-b3bb-23a0baa99bc4", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3933,14 +4149,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "dispense", - "key": "326bb0f6-ec20-442e-9261-e8d00350f70d", + "key": "a4ed53f0-3ba5-4b30-9a8a-a0abf5f558bc", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3948,35 +4168,45 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "17265bad-0cc9-4274-9fb7-ec6489ef62cb", + "key": "920cc11e-1a35-4a84-ba6b-93f742bd8780", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dropTipInPlace", - "key": "c9410a23-5d50-429b-8492-f52b68775de4", - "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } + "key": "b05b1f55-87ac-4989-a937-c6e63abc04fc", + "params": { + "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" + } }, { "commandType": "thermocycler/closeLid", - "key": "1f008ad8-fa1a-42d1-a2aa-7c25e1e93bf4", + "key": "f4e356c4-5160-478d-9419-b919f411324a", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetBlockTemperature", - "key": "0cfce686-efe6-4202-9ffd-0ab83069b846", + "key": "bc344e58-dedd-44a1-bcbb-1108852aa188", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType", "celsius": 40 @@ -3984,47 +4214,50 @@ }, { "commandType": "thermocycler/waitForBlockTemperature", - "key": "d900220f-3d2a-437a-93ab-7d2c3c1b3386", + "key": "b573b603-fa89-4213-a1ea-6f6d24f4f372", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "waitForDuration", - "key": "fcb103cc-7680-4c88-9476-fa8942ce5f96", - "params": { "seconds": 60, "message": "" } + "key": "1e8e67b6-e2ed-476b-8f5a-f985a68fbd22", + "params": { + "seconds": 60, + "message": "" + } }, { "commandType": "thermocycler/openLid", - "key": "26e5067c-2e91-4eef-8559-101cc1b37d00", + "key": "165eaa13-69df-49b5-965a-83cf19c40fda", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateBlock", - "key": "d0a1146e-96cc-4d19-b6c9-a40e099e53ac", + "key": "d9c25977-9163-472b-b0e6-4840b8135b52", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "b3ef3daf-2488-4dfa-babf-478d75ad08da", + "key": "a9591c3d-4413-447b-81ed-b10e0b64593a", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "c60fd59c-e848-4584-a743-a139ac0c239e", + "key": "8e0d13ac-d6c9-4aee-bf38-8b65cbb23cd3", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "e27dc8fe-eac6-46bf-96d4-26e20a1eb8d1", + "key": "cdbee473-2621-49d4-b233-99a80d4aa6ea", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4035,21 +4268,21 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "7178af55-644c-40a8-84bb-3eaed0db9e7b", + "key": "90f0a48f-d198-49cc-b985-8b60b9eeb97a", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "ad7d086b-dfa8-4e76-a309-ab3c3e7a0f52", + "key": "66d3b91c-6a48-4ccc-880f-8f9b00702e47", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "c3a210c7-d55a-4a95-97cf-23850b7eda7d", + "key": "f4746eaa-e860-44ec-ba60-27c60a3f251f", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType", "rpm": 200 @@ -4057,53 +4290,59 @@ }, { "commandType": "waitForDuration", - "key": "d1059759-9bf7-4732-b0ae-857672b3adb0", - "params": { "seconds": 60 } + "key": "4f9d6581-3793-4f5e-b29b-a4f59878348b", + "params": { + "seconds": 60 + } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "4bb2747c-481a-42fd-b025-0c536f144dcd", + "key": "9a4026e4-5fb0-4cca-9cc0-09274213418d", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "c23a2083-3ae9-4a56-b4f8-cc4427efa57b", + "key": "0e0a6e22-6d87-457e-841e-063e74b92bcd", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "54501c02-54f6-4bcf-bc8e-e3f2753a1638", + "key": "43ef8004-1be7-4eec-9fca-83571590170d", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "3a090443-d2bf-422f-9001-97d96f566a7f", + "key": "d3a2cb1e-b4dd-4431-ae89-84d71ed5f900", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "5cd730a0-a471-4b2f-8ed2-0d192c9fc4e9", + "key": "0554f9d9-5de2-4faa-bde6-a291c503379c", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", - "newLocation": { "addressableAreaName": "B4" } + "newLocation": { + "addressableAreaName": "B4" + } } }, { "commandType": "moveLabware", - "key": "833722d2-f2ea-4280-8e8e-d19f3080bd59", + "key": "25d91423-5565-4063-ada0-87692ca2dbbd", "params": { "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", "strategy": "usingGripper", - "newLocation": { "addressableAreaName": "gripperWasteChute" } + "newLocation": { + "addressableAreaName": "gripperWasteChute" + } } } ], diff --git a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json index ca6c9b8f9fc..512e74a6821 100644 --- a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json @@ -6,16 +6,16 @@ "author": "Author name", "description": "Description here", "created": 1560957631666, - "lastModified": 1731344289938, + "lastModified": 1738256741877, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 16:56:05 GMT", + "_internalAppBuildDate": "Thu, 30 Jan 2025 17:05:24 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -30,7 +30,10 @@ "opentrons/tipone_96_tiprack_200ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "samples", @@ -47,14 +50,46 @@ }, "ingredLocations": { "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1": { - "A1": { "0": { "volume": 121 } }, - "B1": { "0": { "volume": 121 } }, - "C1": { "0": { "volume": 121 } }, - "D1": { "0": { "volume": 121 } }, - "E1": { "0": { "volume": 121 } }, - "F1": { "1": { "volume": 44 } }, - "G1": { "1": { "volume": 44 } }, - "H1": { "1": { "volume": 44 } } + "A1": { + "0": { + "volume": 121 + } + }, + "B1": { + "0": { + "volume": 121 + } + }, + "C1": { + "0": { + "volume": 121 + } + }, + "D1": { + "0": { + "volume": 121 + } + }, + "E1": { + "0": { + "volume": 121 + } + }, + "F1": { + "1": { + "volume": 44 + } + }, + "G1": { + "1": { + "volume": 44 + } + }, + "H1": { + "1": { + "volume": 44 + } + } } }, "savedStepForms": { @@ -85,7 +120,7 @@ "aspirate_mix_volume": "2", "aspirate_mmFromBottom": 1, "aspirate_touchTip_checkbox": true, - "aspirate_touchTip_mmFromBottom": 28.5, + "aspirate_touchTip_mmFromTop": -12.8, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -94,7 +129,7 @@ "aspirate_y_position": 0, "blowout_checkbox": true, "blowout_flowRate": 1000, - "blowout_location": "a4ca3966-cd82-4621-897f-b98a3b626c15:trashBin", + "blowout_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", "blowout_z_offset": 0, "changeTip": "always", "dispense_airGap_checkbox": false, @@ -109,7 +144,7 @@ "dispense_mix_volume": "3", "dispense_mmFromBottom": 2.5, "dispense_touchTip_checkbox": true, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "b2t", "dispense_wellOrder_second": "r2l", "dispense_wells": [ @@ -127,17 +162,18 @@ "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "1", - "dropTip_location": "a4ca3966-cd82-4621-897f-b98a3b626c15:trashBin", + "dropTip_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", "nozzles": null, "path": "single", "pipette": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "preWetTip": false, "tipRack": "opentrons/opentrons_96_tiprack_10ul/1", "volume": "6", - "id": "e7d36200-92a5-11e9-ac62-1b173f839d9e", "stepType": "moveLiquid", "stepName": "transfer things", - "stepDetails": "yeah notes" + "stepDetails": "yeah notes", + "id": "e7d36200-92a5-11e9-ac62-1b173f839d9e", + "dispense_touchTip_mmfromTop": null }, "18113c80-92a6-11e9-ac62-1b173f839d9e": { "aspirate_delay_checkbox": false, @@ -151,11 +187,11 @@ "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_flowRate": 7, - "dropTip_location": "a4ca3966-cd82-4621-897f-b98a3b626c15:trashBin", + "dropTip_location": "099f7422-f81c-4188-8fb7-d70f32c574cc:trashBin", "labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "mix_mmFromBottom": 0.5, "mix_touchTip_checkbox": true, - "mix_touchTip_mmFromBottom": 30.5, + "mix_touchTip_mmFromTop": -10.8, "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", "mix_x_position": 0, @@ -166,10 +202,10 @@ "tipRack": "opentrons/opentrons_96_tiprack_10ul/1", "volume": "5.5", "wells": ["F1"], - "id": "18113c80-92a6-11e9-ac62-1b173f839d9e", "stepType": "mix", "stepName": "mix", - "stepDetails": "" + "stepDetails": "", + "id": "18113c80-92a6-11e9-ac62-1b173f839d9e" }, "2e622080-92a6-11e9-ac62-1b173f839d9e": { "moduleId": null, @@ -190,7 +226,10 @@ ] } }, - "robot": { "model": "OT-2 Standard", "deckId": "ot2_standard" }, + "robot": { + "model": "OT-2 Standard", + "deckId": "ot2_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_96_tiprack_10ul/1": { @@ -1206,7 +1245,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/tipone_96_tiprack_200ul/1": { "ordering": [ @@ -2219,7 +2262,11 @@ "metadata": {} } ], - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/usascientific_96_wellplate_2.4ml_deep/1": { "ordering": [ @@ -3316,7 +3363,9 @@ "G12", "H12" ], - "metadata": { "wellBottomShape": "u" } + "metadata": { + "wellBottomShape": "u" + } } ], "parameters": { @@ -3329,7 +3378,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } } }, "liquidSchemaId": "opentronsLiquidSchemaV1", @@ -3339,12 +3392,16 @@ "description": "", "displayColor": "#b925ff" }, - "1": { "displayName": "dna", "description": "", "displayColor": "#ffd600" } + "1": { + "displayName": "dna", + "description": "", + "displayColor": "#ffd600" + } }, "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "f9ad5d77-d29a-420b-bd45-fe1d86b6cceb", + "key": "653466a2-8020-453e-ab02-c005028a2f85", "commandType": "loadPipette", "params": { "pipetteName": "p10_single", @@ -3353,7 +3410,7 @@ } }, { - "key": "3ac7ecd1-eb76-4498-bd39-de566febd5a6", + "key": "e7c4cb6c-5fb9-4657-ac3e-d88fc0d22504", "commandType": "loadPipette", "params": { "pipetteName": "p50_single", @@ -3362,7 +3419,7 @@ } }, { - "key": "844cd642-ac57-4311-b966-4622527adb5d", + "key": "88a0549f-4dc9-4ff2-8224-0840707768de", "commandType": "loadLabware", "params": { "displayName": "tiprack 10ul (1)", @@ -3370,11 +3427,13 @@ "loadName": "opentrons_96_tiprack_10ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "1" } + "location": { + "slotName": "1" + } } }, { - "key": "5a3a4baf-6b23-4cd8-897d-9aed90cbc25b", + "key": "f8177762-b4d6-4c64-829c-86c43c890013", "commandType": "loadLabware", "params": { "displayName": "tiprack 200ul (1)", @@ -3382,11 +3441,13 @@ "loadName": "tipone_96_tiprack_200ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "2" } + "location": { + "slotName": "2" + } } }, { - "key": "75de19d2-476a-4dbc-88e3-6e50d3c8a638", + "key": "dc5b0ab1-d6d8-422e-b329-6d450ed47606", "commandType": "loadLabware", "params": { "displayName": "96 deep well (1)", @@ -3394,21 +3455,27 @@ "loadName": "usascientific_96_wellplate_2.4ml_deep", "namespace": "opentrons", "version": 1, - "location": { "slotName": "10" } + "location": { + "slotName": "10" + } } }, { "commandType": "loadLiquid", - "key": "11ece455-7552-4285-83ac-60ed9cc78cd2", + "key": "029fb680-4e9c-4751-9f46-63bb351213b9", "params": { "liquidId": "1", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", - "volumeByWell": { "F1": 44, "G1": 44, "H1": 44 } + "volumeByWell": { + "F1": 44, + "G1": 44, + "H1": 44 + } } }, { "commandType": "loadLiquid", - "key": "94a1fd44-b63d-468f-b44f-94b55c92c349", + "key": "c528eb17-0030-4047-a762-160ca37128e9", "params": { "liquidId": "0", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", @@ -3423,7 +3490,7 @@ }, { "commandType": "pickUpTip", - "key": "61814730-08e5-4682-b8c0-659cea03545c", + "key": "df727ce4-87e9-4ec5-bea2-6b95b046c939", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -3432,7 +3499,7 @@ }, { "commandType": "aspirate", - "key": "5a7b0dd8-de27-438c-bf1a-32a4c244a594", + "key": "11775a09-4adc-41aa-a8e9-7c9ce4be9e27", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3440,14 +3507,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "d8da80e3-e9d9-4422-9575-932a31617cd6", + "key": "28f64155-ed7b-4b7d-b28b-15a225f67256", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3455,14 +3526,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "448098e2-e8a3-47bf-83ac-6c1954185312", + "key": "85694006-ab52-4adb-8442-ddb909a00859", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3470,14 +3545,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "8baa0d1d-27c3-4478-be06-c631177c467e", + "key": "7bf0394c-1b42-477a-b342-9c692340e3c9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3485,14 +3564,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "5d1b4443-5ceb-4947-8b0c-e6b09bfcf16a", + "key": "e4fae21c-fb4d-4d37-a95d-eae6122058b8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3500,14 +3583,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "df36d543-19b8-4aa5-87c1-d43c408ca96d", + "key": "bba3e2c7-abae-4c26-905a-c5bdc377563d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3515,14 +3602,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "7fac5fce-542f-4283-9410-b7fdda367405", + "key": "44baadee-dbe5-42ba-91dc-789a37f095ec", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3530,24 +3621,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "723b76f8-28e2-4d1b-9d9e-e0ca6984460c", + "key": "e5f76399-cd91-4e7b-90e2-9f67b51835ff", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "6d36fda0-e7c4-4f78-b98c-89bedfe78acf", + "key": "191ca16f-1556-4c99-97c4-44a1a6ffcf69", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3555,14 +3655,18 @@ "wellName": "E8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "65556335-876a-43bd-a699-18491577cd21", + "key": "424d1f8d-2372-484a-bf34-51a49b4f8c1a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3570,14 +3674,18 @@ "wellName": "E8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "dc3ff54b-0925-4ee5-adc2-fb72c768c847", + "key": "940b80b5-eda9-4fbb-a3f2-dd89ad874b0f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3585,14 +3693,18 @@ "wellName": "E8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "460ae203-08ba-4e99-bb10-c578e1f44c77", + "key": "586dffd7-11a0-49cc-a768-842e80f7a083", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3600,14 +3712,18 @@ "wellName": "E8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "637a258d-f782-4264-bf93-8e2e92c2653e", + "key": "babc33bb-2642-4c1d-9142-5ba7e58f3219", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3615,23 +3731,31 @@ "wellName": "E8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "01cca54a-a392-45f4-a6d1-3b96e6baba23", + "key": "417d2cad-ae9d-44ef-8ceb-ad2d68e379cd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "aaff6d55-5690-4b78-a761-5db62bf3ea51", + "key": "8bc64b78-501e-416a-91d1-4ee65a3744d8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -3639,32 +3763,43 @@ }, { "commandType": "touchTip", - "key": "d18e914b-9cdb-41b2-ace6-994ce5815f3c", + "key": "b84bf61c-2878-48da-8910-de9cd9b64fde", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "E8", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "631dd21c-070b-4a11-bc47-16bb3a93ea72", + "key": "20d90f09-623d-4c7b-b19a-d4afea3437ab", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "fb5ad531-ee23-42d9-8665-510fc3c5f6d6", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "6bdd2267-a54f-4f0b-b3a9-a29fc6facd48", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "b5f28d66-de3c-409d-b477-31dc923cde80", + "key": "778e0f97-7810-4392-8816-3390e773c402", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -3673,7 +3808,7 @@ }, { "commandType": "aspirate", - "key": "0bac2ef5-3701-403f-bff3-271689657708", + "key": "488ed1c9-5e31-4abf-ac13-7739170f7055", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3681,14 +3816,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "ba65084b-ec42-458b-9316-c344f6b61117", + "key": "8fffd70f-f145-4550-8a8b-75ef67c62713", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3696,14 +3835,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "131f2a49-bc75-41c7-8128-599086402c30", + "key": "53a14ffd-8bcd-4478-a175-c6ccbbc99138", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3711,14 +3854,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "4144093b-aa0c-4b31-953b-68f279a533ae", + "key": "d6f5bfc6-b873-4d72-8b23-ff761a428189", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3726,14 +3873,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "a0c2d152-6b90-4fa4-be5d-374b0ce7442e", + "key": "8c27405f-c328-419a-889d-9045d58e4e33", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3741,14 +3892,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "ffd9e758-79ba-4b41-9dae-e59d78b33185", + "key": "1bb1272d-ce76-41f2-9d53-c1273303880e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3756,14 +3911,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "e493e69a-bf86-4c1c-b136-d280ecaf98cb", + "key": "b941dbde-54a4-445e-a29d-543e159bedbf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3771,24 +3930,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "6ff3daed-289a-48a5-a0c8-dac4b5960f91", + "key": "ff5bb79b-e077-4d94-9475-d1ca50852284", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "95861712-03ec-4bb2-9bcd-c89542af9676", + "key": "14bf5fb9-d05b-4e51-b74a-ef627109d257", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3796,14 +3964,18 @@ "wellName": "D8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "a739b56c-b847-4c2f-9658-da5b7c58ad76", + "key": "dfba6f40-6a41-4a3e-bf7e-49f63414e6ef", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3811,14 +3983,18 @@ "wellName": "D8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "4e47ea99-eb46-4099-a27a-b405805af6c1", + "key": "73686f51-4623-488c-ae1d-cf954e67ac2a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3826,14 +4002,18 @@ "wellName": "D8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "a2593cea-5291-4cc5-9c37-9cad891eb8ac", + "key": "87b23803-be29-44ff-b464-53bc9e7ec9d4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3841,14 +4021,18 @@ "wellName": "D8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "9ebc32bd-8f9e-44d0-b3e3-b9ab21c0671d", + "key": "01d936c2-c68f-4da4-9e58-47c505a479c7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3856,23 +4040,31 @@ "wellName": "D8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "30af2362-11e5-4241-9f96-a44cee7d48e1", + "key": "e575881c-12c0-4291-aee7-a9838ae46669", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "cf07e58d-4500-403d-b89c-2a40b0d06696", + "key": "3208e8c0-5a0f-457c-9344-7f2966b44d47", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -3880,32 +4072,43 @@ }, { "commandType": "touchTip", - "key": "22e10e85-c818-4cee-8947-1b8e51a59cb5", + "key": "c356873a-300c-4e28-855a-b265ced0e7f2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "D8", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9e70258f-eeb1-4bdd-913e-e3af13db97a4", + "key": "0377b295-3529-4f46-8e16-c368ab6ebe49", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "1662223e-d4fe-46b6-9ce6-b422e38f10df", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "07e93710-93cc-4dde-9e14-9ae43d132da3", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "8c260e0e-5f2d-4e97-afdc-66b3b623a8e4", + "key": "12083522-572b-42ae-8e29-cc269f844dda", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -3914,7 +4117,7 @@ }, { "commandType": "aspirate", - "key": "79903b09-e87f-4fa2-aedd-dd77ad9a651e", + "key": "b44b017d-8793-4916-ba75-a0fcf17941a6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3922,14 +4125,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "6212380a-b25e-4cbf-a3c8-8f29bbcb2b0b", + "key": "71ee0966-e142-4748-b9ed-c222e9240495", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3937,14 +4144,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "e8a9183f-3121-422b-9ba7-695d0f4a9736", + "key": "52b3c2fd-fb1f-4ed8-8a55-cef464e285c8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3952,14 +4163,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "706123a0-fca4-4d28-836c-9b76874c1138", + "key": "09e89c72-abf8-4763-a17e-f0b68451e4bb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3967,14 +4182,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "8248501f-5871-49a2-98c6-b32bf1da0dea", + "key": "b5a4c0be-90a7-44de-9471-81e0057718bb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3982,14 +4201,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "0df942df-9354-4e54-8206-cf4f8ba11cb9", + "key": "a1ee83f2-5933-4d3e-98b6-84aa33b24e5b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3997,14 +4220,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "c8f8eaed-4014-4879-86d2-435008868ec8", + "key": "8ba0eb8b-3090-41b4-a1b3-aad2f50187ff", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4012,24 +4239,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "361114f4-38dd-40b9-b9fa-2fdf8a4b091a", + "key": "86d7ea41-8ecf-402a-8b4d-25809005e4ba", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "aefc2b07-ac5c-4411-a4db-12c83269d714", + "key": "577ce715-206f-4a51-b121-cacdb1160ec3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4037,14 +4273,18 @@ "wellName": "C8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "813ed0eb-f29d-40e6-b6b4-85018049b8b4", + "key": "4e900e98-c62e-49b7-b617-298684c919f0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4052,14 +4292,18 @@ "wellName": "C8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "507896df-a5d5-4cc9-a97f-e68df127a693", + "key": "7e39af6a-1a82-435a-98d8-c652bb734836", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4067,14 +4311,18 @@ "wellName": "C8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "79c24dd7-b26d-4964-86c3-40eafa0fb5a7", + "key": "6a4d013b-e5ae-4c00-ab32-d255cbe3199c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4082,14 +4330,18 @@ "wellName": "C8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "d5ac4971-c5e5-4618-933e-6b3d9c17c3db", + "key": "50bc592a-7d11-44db-87d1-c1fac3f33aca", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4097,23 +4349,31 @@ "wellName": "C8", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "16dad174-d9da-4fe2-a4c0-da333a7a02bf", + "key": "b07dc9b0-ae2b-4e6d-a2f2-7689c53c3865", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "be621005-7da5-4b98-88a1-4f784bef7b59", + "key": "99375975-5737-4632-acf3-a1e4ea1034ca", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4121,32 +4381,43 @@ }, { "commandType": "touchTip", - "key": "241e0284-b4cd-42f8-87c3-9f6e76878481", + "key": "e643590b-d941-4660-972f-e73f013cf923", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "C8", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "7882f2ed-6767-4b0a-b1f1-14acbe907042", + "key": "33f25151-526c-400e-9c36-02257a6b02b9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "7838e599-70b3-4fca-be2a-792c8c4fdc71", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "0f621a52-7ac3-49b1-a732-4a4547737217", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "7292e57a-2dd6-4906-9e3f-eefca3e2a3d4", + "key": "25ecc88a-bb2d-40aa-b03d-8c070b64bcfc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4155,7 +4426,7 @@ }, { "commandType": "aspirate", - "key": "e8e16545-f2b0-4cc8-a69e-9d1235495a4a", + "key": "1bec23d2-cf63-4e75-a758-c8035f509adc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4163,14 +4434,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "5dbe7aef-ced4-4f28-a524-6de1f2bddcb0", + "key": "84b0d168-b6e6-4bdd-a1b2-714bc49a92b6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4178,14 +4453,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "2fab0223-fc41-476b-b82b-b6bf0bd266b3", + "key": "75c1c612-a887-4f27-87da-0f43823d416a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4193,14 +4472,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "2b8c6aa1-1a87-4193-9688-03303eeead9d", + "key": "d168f003-f78d-46fd-9e5a-4f9eda0b3118", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4208,14 +4491,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "1638392f-6776-4523-b0d9-b4d16d21f97d", + "key": "b78fd127-21c8-49b0-aed2-0805c8be3e86", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4223,14 +4510,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "61070197-8d23-4002-ba49-379bd79d832e", + "key": "344402c1-a8fd-43e1-ac66-9432edb241f5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4238,14 +4529,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "1a855177-cc35-433d-8bbb-eb024f020cb5", + "key": "02347dbb-2094-4e01-b8b6-d01581dde145", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4253,24 +4548,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "22c26f9b-3b2c-4e3a-8d9c-de465c5b265e", + "key": "975cd29b-7803-4784-afb4-803f0f0d423e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "08159fe2-379b-49e2-8477-773eebf0c8c6", + "key": "b7f1a73a-8831-4a44-9ba7-b5cb519bb215", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4278,14 +4582,18 @@ "wellName": "E7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "ab49ac5b-31c7-4873-81d9-9ce6016f921b", + "key": "4cc4dd8d-096e-46c1-b679-5350affd8b8a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4293,14 +4601,18 @@ "wellName": "E7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "f09a9272-eadb-48bf-bf2e-11b2747dbd31", + "key": "53c53d98-c333-4071-8b9c-7ddd30af9156", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4308,14 +4620,18 @@ "wellName": "E7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "78273742-bc66-470c-a727-ddedd08d1b69", + "key": "99bf4d65-85f8-4759-9ba9-97e2aa2e7c0d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4323,14 +4639,18 @@ "wellName": "E7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "a17cef64-c5e7-4893-9288-222a507f2421", + "key": "aca6fcb1-3f17-444c-9ec8-f15a8abfcfc0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4338,23 +4658,31 @@ "wellName": "E7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "e7015888-4542-4287-bf5d-54c3d7af1790", + "key": "03e1fe26-33b6-44b6-be58-0287e71c28f3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "9d125170-0c77-410e-80dc-c48a0dc89610", + "key": "5a2c56e4-bc46-4855-8c5e-9bfce14ae3b9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4362,32 +4690,43 @@ }, { "commandType": "touchTip", - "key": "21d3d90c-e2f0-4d94-ae10-064b218e4a71", + "key": "6d85e783-0eca-4bb3-a3a2-166d2071ebe8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "E7", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "978cd7b1-fe78-4982-813c-e350ce72089b", + "key": "41c7dd1d-0e8a-4586-8ba1-f1daf5e749e6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "3753055c-cded-4904-bd26-59f65fe67365", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "eb5b780c-0a3e-411e-b596-0e32558910a0", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "909fb7ce-c2a8-4fa1-aabc-904a55f506dd", + "key": "d797963b-39f7-4720-a4c1-8d81f4f9c472", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4396,7 +4735,7 @@ }, { "commandType": "aspirate", - "key": "6530a82f-60be-495b-9c83-9345f31dcba2", + "key": "5c224719-928e-4af8-b7aa-f10b65946c11", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4404,14 +4743,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "77ecf614-b1db-4a97-90e0-835d80b92115", + "key": "1aba110d-735e-46ad-a5e6-020663d29ebc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4419,14 +4762,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "3bececfa-3a05-412a-8be0-4212cbaa45a6", + "key": "7254a835-c333-43a6-b9e1-25ef28edbad5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4434,14 +4781,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "74394c64-f987-467b-9572-b7bc30ea07c6", + "key": "0450994c-9de9-4f5e-9c26-710421e396d6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4449,14 +4800,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "880891f1-58d4-45cc-b511-4492fa0a05a1", + "key": "d1b342f4-62d8-49a8-be58-2dd480edd145", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4464,14 +4819,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "7d0a5ff2-9bec-4fe9-933d-829d6490aa23", + "key": "032db156-a716-4fa2-8683-99cd424483c6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4479,14 +4838,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "22e4b34c-a57e-427c-96ad-e9394a06b06d", + "key": "0c4b6581-62ce-49f2-8916-1086071c579b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4494,24 +4857,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "391d6c31-bc93-494b-8125-73ecbed2c870", + "key": "b4a66d40-394a-4350-ad29-0a3b7bbde31b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "2297ef01-9ad7-4b4a-ae78-ae6c052e8ad3", + "key": "8409f328-898c-48d5-b2f0-14334072d2a2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4519,14 +4891,18 @@ "wellName": "D7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "ace95699-e77a-4f9c-9191-32deb8e50cee", + "key": "3f6459ee-02d6-499e-ba89-f0ebffb48d88", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4534,14 +4910,18 @@ "wellName": "D7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "52c092b8-4ee1-40c8-afa1-558e67754527", + "key": "1bf54eb3-f3ba-43f7-9ccc-43c83b1fcf13", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4549,14 +4929,18 @@ "wellName": "D7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "c9119064-bab6-4445-b2eb-a555d6a167d7", + "key": "8166d4a6-0a41-4a2c-bccb-043859a9f1d8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4564,14 +4948,18 @@ "wellName": "D7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "e31f30a3-0741-4beb-a30f-aff8b950f291", + "key": "47d7fd68-05b0-41f6-9c4c-7a37aa7bcb13", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4579,23 +4967,31 @@ "wellName": "D7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "ddddff22-6c24-4ead-bbe5-57ac119545ce", + "key": "3809644f-92fa-4da0-9db5-542c0a181e8c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "ecf9066a-aea2-457f-a9cd-dd7d7f8f5902", + "key": "929ce1cb-82cb-4c39-92a3-39c628b019c9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4603,32 +4999,43 @@ }, { "commandType": "touchTip", - "key": "0c8c0b40-dd64-4d38-a833-0b595be028eb", + "key": "6d135454-0d51-49df-bf4c-4e2bb813f1d2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "D7", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "837c34b1-09e0-4151-973e-71978f71797a", + "key": "349625a9-aa2b-4d35-b40b-8ef14e586a51", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "3c7c4d44-d1b9-43ce-9164-fd7d938cfb33", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "444440c9-00d5-4348-99a9-1a3cb1f742fd", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "56d7d95b-5fd4-4dcc-9b58-afbb11df5803", + "key": "4c52ae1d-70b1-4dc9-83e7-02b3af2c200e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4637,7 +5044,7 @@ }, { "commandType": "aspirate", - "key": "0e53a9ea-f3e5-414b-a43d-6d2a9a691e07", + "key": "5640b654-9339-4845-9b40-a6beba046904", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4645,14 +5052,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "7f0ccabc-38e2-4e3b-87c2-0a0b0d0a9cb0", + "key": "592654fb-22db-4ace-b2a7-f68f56a9967b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4660,14 +5071,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "17cf96fd-15c4-45ec-a761-539855aa4467", + "key": "3d039399-6e83-4a41-a3d1-2ab1c5482824", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4675,14 +5090,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "00df1eee-e233-4db3-b194-922635c24055", + "key": "d0fe6ba1-5037-4b30-a5c5-22efa87fa431", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4690,14 +5109,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "85725880-3603-496d-8971-475b656e25e3", + "key": "df2ba6f0-4d77-430b-97fc-5ce88b1f3947", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4705,14 +5128,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "3dd79bca-76f6-4b85-af9a-b4e5b5fad56c", + "key": "85078a16-bdf9-471d-9b07-4938634c49c9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4720,14 +5147,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "6dca2dbc-fd19-4719-a6af-5172b08e7052", + "key": "bc04ada5-ca7f-4bc5-bf00-d85e82360ab8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4735,24 +5166,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "a3a82297-8954-4db3-8124-98c75ff1d291", + "key": "2cc0af02-6209-4482-9436-4a3cbf4e52d6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "3fa90905-3c11-4831-9eb0-bb8401c7b57f", + "key": "6d084361-fbed-49c1-af3e-28e58e8e60b7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4760,14 +5200,18 @@ "wellName": "C7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "fd7f4b56-c287-45ff-8e75-ddf57cfd9d53", + "key": "dd665ee5-3242-4c63-afe0-e2083810ee37", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4775,14 +5219,18 @@ "wellName": "C7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "4b84949e-accd-45e5-bf9a-758dcd482bb9", + "key": "7ef70d87-4be3-4260-8098-39599f8a1fb0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4790,14 +5238,18 @@ "wellName": "C7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "6ec22efa-a14a-4694-95e6-f0ea4328e461", + "key": "588334ee-930e-4a6d-a1ab-69c145197023", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4805,14 +5257,18 @@ "wellName": "C7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "3ed05672-7bc9-4c64-9701-c45201db825b", + "key": "857d9f81-2181-4ca2-9389-cad3fa9aee70", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4820,23 +5276,31 @@ "wellName": "C7", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "3214674c-48d4-49c5-a4e7-1a3314087fad", + "key": "ad2d67a4-625c-437b-96c8-e48fd7918577", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "f2410019-bafd-4d21-aec1-118a61e7db16", + "key": "2d154de5-d3e3-4641-a1e3-5c006d810006", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4844,32 +5308,43 @@ }, { "commandType": "touchTip", - "key": "88ecb703-7c28-46ca-8f7d-d41ef09ddce7", + "key": "6b0659e9-1856-4550-8279-fb82fc2e94a7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "C7", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "1b2e7055-e56f-44db-a093-3ffe91d7af2e", + "key": "cec99b96-c228-4e2a-a143-fbbbfb50901e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "887afac4-2afc-420d-af33-20f4d049ef83", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "15825029-3fab-4e68-9469-560e148e7ced", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "99c83784-aac8-49b8-a325-ca59a77a2d39", + "key": "161b384c-5c92-4056-8015-2719ee427475", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -4878,7 +5353,7 @@ }, { "commandType": "aspirate", - "key": "032204ef-7200-4162-88ce-8979712b73b6", + "key": "08f3fb64-eaf8-4416-aa23-baba231efed0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4886,14 +5361,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "efac47fc-8368-41e6-976f-e365ae5e27c3", + "key": "651d97ff-dc34-41cd-8dd4-c0b94f21c674", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4901,14 +5380,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "ba869fd1-338e-4a36-b92b-1cbfa10e0e6b", + "key": "ca22a85d-6732-4c43-a8ea-4a857065ddd2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4916,14 +5399,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "65d6e8bf-7045-49cf-879c-638d7afbef6e", + "key": "f16da0ca-bba1-4ee1-a2ed-f68fdbeee204", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4931,14 +5418,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "51d7a3d8-f604-48f4-9815-0b2a482dc099", + "key": "c91c5044-4c23-420e-9892-a4067215d78d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4946,14 +5437,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "d49b79f2-e775-4f2d-a7a1-078f4f462c6a", + "key": "47346096-1081-4817-96c9-77d799327011", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4961,14 +5456,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "258c84fb-2554-418f-bb48-2c5dd0113e6d", + "key": "35813192-b966-4cbd-95a9-9d87cae07adc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4976,24 +5475,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "a400dae9-231d-442e-b9be-6b6740a6d1ff", + "key": "eac2a4b2-65cc-4c8d-b8d8-01b2c9bf2a20", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "996547db-dc17-46fe-80fd-7b3760e2a710", + "key": "194be867-02d5-48d1-a19f-9c01fb832068", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5001,14 +5509,18 @@ "wellName": "E6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "fce348a2-d9ab-47d9-a23f-5ad5afbe6213", + "key": "99ffbb3c-e5a2-48f4-a4a4-811b6839aeea", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5016,14 +5528,18 @@ "wellName": "E6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "bd691e8d-5a43-4630-bd2f-d15a5cac84ba", + "key": "78a477c6-5414-480e-8953-0ba4bb94f220", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5031,14 +5547,18 @@ "wellName": "E6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "47363021-51c0-46b3-bdaf-b22e8017e603", + "key": "1f7e8e1b-8f71-4782-b731-266da9db63ff", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5046,14 +5566,18 @@ "wellName": "E6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "5adf5988-06f9-429f-bf9a-636a8ff7fdc2", + "key": "7e06c384-46d3-40af-b820-96c86d8a5da5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5061,23 +5585,31 @@ "wellName": "E6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "cd7d35ea-8c31-4120-8060-479cc8870a5c", + "key": "fca397e0-65a0-48d6-83fe-05132b2ddc24", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "e29427fb-9b59-4a8c-ac2f-8b0acbbf0e47", + "key": "8f53ee29-11fb-441b-9719-97c132f275b5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5085,32 +5617,43 @@ }, { "commandType": "touchTip", - "key": "055db5bf-e418-426a-842f-f07e9dfa8510", + "key": "0699658d-fb6c-4b56-b803-00dd96940cc4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "E6", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "6ebb374e-7108-4ddf-92a0-512dc2e60530", + "key": "9b306194-770b-49ef-bcd3-95c64244679e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "6c5de725-903a-451f-932a-2f8380204b07", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "0c9714a3-0018-44fa-a531-8dcf9c168d1a", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "f4d2c29a-8814-4af1-b120-3df7802369bd", + "key": "e13d0327-a840-4de7-b7ce-fbde43257c34", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5119,7 +5662,7 @@ }, { "commandType": "aspirate", - "key": "8d578f42-5a41-41bc-9df1-c4a244810ad8", + "key": "2a19acac-8b2f-4f28-8eee-826a8d6bff15", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5127,14 +5670,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "172cdb6c-6d8b-4668-9608-5a3b362687e3", + "key": "88afadcf-1256-437e-856c-4f615ccb4a72", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5142,14 +5689,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "07192ce9-231f-4eaf-a698-59f7e599a5e1", + "key": "d8319c46-7fd0-4f68-82d1-6a761556ec85", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5157,14 +5708,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "2477ea35-fd4a-4c0e-b470-a0c1d4f11916", + "key": "5e18da13-4b92-4733-9e9c-26f57a5eb5b4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5172,14 +5727,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "cbfd20c0-260e-4cb0-98f9-e816cf8583a5", + "key": "18fb939f-0390-4741-9fee-50b1911936c0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5187,14 +5746,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "5a975240-eedd-426a-8b6b-f8cdcb3d75df", + "key": "40da27db-1412-440d-bbd0-5148b6f64ed7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5202,14 +5765,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "1d313faa-21c1-47ab-ba1e-3c68c08d6682", + "key": "9f504ffd-465d-495b-a656-109d35cfe9b1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5217,24 +5784,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "7fb499b3-a3ee-45c8-b7d4-f6c5b51724a7", + "key": "394d2f74-5e28-4e6f-b815-c97087c89691", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "fdb1ebdf-4f40-4107-bc38-b27d6e256168", + "key": "8cb558bd-2ea6-497c-b070-af6e41664a26", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5242,14 +5818,18 @@ "wellName": "D6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "5588de92-8c5c-4c96-9130-e846c2141cb5", + "key": "3274dd59-0600-4c2a-890a-fecfac8b5862", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5257,14 +5837,18 @@ "wellName": "D6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "553f79bb-469d-40f8-82e7-0525a157a515", + "key": "21d4fc28-b92e-4e45-a1ef-cccee395e3ec", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5272,14 +5856,18 @@ "wellName": "D6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "d9ac760b-6f17-4a99-95d8-d0ff36a3ef7d", + "key": "7d9b7d52-8963-41bd-869a-afb3273ad34e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5287,14 +5875,18 @@ "wellName": "D6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "20cd8b27-c1ac-4d31-8a11-584721bde3a4", + "key": "35a3b1ab-efa8-4f6b-b074-b5bedb66f827", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5302,23 +5894,31 @@ "wellName": "D6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "dd41fb74-88d2-4aa9-b6f7-86e18ca5afbf", + "key": "9acfc10b-c99c-4f11-a270-0f5eec661be5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "5d2b2fa4-f9e0-4d09-b606-c67ff286e82e", + "key": "e3135725-cb6f-45a1-9fe0-d19f04f27656", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5326,32 +5926,43 @@ }, { "commandType": "touchTip", - "key": "5524711b-b289-453c-a9b5-9d6e0760448a", + "key": "96673cd7-fd03-4c0a-bb2a-b14a0ffb0ccb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "D6", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "ae31c5da-59cf-4b17-a30b-b712cd892995", + "key": "2132f0ae-ea2e-443b-a971-5c79ee30f789", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "06c8ba10-b4b4-461b-8381-731d159e8509", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "9c328923-a752-40b1-9270-ed97a3a0c553", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "560e6912-0b9d-4561-97ac-196f47dfe375", + "key": "988563f5-56c4-4e21-a92b-b6e2dfb8bde5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5360,7 +5971,7 @@ }, { "commandType": "aspirate", - "key": "87a77e2e-7c20-4bd9-9b7b-2f8ed718d8d4", + "key": "c98f3b96-fd38-40f2-9794-828ff525969c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5368,14 +5979,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "dbfac2d3-a21f-4018-b519-11099d3bb60e", + "key": "576cd475-ef5a-4016-a705-efd349d2e442", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5383,14 +5998,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "9d900527-0693-47a3-96e8-6f0a84c7136d", + "key": "e7ee52ac-8fcf-44ba-82a2-1db637e376be", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5398,14 +6017,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "7c47f5c3-600f-45a6-85e8-198b08ce8ca3", + "key": "77016b31-a245-40fc-a52e-c83b3004b81f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5413,14 +6036,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "be4c39f4-a573-48cc-b67a-8195876a9434", + "key": "7db3ab8a-5903-4960-bbdc-26497da191ad", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5428,14 +6055,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "63df05b9-c646-449e-8c78-4ab053fc7236", + "key": "910d7439-52d6-4a16-a6a5-0b71e3c32696", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5443,14 +6074,18 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "66ea2943-615f-4e05-b695-ea94afd3c322", + "key": "39bfaad3-fdc2-42d1-8f12-d2684d0a9bbf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5458,24 +6093,33 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "touchTip", - "key": "961aa4da-95ef-486b-8c13-f662a4ec90ed", + "key": "44f4d1a4-26c3-435e-810c-ecaad59a55ab", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "A1", - "wellLocation": { "origin": "bottom", "offset": { "z": 28.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12.8 + } + } } }, { "commandType": "dispense", - "key": "d2f4161e-c8da-4bd5-90e7-b28925b34712", + "key": "ddc2756d-38e4-4d42-81a1-ad531797ec79", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5483,14 +6127,18 @@ "wellName": "C6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "bb6c6910-1ba0-4b97-9eca-3ebbd2cb59fd", + "key": "23ecb712-813c-4221-92b5-b7ad0df7c91e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5498,14 +6146,18 @@ "wellName": "C6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "7d0b6237-00a2-4ad2-9f68-810c340500d0", + "key": "020d2f92-da37-4230-9041-0d746dbc81c8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5513,14 +6165,18 @@ "wellName": "C6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "aspirate", - "key": "b238433e-3255-437b-8908-d621c9b36010", + "key": "9493caea-f0ee-459a-b286-b656c540fa19", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5528,14 +6184,18 @@ "wellName": "C6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 0.6 } }, { "commandType": "dispense", - "key": "25fdfced-9695-4f87-ba20-258f4168235c", + "key": "2fd36c9a-4387-4e0d-b96b-c095c325450c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5543,23 +6203,31 @@ "wellName": "C6", "wellLocation": { "origin": "bottom", - "offset": { "z": 2.5, "x": 0, "y": 0 } + "offset": { + "z": 2.5, + "x": 0, + "y": 0 + } }, "flowRate": 10 } }, { "commandType": "moveToAddressableArea", - "key": "484d5412-4981-46a9-aa9d-fc237de669c1", + "key": "c5c15d57-b094-4344-8a9d-ef55442e587c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "960ad7f1-4740-4af5-883a-51e5d387f768", + "key": "9f3a5bc5-d27e-47f3-996c-873edee7e793", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5567,32 +6235,43 @@ }, { "commandType": "touchTip", - "key": "6ea95c68-c58f-4036-906b-7c72a5c01adf", + "key": "817158fe-bf57-4d1e-a6a4-020cfd8d79ab", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "C6", - "wellLocation": { "origin": "bottom", "offset": { "z": 40.3 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -1 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "3ba5513e-5a3f-4423-a4ed-cebb8b4c4e64", + "key": "30538d0c-d451-46fe-a19d-56f564b351e5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "718269ea-ade8-4059-b891-740e1a430d26", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "08f1c64b-09d5-4ac2-a5c3-3d152da7cad2", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "pickUpTip", - "key": "17931110-50d0-4a12-894c-28227d345619", + "key": "45323d95-f2a6-47a2-8854-62e54e92585b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul:opentrons/opentrons_96_tiprack_10ul/1", @@ -5601,7 +6280,7 @@ }, { "commandType": "aspirate", - "key": "36a8b6c7-154b-4aea-ab30-f7a345be28a5", + "key": "befaaff7-d4e1-4b3c-9c0c-d40c2b956962", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5609,14 +6288,18 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 8 } }, { "commandType": "dispense", - "key": "e7846997-ae31-467a-b77e-b858b9d0a9f0", + "key": "bac1ea10-10c5-41ca-96ce-781304f8675e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5624,14 +6307,18 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 7 } }, { "commandType": "aspirate", - "key": "886f51e9-f580-477a-a333-f9d03085b96c", + "key": "f37e217e-4939-44e2-9671-9b05ad14786d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5639,14 +6326,18 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 8 } }, { "commandType": "dispense", - "key": "ad41bba6-ce89-4eae-ad93-b1c1dc6bfb01", + "key": "c159f36c-e926-4875-b99b-4add3525c4e3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5654,14 +6345,18 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 7 } }, { "commandType": "aspirate", - "key": "7a8f74a2-108a-45d2-91e5-f53c57402612", + "key": "25ae2b7c-b305-4e87-840d-42de7ded3b4b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5669,14 +6364,18 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 8 } }, { "commandType": "dispense", - "key": "d06aee21-cccb-468d-9342-95ae2d6cdb5b", + "key": "23397b4a-4383-42ed-b8f4-e44f3a010a71", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5684,23 +6383,31 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { + "z": 0.5, + "x": 0, + "y": 0 + } }, "flowRate": 7 } }, { "commandType": "moveToAddressableArea", - "key": "34463a2c-f0bd-414a-b4c4-190f1914da80", + "key": "890a6535-a85d-466f-8505-64405697b5a0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "blowOutInPlace", - "key": "6ae059c8-3e79-4444-9453-dd63e6fc013a", + "key": "c8253121-dac9-4f54-93f9-f5db77f7c879", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5708,33 +6415,47 @@ }, { "commandType": "touchTip", - "key": "ee56d8f7-e42e-412e-aa17-5512ee6a7dd6", + "key": "57b65cb0-810c-44f2-b3bb-9a4c9d7e829d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well:opentrons/usascientific_96_wellplate_2.4ml_deep/1", "wellName": "F1", - "wellLocation": { "origin": "bottom", "offset": { "z": 30.5 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -10.8 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "83d1b62e-b229-47c9-870b-c8ab13783a23", + "key": "0d13cd12-8ca0-4ead-bfbd-debe41d9a00e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "a38630c2-540e-409a-a279-3ea9f160f8f4", - "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } + "key": "087b6b54-6e37-48c3-aeda-91ee0b43febc", + "params": { + "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" + } }, { "commandType": "waitForDuration", - "key": "05eaeafe-5354-48fb-b511-558342b7ed25", - "params": { "seconds": 3723, "message": "Delay plz" } + "key": "f1e0270b-15e2-4ba6-adaa-4369bd92c271", + "params": { + "seconds": 3723, + "message": "Delay plz" + } } ], "commandAnnotationSchemaId": "opentronsCommandAnnotationSchemaV1", diff --git a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json index 8b8d129418f..bf2f4da7476 100644 --- a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json +++ b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json @@ -6,16 +6,16 @@ "author": "", "description": "", "created": 1714565695341, - "lastModified": 1731355906825, + "lastModified": 1738157367073, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.2", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 20:10:44 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_flex_96_tiprack_50ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": {}, "ingredLocations": {}, "savedStepForms": { @@ -61,7 +64,7 @@ "aspirate_mix_volume": null, "aspirate_mmFromBottom": 29, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, "aspirate_wellOrder_first": "t2b", "aspirate_wellOrder_second": "l2r", "aspirate_wells_grouped": false, @@ -85,7 +88,7 @@ "dispense_mix_volume": null, "dispense_mmFromBottom": null, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, "dispense_wellOrder_first": "t2b", "dispense_wellOrder_second": "l2r", "dispense_wells": ["B3"], @@ -100,10 +103,11 @@ "preWetTip": false, "tipRack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "volume": "10", - "id": "292e8b18-f59e-4c63-b0f3-e242bf50094b", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "292e8b18-f59e-4c63-b0f3-e242bf50094b", + "dispense_touchTip_mmfromTop": null }, "960c2d3b-9cf9-49b0-ab4c-af4113f6671a": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", @@ -175,7 +179,10 @@ ] } }, - "robot": { "model": "OT-3 Standard", "deckId": "ot3_standard" }, + "robot": { + "model": "OT-3 Standard", + "deckId": "ot3_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_flex_96_tiprack_50ul/1": { @@ -193,7 +200,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", "displayCategory": "tipRack", @@ -1188,9 +1198,17 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_flex_96_tiprack_adapter": { "x": 0, "y": 0, "z": 121 } + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } } }, "opentrons/opentrons_96_well_aluminum_block/1": { @@ -1208,7 +1226,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons 96 Well Aluminum Block", "displayCategory": "aluminumBlock", @@ -2088,7 +2109,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2200,11 +2223,23 @@ "version": 1, "schemaVersion": 2, "allowedRoles": ["adapter"], - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "gripperOffsets": { "default": { - "pickUpOffset": { "x": 0, "y": 0, "z": 0 }, - "dropOffset": { "x": 0, "y": 0, "z": 1 } + "pickUpOffset": { + "x": 0, + "y": 0, + "z": 0 + }, + "dropOffset": { + "x": 0, + "y": 0, + "z": 1 + } } } }, @@ -2501,7 +2536,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { "ordering": [ @@ -3404,7 +3443,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -3515,13 +3556,29 @@ "namespace": "opentrons", "version": 2, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.2 }, - "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 12.66 } + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.2 + }, + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 12.66 + } }, "stackingOffsetWithModule": { - "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.8 } + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.8 + } } } }, @@ -3530,7 +3587,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "8ba6b5e2-1555-4259-bd70-275c02af22f6", + "key": "bc9f6354-a7a7-407a-86fa-d764fed37892", "commandType": "loadPipette", "params": { "pipetteName": "p50_single_flex", @@ -3539,25 +3596,29 @@ } }, { - "key": "b786c5b3-97d1-4deb-ab20-1b7ae2a92e96", + "key": "5653381b-77ed-49c5-b13a-a897108e25b2", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", - "location": { "slotName": "D3" }, + "location": { + "slotName": "D3" + }, "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType" } }, { - "key": "d2f656f7-bb89-4430-8443-01c4f5d558c7", + "key": "9b05da10-4b23-4e6b-82f0-03d078c0aafc", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", - "location": { "slotName": "C3" }, + "location": { + "slotName": "C3" + }, "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType" } }, { - "key": "4295d596-2722-4575-97fe-615528c84168", + "key": "c195d07a-ca33-4a3c-a33d-1f5df2f3b906", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Well Aluminum Block", @@ -3571,7 +3632,7 @@ } }, { - "key": "858ef51a-50ac-49d9-81d8-3ab0b9d195c2", + "key": "cad83091-9a60-4df4-aaa8-86316b44e6b4", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -3579,11 +3640,13 @@ "loadName": "opentrons_flex_96_tiprack_50ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "C2" } + "location": { + "slotName": "C2" + } } }, { - "key": "461afa60-d04a-40c1-bd25-0dae844c29b9", + "key": "3128ec57-5aed-4824-8b91-f9a3f7a9ea1f", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap", @@ -3597,7 +3660,7 @@ } }, { - "key": "f0fd22f2-6318-4a78-9fe4-f28b97ea1bc3", + "key": "d70bb67b-f388-4eda-84a5-51accd89c534", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -3612,7 +3675,7 @@ }, { "commandType": "pickUpTip", - "key": "5c52fcb4-a8a9-47b4-8b0f-2a7ef9aea904", + "key": "5535c00b-3931-43b4-bd39-6f7498ac3739", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "labwareId": "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -3621,7 +3684,7 @@ }, { "commandType": "configureForVolume", - "key": "dd1b37d6-eb8c-4616-bc8a-e1f17556234a", + "key": "a35a7664-c44a-41fb-9e67-08b01f2339f7", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10 @@ -3629,7 +3692,7 @@ }, { "commandType": "aspirate", - "key": "c8ba3637-892e-45c1-8b31-0a975060cdff", + "key": "d7a2bb3f-4158-41c2-83fa-95c33f02c076", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10, @@ -3637,14 +3700,18 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 29, "x": 2, "y": -2 } + "offset": { + "z": 29, + "x": 2, + "y": -2 + } }, "flowRate": 35 } }, { "commandType": "dispense", - "key": "eb95a3e1-091d-4646-9324-a2594284bf8f", + "key": "5c6fc843-d3e9-46ba-88a7-34f88771010a", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "volume": 10, @@ -3652,40 +3719,55 @@ "wellName": "B3", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 57 } }, { "commandType": "blowout", - "key": "98f2eee6-1ee5-4ba8-acd5-3b3316560957", + "key": "e53ccf8f-b3e3-4a63-a84e-b000457162e6", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "labwareId": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "wellName": "C1", "flowRate": 20, - "wellLocation": { "origin": "top", "offset": { "z": -12 } } + "wellLocation": { + "origin": "top", + "offset": { + "z": -12 + } + } } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "09bd3532-aa71-4795-a9c9-32ad271aa852", + "key": "287251ef-d8dc-4ae5-ad72-ac84cd81e5b6", "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "ec86f079-6e0e-4eda-a0a1-97199bc852fd", - "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0" } + "key": "ea735ed4-a2c6-41af-ae6e-7eb223db25bf", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0" + } }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "74a68fe2-9e03-4bff-9ba4-0f125a2cea49", + "key": "c45ee0b8-08fa-4854-8a0d-e65f513c2f08", "params": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", "celsius": 40 @@ -3693,7 +3775,7 @@ }, { "commandType": "temperatureModule/waitForTemperature", - "key": "9c4a7f7c-6ce3-48a8-ad05-06d2e6b29fdf", + "key": "f994033a-27cf-4ce1-999b-242edae5538e", "params": { "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", "celsius": 40 @@ -3701,7 +3783,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "c70e216e-7e4d-4b78-9c4d-e605ed05a5e3", + "key": "6ceb2f9e-7ac4-4807-ada9-5d1d3cd316ce", "params": { "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", "celsius": 4 @@ -3709,7 +3791,7 @@ }, { "commandType": "temperatureModule/waitForTemperature", - "key": "6b9cd83e-c6d3-41f0-a31f-6645ada88d6d", + "key": "e090a25b-48ec-4a2e-8744-23df852efee2", "params": { "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", "celsius": 4 diff --git a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json index fe6d08df65c..d22281b0369 100644 --- a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json +++ b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json @@ -6,16 +6,16 @@ "author": "", "description": "", "created": 1701805621086, - "lastModified": 1714570523087, + "lastModified": 1738157515738, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.2", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_flex_96_tiprack_50ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": {}, "ingredLocations": { "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1": {} @@ -40,126 +43,128 @@ "fe1942b1-1b75-4d3a-9c12-d23004958a12:opentrons/biorad_96_wellplate_200ul_pcr/2": "B1", "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1": "D1" }, + "moduleLocationUpdate": {}, "pipetteLocationUpdate": { "de7da440-95ec-43e8-8723-851321fbd6f9": "left" }, - "moduleLocationUpdate": {}, "stepType": "manualIntervention", "id": "__INITIAL_DECK_SETUP_STEP__" }, "83a095fa-b649-4105-99d4-177f1a3f363a": { - "pipette": "de7da440-95ec-43e8-8723-851321fbd6f9", - "volume": "10", - "tipRack": "opentrons/opentrons_flex_96_tiprack_50ul/1", - "changeTip": "always", - "path": "single", - "aspirate_wells_grouped": false, + "aspirate_airGap_checkbox": false, + "aspirate_airGap_volume": "5", + "aspirate_delay_checkbox": false, + "aspirate_delay_mmFromBottom": null, + "aspirate_delay_seconds": "1", "aspirate_flowRate": null, "aspirate_labware": "fe1942b1-1b75-4d3a-9c12-d23004958a12:opentrons/biorad_96_wellplate_200ul_pcr/2", - "aspirate_wells": ["A1"], - "aspirate_wellOrder_first": "t2b", - "aspirate_wellOrder_second": "l2r", "aspirate_mix_checkbox": false, "aspirate_mix_times": null, "aspirate_mix_volume": null, "aspirate_mmFromBottom": null, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, + "aspirate_wellOrder_first": "t2b", + "aspirate_wellOrder_second": "l2r", + "aspirate_wells_grouped": false, + "aspirate_wells": ["A1"], + "aspirate_x_position": 0, + "aspirate_y_position": 0, + "blowout_checkbox": false, + "blowout_flowRate": null, + "blowout_location": null, + "blowout_z_offset": 0, + "changeTip": "always", + "dispense_airGap_checkbox": false, + "dispense_airGap_volume": "5", + "dispense_delay_checkbox": false, + "dispense_delay_mmFromBottom": null, + "dispense_delay_seconds": "1", "dispense_flowRate": null, "dispense_labware": "1e553651-9e4d-44b1-a31b-92459642bfd7:trashBin", - "dispense_wells": [], - "dispense_wellOrder_first": "t2b", - "dispense_wellOrder_second": "l2r", "dispense_mix_checkbox": false, "dispense_mix_times": null, "dispense_mix_volume": null, "dispense_mmFromBottom": null, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, + "dispense_wellOrder_first": "t2b", + "dispense_wellOrder_second": "l2r", + "dispense_wells": [], + "dispense_x_position": 0, + "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "5", - "blowout_checkbox": false, - "blowout_location": null, - "preWetTip": false, - "aspirate_airGap_checkbox": false, - "aspirate_airGap_volume": "5", - "aspirate_delay_checkbox": false, - "aspirate_delay_mmFromBottom": null, - "aspirate_delay_seconds": "1", - "dispense_airGap_checkbox": false, - "dispense_airGap_volume": "5", - "dispense_delay_checkbox": false, - "dispense_delay_seconds": "1", - "dispense_delay_mmFromBottom": null, "dropTip_location": "1e553651-9e4d-44b1-a31b-92459642bfd7:trashBin", "nozzles": "ALL", - "dispense_x_position": 0, - "dispense_y_position": 0, - "aspirate_x_position": 0, - "aspirate_y_position": 0, - "blowout_z_offset": 0, - "blowout_flowRate": null, - "id": "83a095fa-b649-4105-99d4-177f1a3f363a", + "path": "single", + "pipette": "de7da440-95ec-43e8-8723-851321fbd6f9", + "preWetTip": false, + "tipRack": "opentrons/opentrons_flex_96_tiprack_50ul/1", + "volume": "10", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "83a095fa-b649-4105-99d4-177f1a3f363a", + "dispense_touchTip_mmfromTop": null }, "f5ea3139-1585-4848-9d5f-832eb88c99ca": { - "pipette": "de7da440-95ec-43e8-8723-851321fbd6f9", - "volume": "10", - "tipRack": "opentrons/opentrons_flex_96_tiprack_50ul/1", - "changeTip": "always", - "path": "single", - "aspirate_wells_grouped": false, + "aspirate_airGap_checkbox": false, + "aspirate_airGap_volume": "5", + "aspirate_delay_checkbox": false, + "aspirate_delay_mmFromBottom": null, + "aspirate_delay_seconds": "1", "aspirate_flowRate": null, "aspirate_labware": "fe1942b1-1b75-4d3a-9c12-d23004958a12:opentrons/biorad_96_wellplate_200ul_pcr/2", - "aspirate_wells": ["A7"], - "aspirate_wellOrder_first": "t2b", - "aspirate_wellOrder_second": "l2r", "aspirate_mix_checkbox": false, "aspirate_mix_times": null, "aspirate_mix_volume": null, "aspirate_mmFromBottom": null, "aspirate_touchTip_checkbox": false, - "aspirate_touchTip_mmFromBottom": null, + "aspirate_touchTip_mmFromTop": null, + "aspirate_wellOrder_first": "t2b", + "aspirate_wellOrder_second": "l2r", + "aspirate_wells_grouped": false, + "aspirate_wells": ["A7"], + "aspirate_x_position": 0, + "aspirate_y_position": 0, + "blowout_checkbox": false, + "blowout_flowRate": null, + "blowout_location": null, + "blowout_z_offset": 0, + "changeTip": "always", + "dispense_airGap_checkbox": false, + "dispense_airGap_volume": "5", + "dispense_delay_checkbox": false, + "dispense_delay_mmFromBottom": null, + "dispense_delay_seconds": "1", "dispense_flowRate": null, "dispense_labware": "1e553651-9e4d-44b1-a31b-92459642bfd7:trashBin", - "dispense_wells": [], - "dispense_wellOrder_first": "t2b", - "dispense_wellOrder_second": "l2r", "dispense_mix_checkbox": false, "dispense_mix_times": null, "dispense_mix_volume": null, "dispense_mmFromBottom": null, "dispense_touchTip_checkbox": false, - "dispense_touchTip_mmFromBottom": null, + "dispense_touchTip_mmFromTop": null, + "dispense_wellOrder_first": "t2b", + "dispense_wellOrder_second": "l2r", + "dispense_wells": [], + "dispense_x_position": 0, + "dispense_y_position": 0, "disposalVolume_checkbox": true, "disposalVolume_volume": "5", - "blowout_checkbox": false, - "blowout_location": null, - "preWetTip": false, - "aspirate_airGap_checkbox": false, - "aspirate_airGap_volume": "5", - "aspirate_delay_checkbox": false, - "aspirate_delay_mmFromBottom": null, - "aspirate_delay_seconds": "1", - "dispense_airGap_checkbox": false, - "dispense_airGap_volume": "5", - "dispense_delay_checkbox": false, - "dispense_delay_seconds": "1", - "dispense_delay_mmFromBottom": null, "dropTip_location": "1e553651-9e4d-44b1-a31b-92459642bfd7:trashBin", "nozzles": "COLUMN", - "dispense_x_position": 0, - "dispense_y_position": 0, - "aspirate_x_position": 0, - "aspirate_y_position": 0, - "blowout_z_offset": 0, - "blowout_flowRate": null, - "id": "f5ea3139-1585-4848-9d5f-832eb88c99ca", + "path": "single", + "pipette": "de7da440-95ec-43e8-8723-851321fbd6f9", + "preWetTip": false, + "tipRack": "opentrons/opentrons_flex_96_tiprack_50ul/1", + "volume": "10", "stepType": "moveLiquid", "stepName": "transfer", - "stepDetails": "" + "stepDetails": "", + "id": "f5ea3139-1585-4848-9d5f-832eb88c99ca", + "dispense_touchTip_mmfromTop": null } }, "orderedStepIds": [ @@ -168,7 +173,10 @@ ] } }, - "robot": { "model": "OT-3 Standard", "deckId": "ot3_standard" }, + "robot": { + "model": "OT-3 Standard", + "deckId": "ot3_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_flex_96_tiprack_50ul/1": { @@ -186,7 +194,10 @@ ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] ], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", "displayCategory": "tipRack", @@ -1181,14 +1192,25 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_flex_96_tiprack_adapter": { "x": 0, "y": 0, "z": 121 } + "opentrons_flex_96_tiprack_adapter": { + "x": 0, + "y": 0, + "z": 121 + } } }, "opentrons/opentrons_flex_96_tiprack_adapter/1": { "ordering": [], - "brand": { "brand": "Opentrons", "brandId": [] }, + "brand": { + "brand": "Opentrons", + "brandId": [] + }, "metadata": { "displayName": "Opentrons Flex 96 Tip Rack Adapter", "displayCategory": "adapter", @@ -1201,7 +1223,12 @@ "zDimension": 132 }, "wells": {}, - "groups": [{ "metadata": {}, "wells": [] }], + "groups": [ + { + "metadata": {}, + "wells": [] + } + ], "parameters": { "format": "96Standard", "quirks": ["tiprackAdapterFor96Channel"], @@ -1213,7 +1240,11 @@ "version": 1, "schemaVersion": 2, "allowedRoles": ["adapter"], - "cornerOffsetFromSlot": { "x": -14.25, "y": -3.5, "z": 0 } + "cornerOffsetFromSlot": { + "x": -14.25, + "y": -3.5, + "z": 0 + } }, "opentrons/biorad_96_wellplate_200ul_pcr/2": { "ordering": [ @@ -2226,17 +2257,39 @@ "G12", "H12" ], - "metadata": { "wellBottomShape": "v" } + "metadata": { + "wellBottomShape": "v" + } } ], - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 15.41 }, - "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.16 } + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 15.41 + }, + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.16 + } }, "stackingOffsetWithModule": { - "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.75 }, - "magneticBlockV1": { "x": 0, "y": 0, "z": 3.87 } + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.75 + }, + "magneticBlockV1": { + "x": 0, + "y": 0, + "z": 3.87 + } } } }, @@ -2245,7 +2298,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "1370b9a4-1e65-4203-9106-896db3db3bd3", + "key": "261b6dcd-ec1c-405c-bc13-bdca44557a4c", "commandType": "loadPipette", "params": { "pipetteName": "p1000_96", @@ -2254,7 +2307,7 @@ } }, { - "key": "d65a7183-875a-443a-b26a-6a2470291dce", + "key": "4889f04d-e1fb-49ba-9f10-a0030c68ac7f", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack Adapter", @@ -2262,11 +2315,13 @@ "loadName": "opentrons_flex_96_tiprack_adapter", "namespace": "opentrons", "version": 1, - "location": { "slotName": "C2" } + "location": { + "slotName": "C2" + } } }, { - "key": "d05d92c6-d0d1-4886-aaef-c180b6953763", + "key": "60a8ced3-f7bb-44db-a492-aa2d102cc465", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2280,7 +2335,7 @@ } }, { - "key": "bb161828-5fd9-4d84-8209-c1f5de48ba99", + "key": "608c4a16-9751-44c8-96f8-eec999611c79", "commandType": "loadLabware", "params": { "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", @@ -2288,11 +2343,13 @@ "loadName": "biorad_96_wellplate_200ul_pcr", "namespace": "opentrons", "version": 2, - "location": { "slotName": "B1" } + "location": { + "slotName": "B1" + } } }, { - "key": "8821778d-8456-4c74-8e29-da7604c012ec", + "key": "9905fa02-358f-4d23-b936-8711b2bf5600", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2300,20 +2357,24 @@ "loadName": "opentrons_flex_96_tiprack_50ul", "namespace": "opentrons", "version": 1, - "location": { "slotName": "D1" } + "location": { + "slotName": "D1" + } } }, { "commandType": "configureNozzleLayout", - "key": "a2a88d61-5c01-45bf-bcb8-91c893328b53", + "key": "e8d646ad-3046-4186-803f-a01e329cef97", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", - "configurationParams": { "style": "ALL" } + "configurationParams": { + "style": "ALL" + } } }, { "commandType": "pickUpTip", - "key": "747ca334-8955-4069-8473-351be7666ee0", + "key": "ecf30773-7a3c-47c3-8c79-6b1f91bf20b2", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "75aa666f-98d8-4af9-908e-963ced428580:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2322,7 +2383,7 @@ }, { "commandType": "aspirate", - "key": "b1ffc410-ed41-4c83-bebd-145ae0ca05d8", + "key": "bb5f9927-b5a2-4e5e-8015-a93d808aa3ea", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2330,23 +2391,31 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 6 } }, { "commandType": "moveToAddressableArea", - "key": "9100f4e2-b808-43d3-8c72-355dcce98b33", + "key": "efd35098-e1b1-4353-b5e9-9cc8c87e66df", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dispenseInPlace", - "key": "4088260b-f0e9-4d3a-852c-13b7d467cc2d", + "key": "b2da7fa8-1359-40fb-ab30-92e21fb879de", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2355,30 +2424,39 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "8169cddb-5337-4bcf-bbfb-eb6307764b90", + "key": "9cdf6b7f-3fe4-455d-82db-2b0f3a8179bc", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "e0db70c1-546f-44ce-91c7-b18c37fcbcef", - "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } + "key": "335acc42-668d-4159-9943-df822419adae", + "params": { + "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" + } }, { "commandType": "configureNozzleLayout", - "key": "97fb0aee-ce45-427f-b3af-b9b9a1923778", + "key": "1950c1e6-1eb6-46c8-ba4b-c7c38c825094", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", - "configurationParams": { "primaryNozzle": "A12", "style": "COLUMN" } + "configurationParams": { + "primaryNozzle": "A12", + "style": "COLUMN" + } } }, { "commandType": "pickUpTip", - "key": "203d9332-ea93-4047-97e8-58516d18373b", + "key": "34b5dc55-8096-445d-b77c-40918b657c9f", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2387,7 +2465,7 @@ }, { "commandType": "aspirate", - "key": "3b5ef144-b0a9-4136-8579-3ddef13d60d1", + "key": "42132ae0-4321-4251-9b12-5aec2a398617", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2395,23 +2473,31 @@ "wellName": "A7", "wellLocation": { "origin": "bottom", - "offset": { "z": 1, "x": 0, "y": 0 } + "offset": { + "z": 1, + "x": 0, + "y": 0 + } }, "flowRate": 6 } }, { "commandType": "moveToAddressableArea", - "key": "b1b0cb96-cf8a-4c19-ad8b-7a515b720c80", + "key": "e6468d3a-d076-40be-bc49-da13f38c7e4e", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 } + "offset": { + "x": 0, + "y": 0, + "z": 0 + } } }, { "commandType": "dispenseInPlace", - "key": "b49b05e6-f82a-4dd3-9288-8f5eba004b2a", + "key": "acbf26f8-2025-48df-85a8-8696815906f6", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2420,18 +2506,24 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "6e0104da-5608-490a-ae14-e67db91331fe", + "key": "0e00ce33-ab8f-4600-9a4c-72677d2d4408", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", - "offset": { "x": 0, "y": 0, "z": 0 }, + "offset": { + "x": 0, + "y": 0, + "z": 0 + }, "alternateDropLocation": true } }, { "commandType": "dropTipInPlace", - "key": "a1266ec5-4602-43e7-a5e5-6512e7560eb9", - "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } + "key": "bfba211e-b4a7-475d-88ce-134c134dc7a1", + "params": { + "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" + } } ], "commandAnnotationSchemaId": "opentronsCommandAnnotationSchemaV1", diff --git a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json index 1fad3dd9db2..09c4773fc37 100644 --- a/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/thermocyclerOnOt2V7MigratedToV8.json @@ -6,16 +6,16 @@ "author": "Hopia", "description": "testing a thermocycler on OT-2", "created": 1731356664582, - "lastModified": 1731356884152, + "lastModified": 1738157325544, "category": null, "subcategory": null, "tags": [] }, "designerApplication": { "name": "opentrons/protocol-designer", - "version": "8.2.0", + "version": "8.5.0", "data": { - "_internalAppBuildDate": "Mon, 11 Nov 2024 20:27:53 GMT", + "_internalAppBuildDate": "Wed, 29 Jan 2025 13:23:47 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, "dispense_mmFromBottom": 1, @@ -27,7 +27,10 @@ "opentrons/opentrons_96_tiprack_20ul/1" ] }, - "dismissedWarnings": { "form": [], "timeline": [] }, + "dismissedWarnings": { + "form": [], + "timeline": [] + }, "ingredients": { "0": { "name": "123", @@ -39,14 +42,46 @@ }, "ingredLocations": { "ac928a51-a248-4304-be43-e9cb19c34fa9:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { - "A1": { "0": { "volume": 55 } }, - "B1": { "0": { "volume": 55 } }, - "C1": { "0": { "volume": 55 } }, - "D1": { "0": { "volume": 55 } }, - "E1": { "0": { "volume": 55 } }, - "F1": { "0": { "volume": 55 } }, - "G1": { "0": { "volume": 55 } }, - "H1": { "0": { "volume": 55 } } + "A1": { + "0": { + "volume": 55 + } + }, + "B1": { + "0": { + "volume": 55 + } + }, + "C1": { + "0": { + "volume": 55 + } + }, + "D1": { + "0": { + "volume": 55 + } + }, + "E1": { + "0": { + "volume": 55 + } + }, + "F1": { + "0": { + "volume": 55 + } + }, + "G1": { + "0": { + "volume": 55 + } + }, + "H1": { + "0": { + "volume": 55 + } + } } }, "savedStepForms": { @@ -149,7 +184,10 @@ ] } }, - "robot": { "model": "OT-2 Standard", "deckId": "ot2_standard" }, + "robot": { + "model": "OT-2 Standard", + "deckId": "ot2_standard" + }, "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", "labwareDefinitions": { "opentrons/opentrons_96_tiprack_20ul/1": { @@ -1165,7 +1203,11 @@ "namespace": "opentrons", "version": 1, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } }, "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { "ordering": [ @@ -2068,7 +2110,9 @@ }, "groups": [ { - "metadata": { "wellBottomShape": "v" }, + "metadata": { + "wellBottomShape": "v" + }, "wells": [ "A1", "B1", @@ -2179,24 +2223,44 @@ "namespace": "opentrons", "version": 2, "schemaVersion": 2, - "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, "stackingOffsetWithLabware": { - "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.2 }, - "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 12.66 } + "opentrons_96_pcr_adapter": { + "x": 0, + "y": 0, + "z": 10.2 + }, + "opentrons_96_well_aluminum_block": { + "x": 0, + "y": 0, + "z": 12.66 + } }, "stackingOffsetWithModule": { - "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.8 } + "thermocyclerModuleV2": { + "x": 0, + "y": 0, + "z": 10.8 + } } } }, "liquidSchemaId": "opentronsLiquidSchemaV1", "liquids": { - "0": { "displayName": "123", "description": "", "displayColor": "#b925ff" } + "0": { + "displayName": "123", + "description": "", + "displayColor": "#b925ff" + } }, "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "b0cb75c2-d745-44fc-9132-d0614153db4f", + "key": "01d12a6f-a134-41ad-8a96-0f1db1caa648", "commandType": "loadPipette", "params": { "pipetteName": "p20_single_gen2", @@ -2205,16 +2269,18 @@ } }, { - "key": "cbb3ea89-3f25-4276-9578-556605c262d8", + "key": "984a7baa-bf2d-4b9b-8d22-7fa864d443d5", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV1", - "location": { "slotName": "7" }, + "location": { + "slotName": "7" + }, "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { - "key": "c8492190-5605-449e-b409-a458a2dd914b", + "key": "70bd414e-8191-4c73-a79d-ec514a775cdd", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2229,7 +2295,7 @@ }, { "commandType": "loadLiquid", - "key": "f064269e-96fd-442b-b84c-4d0628238e14", + "key": "6eeecce1-bf14-4ba9-ac27-99d4a45c1352", "params": { "liquidId": "0", "labwareId": "ac928a51-a248-4304-be43-e9cb19c34fa9:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -2247,14 +2313,14 @@ }, { "commandType": "thermocycler/closeLid", - "key": "d5cf25be-eae8-4004-ad77-1c72ac9135ea", + "key": "b3f3d0ef-d186-451b-b019-92170d4c54b0", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "b04fb0d0-080f-48cb-9fa3-977818c42e9f", + "key": "a61991d4-e5ca-4828-88e1-16121263e580", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "celsius": 50 @@ -2262,14 +2328,14 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "c0d61d1e-24ff-466b-bda2-4d33baadcb4b", + "key": "5433a727-f2fc-49ef-a7b2-f88e426fa310", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "909291ef-24d2-4a1a-83fc-9fad61cba3d1", + "key": "cd2d7b9e-c308-4efd-9cbd-cca366abbe2d", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "celsius": 40 @@ -2277,38 +2343,59 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "d19932d8-cbf8-4f90-88b6-e624cce31630", + "key": "ea9d18cd-d9a3-461e-96c1-ac41436474d6", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/runProfile", - "key": "9dd3f412-2c40-49a2-aeb3-0c0b0b244efb", + "key": "5d773732-71d8-45af-83f7-be31f4f89689", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType", "profile": [ - { "holdSeconds": 71, "celsius": 50 }, - { "holdSeconds": 170, "celsius": 34 }, - { "holdSeconds": 2640, "celsius": 87 }, - { "holdSeconds": 170, "celsius": 34 }, - { "holdSeconds": 2640, "celsius": 87 }, - { "holdSeconds": 170, "celsius": 34 }, - { "holdSeconds": 2640, "celsius": 87 } + { + "holdSeconds": 71, + "celsius": 50 + }, + { + "holdSeconds": 170, + "celsius": 34 + }, + { + "holdSeconds": 2640, + "celsius": 87 + }, + { + "holdSeconds": 170, + "celsius": 34 + }, + { + "holdSeconds": 2640, + "celsius": 87 + }, + { + "holdSeconds": 170, + "celsius": 34 + }, + { + "holdSeconds": 2640, + "celsius": 87 + } ], "blockMaxVolumeUl": 50 } }, { "commandType": "thermocycler/deactivateBlock", - "key": "15ed7e3a-26e6-44ec-929c-883fafa37fa8", + "key": "49c7e428-7a42-4bc0-93a8-8c30c375fe58", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateLid", - "key": "453b76d8-9132-4556-95ca-e9909cdcc839", + "key": "3358c263-9ce4-4a02-846f-26faf626ed50", "params": { "moduleId": "82858229-5c25-46cc-87d4-35ab318c18ce:thermocyclerModuleType" } diff --git a/protocol-designer/src/assets/localization/en/modal.json b/protocol-designer/src/assets/localization/en/modal.json index 62d34d00a9d..741bdacabca 100644 --- a/protocol-designer/src/assets/localization/en/modal.json +++ b/protocol-designer/src/assets/localization/en/modal.json @@ -99,9 +99,9 @@ "aspirate_mmFromBottom": "Change where in the well the robot aspirates from.", "dispense_mmFromBottom": "Change where in the well the robot dispenses from.", "mix_mmFromBottom": "Change from where in the well the robot aspirates and dispenses during the mix.", - "aspirate_touchTip_mmFromBottom": "Change from where in the well the robot performs the touch tip.", - "dispense_touchTip_mmFromBottom": "Change from where in the well the robot performs the touch tip.", - "mix_touchTip_mmFromBottom": "Change from where in the well the robot performs the touch tip.", + "aspirate_touchTip_mmFromTop": "Change from where in the well the robot performs the touch tip.", + "dispense_touchTip_mmFromTop": "Change from where in the well the robot performs the touch tip.", + "mix_touchTip_mmFromTop": "Change from where in the well the robot performs the touch tip.", "aspirate_delay_mmFromBottom": "Change from where in the well the robot delays after aspirating.", "dispense_delay_mmFromBottom": "Change from where in the well the robot delays after dispensing." }, diff --git a/protocol-designer/src/assets/localization/en/protocol_steps.json b/protocol-designer/src/assets/localization/en/protocol_steps.json index c92e9cdcb83..fe5630f4465 100644 --- a/protocol-designer/src/assets/localization/en/protocol_steps.json +++ b/protocol-designer/src/assets/localization/en/protocol_steps.json @@ -138,7 +138,7 @@ "tiprack": "Tiprack", "tip_handling": "Tip handling", "tip_position": "{{prefix}} tip position", - "touch_tip_position": "Touch tip position from bottom", + "touch_tip_position": "Touch tip position from top", "valid_range": "Valid range between {{min}} - {{max}} {{unit}}", "view_details": "View details", "volume_per_well": "Volume per well", diff --git a/protocol-designer/src/assets/localization/en/shared.json b/protocol-designer/src/assets/localization/en/shared.json index ed6982725c9..4a3490bc73a 100644 --- a/protocol-designer/src/assets/localization/en/shared.json +++ b/protocol-designer/src/assets/localization/en/shared.json @@ -142,11 +142,11 @@ "temperaturemoduletype": "Temperature Module", "thermocyclermoduletype": "Thermocycler Module", "tip_position_aspirate_delay_mmFromBottom": "Edit aspirate delay position", - "tip_position_aspirate_touchTip_mmFromBottom": "Edit aspirate touch tip position", + "tip_position_aspirate_touchTip_mmFromTop": "Edit aspirate touch tip position", "tip_position_blowout_z_offset": "Edit blowout position", "tip_position_dispense_delay_mmFromBottom": "Edit dispense delay position", - "tip_position_dispense_touchTip_mmFromBottom": "Edit dispense touch tip position", - "tip_position_mix_touchTip_mmFromBottom": "Edit touch tip position", + "tip_position_dispense_touchTip_mmFromTop": "Edit dispense touch tip position", + "tip_position_mix_touchTip_mmFromTop": "Edit touch tip position", "tip_position": "Edit {{prefix}} tip position", "trashBin": "Trash Bin", "updated_protocol_designer": "We've updated Protocol Designer!", diff --git a/protocol-designer/src/assets/localization/en/tooltip.json b/protocol-designer/src/assets/localization/en/tooltip.json index 86f5f6e8197..67780f3fb2d 100644 --- a/protocol-designer/src/assets/localization/en/tooltip.json +++ b/protocol-designer/src/assets/localization/en/tooltip.json @@ -36,7 +36,7 @@ "aspirate_mix_checkbox": "Aspirate and dispense repeatedly before main aspiration", "aspirate_mmFromBottom": "Adjust tip position for aspirate", "aspirate_touchTip_checkbox": "Touch tip to each side of the well after aspirating", - "aspirate_touchTip_mmFromBottom": "Distance from the bottom of the well", + "aspirate_touchTip_mmFromTop": "Distance from the top of the well", "aspirate_wells": "First select a source labware", "blowout_checkbox": "Blow extra air through the tip", "blowout_flowRate": "Blowout speed", @@ -51,7 +51,7 @@ "dispense_mix_checkbox": "Aspirate and dispense repeatedly after main dispense", "dispense_mmFromBottom": "Adjust tip position for dispense", "dispense_touchTip_checkbox": "Touch tip to each side of the well after dispensing", - "dispense_touchTip_mmFromBottom": "Distance from the bottom of the well", + "dispense_touchTip_mmFromTop": "Distance from the top of the well", "dispense_wells": "First select a destination labware", "disposalVolume_checkbox": "Aspirate extra volume that is disposed of after a multi-dispense is complete. We recommend a disposal volume of at least the pipette's minimum.", "dropTip_location": "Choose where you would like to drop tip", @@ -59,7 +59,7 @@ "labware": "Select a labware to use", "mix_mmFromBottom": "Adjust tip position", "mix_touchTip_checkbox": "Touch tip to each side of the well after dispensing", - "mix_touchTip_mmFromBottom": "Distance from the bottom of the well", + "mix_touchTip_mmFromTop": "Distance from the top of the well", "newLocation": "New location to move the selected labware", "nozzles": "Partial pickup requires a tip rack directly on the deck. Full rack pickup requires the Flex 96 Tip Rack Adapter.", "pipette": "Select the pipette you want to use", diff --git a/protocol-designer/src/form-types.ts b/protocol-designer/src/form-types.ts index d69aa1e7d1b..45424a89117 100644 --- a/protocol-designer/src/form-types.ts +++ b/protocol-designer/src/form-types.ts @@ -33,7 +33,7 @@ export type StepFieldName = string // | 'aspirate_mix_volume' // | 'aspirate_mmFromBottom' // | 'aspirate_touchTip_checkbox' -// | 'aspirate_touchTip_mmFromBottom' +// | 'aspirate_touchTip_mmFromTop' // | 'aspirate_wellOrder_first' // | 'aspirate_wellOrder_second' // | 'aspirate_wells_grouped' @@ -52,7 +52,7 @@ export type StepFieldName = string // | 'dispense_mix_volume' // | 'dispense_mmFromBottom' // | 'dispense_touchTip_checkbox' -// | 'dispense_touchTip_mmFromBottom' +// | 'dispense_touchTip_mmFromTop' // | 'dispense_wellOrder_first' // | 'dispense_wellOrder_second' // | 'dispense_wells' @@ -66,7 +66,7 @@ export type StepFieldName = string // | 'labwareLocationUpdate' // | 'message' // | 'mix_mmFromBottom' -// | 'mix_touchTip_mmFromBottom' +// | 'mix_touchTip_mmFromTop' // | 'mix_x_position // | 'mix_y_position // | 'newLocation' @@ -252,7 +252,7 @@ export interface HydratedMoveLiquidFormData extends AnnotationFields { aspirate_mix_times?: number | null aspirate_mix_volume?: number | null aspirate_mmFromBottom?: number | null - aspirate_touchTip_mmFromBottom?: number | null + aspirate_touchTip_mmFromTop?: number | null aspirate_wells_grouped?: boolean | null aspirate_x_position?: number | null aspirate_y_position?: number | null @@ -266,7 +266,7 @@ export interface HydratedMoveLiquidFormData extends AnnotationFields { dispense_mix_times?: number | null dispense_mix_volume?: number | null dispense_mmFromBottom?: number | null - dispense_touchTip_mmFromBottom?: number | null + dispense_touchTip_mmFromTop?: number | null dispense_x_position?: number | null dispense_y_position?: number | null disposalVolume_volume?: number | null @@ -316,7 +316,7 @@ export interface HydratedMixFormData extends AnnotationFields { dispense_flowRate?: number | null dropTip_wellNames?: string[] | null mix_mmFromBottom?: number | null - mix_touchTip_mmFromBottom?: number | null + mix_touchTip_mmFromTop?: number | null mix_x_position?: number | null mix_y_position?: number | null pickUpTip_location?: string | null @@ -398,11 +398,11 @@ export type TipZOffsetFields = | 'aspirate_mmFromBottom' | 'dispense_mmFromBottom' | 'mix_mmFromBottom' - | 'aspirate_touchTip_mmFromBottom' - | 'dispense_touchTip_mmFromBottom' + | 'aspirate_touchTip_mmFromTop' + | 'dispense_touchTip_mmFromTop' | 'aspirate_delay_mmFromBottom' | 'dispense_delay_mmFromBottom' - | 'mix_touchTip_mmFromBottom' + | 'mix_touchTip_mmFromTop' export type TipYOffsetFields = | 'aspirate_y_position' @@ -424,9 +424,9 @@ export type DelaySecondFields = export function getIsTouchTipField(fieldName: StepFieldName): boolean { const touchTipFields = [ - 'aspirate_touchTip_mmFromBottom', - 'dispense_touchTip_mmFromBottom', - 'mix_touchTip_mmFromBottom', + 'aspirate_touchTip_mmFromTop', + 'dispense_touchTip_mmFromTop', + 'mix_touchTip_mmFromTop', ] return touchTipFields.includes(fieldName) } diff --git a/protocol-designer/src/load-file/migration/8_5_0.ts b/protocol-designer/src/load-file/migration/8_5_0.ts new file mode 100644 index 00000000000..2f6e8d38553 --- /dev/null +++ b/protocol-designer/src/load-file/migration/8_5_0.ts @@ -0,0 +1,164 @@ +import floor from 'lodash/floor' +import type { + LabwareDefinition2, + LoadLabwareCreateCommand, + ProtocolFile, +} from '@opentrons/shared-data' +import type { DesignerApplicationData } from './utils/getLoadLiquidCommands' + +const getMigratedPositionFromTop = ( + labwareDefinitions: { + [definitionId: string]: LabwareDefinition2 + }, + loadLabwareCommands: LoadLabwareCreateCommand[], + labware: string, + type: 'aspirate' | 'dispense' | 'mix' +): number => { + const matchingLoadLabware = loadLabwareCommands.find( + command => + command.commandType === 'loadLabware' && + command.params.labwareId === labware + ) + if (matchingLoadLabware == null) { + console.error( + `expected to find matching ${type} labware load command but could not with ${type}_labware from form data as ${labware}` + ) + } + const labwareUri = + matchingLoadLabware != null + ? `${matchingLoadLabware.params.namespace}/${matchingLoadLabware.params.loadName}/${matchingLoadLabware.params.version}` + : '' + + // early exit for dispense_labware equaling trashBin or wasteChute + if (labwareDefinitions[labwareUri] == null) { + return 0 + } + + const matchingLabwareWellDepth = labwareUri + ? labwareDefinitions[labwareUri].wells.A1.depth + : 0 + + if (matchingLabwareWellDepth === 0) { + console.error( + `error in finding the ${type} labware well depth with labware uri ${labwareUri}` + ) + } + return matchingLabwareWellDepth +} + +export const migrateFile = ( + appData: ProtocolFile +): ProtocolFile => { + const { designerApplication, commands, labwareDefinitions } = appData + + if (designerApplication == null || designerApplication?.data == null) { + throw Error('The designerApplication key in your file is corrupt.') + } + const savedStepForms = designerApplication.data + ?.savedStepForms as DesignerApplicationData['savedStepForms'] + + const loadLabwareCommands = commands.filter( + (command): command is LoadLabwareCreateCommand => + command.commandType === 'loadLabware' + ) + + const savedStepsWithUpdatedMoveLiquidFields = Object.values( + savedStepForms + ).reduce((acc, form) => { + if (form.stepType === 'moveLiquid') { + const { + id, + aspirate_touchTip_mmFromBottom, + dispense_touchTip_mmFromBottom, + aspirate_labware, + dispense_labware, + ...rest + } = form + const matchingAspirateLabwareWellDepth = getMigratedPositionFromTop( + labwareDefinitions, + loadLabwareCommands, + aspirate_labware as string, + 'aspirate' + ) + const matchingDispenseLabwareWellDepth = getMigratedPositionFromTop( + labwareDefinitions, + loadLabwareCommands, + dispense_labware as string, + 'dispense' + ) + + return { + ...acc, + [id]: { + ...rest, + id, + aspirate_labware, + dispense_labware, + aspirate_touchTip_mmFromTop: + aspirate_touchTip_mmFromBottom == null + ? null + : floor( + aspirate_touchTip_mmFromBottom - + matchingAspirateLabwareWellDepth, + 1 + ), + dispense_touchTip_mmfromTop: + dispense_touchTip_mmFromBottom == null + ? null + : floor( + dispense_touchTip_mmFromBottom - + matchingDispenseLabwareWellDepth, + 1 + ), + }, + } + } + return acc + }, {}) + + const savedStepsWithUpdatedMixFields = Object.values(savedStepForms).reduce( + (acc, form) => { + if (form.stepType === 'mix') { + const { id, mix_touchTip_mmFromBottom, labware, ...rest } = form + const matchingLabwareWellDepth = getMigratedPositionFromTop( + labwareDefinitions, + loadLabwareCommands, + labware as string, + 'mix' + ) + return { + ...acc, + [id]: { + ...rest, + id, + labware, + mix_touchTip_mmFromTop: + mix_touchTip_mmFromBottom == null + ? null + : floor( + mix_touchTip_mmFromBottom - matchingLabwareWellDepth, + 1 + ), + }, + } + } + return acc + }, + {} + ) + + return { + ...appData, + designerApplication: { + ...designerApplication, + data: { + ...designerApplication.data, + savedStepForms: { + ...designerApplication.data.savedStepForms, + ...savedStepsWithUpdatedMoveLiquidFields, + ...savedStepsWithUpdatedMixFields, + }, + }, + }, + } +} diff --git a/protocol-designer/src/load-file/migration/index.ts b/protocol-designer/src/load-file/migration/index.ts index 27afb8eb132..071e4520c89 100644 --- a/protocol-designer/src/load-file/migration/index.ts +++ b/protocol-designer/src/load-file/migration/index.ts @@ -13,6 +13,7 @@ import { migrateFile as migrateFileEight } from './8_0_0' import { migrateFile as migrateFileEightOne } from './8_1_0' import { migrateFile as migrateFileEightTwo } from './8_2_0' import { migrateFile as migrateFileEightTwoPointTwo } from './8_2_2' +import { migrateFile as migrateFileEightFive } from './8_5_0' import type { PDProtocolFile } from '../../file-types' @@ -58,6 +59,8 @@ const allMigrationsByVersion: MigrationsByVersion = { '8.2.0': migrateFileEightTwo, // @ts-expect-error '8.2.2': migrateFileEightTwoPointTwo, + // @ts-expect-error + '8.5.0': migrateFileEightFive, } export const migration = ( file: any diff --git a/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx b/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx index 6453824b4d4..c78e24e064a 100644 --- a/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx +++ b/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx @@ -46,12 +46,15 @@ export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { } = props const { t } = useTranslation(['modal', 'button']) - const isBlowout = name === 'blowout_z_offset' - const defaultMm = isBlowout + const isPositionFromTop = + name === 'blowout_z_offset' || + name === 'aspirate_touchTip_mmFromTop' || + name === 'dispense_touchTip_mmFromTop' || + name === 'mix_touchTip_mmFromTop' + const defaultMm = isPositionFromTop ? 0 - : utils.getDefaultMmFromBottom({ + : utils.getDefaultMmFromEdge({ name, - wellDepthMm, }) const [value, setValue] = useState( @@ -82,8 +85,8 @@ export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { const minFromTop = DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP const maxFromTop = -wellDepthMm - const minMm = isBlowout ? maxFromTop : minMmFromBottom - const maxMm = isBlowout ? minFromTop : maxMmFromBottom + const minMm = isPositionFromTop ? maxFromTop : minMmFromBottom + const maxMm = isPositionFromTop ? minFromTop : maxMmFromBottom const errors = utils.getErrors({ minMm, @@ -126,7 +129,7 @@ export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { } else if (newValue === '-0') { setValue('0') } else { - isBlowout + isPositionFromTop ? setValue(newValue) : setValue(Number(newValue) >= 0 ? newValue : '0') } @@ -192,10 +195,14 @@ export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { ( diff --git a/protocol-designer/src/organisms/TipPositionModal/utils.tsx b/protocol-designer/src/organisms/TipPositionModal/utils.tsx index bef22227c80..0ed88bb6a40 100644 --- a/protocol-designer/src/organisms/TipPositionModal/utils.tsx +++ b/protocol-designer/src/organisms/TipPositionModal/utils.tsx @@ -8,35 +8,24 @@ import { import { DECIMALS_ALLOWED, TOO_MANY_DECIMALS } from './constants' import type { StepFieldName } from '../../form-types' -export function getDefaultMmFromBottom(args: { - name: StepFieldName - wellDepthMm: number -}): number { - const { name, wellDepthMm } = args +export function getDefaultMmFromEdge(args: { name: StepFieldName }): number { + const { name } = args switch (name) { - case 'aspirate_mmFromBottom': - return DEFAULT_MM_OFFSET_FROM_BOTTOM - - case 'aspirate_delay_mmFromBottom': - return DEFAULT_MM_OFFSET_FROM_BOTTOM - + case 'mix_mmFromBottom': case 'dispense_mmFromBottom': - return DEFAULT_MM_OFFSET_FROM_BOTTOM - case 'dispense_delay_mmFromBottom': - return DEFAULT_MM_OFFSET_FROM_BOTTOM - - case 'mix_mmFromBottom': + case 'aspirate_delay_mmFromBottom': + case 'aspirate_mmFromBottom': return DEFAULT_MM_OFFSET_FROM_BOTTOM default: // touch tip fields console.assert( getIsTouchTipField(name), - `getDefaultMmFromBottom fn does not know what to do with field ${name}` + `getDefaultMmFromEdge fn does not know what to do with field ${name}` ) - return DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + wellDepthMm + return DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP } } diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx index 1aa64e02057..0b74bbab2f3 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx @@ -179,9 +179,9 @@ export function BatchEditMixTools(props: BatchEditMixToolsProps): JSX.Element { ) : null} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx index 681b97be866..ef68b274d9b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx @@ -17,7 +17,7 @@ import { import { getWellsDepth, getWellDimension } from '@opentrons/shared-data' import { TipPositionModal, ZTipPositionModal } from '../../../../../organisms' import { getIsDelayPositionField } from '../../../../../form-types' -import { getDefaultMmFromBottom } from '../../../../../organisms/TipPositionModal/utils' +import { getDefaultMmFromEdge } from '../../../../../organisms/TipPositionModal/utils' import { selectors as stepFormSelectors } from '../../../../../step-forms' import type { TipXOffsetFields, @@ -105,8 +105,7 @@ export function PositionField(props: PositionFieldProps): JSX.Element { const mmFromBottom = typeof rawZValue === 'number' ? rawZValue : null if (wellDepthMm !== null) { // show default value for field in parens if no mmFromBottom value is selected - zValue = - mmFromBottom ?? getDefaultMmFromBottom({ name: zName, wellDepthMm }) + zValue = mmFromBottom ?? getDefaultMmFromEdge({ name: zName }) } let modal = ( diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MixTools/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MixTools/index.tsx index 981ff980660..464a25da240 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MixTools/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MixTools/index.tsx @@ -318,11 +318,11 @@ export function MixTools(props: StepFormProps): JSX.Element { = { aspirate_mmFromBottom: 'aspirate_labware', - aspirate_touchTip_mmFromBottom: 'aspirate_labware', + aspirate_touchTip_mmFromTop: 'aspirate_labware', aspirate_delay_mmFromBottom: 'aspirate_labware', dispense_mmFromBottom: 'dispense_labware', - dispense_touchTip_mmFromBottom: 'dispense_labware', + dispense_touchTip_mmFromTop: 'dispense_labware', dispense_delay_mmFromBottom: 'dispense_labware', mix_mmFromBottom: 'labware', - mix_touchTip_mmFromBottom: 'labware', + mix_touchTip_mmFromTop: 'labware', } return fieldMap[name] } diff --git a/protocol-designer/src/step-forms/test/createPresavedStepForm.test.ts b/protocol-designer/src/step-forms/test/createPresavedStepForm.test.ts index 1ff4534869a..0e233db1534 100644 --- a/protocol-designer/src/step-forms/test/createPresavedStepForm.test.ts +++ b/protocol-designer/src/step-forms/test/createPresavedStepForm.test.ts @@ -161,7 +161,7 @@ describe('createPresavedStepForm', () => { aspirate_mix_volume: null, aspirate_mmFromBottom: null, aspirate_touchTip_checkbox: false, - aspirate_touchTip_mmFromBottom: null, + aspirate_touchTip_mmFromTop: null, aspirate_wellOrder_first: 't2b', aspirate_wellOrder_second: 'l2r', aspirate_wells: [], @@ -178,7 +178,7 @@ describe('createPresavedStepForm', () => { dispense_mix_volume: null, dispense_mmFromBottom: null, dispense_touchTip_checkbox: false, - dispense_touchTip_mmFromBottom: null, + dispense_touchTip_mmFromTop: null, dispense_wellOrder_first: 't2b', dispense_wellOrder_second: 'l2r', dispense_wells: [], @@ -217,7 +217,7 @@ describe('createPresavedStepForm', () => { dispense_delay_checkbox: false, dispense_delay_seconds: `${DEFAULT_DELAY_SECONDS}`, mix_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, mix_wellOrder_first: 't2b', mix_wellOrder_second: 'l2r', blowout_checkbox: false, diff --git a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts index 3d405810254..571cdf819f7 100644 --- a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts +++ b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts @@ -33,7 +33,7 @@ export function getDefaultsForStepType( labware: null, mix_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, mix_touchTip_checkbox: false, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, mix_wellOrder_first: DEFAULT_WELL_ORDER_FIRST_OPTION, mix_wellOrder_second: DEFAULT_WELL_ORDER_SECOND_OPTION, mix_x_position: 0, @@ -62,7 +62,7 @@ export function getDefaultsForStepType( aspirate_mix_volume: null, aspirate_mmFromBottom: null, aspirate_touchTip_checkbox: false, - aspirate_touchTip_mmFromBottom: null, + aspirate_touchTip_mmFromTop: null, aspirate_wellOrder_first: DEFAULT_WELL_ORDER_FIRST_OPTION, aspirate_wellOrder_second: DEFAULT_WELL_ORDER_SECOND_OPTION, aspirate_wells_grouped: false, @@ -86,7 +86,7 @@ export function getDefaultsForStepType( dispense_mix_volume: null, dispense_mmFromBottom: null, dispense_touchTip_checkbox: false, - dispense_touchTip_mmFromBottom: null, + dispense_touchTip_mmFromTop: null, dispense_wellOrder_first: DEFAULT_WELL_ORDER_FIRST_OPTION, dispense_wellOrder_second: DEFAULT_WELL_ORDER_SECOND_OPTION, dispense_wells: [], diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMix.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMix.ts index ab2a53eba81..b2fc0ef1fbb 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMix.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMix.ts @@ -32,7 +32,7 @@ const updatePatchOnLabwareChange = ( ...patch, ...getDefaultFields( 'mix_mmFromBottom', - 'mix_touchTip_mmFromBottom', + 'mix_touchTip_mmFromTop', 'mix_touchTip_checkbox' ), wells: getDefaultWells({ diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts index 940d715a06d..018234491b9 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts @@ -190,7 +190,7 @@ const updatePatchOnLabwareChange = ( ? { ...getDefaultFields( 'aspirate_mmFromBottom', - 'aspirate_touchTip_mmFromBottom', + 'aspirate_touchTip_mmFromTop', 'aspirate_touchTip_checkbox' ), aspirate_wells: getDefaultWells({ @@ -206,7 +206,7 @@ const updatePatchOnLabwareChange = ( ? { ...getDefaultFields( 'dispense_mmFromBottom', - 'dispense_touchTip_mmFromBottom', + 'dispense_touchTip_mmFromTop', 'dispense_touchTip_checkbox' ), dispense_wells: getDefaultWells({ diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/test/mix.test.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/test/mix.test.ts index 3684648327d..7231e22f15d 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/test/mix.test.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/test/mix.test.ts @@ -82,7 +82,7 @@ describe('well selection should update', () => { volume: '2', pipette: 'pipetteId', mix_mmFromBottom: 1.2, - mix_touchTip_mmFromBottom: 2.3, + mix_touchTip_mmFromTop: 2.3, } }) it('pipette cleared', () => { @@ -133,7 +133,7 @@ describe('well selection should update', () => { ...patch, wells: ['A1'], mix_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, mix_touchTip_checkbox: false, }) }) @@ -146,7 +146,7 @@ describe('well selection should update', () => { ...patch, wells: [], mix_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, mix_touchTip_checkbox: false, }) }) diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts index 5ae5860621a..b6dfdd643f5 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/getDelayData.ts @@ -1,4 +1,4 @@ -import { getDefaultMmFromBottom } from '../../../organisms/TipPositionModal/utils' +import { getDefaultMmFromEdge } from '../../../organisms/TipPositionModal/utils' import type { InnerDelayArgs } from '@opentrons/step-generation' import type { DelayCheckboxFields, @@ -21,9 +21,8 @@ export function getMoveLiquidDelayData( if (typeof mmFromBottomFormValue === 'number') { mmFromBottom = mmFromBottomFormValue } else if (mmFromBottomFormValue === null) { - mmFromBottom = getDefaultMmFromBottom({ + mmFromBottom = getDefaultMmFromEdge({ name: mmFromBottomField, - wellDepthMm: 0 /* NOTE: `wellDepthMm` should not be used for delay offsets */, }) } if ( diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts index 8658c46d124..803b75422ac 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts @@ -1,4 +1,3 @@ -import { getWellsDepth } from '@opentrons/shared-data' import { DEFAULT_CHANGE_TIP_OPTION, DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, @@ -38,10 +37,9 @@ export const mixFormToArgs = ( orderSecond ) const touchTip = Boolean(hydratedFormData.mix_touchTip_checkbox) - const touchTipMmFromBottom = - hydratedFormData.mix_touchTip_mmFromBottom || - getWellsDepth(labware.def, orderedWells) + - DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + const touchTipMmFromTop = + hydratedFormData.mix_touchTip_mmFromTop ?? + DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP const volume = hydratedFormData.volume || 0 const times = hydratedFormData.times || 0 const aspirateFlowRateUlSec = @@ -91,7 +89,7 @@ export const mixFormToArgs = ( volume, times, touchTip, - touchTipMmFromBottom, + touchTipMmFromTop, changeTip, blowoutLocation, pipette: pipette.id, diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts index 2ca6853a2d6..e6827ac2e9c 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts @@ -1,4 +1,3 @@ -import { getWellsDepth } from '@opentrons/shared-data' import { DEST_WELL_BLOWOUT_DESTINATION } from '@opentrons/step-generation' import { DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, @@ -121,10 +120,6 @@ export const moveLiquidFormToArgs = ( } } } - const wellDepth = - 'def' in destLabware && destWells != null - ? getWellsDepth(destLabware.def, destWells) - : 0 const disposalVolume = hydratedFormData.disposalVolume_checkbox ? hydratedFormData.disposalVolume_volume @@ -132,16 +127,15 @@ export const moveLiquidFormToArgs = ( const touchTipAfterAspirate = Boolean( hydratedFormData.aspirate_touchTip_checkbox ) - const touchTipAfterAspirateOffsetMmFromBottom = - hydratedFormData.aspirate_touchTip_mmFromBottom || - getWellsDepth(hydratedFormData.aspirate_labware.def, sourceWells) + - DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + const touchTipAfterAspirateOffsetMmFromTop = + hydratedFormData.aspirate_touchTip_mmFromTop ?? + DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP const touchTipAfterDispense = Boolean( hydratedFormData.dispense_touchTip_checkbox ) - const touchTipAfterDispenseOffsetMmFromBottom = - hydratedFormData.dispense_touchTip_mmFromBottom || - wellDepth + DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + const touchTipAfterDispenseOffsetMmFromTop = + hydratedFormData.dispense_touchTip_mmFromTop ?? + DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP const mixBeforeAspirate = getMixData( hydratedFormData, 'aspirate_mix_checkbox', @@ -220,9 +214,9 @@ export const moveLiquidFormToArgs = ( aspirateAirGapVolume, dispenseAirGapVolume, touchTipAfterAspirate, - touchTipAfterAspirateOffsetMmFromBottom, + touchTipAfterAspirateOffsetMmFromTop, touchTipAfterDispense, - touchTipAfterDispenseOffsetMmFromBottom, + touchTipAfterDispenseOffsetMmFromTop, description: hydratedFormData.stepDetails, name: hydratedFormData.stepName, // TODO(jr, 7/26/24): wire up wellNames diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/mixFormToArgs.test.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/mixFormToArgs.test.ts index adffcac2061..4f1c2f76795 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/mixFormToArgs.test.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/mixFormToArgs.test.ts @@ -59,7 +59,7 @@ beforeEach(() => { times: '2', dispense_flowRate: 4, mix_touchTip_checkbox: false, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, aspirate_delay_checkbox: false, aspirate_delay_seconds: null, dispense_delay_checkbox: false, @@ -83,7 +83,7 @@ describe('mix step form -> command creator args', () => { volume: '12', times: '2', touchTip: false, - touchTipMmFromBottom: 9.54, + touchTipMmFromTop: -1, changeTip: 'always', blowoutLocation: null, pipette: 'pipetteId', @@ -131,14 +131,14 @@ describe('mix step form -> command creator args', () => { // TOUCH TIP { checkboxField: 'mix_touchTip_checkbox', - formFields: { mix_touchTip_mmFromBottom: 10.5 }, + formFields: { mix_touchTip_mmFromTop: -10.5 }, expectedArgsUnchecked: { touchTip: false, - touchTipMmFromBottom: 10.5, + touchTipMmFromTop: -10.5, }, expectedArgsChecked: { touchTip: true, - touchTipMmFromBottom: 10.5, + touchTipMmFromTop: -10.5, }, }, // Aspirate delay diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/moveLiquidFormToArgs.test.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/moveLiquidFormToArgs.test.ts index 98afc6828fd..1ae269a33df 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/moveLiquidFormToArgs.test.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/test/moveLiquidFormToArgs.test.ts @@ -73,7 +73,7 @@ describe('move liquid step form -> command creator args', () => { aspirate_flowRate: null, aspirate_mmFromBottom: null, aspirate_touchTip_checkbox: false, - aspirate_touchTip_mmFromBottom: null, + aspirate_touchTip_mmFromTop: null, aspirate_mix_checkbox: false, aspirate_mix_volume: null, aspirate_mix_times: null, @@ -93,7 +93,7 @@ describe('move liquid step form -> command creator args', () => { dispense_flowRate: null, dispense_mmFromBottom: null, dispense_touchTip_checkbox: false, - dispense_touchTip_mmFromBottom: null, + dispense_touchTip_mmFromTop: null, dispense_mix_checkbox: false, dispense_mix_volume: null, dispense_mix_times: null, @@ -177,26 +177,26 @@ describe('move liquid step form -> command creator args', () => { // TOUCH TIPS { checkboxField: 'aspirate_touchTip_checkbox', - formFields: { aspirate_touchTip_mmFromBottom: 101 }, + formFields: { aspirate_touchTip_mmFromTop: -11 }, expectedArgsUnchecked: { touchTipAfterAspirate: false, - touchTipAfterAspirateOffsetMmFromBottom: 101, + touchTipAfterAspirateOffsetMmFromTop: -11, }, expectedArgsChecked: { touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 101, + touchTipAfterAspirateOffsetMmFromTop: -11, }, }, { checkboxField: 'dispense_touchTip_checkbox', - formFields: { dispense_touchTip_mmFromBottom: 42 }, + formFields: { dispense_touchTip_mmFromTop: -22 }, expectedArgsUnchecked: { touchTipAfterDispense: false, - touchTipAfterDispenseOffsetMmFromBottom: 42, + touchTipAfterDispenseOffsetMmFromTop: -22, }, expectedArgsChecked: { touchTipAfterDispense: true, - touchTipAfterDispenseOffsetMmFromBottom: 42, + touchTipAfterDispenseOffsetMmFromTop: -22, }, }, // MIXES diff --git a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts index 570437d350a..aeb24f5e708 100644 --- a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts +++ b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts @@ -35,7 +35,7 @@ describe('getDefaultsForStepType', () => { aspirate_mix_volume: null, aspirate_mmFromBottom: null, aspirate_touchTip_checkbox: false, - aspirate_touchTip_mmFromBottom: null, + aspirate_touchTip_mmFromTop: null, dispense_flowRate: null, dispense_labware: null, @@ -47,7 +47,7 @@ describe('getDefaultsForStepType', () => { dispense_mix_volume: null, dispense_mmFromBottom: null, dispense_touchTip_checkbox: false, - dispense_touchTip_mmFromBottom: null, + dispense_touchTip_mmFromTop: null, disposalVolume_checkbox: false, disposalVolume_volume: null, @@ -95,7 +95,7 @@ describe('getDefaultsForStepType', () => { blowout_location: null, blowout_flowRate: null, mix_mmFromBottom: DEFAULT_MM_OFFSET_FROM_BOTTOM, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, mix_touchTip_checkbox: false, pipette: null, nozzles: null, diff --git a/protocol-designer/src/steplist/test/generateSubsteps.test.ts b/protocol-designer/src/steplist/test/generateSubsteps.test.ts index 86bc5a7ad11..8994f921232 100644 --- a/protocol-designer/src/steplist/test/generateSubsteps.test.ts +++ b/protocol-designer/src/steplist/test/generateSubsteps.test.ts @@ -364,7 +364,7 @@ describe('generateSubstepItem', () => { volume: 50, times: 2, touchTip: false, - touchTipMmFromBottom: 5, + touchTipMmFromTop: -5, changeTip: 'always', blowoutLocation: null, blowoutFlowRateUlSec: 3, diff --git a/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts b/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts index 4a807129b81..21f16d4a03d 100644 --- a/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts +++ b/protocol-designer/src/timelineMiddleware/__tests__/generateRobotStateTimeline.test.ts @@ -40,9 +40,9 @@ describe('generateRobotStateTimeline', () => { dispenseAirGapVolume: null, mixInDestination: null, touchTipAfterAspirate: false, - touchTipAfterAspirateOffsetMmFromBottom: 13.81, + touchTipAfterAspirateOffsetMmFromTop: -13.81, touchTipAfterDispense: false, - touchTipAfterDispenseOffsetMmFromBottom: 13.81, + touchTipAfterDispenseOffsetMmFromTop: -13.81, name: 'transfer', commandCreatorFnName: 'transfer', blowoutLocation: null, @@ -80,9 +80,9 @@ describe('generateRobotStateTimeline', () => { dispenseAirGapVolume: null, mixInDestination: null, touchTipAfterAspirate: false, - touchTipAfterAspirateOffsetMmFromBottom: 13.81, + touchTipAfterAspirateOffsetMmFromTop: -13.81, touchTipAfterDispense: false, - touchTipAfterDispenseOffsetMmFromBottom: 13.81, + touchTipAfterDispenseOffsetMmFromTop: -13.81, name: 'transfer', commandCreatorFnName: 'transfer', blowoutLocation: null, @@ -110,7 +110,7 @@ describe('generateRobotStateTimeline', () => { volume: 5, times: 2, touchTip: false, - touchTipMmFromBottom: 13.81, + touchTipMmFromTop: -13.81, changeTip: 'always', blowoutLocation: null, pipette: DEFAULT_PIPETTE, diff --git a/protocol-designer/src/ui/steps/__fixtures__/index.ts b/protocol-designer/src/ui/steps/__fixtures__/index.ts index b7eeee3ec4a..67accdaad75 100644 --- a/protocol-designer/src/ui/steps/__fixtures__/index.ts +++ b/protocol-designer/src/ui/steps/__fixtures__/index.ts @@ -16,7 +16,7 @@ export const getMockMoveLiquidStep = (): SavedStepFormState => ({ aspirate_mix_volume: '5', aspirate_mmFromBottom: 1, aspirate_touchTip_checkbox: true, - aspirate_touchTip_mmFromBottom: 1, + aspirate_touchTip_mmFromTop: -1, dispense_flowRate: null, dispense_labware: 'dispense_labware_id', dispense_wells: ['A1'], @@ -27,7 +27,7 @@ export const getMockMoveLiquidStep = (): SavedStepFormState => ({ dispense_mix_volume: null, dispense_mmFromBottom: 0.5, dispense_touchTip_checkbox: true, - dispense_touchTip_mmFromBottom: 1, + dispense_touchTip_mmFromTop: -1, disposalVolume_checkbox: true, disposalVolume_volume: '20', blowout_checkbox: true, @@ -74,7 +74,7 @@ export const getMockMixStep = (): SavedStepFormState => ({ dispense_delay_checkbox: false, dispense_delay_seconds: '1', mix_touchTip_checkbox: false, - mix_touchTip_mmFromBottom: null, + mix_touchTip_mmFromTop: null, dropTip_location: 'fixedTrash', }, }) diff --git a/protocol-designer/src/ui/steps/test/selectors.test.ts b/protocol-designer/src/ui/steps/test/selectors.test.ts index e91dc7a82ac..1e1dd3f152b 100644 --- a/protocol-designer/src/ui/steps/test/selectors.test.ts +++ b/protocol-designer/src/ui/steps/test/selectors.test.ts @@ -508,8 +508,8 @@ describe('_getSavedMultiSelectFieldValues', () => { value: true, isIndeterminate: false, }, - aspirate_touchTip_mmFromBottom: { - value: 1, + aspirate_touchTip_mmFromTop: { + value: -1, isIndeterminate: false, }, // dispense settings @@ -569,8 +569,8 @@ describe('_getSavedMultiSelectFieldValues', () => { value: true, isIndeterminate: false, }, - dispense_touchTip_mmFromBottom: { - value: 1, + dispense_touchTip_mmFromTop: { + value: -1, isIndeterminate: false, }, blowout_checkbox: { @@ -654,7 +654,7 @@ describe('_getSavedMultiSelectFieldValues', () => { aspirate_airGap_checkbox: false, // same thing here with air gap volume aspirate_touchTip_checkbox: false, - // same thing with aspirate_touchTip_mmFromBottom + // same thing with aspirate_touchTip_mmFromTop dispense_labware: 'other_disp_labware', dispense_flowRate: 2, dispense_mmFromBottom: '2', @@ -668,7 +668,7 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_airGap_checkbox: false, // same thing here with air gap volume dispense_touchTip_checkbox: false, - // same thing with dispense_touchTip_mmFromBottom + // same thing with dispense_touchTip_mmFromTop blowout_checkbox: false, // same thing here with blowout location nozzles: null, @@ -758,9 +758,9 @@ describe('_getSavedMultiSelectFieldValues', () => { aspirate_touchTip_checkbox: { isIndeterminate: true, }, - aspirate_touchTip_mmFromBottom: { + aspirate_touchTip_mmFromTop: { isIndeterminate: false, - value: 1, + value: -1, }, // dispense settings dispense_labware: { @@ -810,9 +810,9 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_touchTip_checkbox: { isIndeterminate: true, }, - dispense_touchTip_mmFromBottom: { + dispense_touchTip_mmFromTop: { isIndeterminate: false, - value: 1, + value: -1, }, blowout_checkbox: { isIndeterminate: true, @@ -917,7 +917,7 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_delay_checkbox: { value: false, isIndeterminate: false }, dispense_delay_seconds: { value: '1', isIndeterminate: false }, mix_touchTip_checkbox: { value: false, isIndeterminate: false }, - mix_touchTip_mmFromBottom: { value: null, isIndeterminate: false }, + mix_touchTip_mmFromTop: { value: null, isIndeterminate: false }, nozzles: { value: undefined, isIndeterminate: false }, mix_x_position: { isIndeterminate: false, @@ -974,7 +974,7 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_delay_checkbox: true, dispense_delay_seconds: '3', mix_touchTip_checkbox: true, - mix_touchTip_mmFromBottom: '14', + mix_touchTip_mmFromTop: '-14', nozzles: null, }, } @@ -1011,7 +1011,7 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_delay_checkbox: { isIndeterminate: true }, dispense_delay_seconds: { isIndeterminate: true }, mix_touchTip_checkbox: { isIndeterminate: true }, - mix_touchTip_mmFromBottom: { isIndeterminate: true }, + mix_touchTip_mmFromTop: { isIndeterminate: true }, nozzles: { isIndeterminate: true }, mix_x_position: { isIndeterminate: false, @@ -1154,7 +1154,7 @@ describe('getMultiSelectDisabledFields', () => { aspirate_delay_seconds: aspirateLabwareDifferentText, aspirate_delay_mmFromBottom: aspirateLabwareDifferentText, aspirate_touchTip_checkbox: aspirateLabwareDifferentText, - aspirate_touchTip_mmFromBottom: aspirateLabwareDifferentText, + aspirate_touchTip_mmFromTop: aspirateLabwareDifferentText, }) }) }) @@ -1184,7 +1184,7 @@ describe('getMultiSelectDisabledFields', () => { dispense_delay_seconds: dispenseLabwareDifferentText, dispense_delay_mmFromBottom: dispenseLabwareDifferentText, dispense_touchTip_checkbox: dispenseLabwareDifferentText, - dispense_touchTip_mmFromBottom: dispenseLabwareDifferentText, + dispense_touchTip_mmFromTop: dispenseLabwareDifferentText, }) }) }) @@ -1372,7 +1372,7 @@ describe('getMultiSelectDisabledFields', () => { dispense_delay_checkbox: labwareDifferentText, dispense_delay_seconds: labwareDifferentText, mix_touchTip_checkbox: labwareDifferentText, - mix_touchTip_mmFromBottom: labwareDifferentText, + mix_touchTip_mmFromTop: labwareDifferentText, }) }) }) diff --git a/protocol-designer/src/ui/steps/utils.ts b/protocol-designer/src/ui/steps/utils.ts index bf3cba42aaa..a80da0d4dd2 100644 --- a/protocol-designer/src/ui/steps/utils.ts +++ b/protocol-designer/src/ui/steps/utils.ts @@ -42,7 +42,7 @@ const batchEditMoveLiquidAspirateLabwareDisabledFieldNames: StepFieldName[] = [ 'aspirate_delay_seconds', 'aspirate_delay_mmFromBottom', 'aspirate_touchTip_checkbox', - 'aspirate_touchTip_mmFromBottom', + 'aspirate_touchTip_mmFromTop', ] const batchEditMoveLiquidDispenseLabwareDisabledFieldNames: StepFieldName[] = [ 'dispense_mmFromBottom', @@ -50,7 +50,7 @@ const batchEditMoveLiquidDispenseLabwareDisabledFieldNames: StepFieldName[] = [ 'dispense_delay_seconds', 'dispense_delay_mmFromBottom', 'dispense_touchTip_checkbox', - 'dispense_touchTip_mmFromBottom', + 'dispense_touchTip_mmFromTop', ] const batchEditMixLabwareDifferentDisabledFieldNames: StepFieldName[] = [ 'mix_mmFromBottom', @@ -59,7 +59,7 @@ const batchEditMixLabwareDifferentDisabledFieldNames: StepFieldName[] = [ 'dispense_delay_checkbox', 'dispense_delay_seconds', 'mix_touchTip_checkbox', - 'mix_touchTip_mmFromBottom', + 'mix_touchTip_mmFromTop', ] const batchEditMoveLiquidMultiAspiratePathDisabledFieldNames: StepFieldName[] = [ 'aspirate_mix_checkbox', diff --git a/shared-data/deck/definitions/5/ot3_standard.json b/shared-data/deck/definitions/5/ot3_standard.json index fda49c38f2d..f317b596ad1 100644 --- a/shared-data/deck/definitions/5/ot3_standard.json +++ b/shared-data/deck/definitions/5/ot3_standard.json @@ -1026,7 +1026,8 @@ "cutoutD3": [ "1ChannelWasteChute", "8ChannelWasteChute", - "flexStackerModuleV1D4" + "flexStackerModuleV1D4", + "D3" ] }, "fixtureGroup": {}, @@ -1043,7 +1044,8 @@ "8ChannelWasteChute", "96ChannelWasteChute", "gripperWasteChute", - "flexStackerModuleV1D4" + "flexStackerModuleV1D4", + "D3" ] }, "fixtureGroup": {}, diff --git a/shared-data/js/constants.ts b/shared-data/js/constants.ts index 1690667aff3..5c54db9ef10 100644 --- a/shared-data/js/constants.ts +++ b/shared-data/js/constants.ts @@ -565,6 +565,10 @@ export const ABSORBANCE_READER_V1_FIXTURE: 'absorbanceReaderV1' = 'absorbanceReaderV1' export const FLEX_STACKER_V1_FIXTURE: 'flexStackerModuleV1' = 'flexStackerModuleV1' +export const FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE: 'flexStackerModuleV1WithWasteChuteRightAdapterCovered' = + 'flexStackerModuleV1WithWasteChuteRightAdapterCovered' +export const FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE: 'flexStackerModuleV1WithWasteChuteRightAdapterNoCover' = + 'flexStackerModuleV1WithWasteChuteRightAdapterNoCover' export const MODULE_FIXTURES_BY_MODEL: { [moduleModel in ModuleModel]?: CutoutFixtureId[] @@ -617,6 +621,12 @@ export const WASTE_CHUTE_STAGING_AREA_FIXTURES: CutoutFixtureId[] = [ STAGING_AREA_SLOT_WITH_WASTE_CHUTE_RIGHT_ADAPTER_NO_COVER_FIXTURE, ] +export const FLEX_STACKER_FIXTURES: CutoutFixtureId[] = [ + FLEX_STACKER_V1_FIXTURE, + FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE, + FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE, +] + export const LOW_VOLUME_PIPETTES = ['p50_single_flex', 'p50_multi_flex'] // default hex values for liquid colors diff --git a/shared-data/js/fixtures.ts b/shared-data/js/fixtures.ts index 51f46fdf433..76cc4c06fae 100644 --- a/shared-data/js/fixtures.ts +++ b/shared-data/js/fixtures.ts @@ -42,6 +42,10 @@ import { ABSORBANCE_READER_V1, MODULE_FIXTURES_BY_MODEL, STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, + FLEX_STACKER_MODULE_V1, + FLEX_STACKER_V1_FIXTURE, + FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE, + FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE, } from './constants' import { getModuleDisplayName } from './modules' import { getCutoutIdForSlotName } from './helpers' @@ -241,7 +245,7 @@ export function getAddressableAreaNamesFromLoadedModule( // note: we've decided not to translate these strings export function getFixtureDisplayName( cutoutFixtureId: CutoutFixtureId | null, - usbPortNumber?: number + usbPortNumber?: number | string ): string { switch (cutoutFixtureId) { case STAGING_AREA_RIGHT_SLOT_FIXTURE: @@ -290,6 +294,26 @@ export function getFixtureDisplayName( ABSORBANCE_READER_V1 )} in USB-${usbPortNumber}` : getModuleDisplayName(ABSORBANCE_READER_V1) + case FLEX_STACKER_V1_FIXTURE: + return usbPortNumber != null + ? `${getModuleDisplayName( + FLEX_STACKER_MODULE_V1 + )} in USB-${usbPortNumber}` + : getModuleDisplayName(FLEX_STACKER_MODULE_V1) + case FLEX_STACKER_WITH_WASTE_CHUTE_ADAPTER_COVERED_FIXTURE: + return usbPortNumber != null + ? `${getModuleDisplayName( + FLEX_STACKER_MODULE_V1 + )} in USB-${usbPortNumber} and waste chute with cover` + : `${getModuleDisplayName( + FLEX_STACKER_MODULE_V1 + )} and waste chute with cover` + case FLEX_STACKER_WTIH_WASTE_CHUTE_ADAPTER_NO_COVER_FIXTURE: + return usbPortNumber != null + ? `${getModuleDisplayName( + FLEX_STACKER_MODULE_V1 + )} in USB-${usbPortNumber} and waste chute` + : `${getModuleDisplayName(FLEX_STACKER_MODULE_V1)} and waste chute` default: return 'Slot' } diff --git a/step-generation/src/__tests__/consolidate.test.ts b/step-generation/src/__tests__/consolidate.test.ts index c77ab3ab53d..6a00b13006f 100644 --- a/step-generation/src/__tests__/consolidate.test.ts +++ b/step-generation/src/__tests__/consolidate.test.ts @@ -908,9 +908,9 @@ describe('consolidate single-channel', () => { const touchTipAfterAsp = { wellLocation: { - origin: 'bottom' as const, + origin: 'top' as const, offset: { - z: mixinArgs.touchTipAfterAspirateOffsetMmFromBottom, + z: mixinArgs.touchTipAfterAspirateOffsetMmFromTop, }, }, } @@ -949,9 +949,9 @@ describe('consolidate single-channel', () => { const touchTipAfterDisp = { labwareId: DEST_LABWARE, wellLocation: { - origin: 'bottom' as const, + origin: 'top' as const, offset: { - z: mixinArgs.touchTipAfterDispenseOffsetMmFromBottom, + z: mixinArgs.touchTipAfterDispenseOffsetMmFromTop, }, }, } @@ -1080,7 +1080,7 @@ describe('consolidate single-channel', () => { preWetTip: true, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -1207,9 +1207,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1300,9 +1300,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A2', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1449,9 +1449,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -1566,9 +1566,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A3', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1715,9 +1715,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -1773,7 +1773,7 @@ describe('consolidate single-channel', () => { preWetTip: true, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -1906,9 +1906,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1999,9 +1999,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A2', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2163,9 +2163,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -2280,9 +2280,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A3', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2444,9 +2444,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -2499,7 +2499,7 @@ describe('consolidate single-channel', () => { preWetTip: true, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -2632,9 +2632,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2725,9 +2725,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A2', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2889,9 +2889,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -3049,9 +3049,9 @@ describe('consolidate single-channel', () => { labwareId: 'sourcePlateId', wellName: 'A3', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -3213,9 +3213,9 @@ describe('consolidate single-channel', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, diff --git a/step-generation/src/__tests__/distribute.test.ts b/step-generation/src/__tests__/distribute.test.ts index 12f3676f09a..2264f4b44b3 100644 --- a/step-generation/src/__tests__/distribute.test.ts +++ b/step-generation/src/__tests__/distribute.test.ts @@ -859,7 +859,7 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', }, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -884,7 +884,7 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', }, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -917,9 +917,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -965,9 +965,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -998,9 +998,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1048,9 +1048,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1087,9 +1087,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1138,9 +1138,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1170,9 +1170,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1218,9 +1218,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1251,9 +1251,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1303,9 +1303,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1344,9 +1344,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1395,9 +1395,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1428,9 +1428,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1477,9 +1477,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1510,9 +1510,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1562,9 +1562,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1603,9 +1603,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1654,9 +1654,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), @@ -1687,9 +1687,9 @@ describe('advanced settings: volume, mix, pre-wet tip, tip touch, tip position', // touch tip (asp) touchTipHelper('A1', { wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }), diff --git a/step-generation/src/__tests__/transfer.test.ts b/step-generation/src/__tests__/transfer.test.ts index cd22d6a321b..9ed463aecb7 100644 --- a/step-generation/src/__tests__/transfer.test.ts +++ b/step-generation/src/__tests__/transfer.test.ts @@ -1092,7 +1092,7 @@ describe('advanced options', () => { }, aspirateDelay: { seconds: 11, mmFromBottom: 15 }, touchTipAfterAspirate: true, - touchTipAfterAspirateOffsetMmFromBottom: 14.5, + touchTipAfterAspirateOffsetMmFromTop: -14.5, aspirateAirGapVolume: 31, // dispense column dispenseDelay: { seconds: 12, mmFromBottom: 14 }, @@ -1275,9 +1275,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1470,9 +1470,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -1585,9 +1585,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -1775,9 +1775,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -1992,9 +1992,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2182,9 +2182,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -2299,9 +2299,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2488,9 +2488,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -2732,9 +2732,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -2922,9 +2922,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -3039,9 +3039,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -3229,9 +3229,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -3471,9 +3471,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -3661,9 +3661,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, @@ -3835,9 +3835,9 @@ describe('advanced options', () => { labwareId: 'sourcePlateId', wellName: 'A1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 14.5, + z: -14.5, }, }, }, @@ -4025,9 +4025,9 @@ describe('advanced options', () => { labwareId: 'destPlateId', wellName: 'B1', wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: 3.4, + z: -3.4, }, }, }, diff --git a/step-generation/src/commandCreators/compound/consolidate.ts b/step-generation/src/commandCreators/compound/consolidate.ts index 579d3799161..eb87de0ed45 100644 --- a/step-generation/src/commandCreators/compound/consolidate.ts +++ b/step-generation/src/commandCreators/compound/consolidate.ts @@ -276,9 +276,9 @@ export const consolidate: CommandCreator = ( labwareId: args.sourceLabware, wellName: sourceWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterAspirateOffsetMmFromBottom, + z: args.touchTipAfterAspirateOffsetMmFromTop, }, }, }), @@ -324,6 +324,7 @@ export const consolidate: CommandCreator = ( }), ] } + // can not touch tip in a waste chute const touchTipAfterDispenseCommands: CurriedCommandCreator[] = args.touchTipAfterDispense && destinationWell != null @@ -333,9 +334,9 @@ export const consolidate: CommandCreator = ( labwareId: args.destLabware, wellName: destinationWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterDispenseOffsetMmFromBottom, + z: args.touchTipAfterDispenseOffsetMmFromTop, }, }, }), diff --git a/step-generation/src/commandCreators/compound/distribute.ts b/step-generation/src/commandCreators/compound/distribute.ts index de87cffd29d..111626c79ce 100644 --- a/step-generation/src/commandCreators/compound/distribute.ts +++ b/step-generation/src/commandCreators/compound/distribute.ts @@ -298,9 +298,9 @@ export const distribute: CommandCreator = ( labwareId: args.destLabware, wellName: destWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterDispenseOffsetMmFromBottom, + z: args.touchTipAfterDispenseOffsetMmFromTop, }, }, }), @@ -457,9 +457,9 @@ export const distribute: CommandCreator = ( labwareId: args.sourceLabware, wellName: args.sourceWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterAspirateOffsetMmFromBottom, + z: args.touchTipAfterAspirateOffsetMmFromTop, }, }, }), diff --git a/step-generation/src/commandCreators/compound/mix.ts b/step-generation/src/commandCreators/compound/mix.ts index cacbdc27864..74d8d8c01cd 100644 --- a/step-generation/src/commandCreators/compound/mix.ts +++ b/step-generation/src/commandCreators/compound/mix.ts @@ -255,9 +255,9 @@ export const mix: CommandCreator = ( labwareId: labware, wellName: well, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: data.touchTipMmFromBottom, + z: data.touchTipMmFromTop, }, }, }), diff --git a/step-generation/src/commandCreators/compound/transfer.ts b/step-generation/src/commandCreators/compound/transfer.ts index adfb9c43887..c4b3d183ea2 100644 --- a/step-generation/src/commandCreators/compound/transfer.ts +++ b/step-generation/src/commandCreators/compound/transfer.ts @@ -346,9 +346,9 @@ export const transfer: CommandCreator = ( labwareId: args.sourceLabware, wellName: sourceWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterAspirateOffsetMmFromBottom, + z: args.touchTipAfterAspirateOffsetMmFromTop, }, }, }), @@ -363,9 +363,9 @@ export const transfer: CommandCreator = ( labwareId: args.destLabware, wellName: destinationWell, wellLocation: { - origin: 'bottom', + origin: 'top', offset: { - z: args.touchTipAfterDispenseOffsetMmFromBottom, + z: args.touchTipAfterDispenseOffsetMmFromTop, }, }, }), diff --git a/step-generation/src/fixtures/commandFixtures.ts b/step-generation/src/fixtures/commandFixtures.ts index aac4662fea0..37e4ed07a44 100644 --- a/step-generation/src/fixtures/commandFixtures.ts +++ b/step-generation/src/fixtures/commandFixtures.ts @@ -55,7 +55,7 @@ export const BLOWOUT_FLOW_RATE = 2.3 export const ASPIRATE_OFFSET_FROM_BOTTOM_MM = 3.1 export const DISPENSE_OFFSET_FROM_BOTTOM_MM = 3.2 export const BLOWOUT_OFFSET_FROM_TOP_MM = 3.3 -const TOUCH_TIP_OFFSET_FROM_BOTTOM_MM = 3.4 +const TOUCH_TIP_OFFSET_FROM_TOP_MM = -3.4 interface FlowRateAndOffsetParamsTransferlike { aspirateFlowRateUlSec: number dispenseFlowRateUlSec: number @@ -63,8 +63,8 @@ interface FlowRateAndOffsetParamsTransferlike { aspirateOffsetFromBottomMm: number dispenseOffsetFromBottomMm: number blowoutOffsetFromTopMm: number - touchTipAfterAspirateOffsetMmFromBottom: number - touchTipAfterDispenseOffsetMmFromBottom: number + touchTipAfterAspirateOffsetMmFromTop: number + touchTipAfterDispenseOffsetMmFromTop: number } export const getFlowRateAndOffsetParamsTransferLike = (): FlowRateAndOffsetParamsTransferlike => ({ aspirateFlowRateUlSec: ASPIRATE_FLOW_RATE, @@ -74,8 +74,8 @@ export const getFlowRateAndOffsetParamsTransferLike = (): FlowRateAndOffsetParam dispenseOffsetFromBottomMm: DISPENSE_OFFSET_FROM_BOTTOM_MM, blowoutOffsetFromTopMm: BLOWOUT_OFFSET_FROM_TOP_MM, // for consolidate/distribute/transfer only - touchTipAfterAspirateOffsetMmFromBottom: TOUCH_TIP_OFFSET_FROM_BOTTOM_MM, - touchTipAfterDispenseOffsetMmFromBottom: TOUCH_TIP_OFFSET_FROM_BOTTOM_MM, + touchTipAfterAspirateOffsetMmFromTop: TOUCH_TIP_OFFSET_FROM_TOP_MM, + touchTipAfterDispenseOffsetMmFromTop: TOUCH_TIP_OFFSET_FROM_TOP_MM, }) interface FlowRateAndOffsetParamsMix { aspirateFlowRateUlSec: number @@ -84,7 +84,7 @@ interface FlowRateAndOffsetParamsMix { aspirateOffsetFromBottomMm: number dispenseOffsetFromBottomMm: number blowoutOffsetFromTopMm: number - touchTipMmFromBottom: number + touchTipMmFromTop: number } export const getFlowRateAndOffsetParamsMix = (): FlowRateAndOffsetParamsMix => ({ aspirateFlowRateUlSec: ASPIRATE_FLOW_RATE, @@ -94,7 +94,7 @@ export const getFlowRateAndOffsetParamsMix = (): FlowRateAndOffsetParamsMix => ( dispenseOffsetFromBottomMm: DISPENSE_OFFSET_FROM_BOTTOM_MM, blowoutOffsetFromTopMm: BLOWOUT_OFFSET_FROM_TOP_MM, // for mix only - touchTipMmFromBottom: TOUCH_TIP_OFFSET_FROM_BOTTOM_MM, + touchTipMmFromTop: TOUCH_TIP_OFFSET_FROM_TOP_MM, }) type MakeAspDispHelper

= ( bakedParams?: Partial

@@ -251,9 +251,9 @@ const _defaultTouchTipParams = { pipetteId: DEFAULT_PIPETTE, labwareId: SOURCE_LABWARE, wellLocation: { - origin: 'bottom' as const, + origin: 'top' as const, offset: { - z: TOUCH_TIP_OFFSET_FROM_BOTTOM_MM, + z: TOUCH_TIP_OFFSET_FROM_TOP_MM, }, }, } diff --git a/step-generation/src/types.ts b/step-generation/src/types.ts index b4768a678f8..34105529058 100644 --- a/step-generation/src/types.ts +++ b/step-generation/src/types.ts @@ -195,7 +195,7 @@ export type SharedTransferLikeArgs = CommonArgs & { /** Touch tip after every aspirate */ touchTipAfterAspirate: boolean /** Optional offset for touch tip after aspirate (if null, use PD default) */ - touchTipAfterAspirateOffsetMmFromBottom: number + touchTipAfterAspirateOffsetMmFromTop: number /** changeTip is interpreted differently by different Step types */ changeTip: ChangeTipOptions /** Delay after every aspirate */ @@ -219,7 +219,7 @@ export type SharedTransferLikeArgs = CommonArgs & { /** Touch tip in destination well after dispense */ touchTipAfterDispense: boolean /** Optional offset for touch tip after dispense (if null, use PD default) */ - touchTipAfterDispenseOffsetMmFromBottom: number + touchTipAfterDispenseOffsetMmFromTop: number /** Flow rate in uL/sec for all dispenses */ dispenseFlowRateUlSec: number /** offset from bottom of well in mm */ @@ -295,7 +295,7 @@ export type MixArgs = CommonArgs & { times: number /** Touch tip after mixing */ touchTip: boolean - touchTipMmFromBottom: number + touchTipMmFromTop: number /** change tip: see comments in step-generation/mix.js */ changeTip: ChangeTipOptions /** drop tip location entity id */