From 8408ac0717b93c7103288e5a4f819e1617227aa6 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Tue, 21 Jan 2025 12:09:06 -0500 Subject: [PATCH 01/11] rename camel case mmToEdge to mmFromEdge --- .../protocol_api/_liquid_properties.py | 4 +- api/tests/opentrons/conftest.py | 6 +- .../test_transfer_components_executor.py | 4 +- shared-data/js/types.ts | 2 +- .../definitions/1/ethanol_80.json | 66 +++++++++---------- .../definitions/1/glycerol_50.json | 66 +++++++++---------- .../liquid-class/definitions/1/water.json | 66 +++++++++---------- .../fixtures/1/fixture_glycerol50.json | 6 +- shared-data/liquid-class/schemas/1.json | 4 +- .../liquid_classes/liquid_class_definition.py | 2 +- 10 files changed, 113 insertions(+), 113 deletions(-) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index ebb903591ea7..6ae1ac6f6567 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -180,7 +180,7 @@ def _get_shared_data_params(self) -> Optional[SharedDataTouchTipParams]: ): return SharedDataTouchTipParams( zOffset=self._z_offset, - mmToEdge=self._mm_to_edge, + mmFromEdge=self._mm_to_edge, speed=self._speed, ) else: @@ -591,7 +591,7 @@ def _build_touch_tip_properties( ) -> TouchTipProperties: if touch_tip_properties.params is not None: z_offset = touch_tip_properties.params.zOffset - mm_to_edge = touch_tip_properties.params.mmToEdge + mm_to_edge = touch_tip_properties.params.mmFromEdge speed = touch_tip_properties.params.speed else: z_offset = None diff --git a/api/tests/opentrons/conftest.py b/api/tests/opentrons/conftest.py index 60386d5a140c..6ca7373d593f 100755 --- a/api/tests/opentrons/conftest.py +++ b/api/tests/opentrons/conftest.py @@ -904,7 +904,7 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: touchTip=TouchTipProperties( enable=True, params=LiquidClassTouchTipParams( - zOffset=-1, mmToEdge=0.5, speed=30 + zOffset=-1, mmFromEdge=0.5, speed=30 ), ), delay=DelayProperties( @@ -947,7 +947,7 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: touchTip=TouchTipProperties( enable=True, params=LiquidClassTouchTipParams( - zOffset=-1, mmToEdge=0.75, speed=30 + zOffset=-1, mmFromEdge=0.75, speed=30 ), ), delay=DelayProperties( @@ -990,7 +990,7 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: touchTip=TouchTipProperties( enable=False, params=LiquidClassTouchTipParams( - zOffset=-1, mmToEdge=0.5, speed=30 + zOffset=-1, mmFromEdge=0.5, speed=30 ), ), delay=DelayProperties( diff --git a/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py b/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py index 878704685909..a42dcf633a55 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py @@ -51,7 +51,7 @@ def sample_transfer_props( "offset": {"x": 3, "y": 2, "z": 1}, "speed": 50, "airGapByVolume": [[1.0, 0.1], [49.9, 0.1], [50.0, 0.0]], - "touchTip": {"enable": true, "params": {"zOffset": -1, "mmToEdge": 0.5, "speed": 30}}, + "touchTip": {"enable": true, "params": {"zOffset": -1, "mmFromEdge": 0.5, "speed": 30}}, "delay": {"enable": true, "params": {"duration": 20}}}, "positionReference": "well-bottom", "offset": {"x": 10, "y": 20, "z": 30}, @@ -537,7 +537,7 @@ def test_retract_after_aspiration_without_touch_tip_and_delay( "speed": 50, "airGapByVolume": [[1.0, 0.1], [49.9, 0.1], [50.0, 0.0]], "blowout": { "enable": true , "params": {"location": "source", "flowRate": 100}}, - "touchTip": { "enable": true, "params": { "zOffset": -1, "mmToEdge": 0.5, "speed": 30}}, + "touchTip": { "enable": true, "params": { "zOffset": -1, "mmFromEdge": 0.5, "speed": 30}}, "delay": {"enable": true, "params": { "duration": 10 }} }, "positionReference": "well-bottom", diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index 8fdcd8f9d398..0664688a1fdd 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -718,7 +718,7 @@ interface DelayProperties { } interface TouchTipParams { zOffset: number - mmToEdge: number + mmFromEdge: number speed: number } interface TouchTipProperties { diff --git a/shared-data/liquid-class/definitions/1/ethanol_80.json b/shared-data/liquid-class/definitions/1/ethanol_80.json index 392d1454f8f3..e58a9c9b8904 100644 --- a/shared-data/liquid-class/definitions/1/ethanol_80.json +++ b/shared-data/liquid-class/definitions/1/ethanol_80.json @@ -42,7 +42,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -120,7 +120,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -194,7 +194,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -277,7 +277,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -355,7 +355,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -429,7 +429,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -512,7 +512,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -590,7 +590,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -669,7 +669,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -747,7 +747,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -825,7 +825,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -903,7 +903,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -981,7 +981,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1059,7 +1059,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1137,7 +1137,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1220,7 +1220,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1298,7 +1298,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1377,7 +1377,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1455,7 +1455,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1533,7 +1533,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1611,7 +1611,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1689,7 +1689,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1767,7 +1767,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1845,7 +1845,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1928,7 +1928,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2006,7 +2006,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2085,7 +2085,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2163,7 +2163,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2241,7 +2241,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2319,7 +2319,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2397,7 +2397,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2475,7 +2475,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2553,7 +2553,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, diff --git a/shared-data/liquid-class/definitions/1/glycerol_50.json b/shared-data/liquid-class/definitions/1/glycerol_50.json index 0cb8dad21b8f..353140b16eb3 100644 --- a/shared-data/liquid-class/definitions/1/glycerol_50.json +++ b/shared-data/liquid-class/definitions/1/glycerol_50.json @@ -38,7 +38,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -112,7 +112,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -187,7 +187,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -266,7 +266,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -340,7 +340,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -415,7 +415,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -494,7 +494,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -568,7 +568,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -642,7 +642,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -716,7 +716,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -790,7 +790,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -860,7 +860,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -934,7 +934,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1008,7 +1008,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1078,7 +1078,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1157,7 +1157,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1231,7 +1231,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1305,7 +1305,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1379,7 +1379,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1453,7 +1453,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1523,7 +1523,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1597,7 +1597,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1671,7 +1671,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1741,7 +1741,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1820,7 +1820,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1894,7 +1894,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1972,7 +1972,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2050,7 +2050,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2124,7 +2124,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2194,7 +2194,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2268,7 +2268,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2343,7 +2343,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2413,7 +2413,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, diff --git a/shared-data/liquid-class/definitions/1/water.json b/shared-data/liquid-class/definitions/1/water.json index d7bcd1afdc3b..354bb470fbfa 100644 --- a/shared-data/liquid-class/definitions/1/water.json +++ b/shared-data/liquid-class/definitions/1/water.json @@ -42,7 +42,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -116,7 +116,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -192,7 +192,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -269,7 +269,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -343,7 +343,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -419,7 +419,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -496,7 +496,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -570,7 +570,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -644,7 +644,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -720,7 +720,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -790,7 +790,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -860,7 +860,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -932,7 +932,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1002,7 +1002,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1072,7 +1072,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1149,7 +1149,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1223,7 +1223,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1297,7 +1297,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1373,7 +1373,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1443,7 +1443,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1513,7 +1513,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1585,7 +1585,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1655,7 +1655,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1725,7 +1725,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1802,7 +1802,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1872,7 +1872,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1942,7 +1942,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2014,7 +2014,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2084,7 +2084,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2154,7 +2154,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2226,7 +2226,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2296,7 +2296,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2366,7 +2366,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, diff --git a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json index 9c24a40452df..6f333ef44e1b 100644 --- a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json +++ b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json @@ -41,7 +41,7 @@ "enable": true, "params": { "zOffset": 2, - "mmToEdge": 1, + "mmFromEdge": 1, "speed": 50 } }, @@ -117,7 +117,7 @@ "enable": true, "params": { "zOffset": 2, - "mmToEdge": 1, + "mmFromEdge": 1, "speed": 50 } }, @@ -192,7 +192,7 @@ "enable": true, "params": { "zOffset": 2, - "mmToEdge": 1, + "mmFromEdge": 1, "speed": 50 } }, diff --git a/shared-data/liquid-class/schemas/1.json b/shared-data/liquid-class/schemas/1.json index 633be549d4c6..80142f7c6bb2 100644 --- a/shared-data/liquid-class/schemas/1.json +++ b/shared-data/liquid-class/schemas/1.json @@ -73,7 +73,7 @@ "type": "number", "description": "Offset from the top of the well for touch-tip, in millimeters." }, - "mmToEdge": { + "mmFromEdge": { "type": "number", "description": "Offset away from the the well edge, in millimeters." }, @@ -82,7 +82,7 @@ "description": "Touch-tip speed, in millimeters per second." } }, - "required": ["zOffset", "mmToEdge", "speed"], + "required": ["zOffset", "mmFromEdge", "speed"], "additionalProperties": false } }, diff --git a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py index aca371d43e6a..d828bfbe4f5b 100644 --- a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py +++ b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py @@ -100,7 +100,7 @@ class LiquidClassTouchTipParams(BaseModel): ..., description="Offset from the top of the well for touch-tip, in millimeters.", ) - mmToEdge: _Number = Field( + mmFromEdge: _Number = Field( ..., description="Offset away from the the well edge, in millimeters." ) speed: _NonNegativeNumber = Field( From 316efeb931c8d4c1f33c4501c4c2fdcf21f07957 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Tue, 21 Jan 2025 13:16:36 -0500 Subject: [PATCH 02/11] fix command schema --- shared-data/command/schemas/11.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 6521c1cd0eee..2f7942a1e37c 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -1923,7 +1923,7 @@ "LiquidClassTouchTipParams": { "description": "Parameters for touch-tip.", "properties": { - "mmToEdge": { + "mmFromEdge": { "anyOf": [ { "type": "integer" @@ -1933,7 +1933,7 @@ } ], "description": "Offset away from the the well edge, in millimeters.", - "title": "Mmtoedge" + "title": "Mmfromedge" }, "speed": { "anyOf": [ @@ -1962,7 +1962,7 @@ "title": "Zoffset" } }, - "required": ["zOffset", "mmToEdge", "speed"], + "required": ["zOffset", "mmFromEdge", "speed"], "title": "LiquidClassTouchTipParams", "type": "object" }, From 9e11bfd00687a0d1456d5f2ab723dfccefc61953 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Tue, 21 Jan 2025 13:35:01 -0500 Subject: [PATCH 03/11] change snake_case mm_to_edge to mm_from_edge --- .../protocol_api/_liquid_properties.py | 26 +++++++++---------- .../engine/transfer_components_executor.py | 8 +++--- .../test_liquid_class_properties.py | 18 ++++++------- .../commands/test_touch_tip.py | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index 6ae1ac6f6567..5ba19d98a53e 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -126,7 +126,7 @@ class TouchTipProperties: _enabled: bool _z_offset: Optional[float] - _mm_to_edge: Optional[float] + _mm_from_edge: Optional[float] _speed: Optional[float] @property @@ -137,10 +137,10 @@ def enabled(self) -> bool: def enabled(self, enable: bool) -> None: validated_enable = validation.ensure_boolean(enable) if validated_enable and ( - self._z_offset is None or self._mm_to_edge is None or self._speed is None + self._z_offset is None or self._mm_from_edge is None or self._speed is None ): raise ValueError( - "z_offset, mm_to_edge and speed must be set before enabling touch tip." + "z_offset, mm_from_edge and speed must be set before enabling touch tip." ) self._enabled = validated_enable @@ -154,13 +154,13 @@ def z_offset(self, new_offset: float) -> None: self._z_offset = validated_offset @property - def mm_to_edge(self) -> Optional[float]: - return self._mm_to_edge + def mm_from_edge(self) -> Optional[float]: + return self._mm_from_edge - @mm_to_edge.setter - def mm_to_edge(self, new_mm: float) -> None: + @mm_from_edge.setter + def mm_from_edge(self, new_mm: float) -> None: validated_mm = validation.ensure_float(new_mm) - self._mm_to_edge = validated_mm + self._mm_from_edge = validated_mm @property def speed(self) -> Optional[float]: @@ -175,12 +175,12 @@ def _get_shared_data_params(self) -> Optional[SharedDataTouchTipParams]: """Get the touch tip params in schema v1 shape.""" if ( self._z_offset is not None - and self._mm_to_edge is not None + and self._mm_from_edge is not None and self._speed is not None ): return SharedDataTouchTipParams( zOffset=self._z_offset, - mmFromEdge=self._mm_to_edge, + mmFromEdge=self._mm_from_edge, speed=self._speed, ) else: @@ -591,16 +591,16 @@ def _build_touch_tip_properties( ) -> TouchTipProperties: if touch_tip_properties.params is not None: z_offset = touch_tip_properties.params.zOffset - mm_to_edge = touch_tip_properties.params.mmFromEdge + mm_from_edge = touch_tip_properties.params.mmFromEdge speed = touch_tip_properties.params.speed else: z_offset = None - mm_to_edge = None + mm_from_edge = None speed = None return TouchTipProperties( _enabled=touch_tip_properties.enable, _z_offset=z_offset, - _mm_to_edge=mm_to_edge, + _mm_from_edge=mm_from_edge, _speed=speed, ) diff --git a/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py b/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py index 7dc332e6a37a..b8bf2b8d47cb 100644 --- a/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py +++ b/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py @@ -291,7 +291,7 @@ def retract_after_aspiration(self, volume: float) -> None: assert ( touch_tip_props.speed is not None and touch_tip_props.z_offset is not None - and touch_tip_props.mm_to_edge is not None + and touch_tip_props.mm_from_edge is not None ) self._instrument.touch_tip( location=retract_location, @@ -299,7 +299,7 @@ def retract_after_aspiration(self, volume: float) -> None: radius=1, z_offset=touch_tip_props.z_offset, speed=touch_tip_props.speed, - mm_from_edge=touch_tip_props.mm_to_edge, + mm_from_edge=touch_tip_props.mm_from_edge, ) self._instrument.move_to( location=retract_location, @@ -458,7 +458,7 @@ def _do_touch_tip_and_air_gap( assert ( touch_tip_props.speed is not None and touch_tip_props.z_offset is not None - and touch_tip_props.mm_to_edge is not None + and touch_tip_props.mm_from_edge is not None ) # TODO:, check that when blow out is a non-dest-well, # whether the touch tip params from transfer props should be used for @@ -471,7 +471,7 @@ def _do_touch_tip_and_air_gap( radius=1, z_offset=touch_tip_props.z_offset, speed=touch_tip_props.speed, - mm_from_edge=touch_tip_props.mm_to_edge, + mm_from_edge=touch_tip_props.mm_from_edge, ) except TouchTipDisabledError: # TODO: log a warning diff --git a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py index ee269f378d5b..fc86bfcfa527 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py @@ -37,7 +37,7 @@ def test_build_aspirate_settings() -> None: } assert aspirate_properties.retract.touch_tip.enabled is True assert aspirate_properties.retract.touch_tip.z_offset == 2 - assert aspirate_properties.retract.touch_tip.mm_to_edge == 1 + assert aspirate_properties.retract.touch_tip.mm_from_edge == 1 assert aspirate_properties.retract.touch_tip.speed == 50 assert aspirate_properties.retract.delay.enabled is True assert aspirate_properties.retract.delay.duration == 1 @@ -87,8 +87,8 @@ def test_aspirate_settings_overrides() -> None: assert aspirate_properties.retract.touch_tip.enabled is False aspirate_properties.retract.touch_tip.z_offset = 2.34 assert aspirate_properties.retract.touch_tip.z_offset == 2.34 - aspirate_properties.retract.touch_tip.mm_to_edge = 4.56 - assert aspirate_properties.retract.touch_tip.mm_to_edge == 4.56 + aspirate_properties.retract.touch_tip.mm_from_edge = 4.56 + assert aspirate_properties.retract.touch_tip.mm_from_edge == 4.56 aspirate_properties.retract.touch_tip.speed = 501 assert aspirate_properties.retract.touch_tip.speed == 501 aspirate_properties.retract.delay.enabled = False @@ -140,7 +140,7 @@ def test_build_single_dispense_settings() -> None: } assert single_dispense_properties.retract.touch_tip.enabled is True assert single_dispense_properties.retract.touch_tip.z_offset == 2 - assert single_dispense_properties.retract.touch_tip.mm_to_edge == 1 + assert single_dispense_properties.retract.touch_tip.mm_from_edge == 1 assert single_dispense_properties.retract.touch_tip.speed == 50 assert single_dispense_properties.retract.blowout.enabled is True assert single_dispense_properties.retract.blowout.location is not None @@ -200,8 +200,8 @@ def test_single_dispense_settings_override() -> None: assert single_dispense_properties.retract.touch_tip.enabled is False single_dispense_properties.retract.touch_tip.z_offset = 2.34 assert single_dispense_properties.retract.touch_tip.z_offset == 2.34 - single_dispense_properties.retract.touch_tip.mm_to_edge = 1.11 - assert single_dispense_properties.retract.touch_tip.mm_to_edge == 1.11 + single_dispense_properties.retract.touch_tip.mm_from_edge = 1.11 + assert single_dispense_properties.retract.touch_tip.mm_from_edge == 1.11 single_dispense_properties.retract.touch_tip.speed = 543 assert single_dispense_properties.retract.touch_tip.speed == 543 single_dispense_properties.retract.blowout.enabled = False @@ -259,7 +259,7 @@ def test_build_multi_dispense_settings() -> None: } assert multi_dispense_properties.retract.touch_tip.enabled is True assert multi_dispense_properties.retract.touch_tip.z_offset == 2 - assert multi_dispense_properties.retract.touch_tip.mm_to_edge == 1 + assert multi_dispense_properties.retract.touch_tip.mm_from_edge == 1 assert multi_dispense_properties.retract.touch_tip.speed == 50 assert multi_dispense_properties.retract.blowout.enabled is False assert multi_dispense_properties.retract.blowout.location is None @@ -318,8 +318,8 @@ def test_multi_dispense_settings_override() -> None: assert multi_dispense_properties.retract.touch_tip.enabled is False multi_dispense_properties.retract.touch_tip.z_offset = 2.34 assert multi_dispense_properties.retract.touch_tip.z_offset == 2.34 - multi_dispense_properties.retract.touch_tip.mm_to_edge = 1.11 - assert multi_dispense_properties.retract.touch_tip.mm_to_edge == 1.11 + multi_dispense_properties.retract.touch_tip.mm_from_edge = 1.11 + assert multi_dispense_properties.retract.touch_tip.mm_from_edge == 1.11 multi_dispense_properties.retract.touch_tip.speed = 543 assert multi_dispense_properties.retract.touch_tip.speed == 543 multi_dispense_properties.retract.blowout.enabled = False diff --git a/api/tests/opentrons/protocol_engine/commands/test_touch_tip.py b/api/tests/opentrons/protocol_engine/commands/test_touch_tip.py index 5756810c9eee..9e2e0ac745a9 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_touch_tip.py +++ b/api/tests/opentrons/protocol_engine/commands/test_touch_tip.py @@ -150,7 +150,7 @@ async def test_touch_tip_implementation( ) -async def test_touch_tip_implementation_with_mm_to_edge( +async def test_touch_tip_implementation_with_mm_from_edge( decoy: Decoy, mock_state_view: StateView, mock_movement_handler: MovementHandler, From 261791eb6d1c4f612d17d2d4026da329f0d69c9e Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Thu, 17 Apr 2025 11:58:42 -0400 Subject: [PATCH 04/11] fix up rogue mm_to_edge references --- .../protocol_api/instrument_context.py | 2 +- .../test_lc_touch_tip_properties.py | 56 ++++++++-------- shared-data/command/schemas/13.json | 6 +- .../definitions/1/ethanol_80.json | 66 +++++++++---------- .../definitions/1/glycerol_50.json | 66 +++++++++---------- .../liquid-class/definitions/1/water.json | 66 +++++++++---------- 6 files changed, 133 insertions(+), 129 deletions(-) diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index cc910052474f..9233921eb33c 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -703,7 +703,7 @@ def touch_tip( # noqa: C901 ``None``. This should happen if ``touch_tip`` is called without first calling a method that takes a location, like :py:meth:`.aspirate` or :py:meth:`dispense`. - :raises: ValueError: If both ``mm_to_edge`` and ``radius`` are specified. + :raises: ValueError: If both ``mm_from_edge`` and ``radius`` are specified. :returns: This instance. .. versionchanged:: 2.24 diff --git a/api/tests/opentrons/protocol_api/test_lc_touch_tip_properties.py b/api/tests/opentrons/protocol_api/test_lc_touch_tip_properties.py index 4ca75aed2949..6cbcfd0b20e0 100644 --- a/api/tests/opentrons/protocol_api/test_lc_touch_tip_properties.py +++ b/api/tests/opentrons/protocol_api/test_lc_touch_tip_properties.py @@ -25,7 +25,7 @@ def test_touch_tip_properties_enable_and_disable() -> None: tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=1, mmToEdge=1, speed=100), + params=LiquidClassTouchTipParams(zOffset=1, mmFromEdge=1, speed=100), ) ) tp.enabled = True @@ -38,19 +38,19 @@ def test_touch_tip_properties_none_instantiation_combos() -> None: """Test handling of None combinations in TouchTipProperties instantiation.""" with pytest.raises(ValidationError): _build_touch_tip_properties( - TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=None, mmToEdge=None, speed=None)) # type: ignore + TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=None, mmFromEdge=None, speed=None)) # type: ignore ) with pytest.raises(ValidationError): _build_touch_tip_properties( - TouchTipProperties(enable=None, params=LiquidClassTouchTipParams(zOffset=None, mmToEdge=1, speed=1)) # type: ignore + TouchTipProperties(enable=None, params=LiquidClassTouchTipParams(zOffset=None, mmFromEdge=1, speed=1)) # type: ignore ) with pytest.raises(ValidationError): _build_touch_tip_properties( - TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=1, mmToEdge=None, speed=1)) # type: ignore + TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=1, mmFromEdge=None, speed=1)) # type: ignore ) with pytest.raises(ValidationError): _build_touch_tip_properties( - TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=1, mmToEdge=1, speed=None)) # type: ignore + TouchTipProperties(enable=True, params=LiquidClassTouchTipParams(zOffset=1, mmFromEdge=1, speed=None)) # type: ignore ) @@ -62,13 +62,13 @@ def test_touch_tip_properties_enabled_bad_values(bad_value: Any) -> None: _build_touch_tip_properties( TouchTipProperties( enable=bad_value, - params=LiquidClassTouchTipParams(zOffset=1, mmToEdge=1, speed=1), + params=LiquidClassTouchTipParams(zOffset=1, mmFromEdge=1, speed=1), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=1, mmToEdge=1, speed=1), + params=LiquidClassTouchTipParams(zOffset=1, mmFromEdge=1, speed=1), ) ) with pytest.raises(ValueError): @@ -82,13 +82,15 @@ def test_touch_tip_properties_z_offset(good_value: Union[int, float]) -> None: _build_touch_tip_properties( TouchTipProperties( enable=True, - params=LiquidClassTouchTipParams(zOffset=good_value, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams( + zOffset=good_value, mmFromEdge=1, speed=10 + ), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) tp.z_offset = good_value @@ -104,14 +106,14 @@ def test_touch_tip_properties_z_offset_bad_values(bad_value: Any) -> None: TouchTipProperties( enable=True, params=LiquidClassTouchTipParams( - zOffset=bad_value, mmToEdge=1, speed=10 + zOffset=bad_value, mmFromEdge=1, speed=10 ), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) with pytest.raises(ValueError): @@ -120,45 +122,47 @@ def test_touch_tip_properties_z_offset_bad_values(bad_value: Any) -> None: @given(good_value=reasonable_numbers) @settings(deadline=None, max_examples=50) -def test_touch_tip_properties_mm_to_edge(good_value: Union[int, float]) -> None: - """Test valid mm_to_edge.""" +def test_touch_tip_properties_mm_from_edge(good_value: Union[int, float]) -> None: + """Test valid mm_from_edge.""" _build_touch_tip_properties( TouchTipProperties( enable=True, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=good_value, speed=10), + params=LiquidClassTouchTipParams( + zOffset=0, mmFromEdge=good_value, speed=10 + ), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) - tp.mm_to_edge = good_value - assert tp.mm_to_edge == float(good_value) + tp.mm_from_edge = good_value + assert tp.mm_from_edge == float(good_value) @given(bad_value=invalid_values) @settings(deadline=None, max_examples=50) -def test_touch_tip_properties_mm_to_edge_bad_values(bad_value: Any) -> None: - """Test invalid mm_to_edge values.""" +def test_touch_tip_properties_mm_from_edge_bad_values(bad_value: Any) -> None: + """Test invalid mm_from_edge values.""" with pytest.raises(ValidationError): _build_touch_tip_properties( TouchTipProperties( enable=True, params=LiquidClassTouchTipParams( - zOffset=bad_value, mmToEdge=1, speed=10 + zOffset=bad_value, mmFromEdge=1, speed=10 ), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=True, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) with pytest.raises(ValueError): - tp.mm_to_edge = bad_value + tp.mm_from_edge = bad_value @given(good_value=positive_non_zero_floats_and_ints) @@ -168,13 +172,13 @@ def test_touch_tip_properties_speed(good_value: Union[int, float]) -> None: _build_touch_tip_properties( TouchTipProperties( enable=True, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=good_value), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=good_value), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) tp.speed = good_value @@ -190,14 +194,14 @@ def test_touch_tip_properties_speed_bad_values(bad_value: Any) -> None: TouchTipProperties( enable=True, params=LiquidClassTouchTipParams( - zOffset=0, mmToEdge=1, speed=bad_value + zOffset=0, mmFromEdge=1, speed=bad_value ), ) ) tp = _build_touch_tip_properties( TouchTipProperties( enable=False, - params=LiquidClassTouchTipParams(zOffset=0, mmToEdge=1, speed=10), + params=LiquidClassTouchTipParams(zOffset=0, mmFromEdge=1, speed=10), ) ) with pytest.raises(ValueError): diff --git a/shared-data/command/schemas/13.json b/shared-data/command/schemas/13.json index c3b658c6356a..c44d220f83ed 100644 --- a/shared-data/command/schemas/13.json +++ b/shared-data/command/schemas/13.json @@ -2320,7 +2320,7 @@ "LiquidClassTouchTipParams": { "description": "Parameters for touch-tip.", "properties": { - "mmToEdge": { + "mmFromEdge": { "anyOf": [ { "type": "integer" @@ -2330,7 +2330,7 @@ } ], "description": "Offset away from the the well edge, in millimeters.", - "title": "Mmtoedge" + "title": "Mmfromedge" }, "speed": { "anyOf": [ @@ -2359,7 +2359,7 @@ "title": "Zoffset" } }, - "required": ["zOffset", "mmToEdge", "speed"], + "required": ["zOffset", "mmFromEdge", "speed"], "title": "LiquidClassTouchTipParams", "type": "object" }, diff --git a/shared-data/liquid-class/definitions/1/ethanol_80.json b/shared-data/liquid-class/definitions/1/ethanol_80.json index cc343df781e5..1a6c4028034d 100644 --- a/shared-data/liquid-class/definitions/1/ethanol_80.json +++ b/shared-data/liquid-class/definitions/1/ethanol_80.json @@ -199,7 +199,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -277,7 +277,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -433,7 +433,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -672,7 +672,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -750,7 +750,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -906,7 +906,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1228,7 +1228,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1306,7 +1306,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1389,7 +1389,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1705,7 +1705,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1783,7 +1783,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1865,7 +1865,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2103,7 +2103,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2181,7 +2181,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2341,7 +2341,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2663,7 +2663,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2741,7 +2741,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2824,7 +2824,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3140,7 +3140,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3218,7 +3218,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3300,7 +3300,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3538,7 +3538,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3616,7 +3616,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3776,7 +3776,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4098,7 +4098,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4176,7 +4176,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4259,7 +4259,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4575,7 +4575,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4653,7 +4653,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4735,7 +4735,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4973,7 +4973,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -5051,7 +5051,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -5211,7 +5211,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, diff --git a/shared-data/liquid-class/definitions/1/glycerol_50.json b/shared-data/liquid-class/definitions/1/glycerol_50.json index 20da9fce4331..bca27400b303 100644 --- a/shared-data/liquid-class/definitions/1/glycerol_50.json +++ b/shared-data/liquid-class/definitions/1/glycerol_50.json @@ -192,7 +192,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -266,7 +266,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -419,7 +419,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -651,7 +651,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -725,7 +725,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -878,7 +878,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1183,7 +1183,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1257,7 +1257,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1335,7 +1335,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1631,7 +1631,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1705,7 +1705,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1779,7 +1779,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2001,7 +2001,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2075,7 +2075,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2223,7 +2223,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2528,7 +2528,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2602,7 +2602,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2680,7 +2680,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2976,7 +2976,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3050,7 +3050,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3124,7 +3124,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3346,7 +3346,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3420,7 +3420,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3568,7 +3568,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3881,7 +3881,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3955,7 +3955,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4037,7 +4037,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4337,7 +4337,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4411,7 +4411,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4485,7 +4485,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4708,7 +4708,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4782,7 +4782,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4931,7 +4931,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, diff --git a/shared-data/liquid-class/definitions/1/water.json b/shared-data/liquid-class/definitions/1/water.json index 4176b9f826db..f0696e71c1de 100644 --- a/shared-data/liquid-class/definitions/1/water.json +++ b/shared-data/liquid-class/definitions/1/water.json @@ -197,7 +197,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -269,7 +269,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -423,7 +423,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -654,7 +654,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -726,7 +726,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -880,7 +880,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1109,7 +1109,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1185,7 +1185,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1337,7 +1337,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1557,7 +1557,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1629,7 +1629,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1773,7 +1773,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -1989,7 +1989,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2061,7 +2061,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2205,7 +2205,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2434,7 +2434,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2510,7 +2510,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2662,7 +2662,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2882,7 +2882,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -2954,7 +2954,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3098,7 +3098,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3314,7 +3314,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3386,7 +3386,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3530,7 +3530,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3751,7 +3751,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3823,7 +3823,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -3967,7 +3967,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4183,7 +4183,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4255,7 +4255,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4399,7 +4399,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4615,7 +4615,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4687,7 +4687,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, @@ -4831,7 +4831,7 @@ "enable": false, "params": { "zOffset": -1, - "mmToEdge": 0.5, + "mmFromEdge": 0.5, "speed": 30 } }, From de428398bf61cee643dad0cc1029253f043522db Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Fri, 18 Apr 2025 10:07:58 -0400 Subject: [PATCH 05/11] refactor liquid class schema position reference and offset --- .../definitions/1/ethanol_80.json | 2382 +++++++++------- .../definitions/1/glycerol_50.json | 2380 +++++++++------- .../liquid-class/definitions/1/water.json | 2390 ++++++++++------- .../fixtures/1/fixture_glycerol50.json | 108 +- shared-data/liquid-class/schemas/1.json | 78 +- 5 files changed, 4265 insertions(+), 3073 deletions(-) diff --git a/shared-data/liquid-class/definitions/1/ethanol_80.json b/shared-data/liquid-class/definitions/1/ethanol_80.json index 1a6c4028034d..3abc2a978569 100644 --- a/shared-data/liquid-class/definitions/1/ethanol_80.json +++ b/shared-data/liquid-class/definitions/1/ethanol_80.json @@ -12,11 +12,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -27,11 +29,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -54,11 +58,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -87,11 +93,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -102,11 +110,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -132,11 +142,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -161,11 +173,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -176,11 +190,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -210,11 +226,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -246,11 +264,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -261,11 +281,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -288,11 +310,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -321,11 +345,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -336,11 +362,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -366,11 +394,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -395,11 +425,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -410,11 +442,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -444,11 +478,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -485,11 +521,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -500,11 +538,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -527,11 +567,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -560,11 +602,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -575,11 +619,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -605,11 +651,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -634,11 +682,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -649,11 +699,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -683,11 +735,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -719,11 +773,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -734,11 +790,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -761,11 +819,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -794,11 +854,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -809,11 +871,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -839,11 +903,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -868,11 +934,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -883,11 +951,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -917,11 +987,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 30.0]], "correctionByVolume": [ @@ -958,11 +1030,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -973,11 +1047,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1000,11 +1076,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -1033,11 +1111,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1048,11 +1128,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1078,11 +1160,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1112,11 +1196,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1127,11 +1213,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1161,11 +1249,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1197,11 +1287,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1212,11 +1304,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1239,11 +1333,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -1272,11 +1368,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1287,11 +1385,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1317,11 +1417,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1351,11 +1453,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1366,11 +1470,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1400,11 +1506,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1436,11 +1544,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1451,11 +1561,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1478,11 +1590,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -1511,11 +1625,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1526,11 +1642,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1556,11 +1674,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1589,11 +1709,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1604,11 +1726,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1638,11 +1762,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1674,11 +1800,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1689,11 +1817,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1716,11 +1846,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -1749,11 +1881,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1764,11 +1898,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1794,12 +1930,14 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 - }, + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } + }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ [5.0, -1.5], @@ -1827,11 +1965,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1842,11 +1982,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1876,11 +2018,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -1912,11 +2056,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1927,11 +2073,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -1954,11 +2102,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -1987,11 +2137,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2002,11 +2154,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2032,11 +2186,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2065,11 +2221,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2080,11 +2238,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2114,11 +2274,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2150,11 +2312,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2165,11 +2329,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2192,11 +2358,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -2225,11 +2393,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2240,11 +2410,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2270,11 +2442,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2303,11 +2477,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2318,11 +2494,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2352,11 +2530,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2393,11 +2573,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2408,11 +2590,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2435,11 +2619,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -2468,11 +2654,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2483,11 +2671,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2513,11 +2703,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -2547,11 +2739,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2562,11 +2756,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2596,11 +2792,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -2632,11 +2830,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2647,11 +2847,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2674,11 +2876,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -2707,11 +2911,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2722,11 +2928,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2752,11 +2960,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -2786,11 +2996,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2801,11 +3013,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2835,11 +3049,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -2871,11 +3087,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2886,11 +3104,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2913,11 +3133,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -2946,11 +3168,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2961,11 +3185,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -2991,11 +3217,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -3024,11 +3252,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3039,11 +3269,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3073,11 +3305,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -3109,11 +3343,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3124,11 +3360,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3151,11 +3389,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -3184,11 +3424,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3199,11 +3441,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3229,11 +3473,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -3262,11 +3508,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3277,11 +3525,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3311,11 +3561,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -3347,11 +3599,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3362,11 +3616,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3389,11 +3645,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -3422,11 +3680,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3437,11 +3697,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3467,11 +3729,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3500,11 +3764,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3515,11 +3781,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3549,11 +3817,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3585,11 +3855,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3600,11 +3872,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3627,11 +3901,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -3660,11 +3936,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3675,11 +3953,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3705,11 +3985,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3738,11 +4020,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3753,11 +4037,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "airGapByVolume": [ @@ -3787,11 +4073,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3828,11 +4116,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3843,11 +4133,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3870,11 +4162,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -3903,11 +4197,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3918,11 +4214,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3948,11 +4246,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -3982,11 +4282,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3997,11 +4299,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4031,11 +4335,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4067,11 +4373,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4080,13 +4388,15 @@ "duration": 0.0 } } - }, - "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + }, + "retract": { + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4109,11 +4419,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -4142,11 +4454,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4157,11 +4471,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4187,11 +4503,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4221,11 +4539,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4236,11 +4556,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4270,11 +4592,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4306,11 +4630,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4321,11 +4647,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4348,11 +4676,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -4381,11 +4711,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4396,11 +4728,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4426,11 +4760,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4459,11 +4795,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4474,11 +4812,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4508,11 +4848,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4544,11 +4886,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4559,11 +4903,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4586,11 +4932,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 7.0], @@ -4619,11 +4967,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4634,11 +4984,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4664,11 +5016,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4697,11 +5051,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4712,11 +5068,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4746,11 +5104,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 125.0]], "correctionByVolume": [ @@ -4782,11 +5142,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4797,11 +5159,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4824,11 +5188,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -4857,11 +5223,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4872,11 +5240,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4902,11 +5272,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ @@ -4935,11 +5307,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4950,11 +5324,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4984,11 +5360,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ @@ -5020,11 +5398,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -5035,11 +5415,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -5062,11 +5444,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -5095,11 +5479,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -5110,11 +5496,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -5140,11 +5528,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ @@ -5173,11 +5563,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -5188,11 +5580,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -5222,11 +5616,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ diff --git a/shared-data/liquid-class/definitions/1/glycerol_50.json b/shared-data/liquid-class/definitions/1/glycerol_50.json index bca27400b303..6fc2705d06ab 100644 --- a/shared-data/liquid-class/definitions/1/glycerol_50.json +++ b/shared-data/liquid-class/definitions/1/glycerol_50.json @@ -12,11 +12,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -27,11 +29,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -50,11 +54,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -83,11 +89,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -98,11 +106,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -124,11 +134,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -158,11 +170,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -173,11 +187,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -203,11 +219,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -239,11 +257,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -254,11 +274,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -277,11 +299,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -310,11 +334,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -325,11 +351,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -351,11 +379,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -385,11 +415,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -400,11 +432,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -430,11 +464,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -471,11 +507,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -486,11 +524,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -509,11 +549,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -542,11 +584,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -557,11 +601,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -583,11 +629,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -617,11 +665,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -632,11 +682,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -662,11 +714,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -698,11 +752,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -713,11 +769,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -736,11 +794,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -769,11 +829,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -784,11 +846,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -810,11 +874,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -844,11 +910,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -859,11 +927,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -889,11 +959,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 25.0]], "correctionByVolume": [ @@ -930,11 +1002,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -945,11 +1019,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -968,11 +1044,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -1001,11 +1079,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1016,11 +1096,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1042,11 +1124,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1075,11 +1159,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1090,11 +1176,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1120,11 +1208,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1156,11 +1246,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1171,11 +1263,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1194,11 +1288,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -1227,11 +1323,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1242,11 +1340,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1268,11 +1368,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1301,11 +1403,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1316,11 +1420,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1346,11 +1452,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1382,11 +1490,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1397,11 +1507,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1420,11 +1532,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -1453,11 +1567,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1468,11 +1584,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1494,11 +1612,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1523,11 +1643,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1538,11 +1660,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1568,11 +1692,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1604,11 +1730,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1619,11 +1747,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1642,11 +1772,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -1675,11 +1807,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1690,11 +1824,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1716,11 +1852,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1745,11 +1883,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1760,11 +1900,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1790,11 +1932,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -1826,11 +1970,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1841,11 +1987,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1864,11 +2012,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -1897,11 +2047,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1912,11 +2064,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -1938,11 +2092,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -1967,11 +2123,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -1982,11 +2140,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2012,11 +2172,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2048,11 +2210,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2063,11 +2227,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2086,11 +2252,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -2119,11 +2287,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2134,11 +2304,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2160,11 +2332,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2189,11 +2363,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2204,11 +2380,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2234,11 +2412,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -2275,11 +2455,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2290,11 +2472,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2313,11 +2497,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -2346,11 +2532,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2361,11 +2549,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2387,11 +2577,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2420,11 +2612,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2435,11 +2629,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2465,11 +2661,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2501,11 +2699,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2516,11 +2716,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2539,11 +2741,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -2572,11 +2776,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2587,11 +2793,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2613,11 +2821,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2646,11 +2856,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2661,11 +2873,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2691,11 +2905,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2727,11 +2943,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2742,11 +2960,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2765,11 +2985,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -2798,11 +3020,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2813,11 +3037,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2839,11 +3065,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2868,11 +3096,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2883,11 +3113,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2913,11 +3145,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -2949,11 +3183,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -2964,11 +3200,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -2987,11 +3225,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -3020,11 +3260,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3035,11 +3277,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3061,11 +3305,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -3090,11 +3336,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3105,11 +3353,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3135,11 +3385,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -3171,11 +3423,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3186,11 +3440,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3209,11 +3465,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -3242,11 +3500,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3257,11 +3517,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3283,11 +3545,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3312,11 +3576,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3327,11 +3593,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3357,11 +3625,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3393,11 +3663,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3408,11 +3680,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3431,11 +3705,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -3464,11 +3740,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3479,11 +3757,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3505,11 +3785,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3534,11 +3816,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3549,11 +3833,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3579,11 +3865,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -3620,11 +3908,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3635,11 +3925,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3658,11 +3950,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -3691,11 +3985,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3706,11 +4002,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3732,11 +4030,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -3769,11 +4069,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3784,11 +4086,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3814,11 +4118,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -3854,11 +4160,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3867,13 +4175,15 @@ "duration": 0.0 } } - }, - "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + }, + "retract": { + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3892,11 +4202,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -3925,11 +4237,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -3940,11 +4254,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -3966,11 +4282,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -4003,11 +4321,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4018,11 +4338,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4048,11 +4370,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 7.0], @@ -4088,11 +4412,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4103,11 +4429,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4126,11 +4454,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -4159,11 +4489,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4174,11 +4506,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4200,11 +4534,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -4229,11 +4565,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4244,11 +4582,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4274,11 +4614,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -4310,11 +4652,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4325,11 +4669,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4348,11 +4694,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 10.0], @@ -4381,11 +4729,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4396,11 +4746,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4422,11 +4774,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -4451,11 +4805,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4466,11 +4822,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4496,11 +4854,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 50.0]], "correctionByVolume": [ @@ -4532,11 +4892,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4547,11 +4909,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4570,11 +4934,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -4604,11 +4970,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4619,11 +4987,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4645,11 +5015,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -4674,11 +5046,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4689,11 +5063,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4719,11 +5095,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ @@ -4755,11 +5133,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4770,11 +5150,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4793,11 +5175,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [10.0, 10.0], @@ -4827,11 +5211,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4842,11 +5228,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4868,11 +5256,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 250.0]], "correctionByVolume": [ @@ -4897,11 +5287,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "delay": { @@ -4912,11 +5304,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 4, "airGapByVolume": [[0.0, 0.0]], @@ -4942,11 +5336,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[0.0, 200.0]], "correctionByVolume": [ diff --git a/shared-data/liquid-class/definitions/1/water.json b/shared-data/liquid-class/definitions/1/water.json index f0696e71c1de..a9321f0da7c2 100644 --- a/shared-data/liquid-class/definitions/1/water.json +++ b/shared-data/liquid-class/definitions/1/water.json @@ -12,11 +12,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -27,11 +29,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -54,11 +58,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 35.0], @@ -83,11 +89,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -98,11 +106,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -128,11 +138,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -159,11 +171,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -174,11 +188,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -208,11 +224,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[50.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -238,11 +256,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -253,11 +273,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -280,11 +302,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 35.0], @@ -309,11 +333,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -324,11 +350,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -354,11 +382,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -385,11 +415,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -400,11 +432,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -434,11 +468,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[50.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -469,11 +505,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -484,11 +522,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -511,11 +551,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 35.0], @@ -540,11 +582,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -555,11 +599,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -585,11 +631,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -616,11 +664,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -631,11 +681,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -665,11 +717,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -695,11 +749,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -710,11 +766,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -737,11 +795,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [1.0, 35.0], @@ -766,11 +826,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -781,11 +843,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -811,11 +875,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -842,11 +908,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -857,11 +925,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -891,11 +961,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], @@ -926,11 +998,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -941,11 +1015,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -968,11 +1044,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -997,11 +1075,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1012,11 +1092,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1042,11 +1124,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -1071,11 +1155,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1086,11 +1172,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1120,16 +1208,18 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 - }, - "flowRateByVolume": [ - [5.0, 318.0], - [10.0, 478.0], - [50.0, 478.0] + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } + }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] ], "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ @@ -1154,11 +1244,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1169,11 +1261,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1196,11 +1290,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -1225,11 +1321,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1240,11 +1338,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1270,11 +1370,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -1299,11 +1401,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1314,11 +1418,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1348,11 +1454,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -1382,11 +1490,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1397,11 +1507,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1424,11 +1536,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1449,11 +1563,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1464,11 +1580,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1494,11 +1612,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1519,11 +1639,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1534,11 +1656,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1568,11 +1692,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1598,11 +1724,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1613,11 +1741,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1640,11 +1770,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1665,11 +1797,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1680,11 +1814,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1710,11 +1846,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1735,11 +1873,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1750,11 +1890,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1784,11 +1926,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1814,11 +1958,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1829,11 +1975,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1856,11 +2004,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1881,11 +2031,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1896,11 +2048,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -1926,11 +2080,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -1951,11 +2107,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -1966,11 +2124,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2000,11 +2160,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2030,11 +2192,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2045,11 +2209,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2072,11 +2238,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2097,11 +2265,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2112,11 +2282,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2142,11 +2314,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2167,11 +2341,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2182,11 +2358,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2216,11 +2394,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2251,11 +2431,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2266,11 +2448,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2293,11 +2477,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2322,11 +2508,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2337,11 +2525,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2367,11 +2557,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2396,11 +2588,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2411,11 +2605,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2445,11 +2641,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2479,11 +2677,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2494,11 +2694,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2521,11 +2723,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2550,11 +2754,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2565,11 +2771,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2595,11 +2803,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2624,11 +2834,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2639,11 +2851,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2673,11 +2887,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [ [5.0, 318.0], @@ -2707,11 +2923,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2722,11 +2940,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2749,11 +2969,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2774,11 +2996,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2789,11 +3013,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2819,11 +3045,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2844,11 +3072,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2859,11 +3089,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2893,11 +3125,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2923,11 +3157,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -2938,11 +3174,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -2965,11 +3203,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -2990,11 +3230,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3005,11 +3247,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3035,11 +3279,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3060,11 +3306,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3075,11 +3323,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3109,11 +3359,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3139,11 +3391,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3154,11 +3408,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3181,11 +3437,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3206,11 +3464,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3221,11 +3481,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3251,11 +3513,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3276,11 +3540,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3291,11 +3557,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3325,11 +3593,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3355,11 +3625,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3370,11 +3642,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3397,11 +3671,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3422,11 +3698,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3437,11 +3715,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3467,11 +3747,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3492,11 +3774,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 100, "delay": { @@ -3507,11 +3791,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 50, "airGapByVolume": [ @@ -3541,11 +3827,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 716.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3576,11 +3864,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3591,11 +3881,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3618,11 +3910,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3643,11 +3937,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3658,11 +3954,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3688,11 +3986,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3713,11 +4013,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3728,11 +4030,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3762,11 +4066,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3792,11 +4098,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_50ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3805,13 +4113,15 @@ "duration": 0.0 } } - }, - "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + }, + "retract": { + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3834,11 +4144,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3859,11 +4171,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3874,11 +4188,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3904,11 +4220,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -3929,11 +4247,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -3944,11 +4264,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -3978,11 +4300,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4008,11 +4332,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4023,11 +4349,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4050,11 +4378,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4075,11 +4405,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4090,11 +4422,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4120,11 +4454,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4145,11 +4481,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4160,11 +4498,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4194,11 +4534,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4224,11 +4566,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_200ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4239,11 +4583,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4266,11 +4612,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4291,11 +4639,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4306,11 +4656,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4336,11 +4688,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4361,11 +4715,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4376,11 +4732,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4410,11 +4768,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4440,11 +4800,13 @@ "tiprack": "opentrons/opentrons_flex_96_tiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4455,11 +4817,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4482,11 +4846,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4507,11 +4873,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4522,11 +4890,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4552,11 +4922,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4577,11 +4949,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4592,11 +4966,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4626,11 +5002,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4656,11 +5034,13 @@ "tiprack": "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", "aspirate": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4671,11 +5051,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4698,11 +5080,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4723,11 +5107,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4738,11 +5124,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4768,11 +5156,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], @@ -4793,11 +5183,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "startPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "delay": { @@ -4808,11 +5200,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "speed": 35, "airGapByVolume": [ @@ -4842,11 +5236,13 @@ } } }, - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 2 + "dispensePosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 2 + } }, "flowRateByVolume": [[1.0, 200.0]], "correctionByVolume": [[0.0, 0.0]], diff --git a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json index 83d3a42c7681..391885019b74 100644 --- a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json +++ b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json @@ -12,11 +12,13 @@ "tiprack": "opentrons_96_tiprack_20ul", "aspirate": { "submerge": { - "positionReference": "liquid-meniscus", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "startPosition": { + "positionReference": "liquid-meniscus", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "speed": 100, "delay": { @@ -27,11 +29,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 5 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 5 + } }, "speed": 100, "airGapByVolume": [ @@ -53,11 +57,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "aspiratePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "flowRateByVolume": [[10.0, 50.0]], "correctionByVolume": [ @@ -81,11 +87,13 @@ }, "singleDispense": { "submerge": { - "positionReference": "liquid-meniscus", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "startPosition": { + "positionReference": "liquid-meniscus", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "speed": 100, "delay": { @@ -96,11 +104,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 5 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 5 + } }, "speed": 100, "airGapByVolume": [ @@ -129,11 +139,13 @@ } } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "flowRateByVolume": [ [10.0, 40.0], @@ -163,11 +175,13 @@ }, "multiDispense": { "submerge": { - "positionReference": "liquid-meniscus", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "startPosition": { + "positionReference": "liquid-meniscus", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "speed": 100, "delay": { @@ -178,11 +192,13 @@ } }, "retract": { - "positionReference": "well-top", - "offset": { - "x": 0, - "y": 0, - "z": 5 + "endPosition": { + "positionReference": "well-top", + "offset": { + "x": 0, + "y": 0, + "z": 5 + } }, "speed": 100, "airGapByVolume": [ @@ -207,11 +223,13 @@ "enable": false } }, - "positionReference": "well-bottom", - "offset": { - "x": 0, - "y": 0, - "z": -5 + "dispensePosition": { + "positionReference": "well-bottom", + "offset": { + "x": 0, + "y": 0, + "z": -5 + } }, "flowRateByVolume": [ [10.0, 40.0], diff --git a/shared-data/liquid-class/schemas/1.json b/shared-data/liquid-class/schemas/1.json index d2c0819333ed..0d8651a07c30 100644 --- a/shared-data/liquid-class/schemas/1.json +++ b/shared-data/liquid-class/schemas/1.json @@ -58,6 +58,20 @@ "required": ["x", "y", "z"], "additionalProperties": false }, + "tipPosition": { + "type": "object", + "description": "Positional reference and relative offset for where a tip should go.", + "properties": { + "positionReference": { + "$ref": "#/definitions/positionReference" + }, + "offset": { + "$ref": "#/definitions/coordinate" + } + }, + "required": ["positionReference", "offset"], + "additionalProperties": false + }, "touchTip": { "type": "object", "description": "Shared properties for the touch-tip function.", @@ -214,11 +228,8 @@ "type": "object", "description": "Shared properties for the submerge function before aspiration or dispense.", "properties": { - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "startPosition": { + "$ref": "#/definitions/tipPosition" }, "speed": { "$ref": "#/definitions/positiveNumber", @@ -228,18 +239,15 @@ "$ref": "#/definitions/delay" } }, - "required": ["positionReference", "offset", "speed", "delay"], + "required": ["startPosition", "speed", "delay"], "additionalProperties": false }, "retractAspirate": { "type": "object", "description": "Shared properties for the retract function after aspiration or dispense.", "properties": { - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "endPosition": { + "$ref": "#/definitions/tipPosition" }, "speed": { "$ref": "#/definitions/positiveNumber", @@ -255,24 +263,15 @@ "$ref": "#/definitions/delay" } }, - "required": [ - "positionReference", - "offset", - "speed", - "airGapByVolume", - "delay" - ], + "required": ["endPosition", "speed", "airGapByVolume", "delay"], "additionalProperties": false }, "retractDispense": { "type": "object", "description": "Shared properties for the retract function after aspiration or dispense.", "properties": { - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "endPosition": { + "$ref": "#/definitions/tipPosition" }, "speed": { "$ref": "#/definitions/positiveNumber", @@ -292,8 +291,7 @@ } }, "required": [ - "positionReference", - "offset", + "endPosition", "speed", "airGapByVolume", "blowout", @@ -312,11 +310,8 @@ "retract": { "$ref": "#/definitions/retractAspirate" }, - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "aspiratePosition": { + "$ref": "#/definitions/tipPosition" }, "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" @@ -338,8 +333,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "aspiratePosition", "flowRateByVolume", "correctionByVolume", "preWet", @@ -358,11 +352,8 @@ "retract": { "$ref": "#/definitions/retractDispense" }, - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "dispensePosition": { + "$ref": "#/definitions/tipPosition" }, "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" @@ -383,8 +374,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "dispensePosition", "flowRateByVolume", "correctionByVolume", "mix", @@ -403,11 +393,8 @@ "retract": { "$ref": "#/definitions/retractDispense" }, - "positionReference": { - "$ref": "#/definitions/positionReference" - }, - "offset": { - "$ref": "#/definitions/coordinate" + "dispensePosition": { + "$ref": "#/definitions/tipPosition" }, "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" @@ -428,8 +415,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "dispensePosition", "flowRateByVolume", "correctionByVolume", "conditioningByVolume", From 9e76694d55f1a375a14a4d6a644865f46a8cb271 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Fri, 18 Apr 2025 13:49:01 -0400 Subject: [PATCH 06/11] python code update for tip position --- .../protocol_api/_liquid_properties.py | 164 +++++++++------- .../protocol_api/core/engine/instrument.py | 12 +- .../engine/transfer_components_executor.py | 16 +- api/tests/opentrons/conftest.py | 91 ++++++--- .../test_transfer_components_executor.py | 26 ++- .../test_liquid_class_properties.py | 183 ++++++++++++------ .../commands/test_load_liquid_class.py | 4 +- shared-data/command/schemas/13.json | 101 +++++----- .../liquid_classes/liquid_class_definition.py | 47 +++-- .../python/tests/liquid_classes/test_load.py | 7 +- 10 files changed, 384 insertions(+), 267 deletions(-) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index b4111aee8204..cf56862c5611 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -6,6 +6,7 @@ AspirateProperties as SharedDataAspirateProperties, SingleDispenseProperties as SharedDataSingleDispenseProperties, MultiDispenseProperties as SharedDataMultiDispenseProperties, + TipPosition as SharedDataTipPosition, DelayProperties as SharedDataDelayProperties, DelayParams as SharedDataDelayParams, TouchTipProperties as SharedDataTouchTipProperties, @@ -86,6 +87,36 @@ def _sort_volume_and_values(self) -> None: # We use slots for this dataclass (and the rest of liquid properties) to prevent dynamic creation of attributes # not defined in the class, not for any performance reasons. This is so that mistyping properties when overriding # values will cause the protocol to fail analysis, rather than silently passing. +@dataclass(slots=True) +class TipPosition: + + _position_reference: PositionReference + _offset: Coordinate + + @property + def position_reference(self) -> PositionReference: + return self._position_reference + + @position_reference.setter + def position_reference(self, new_position: str) -> None: + self._position_reference = PositionReference(new_position) + + @property + def offset(self) -> Coordinate: + return self._offset + + @offset.setter + def offset(self, new_offset: Sequence[float]) -> None: + x, y, z = validation.validate_coordinates(new_offset) + self._offset = Coordinate(x=x, y=y, z=z) + + def as_shared_data_model(self) -> SharedDataTipPosition: + return SharedDataTipPosition( + positionReference=self._position_reference, + offset=self.offset, + ) + + @dataclass(slots=True) class DelayProperties: @@ -301,30 +332,11 @@ def as_shared_data_model(self) -> SharedDataBlowoutProperties: @dataclass(slots=True) -class SubmergeRetractCommon: +class _SubmergeRetractCommon: - _position_reference: PositionReference - _offset: Coordinate _speed: float _delay: DelayProperties - @property - def position_reference(self) -> PositionReference: - return self._position_reference - - @position_reference.setter - def position_reference(self, new_position: str) -> None: - self._position_reference = PositionReference(new_position) - - @property - def offset(self) -> Coordinate: - return self._offset - - @offset.setter - def offset(self, new_offset: Sequence[float]) -> None: - x, y, z = validation.validate_coordinates(new_offset) - self._offset = Coordinate(x=x, y=y, z=z) - @property def speed(self) -> float: return self._speed @@ -340,22 +352,33 @@ def delay(self) -> DelayProperties: @dataclass(slots=True) -class Submerge(SubmergeRetractCommon): +class Submerge(_SubmergeRetractCommon): + + _start_position: TipPosition + + @property + def start_position(self) -> TipPosition: + return self._start_position + def as_shared_data_model(self) -> SharedDataSubmerge: return SharedDataSubmerge( - positionReference=self._position_reference, - offset=self._offset, + startPosition=self._start_position.as_shared_data_model(), speed=self._speed, delay=self._delay.as_shared_data_model(), ) @dataclass(slots=True) -class RetractAspirate(SubmergeRetractCommon): +class RetractAspirate(_SubmergeRetractCommon): + _end_position: TipPosition _air_gap_by_volume: LiquidHandlingPropertyByVolume _touch_tip: TouchTipProperties + @property + def end_position(self) -> TipPosition: + return self._end_position + @property def air_gap_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._air_gap_by_volume @@ -366,8 +389,7 @@ def touch_tip(self) -> TouchTipProperties: def as_shared_data_model(self) -> SharedDataRetractAspirate: return SharedDataRetractAspirate( - positionReference=self._position_reference, - offset=self._offset, + endPosition=self._end_position.as_shared_data_model(), speed=self._speed, airGapByVolume=self._air_gap_by_volume.as_list_of_tuples(), touchTip=self._touch_tip.as_shared_data_model(), @@ -376,12 +398,16 @@ def as_shared_data_model(self) -> SharedDataRetractAspirate: @dataclass(slots=True) -class RetractDispense(SubmergeRetractCommon): - +class RetractDispense(_SubmergeRetractCommon): + _end_position: TipPosition _air_gap_by_volume: LiquidHandlingPropertyByVolume _touch_tip: TouchTipProperties _blowout: BlowoutProperties + @property + def end_position(self) -> TipPosition: + return self._end_position + @property def air_gap_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._air_gap_by_volume @@ -396,8 +422,7 @@ def blowout(self) -> BlowoutProperties: def as_shared_data_model(self) -> SharedDataRetractDispense: return SharedDataRetractDispense( - positionReference=self._position_reference, - offset=self._offset, + endPosition=self._end_position.as_shared_data_model(), speed=self._speed, airGapByVolume=self._air_gap_by_volume.as_list_of_tuples(), blowout=self._blowout.as_shared_data_model(), @@ -407,11 +432,9 @@ def as_shared_data_model(self) -> SharedDataRetractDispense: @dataclass(slots=True) -class BaseLiquidHandlingProperties: +class _BaseLiquidHandlingProperties: _submerge: Submerge - _position_reference: PositionReference - _offset: Coordinate _flow_rate_by_volume: LiquidHandlingPropertyByVolume _correction_by_volume: LiquidHandlingPropertyByVolume _delay: DelayProperties @@ -420,23 +443,6 @@ class BaseLiquidHandlingProperties: def submerge(self) -> Submerge: return self._submerge - @property - def position_reference(self) -> PositionReference: - return self._position_reference - - @position_reference.setter - def position_reference(self, new_position: str) -> None: - self._position_reference = PositionReference(new_position) - - @property - def offset(self) -> Coordinate: - return self._offset - - @offset.setter - def offset(self, new_offset: Sequence[float]) -> None: - x, y, z = validation.validate_coordinates(new_offset) - self._offset = Coordinate(x=x, y=y, z=z) - @property def flow_rate_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._flow_rate_by_volume @@ -451,12 +457,17 @@ def delay(self) -> DelayProperties: @dataclass(slots=True) -class AspirateProperties(BaseLiquidHandlingProperties): +class AspirateProperties(_BaseLiquidHandlingProperties): + _aspirate_position: TipPosition _retract: RetractAspirate _pre_wet: bool _mix: MixProperties + @property + def aspirate_position(self) -> TipPosition: + return self._aspirate_position + @property def pre_wet(self) -> bool: return self._pre_wet @@ -478,8 +489,7 @@ def as_shared_data_model(self) -> SharedDataAspirateProperties: return SharedDataAspirateProperties( submerge=self._submerge.as_shared_data_model(), retract=self._retract.as_shared_data_model(), - positionReference=self._position_reference, - offset=self._offset, + aspiratePosition=self._aspirate_position.as_shared_data_model(), flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), preWet=self._pre_wet, mix=self._mix.as_shared_data_model(), @@ -489,12 +499,17 @@ def as_shared_data_model(self) -> SharedDataAspirateProperties: @dataclass(slots=True) -class SingleDispenseProperties(BaseLiquidHandlingProperties): +class SingleDispenseProperties(_BaseLiquidHandlingProperties): + _dispense_position: TipPosition _retract: RetractDispense _push_out_by_volume: LiquidHandlingPropertyByVolume _mix: MixProperties + @property + def dispense_position(self) -> TipPosition: + return self._dispense_position + @property def push_out_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._push_out_by_volume @@ -511,8 +526,7 @@ def as_shared_data_model(self) -> SharedDataSingleDispenseProperties: return SharedDataSingleDispenseProperties( submerge=self._submerge.as_shared_data_model(), retract=self._retract.as_shared_data_model(), - positionReference=self._position_reference, - offset=self._offset, + dispensePosition=self._dispense_position.as_shared_data_model(), flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), mix=self._mix.as_shared_data_model(), pushOutByVolume=self._push_out_by_volume.as_list_of_tuples(), @@ -522,12 +536,17 @@ def as_shared_data_model(self) -> SharedDataSingleDispenseProperties: @dataclass(slots=True) -class MultiDispenseProperties(BaseLiquidHandlingProperties): +class MultiDispenseProperties(_BaseLiquidHandlingProperties): + _dispense_position: TipPosition _retract: RetractDispense _conditioning_by_volume: LiquidHandlingPropertyByVolume _disposal_by_volume: LiquidHandlingPropertyByVolume + @property + def dispense_position(self) -> TipPosition: + return self._dispense_position + @property def retract(self) -> RetractDispense: return self._retract @@ -544,8 +563,7 @@ def as_shared_data_model(self) -> SharedDataMultiDispenseProperties: return SharedDataMultiDispenseProperties( submerge=self._submerge.as_shared_data_model(), retract=self._retract.as_shared_data_model(), - positionReference=self._position_reference, - offset=self._offset, + dispensePosition=self._dispense_position.as_shared_data_model(), flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), conditioningByVolume=self._conditioning_by_volume.as_list_of_tuples(), disposalByVolume=self._disposal_by_volume.as_list_of_tuples(), @@ -576,6 +594,12 @@ def multi_dispense(self) -> Optional[MultiDispenseProperties]: return self._multi_dispense +def _build_tip_position(tip_position: SharedDataTipPosition) -> TipPosition: + return TipPosition( + _position_reference=tip_position.positionReference, _offset=tip_position.offset + ) + + def _build_delay_properties( delay_properties: SharedDataDelayProperties, ) -> DelayProperties: @@ -637,8 +661,7 @@ def _build_submerge( submerge_properties: SharedDataSubmerge, ) -> Submerge: return Submerge( - _position_reference=submerge_properties.positionReference, - _offset=submerge_properties.offset, + _start_position=_build_tip_position(submerge_properties.startPosition), _speed=submerge_properties.speed, _delay=_build_delay_properties(submerge_properties.delay), ) @@ -648,8 +671,7 @@ def _build_retract_aspirate( retract_aspirate: SharedDataRetractAspirate, ) -> RetractAspirate: return RetractAspirate( - _position_reference=retract_aspirate.positionReference, - _offset=retract_aspirate.offset, + _end_position=_build_tip_position(retract_aspirate.endPosition), _speed=retract_aspirate.speed, _air_gap_by_volume=LiquidHandlingPropertyByVolume( retract_aspirate.airGapByVolume @@ -663,8 +685,7 @@ def _build_retract_dispense( retract_dispense: SharedDataRetractDispense, ) -> RetractDispense: return RetractDispense( - _position_reference=retract_dispense.positionReference, - _offset=retract_dispense.offset, + _end_position=_build_tip_position(retract_dispense.endPosition), _speed=retract_dispense.speed, _air_gap_by_volume=LiquidHandlingPropertyByVolume( retract_dispense.airGapByVolume @@ -681,8 +702,7 @@ def build_aspirate_properties( return AspirateProperties( _submerge=_build_submerge(aspirate_properties.submerge), _retract=_build_retract_aspirate(aspirate_properties.retract), - _position_reference=aspirate_properties.positionReference, - _offset=aspirate_properties.offset, + _aspirate_position=_build_tip_position(aspirate_properties.aspiratePosition), _flow_rate_by_volume=LiquidHandlingPropertyByVolume( aspirate_properties.flowRateByVolume ), @@ -701,8 +721,9 @@ def build_single_dispense_properties( return SingleDispenseProperties( _submerge=_build_submerge(single_dispense_properties.submerge), _retract=_build_retract_dispense(single_dispense_properties.retract), - _position_reference=single_dispense_properties.positionReference, - _offset=single_dispense_properties.offset, + _dispense_position=_build_tip_position( + single_dispense_properties.dispensePosition + ), _flow_rate_by_volume=LiquidHandlingPropertyByVolume( single_dispense_properties.flowRateByVolume ), @@ -725,8 +746,9 @@ def build_multi_dispense_properties( return MultiDispenseProperties( _submerge=_build_submerge(multi_dispense_properties.submerge), _retract=_build_retract_dispense(multi_dispense_properties.retract), - _position_reference=multi_dispense_properties.positionReference, - _offset=multi_dispense_properties.offset, + _dispense_position=_build_tip_position( + multi_dispense_properties.dispensePosition + ), _flow_rate_by_volume=LiquidHandlingPropertyByVolume( multi_dispense_properties.flowRateByVolume ), diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index d23f9a8f032b..f9fc06dc0468 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -1962,8 +1962,8 @@ def aspirate_liquid_class( aspirate_point = ( tx_comps_executor.absolute_point_from_position_reference_and_offset( well=source_well, - position_reference=aspirate_props.position_reference, - offset=aspirate_props.offset, + position_reference=aspirate_props.aspirate_position.position_reference, + offset=aspirate_props.aspirate_position.offset, ) ) aspirate_location = Location(aspirate_point, labware=source_loc.labware) @@ -2073,8 +2073,8 @@ def dispense_liquid_class( dispense_point = ( tx_comps_executor.absolute_point_from_position_reference_and_offset( well=dest_well, - position_reference=dispense_props.position_reference, - offset=dispense_props.offset, + position_reference=dispense_props.dispense_position.position_reference, + offset=dispense_props.dispense_position.offset, ) ) dispense_location = Location(dispense_point, labware=dest_loc.labware) @@ -2155,8 +2155,8 @@ def dispense_liquid_class_during_multi_dispense( dispense_point = ( tx_comps_executor.absolute_point_from_position_reference_and_offset( well=dest_well, - position_reference=dispense_props.position_reference, - offset=dispense_props.offset, + position_reference=dispense_props.dispense_position.position_reference, + offset=dispense_props.dispense_position.offset, ) ) dispense_location = Location(dispense_point, labware=dest_loc.labware) diff --git a/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py b/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py index 9b17bb805b47..92fe7e236fe0 100644 --- a/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py +++ b/api/src/opentrons/protocol_api/core/engine/transfer_components_executor.py @@ -145,8 +145,8 @@ def submerge( """ submerge_start_point = absolute_point_from_position_reference_and_offset( well=self._target_well, - position_reference=submerge_properties.position_reference, - offset=submerge_properties.offset, + position_reference=submerge_properties.start_position.position_reference, + offset=submerge_properties.start_position.offset, ) submerge_start_location = Location( point=submerge_start_point, labware=self._target_location.labware @@ -332,8 +332,8 @@ def retract_after_aspiration( retract_props = self._transfer_properties.aspirate.retract retract_point = absolute_point_from_position_reference_and_offset( well=self._target_well, - position_reference=retract_props.position_reference, - offset=retract_props.offset, + position_reference=retract_props.end_position.position_reference, + offset=retract_props.end_position.offset, ) retract_location = Location( retract_point, labware=self._target_location.labware @@ -429,8 +429,8 @@ def retract_after_dispensing( retract_props = self._transfer_properties.dispense.retract retract_point = absolute_point_from_position_reference_and_offset( well=self._target_well, - position_reference=retract_props.position_reference, - offset=retract_props.offset, + position_reference=retract_props.end_position.position_reference, + offset=retract_props.end_position.offset, ) retract_location = Location( retract_point, labware=self._target_location.labware @@ -568,8 +568,8 @@ def retract_during_multi_dispensing( retract_props = self._transfer_properties.multi_dispense.retract retract_point = absolute_point_from_position_reference_and_offset( well=self._target_well, - position_reference=retract_props.position_reference, - offset=retract_props.offset, + position_reference=retract_props.end_position.position_reference, + offset=retract_props.end_position.offset, ) retract_location = Location( retract_point, labware=self._target_location.labware diff --git a/api/tests/opentrons/conftest.py b/api/tests/opentrons/conftest.py index 85cf780e0ad9..4ad7d0dba719 100755 --- a/api/tests/opentrons/conftest.py +++ b/api/tests/opentrons/conftest.py @@ -44,6 +44,7 @@ ByTipTypeSetting, AspirateProperties, Submerge, + TipPosition, PositionReference, DelayProperties, DelayParams, @@ -818,23 +819,29 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: tiprack="opentrons_flex_96_tiprack_50ul", aspirate=AspirateProperties( submerge=Submerge( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=0, y=0, z=-5), + startPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=0, y=0, z=-5), + ), speed=100, delay=DelayProperties( enable=True, params=DelayParams(duration=1.5) ), ), retract=RetractAspirate( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=0, y=0, z=5), + endPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=0, y=0, z=5), + ), speed=100, airGapByVolume=[(5.0, 3.0), (10.0, 4.0)], touchTip=TouchTipProperties(enable=False), delay=DelayProperties(enable=False), ), - positionReference=PositionReference.WELL_BOTTOM, - offset=Coordinate(x=0, y=0, z=-5), + aspiratePosition=TipPosition( + positionReference=PositionReference.WELL_BOTTOM, + offset=Coordinate(x=0, y=0, z=-5), + ), flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], correctionByVolume=[(15.0, 1.5), (30.0, -5.0)], preWet=True, @@ -845,22 +852,28 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: ), singleDispense=SingleDispenseProperties( submerge=Submerge( - positionReference=PositionReference.LIQUID_MENISCUS, - offset=Coordinate(x=0, y=0, z=-5), + startPosition=TipPosition( + positionReference=PositionReference.LIQUID_MENISCUS, + offset=Coordinate(x=0, y=0, z=-5), + ), speed=100, delay=DelayProperties(enable=False), ), retract=RetractDispense( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=0, y=0, z=5), + endPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=0, y=0, z=5), + ), speed=100, airGapByVolume=[(5.0, 3.0), (10.0, 4.0)], blowout=BlowoutProperties(enable=False), touchTip=TouchTipProperties(enable=False), delay=DelayProperties(enable=False), ), - positionReference=PositionReference.WELL_BOTTOM, - offset=Coordinate(x=0, y=0, z=-5), + dispensePosition=TipPosition( + positionReference=PositionReference.WELL_BOTTOM, + offset=Coordinate(x=0, y=0, z=-5), + ), flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], correctionByVolume=[(15.0, -1.5), (30.0, 5.0)], mix=MixProperties(enable=False), @@ -892,16 +905,20 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: tiprack="opentrons_flex_96_tiprack_50ul", aspirate=AspirateProperties( submerge=Submerge( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=1, y=2, z=3), + startPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=1, y=2, z=3), + ), speed=100, delay=DelayProperties( enable=True, params=DelayParams(duration=10.0) ), ), retract=RetractAspirate( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=3, y=2, z=1), + endPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=3, y=2, z=1), + ), speed=50, airGapByVolume=[(1.0, 0.1), (49.9, 0.1), (50.0, 0.0)], touchTip=TouchTipProperties( @@ -914,8 +931,10 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: enable=True, params=DelayParams(duration=20) ), ), - positionReference=PositionReference.WELL_BOTTOM, - offset=Coordinate(x=10, y=20, z=30), + aspiratePosition=TipPosition( + positionReference=PositionReference.WELL_BOTTOM, + offset=Coordinate(x=10, y=20, z=30), + ), flowRateByVolume=[(1.0, 35.0), (10.0, 24.0), (50.0, 35.0)], correctionByVolume=[(0.0, 0.0)], preWet=True, @@ -928,16 +947,20 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: ), singleDispense=SingleDispenseProperties( submerge=Submerge( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=30, y=20, z=10), + startPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=30, y=20, z=10), + ), speed=100, delay=DelayProperties( enable=True, params=DelayParams(duration=0.0) ), ), retract=RetractDispense( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=11, y=22, z=33), + endPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=11, y=22, z=33), + ), speed=50, airGapByVolume=[(1.0, 0.1), (49.9, 0.1), (50.0, 0.0)], blowout=BlowoutProperties( @@ -957,8 +980,10 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: enable=True, params=DelayParams(duration=10) ), ), - positionReference=PositionReference.WELL_BOTTOM, - offset=Coordinate(x=33, y=22, z=11), + dispensePosition=TipPosition( + positionReference=PositionReference.WELL_BOTTOM, + offset=Coordinate(x=33, y=22, z=11), + ), flowRateByVolume=[(1.0, 50.0)], correctionByVolume=[(0.0, 0.0)], mix=MixProperties( @@ -977,16 +1002,20 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: ), multiDispense=MultiDispenseProperties( submerge=Submerge( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=0, y=0, z=2), + startPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=0, y=0, z=2), + ), speed=100, delay=DelayProperties( enable=False, params=DelayParams(duration=0.0) ), ), retract=RetractDispense( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=2, y=3, z=1), + endPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=2, y=3, z=1), + ), speed=50, airGapByVolume=[(1.0, 0.1), (49.9, 0.1), (50.0, 0.0)], blowout=BlowoutProperties( @@ -1006,8 +1035,10 @@ def maximal_liquid_class_def() -> LiquidClassSchemaV1: enable=False, params=DelayParams(duration=0) ), ), - positionReference=PositionReference.WELL_BOTTOM, - offset=Coordinate(x=1, y=3, z=2), + dispensePosition=TipPosition( + positionReference=PositionReference.WELL_BOTTOM, + offset=Coordinate(x=1, y=3, z=2), + ), flowRateByVolume=[(50.0, 50.0)], correctionByVolume=[(0.0, 0.0)], conditioningByVolume=[(1.0, 5.0), (45.0, 5.0), (50.0, 0.0)], diff --git a/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py b/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py index 0f1d92b71da7..2e07fdb8d63a 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_transfer_components_executor.py @@ -57,19 +57,16 @@ def patch_mock_raise_if_location_inside_liquid( """ Test aspirate properties: "submerge": { - "positionReference": "well-top", - "offset": {"x": 1, "y": 2, "z": 3}, + "startPosition": {"positionReference": "well-top", "offset": {"x": 1, "y": 2, "z": 3}}, "speed": 100, "delay": {"enable": true, "params": {"duration": 10.0}}}, "retract": { - "positionReference": "well-top", - "offset": {"x": 3, "y": 2, "z": 1}, + "endPosition": {"positionReference": "well-top", "offset": {"x": 3, "y": 2, "z": 1}}, "speed": 50, "airGapByVolume": [[1.0, 0.1], [49.9, 0.1], [50.0, 0.0]], "touchTip": {"enable": true, "params": {"zOffset": -1, "mmFromEdge": 0.5, "speed": 30}}, "delay": {"enable": true, "params": {"duration": 20}}}, -"positionReference": "well-bottom", -"offset": {"x": 10, "y": 20, "z": 30}, +"aspiratePosition": {"positionReference": "well-bottom", "offset": {"x": 10, "y": 20, "z": 30}}, "flowRateByVolume": [[1.0, 35.0], [10.0, 24.0], [50.0, 35.0]], "correctionByVolume": [[0.0, 0.0]], "preWet": true, @@ -318,7 +315,9 @@ def test_aspirate_and_wait( ) -> None: """It should execute an aspirate and a delay according to properties.""" source_well = decoy.mock(cls=WellCore) - sample_transfer_props.aspirate.position_reference = position_reference + sample_transfer_props.aspirate.aspirate_position.position_reference = ( + position_reference + ) aspirate_flow_rate = ( sample_transfer_props.aspirate.flow_rate_by_volume.get_for_volume(10) ) @@ -387,7 +386,9 @@ def test_dispense_and_wait( ) -> None: """It should execute a dispense and a delay according to properties.""" source_well = decoy.mock(cls=WellCore) - sample_transfer_props.dispense.position_reference = position_reference + sample_transfer_props.dispense.dispense_position.position_reference = ( + position_reference + ) dispense_flow_rate = ( sample_transfer_props.dispense.flow_rate_by_volume.get_for_volume(10) ) @@ -898,22 +899,19 @@ def test_retract_after_aspiration_for_consolidate( "singleDispense": { "submerge": { - "positionReference": "well-top", - "offset": {"x": 30, "y": 20, "z": 10}, + "startPosition": {"positionReference": "well-top", "offset": {"x": 30, "y": 20, "z": 10}}, "speed": 100, "delay": {"enable": true, "params": { "duration": 0.0 }} }, "retract": { - "positionReference": "well-top", - "offset": {"x": 11, "y": 22, "z": 33}, + "endPosition": {"positionReference": "well-top", "offset": {"x": 11, "y": 22, "z": 33}}, "speed": 50, "airGapByVolume": [[1.0, 0.1], [49.9, 0.1], [50.0, 0.0]], "blowout": { "enable": true , "params": {"location": "source", "flowRate": 100}}, "touchTip": { "enable": true, "params": { "zOffset": -1, "mmFromEdge": 0.5, "speed": 30}}, "delay": {"enable": true, "params": { "duration": 10 }} }, - "positionReference": "well-bottom", - "offset": {"x": 33, "y": 22, "z": 11}, + "dispensePosition": {"positionReference": "well-bottom", "offset": {"x": 33, "y": 22, "z": 11}}, "flowRateByVolume": [[1.0, 50.0]], "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": true, "params": { "repetitions": 1, "volume": 50 }}, diff --git a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py index fc86bfcfa527..11a4a294ffa5 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py @@ -22,14 +22,21 @@ def test_build_aspirate_settings() -> None: aspirate_properties = build_aspirate_properties(aspirate_data) - assert aspirate_properties.submerge.position_reference.value == "liquid-meniscus" - assert aspirate_properties.submerge.offset == Coordinate(x=0, y=0, z=-5) + assert ( + aspirate_properties.submerge.start_position.position_reference.value + == "liquid-meniscus" + ) + assert aspirate_properties.submerge.start_position.offset == Coordinate( + x=0, y=0, z=-5 + ) assert aspirate_properties.submerge.speed == 100 assert aspirate_properties.submerge.delay.enabled is True assert aspirate_properties.submerge.delay.duration == 1.5 - assert aspirate_properties.retract.position_reference.value == "well-top" - assert aspirate_properties.retract.offset == Coordinate(x=0, y=0, z=5) + assert ( + aspirate_properties.retract.end_position.position_reference.value == "well-top" + ) + assert aspirate_properties.retract.end_position.offset == Coordinate(x=0, y=0, z=5) assert aspirate_properties.retract.speed == 100 assert aspirate_properties.retract.air_gap_by_volume.as_dict() == { 5.0: 3.0, @@ -42,8 +49,10 @@ def test_build_aspirate_settings() -> None: assert aspirate_properties.retract.delay.enabled is True assert aspirate_properties.retract.delay.duration == 1 - assert aspirate_properties.position_reference.value == "well-bottom" - assert aspirate_properties.offset == Coordinate(x=0, y=0, z=-5) + assert ( + aspirate_properties.aspirate_position.position_reference.value == "well-bottom" + ) + assert aspirate_properties.aspirate_position.offset == Coordinate(x=0, y=0, z=-5) assert aspirate_properties.flow_rate_by_volume.as_dict() == {10: 50.0} assert aspirate_properties.correction_by_volume.as_dict() == { 1.0: -2.5, @@ -66,10 +75,15 @@ def test_aspirate_settings_overrides() -> None: aspirate_properties = build_aspirate_properties(aspirate_data) - aspirate_properties.submerge.position_reference = "well-bottom" # type: ignore[assignment] - assert aspirate_properties.submerge.position_reference.value == "well-bottom" - aspirate_properties.submerge.offset = 5, 0, 0 # type: ignore[assignment] - assert aspirate_properties.submerge.offset == Coordinate(x=5, y=0, z=0) + aspirate_properties.submerge.start_position.position_reference = "well-bottom" # type: ignore[assignment] + assert ( + aspirate_properties.submerge.start_position.position_reference.value + == "well-bottom" + ) + aspirate_properties.submerge.start_position.offset = 5, 0, 0 # type: ignore[assignment] + assert aspirate_properties.submerge.start_position.offset == Coordinate( + x=5, y=0, z=0 + ) aspirate_properties.submerge.speed = 123 assert aspirate_properties.submerge.speed == 123 aspirate_properties.submerge.delay.enabled = False @@ -77,10 +91,13 @@ def test_aspirate_settings_overrides() -> None: aspirate_properties.submerge.delay.duration = 5.1 assert aspirate_properties.submerge.delay.duration == 5.1 - aspirate_properties.retract.position_reference = "well-center" # type: ignore[assignment] - assert aspirate_properties.retract.position_reference.value == "well-center" - aspirate_properties.retract.offset = 0, 50, 0 # type: ignore[assignment] - assert aspirate_properties.retract.offset == Coordinate(x=0, y=50, z=0) + aspirate_properties.retract.end_position.position_reference = "well-center" # type: ignore[assignment] + assert ( + aspirate_properties.retract.end_position.position_reference.value + == "well-center" + ) + aspirate_properties.retract.end_position.offset = 0, 50, 0 # type: ignore[assignment] + assert aspirate_properties.retract.end_position.offset == Coordinate(x=0, y=50, z=0) aspirate_properties.retract.speed = 987 assert aspirate_properties.retract.speed == 987 aspirate_properties.retract.touch_tip.enabled = False @@ -96,10 +113,13 @@ def test_aspirate_settings_overrides() -> None: aspirate_properties.retract.delay.duration = 0.5 assert aspirate_properties.retract.delay.duration == 0.5 - aspirate_properties.position_reference = "liquid-meniscus" # type: ignore[assignment] - assert aspirate_properties.position_reference.value == "liquid-meniscus" - aspirate_properties.offset = -1, -2, -3 # type: ignore[assignment] - assert aspirate_properties.offset == Coordinate(x=-1, y=-2, z=-3) + aspirate_properties.aspirate_position.position_reference = "liquid-meniscus" # type: ignore[assignment] + assert ( + aspirate_properties.aspirate_position.position_reference.value + == "liquid-meniscus" + ) + aspirate_properties.aspirate_position.offset = -1, -2, -3 # type: ignore[assignment] + assert aspirate_properties.aspirate_position.offset == Coordinate(x=-1, y=-2, z=-3) aspirate_properties.pre_wet = False assert aspirate_properties.pre_wet is False aspirate_properties.mix.enabled = False @@ -123,16 +143,23 @@ def test_build_single_dispense_settings() -> None: single_dispense_properties = build_single_dispense_properties(single_dispense_data) assert ( - single_dispense_properties.submerge.position_reference.value + single_dispense_properties.submerge.start_position.position_reference.value == "liquid-meniscus" ) - assert single_dispense_properties.submerge.offset == Coordinate(x=0, y=0, z=-5) + assert single_dispense_properties.submerge.start_position.offset == Coordinate( + x=0, y=0, z=-5 + ) assert single_dispense_properties.submerge.speed == 100 assert single_dispense_properties.submerge.delay.enabled is True assert single_dispense_properties.submerge.delay.duration == 1.5 - assert single_dispense_properties.retract.position_reference.value == "well-top" - assert single_dispense_properties.retract.offset == Coordinate(x=0, y=0, z=5) + assert ( + single_dispense_properties.retract.end_position.position_reference.value + == "well-top" + ) + assert single_dispense_properties.retract.end_position.offset == Coordinate( + x=0, y=0, z=5 + ) assert single_dispense_properties.retract.speed == 100 assert single_dispense_properties.retract.air_gap_by_volume.as_dict() == { 5.0: 3.0, @@ -149,8 +176,13 @@ def test_build_single_dispense_settings() -> None: assert single_dispense_properties.retract.delay.enabled is True assert single_dispense_properties.retract.delay.duration == 1 - assert single_dispense_properties.position_reference.value == "well-bottom" - assert single_dispense_properties.offset == Coordinate(x=0, y=0, z=-5) + assert ( + single_dispense_properties.dispense_position.position_reference.value + == "well-bottom" + ) + assert single_dispense_properties.dispense_position.offset == Coordinate( + x=0, y=0, z=-5 + ) assert single_dispense_properties.flow_rate_by_volume.as_dict() == { 10.0: 40.0, 20.0: 30.0, @@ -179,10 +211,15 @@ def test_single_dispense_settings_override() -> None: single_dispense_properties = build_single_dispense_properties(single_dispense_data) - single_dispense_properties.submerge.position_reference = "well-bottom" # type: ignore[assignment] - assert single_dispense_properties.submerge.position_reference.value == "well-bottom" - single_dispense_properties.submerge.offset = 3, -2, 1 # type: ignore[assignment] - assert single_dispense_properties.submerge.offset == Coordinate(x=3, y=-2, z=1) + single_dispense_properties.submerge.start_position.position_reference = "well-bottom" # type: ignore[assignment] + assert ( + single_dispense_properties.submerge.start_position.position_reference.value + == "well-bottom" + ) + single_dispense_properties.submerge.start_position.offset = 3, -2, 1 # type: ignore[assignment] + assert single_dispense_properties.submerge.start_position.offset == Coordinate( + x=3, y=-2, z=1 + ) single_dispense_properties.submerge.speed = 111 assert single_dispense_properties.submerge.speed == 111 single_dispense_properties.submerge.delay.enabled = False @@ -190,10 +227,15 @@ def test_single_dispense_settings_override() -> None: single_dispense_properties.submerge.delay.duration = 5.1 assert single_dispense_properties.submerge.delay.duration == 5.1 - single_dispense_properties.retract.position_reference = "well-center" # type: ignore[assignment] - assert single_dispense_properties.retract.position_reference.value == "well-center" - single_dispense_properties.retract.offset = -9, -8, -7 # type: ignore[assignment] - assert single_dispense_properties.retract.offset == Coordinate(x=-9, y=-8, z=-7) + single_dispense_properties.retract.end_position.position_reference = "well-center" # type: ignore[assignment] + assert ( + single_dispense_properties.retract.end_position.position_reference.value + == "well-center" + ) + single_dispense_properties.retract.end_position.offset = -9, -8, -7 # type: ignore[assignment] + assert single_dispense_properties.retract.end_position.offset == Coordinate( + x=-9, y=-8, z=-7 + ) single_dispense_properties.retract.speed = 222 assert single_dispense_properties.retract.speed == 222 single_dispense_properties.retract.touch_tip.enabled = False @@ -216,10 +258,15 @@ def test_single_dispense_settings_override() -> None: single_dispense_properties.retract.delay.duration = 0.1 assert single_dispense_properties.retract.delay.duration == 0.1 - single_dispense_properties.position_reference = "liquid-meniscus" # type: ignore[assignment] - assert single_dispense_properties.position_reference.value == "liquid-meniscus" - single_dispense_properties.offset = 11, 22, -33 # type: ignore[assignment] - assert single_dispense_properties.offset == Coordinate(x=11, y=22, z=-33) + single_dispense_properties.dispense_position.position_reference = "liquid-meniscus" # type: ignore[assignment] + assert ( + single_dispense_properties.dispense_position.position_reference.value + == "liquid-meniscus" + ) + single_dispense_properties.dispense_position.offset = 11, 22, -33 # type: ignore[assignment] + assert single_dispense_properties.dispense_position.offset == Coordinate( + x=11, y=22, z=-33 + ) single_dispense_properties.mix.enabled = False assert single_dispense_properties.mix.enabled is False single_dispense_properties.mix.repetitions = 15 @@ -243,15 +290,23 @@ def test_build_multi_dispense_settings() -> None: assert multi_dispense_properties is not None assert ( - multi_dispense_properties.submerge.position_reference.value == "liquid-meniscus" + multi_dispense_properties.submerge.start_position.position_reference.value + == "liquid-meniscus" + ) + assert multi_dispense_properties.submerge.start_position.offset == Coordinate( + x=0, y=0, z=-5 ) - assert multi_dispense_properties.submerge.offset == Coordinate(x=0, y=0, z=-5) assert multi_dispense_properties.submerge.speed == 100 assert multi_dispense_properties.submerge.delay.enabled is True assert multi_dispense_properties.submerge.delay.duration == 1.5 - assert multi_dispense_properties.retract.position_reference.value == "well-top" - assert multi_dispense_properties.retract.offset == Coordinate(x=0, y=0, z=5) + assert ( + multi_dispense_properties.retract.end_position.position_reference.value + == "well-top" + ) + assert multi_dispense_properties.retract.end_position.offset == Coordinate( + x=0, y=0, z=5 + ) assert multi_dispense_properties.retract.speed == 100 assert multi_dispense_properties.retract.air_gap_by_volume.as_dict() == { 5.0: 3.0, @@ -267,8 +322,13 @@ def test_build_multi_dispense_settings() -> None: assert multi_dispense_properties.retract.delay.enabled is True assert multi_dispense_properties.retract.delay.duration == 1 - assert multi_dispense_properties.position_reference.value == "well-bottom" - assert multi_dispense_properties.offset == Coordinate(x=0, y=0, z=-5) + assert ( + multi_dispense_properties.dispense_position.position_reference.value + == "well-bottom" + ) + assert multi_dispense_properties.dispense_position.offset == Coordinate( + x=0, y=0, z=-5 + ) assert multi_dispense_properties.flow_rate_by_volume.as_dict() == { 10.0: 40.0, 20.0: 30.0, @@ -297,10 +357,15 @@ def test_multi_dispense_settings_override() -> None: multi_dispense_properties = build_multi_dispense_properties(multi_dispense_data) assert multi_dispense_properties is not None - multi_dispense_properties.submerge.position_reference = "well-bottom" # type: ignore[assignment] - assert multi_dispense_properties.submerge.position_reference.value == "well-bottom" - multi_dispense_properties.submerge.offset = 3, -2, 1 # type: ignore[assignment] - assert multi_dispense_properties.submerge.offset == Coordinate(x=3, y=-2, z=1) + multi_dispense_properties.submerge.start_position.position_reference = "well-bottom" # type: ignore[assignment] + assert ( + multi_dispense_properties.submerge.start_position.position_reference.value + == "well-bottom" + ) + multi_dispense_properties.submerge.start_position.offset = 3, -2, 1 # type: ignore[assignment] + assert multi_dispense_properties.submerge.start_position.offset == Coordinate( + x=3, y=-2, z=1 + ) multi_dispense_properties.submerge.speed = 111 assert multi_dispense_properties.submerge.speed == 111 multi_dispense_properties.submerge.delay.enabled = False @@ -308,10 +373,15 @@ def test_multi_dispense_settings_override() -> None: multi_dispense_properties.submerge.delay.duration = 5.1 assert multi_dispense_properties.submerge.delay.duration == 5.1 - multi_dispense_properties.retract.position_reference = "well-center" # type: ignore[assignment] - assert multi_dispense_properties.retract.position_reference.value == "well-center" - multi_dispense_properties.retract.offset = -9, -8, -7 # type: ignore[assignment] - assert multi_dispense_properties.retract.offset == Coordinate(x=-9, y=-8, z=-7) + multi_dispense_properties.retract.end_position.position_reference = "well-center" # type: ignore[assignment] + assert ( + multi_dispense_properties.retract.end_position.position_reference.value + == "well-center" + ) + multi_dispense_properties.retract.end_position.offset = -9, -8, -7 # type: ignore[assignment] + assert multi_dispense_properties.retract.end_position.offset == Coordinate( + x=-9, y=-8, z=-7 + ) multi_dispense_properties.retract.speed = 222 assert multi_dispense_properties.retract.speed == 222 multi_dispense_properties.retract.touch_tip.enabled = False @@ -334,10 +404,15 @@ def test_multi_dispense_settings_override() -> None: multi_dispense_properties.retract.delay.duration = 0.1 assert multi_dispense_properties.retract.delay.duration == 0.1 - multi_dispense_properties.position_reference = "liquid-meniscus" # type: ignore[assignment] - assert multi_dispense_properties.position_reference.value == "liquid-meniscus" - multi_dispense_properties.offset = 11, 22, -33 # type: ignore[assignment] - assert multi_dispense_properties.offset == Coordinate(x=11, y=22, z=-33) + multi_dispense_properties.dispense_position.position_reference = "liquid-meniscus" # type: ignore[assignment] + assert ( + multi_dispense_properties.dispense_position.position_reference.value + == "liquid-meniscus" + ) + multi_dispense_properties.dispense_position.offset = 11, 22, -33 # type: ignore[assignment] + assert multi_dispense_properties.dispense_position.offset == Coordinate( + x=11, y=22, z=-33 + ) multi_dispense_properties.delay.enabled = False assert multi_dispense_properties.delay.enabled is False multi_dispense_properties.delay.duration = 25.25 diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_liquid_class.py b/api/tests/opentrons/protocol_engine/commands/test_load_liquid_class.py index 54de10f3bc21..c89899853d56 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_load_liquid_class.py +++ b/api/tests/opentrons/protocol_engine/commands/test_load_liquid_class.py @@ -153,7 +153,9 @@ async def test_load_liquid_class_conflicting_definition_for_id( ) new_liquid_class_record = liquid_class_record.model_copy(deep=True) - new_liquid_class_record.aspirate.offset.x += 123 # make it different + new_liquid_class_record.aspirate.aspiratePosition.offset.x += ( + 123 # make it different + ) params = LoadLiquidClassParams( liquidClassId="liquid-class-1", liquidClassRecord=new_liquid_class_record ) diff --git a/shared-data/command/schemas/13.json b/shared-data/command/schemas/13.json index c44d220f83ed..725339bfcbc2 100644 --- a/shared-data/command/schemas/13.json +++ b/shared-data/command/schemas/13.json @@ -262,6 +262,10 @@ "AspirateProperties": { "description": "Properties specific to the aspirate function.", "properties": { + "aspiratePosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position during aspirate." + }, "correctionByVolume": { "description": "Settings for volume correction keyed by by target aspiration volume, representing additional volume the plunger should move to accurately hit target volume.", "items": { @@ -340,14 +344,6 @@ "$ref": "#/$defs/MixProperties", "description": "Mixing settings for before an aspirate" }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for aspiration." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for aspiration." - }, "preWet": { "description": "Whether to perform a pre-wet action.", "title": "Prewet", @@ -365,8 +361,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "aspiratePosition", "flowRateByVolume", "correctionByVolume", "preWet", @@ -3737,6 +3732,10 @@ "$ref": "#/$defs/DelayProperties", "description": "Delay settings after each dispense" }, + "dispensePosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position during dispense." + }, "disposalByVolume": { "description": "Settings for disposal volume keyed by target dispense volume.", "items": { @@ -3809,14 +3808,6 @@ "title": "Flowratebyvolume", "type": "array" }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for single multi-dispense." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for multi-dispense." - }, "retract": { "$ref": "#/$defs/RetractDispense", "description": "Pipette retract settings after a multi-dispense." @@ -3829,8 +3820,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "dispensePosition", "flowRateByVolume", "correctionByVolume", "conditioningByVolume", @@ -4412,13 +4402,9 @@ "$ref": "#/$defs/DelayProperties", "description": "Delay settings for retract after aspirate." }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for retract after aspirate." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for retract after aspirate." + "endPosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position after retract." }, "speed": { "anyOf": [ @@ -4440,8 +4426,7 @@ } }, "required": [ - "positionReference", - "offset", + "endPosition", "speed", "airGapByVolume", "touchTip", @@ -4537,13 +4522,9 @@ "$ref": "#/$defs/DelayProperties", "description": "Delay settings for retract after dispense." }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for retract after dispense." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for retract after dispense." + "endPosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position after retract." }, "speed": { "anyOf": [ @@ -4565,8 +4546,7 @@ } }, "required": [ - "positionReference", - "offset", + "endPosition", "speed", "airGapByVolume", "blowout", @@ -5250,6 +5230,10 @@ "$ref": "#/$defs/DelayProperties", "description": "Delay after dispense, in seconds." }, + "dispensePosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position during dispense." + }, "flowRateByVolume": { "description": "Settings for flow rate keyed by target dispense volume.", "items": { @@ -5290,14 +5274,6 @@ "$ref": "#/$defs/MixProperties", "description": "Mixing settings for after a dispense" }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for single dispense." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for single dispense." - }, "pushOutByVolume": { "description": "Settings for pushout keyed by target dispense volume.", "items": { @@ -5346,8 +5322,7 @@ "required": [ "submerge", "retract", - "positionReference", - "offset", + "dispensePosition", "flowRateByVolume", "correctionByVolume", "mix", @@ -5461,14 +5436,6 @@ "$ref": "#/$defs/DelayProperties", "description": "Delay settings for submerge." }, - "offset": { - "$ref": "#/$defs/Coordinate", - "description": "Relative offset for submerge." - }, - "positionReference": { - "$ref": "#/$defs/PositionReference", - "description": "Position reference for submerge." - }, "speed": { "anyOf": [ { @@ -5482,9 +5449,13 @@ ], "description": "Speed of submerging, in millimeters per second.", "title": "Speed" + }, + "startPosition": { + "$ref": "#/$defs/TipPosition", + "description": "Position reference for tip position before submerge." } }, - "required": ["positionReference", "offset", "speed", "delay"], + "required": ["startPosition", "speed", "delay"], "title": "Submerge", "type": "object" }, @@ -5513,6 +5484,22 @@ "title": "TipPickUpParams", "type": "object" }, + "TipPosition": { + "description": "Properties for tip position reference and relative offset.", + "properties": { + "offset": { + "$ref": "#/$defs/Coordinate", + "description": "Relative offset from position reference." + }, + "positionReference": { + "$ref": "#/$defs/PositionReference", + "description": "Position reference for tip position." + } + }, + "required": ["positionReference", "offset"], + "title": "TipPosition", + "type": "object" + }, "TipPresenceStatus": { "description": "Tip presence status reported by a pipette.", "enum": ["present", "absent", "unknown"], diff --git a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py index fc9419c8e57f..1effb811a132 100644 --- a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py +++ b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py @@ -66,6 +66,17 @@ class Coordinate(BaseModel): z: _Number +class TipPosition(BaseModel): + """Properties for tip position reference and relative offset.""" + + positionReference: PositionReference = Field( + ..., description="Position reference for tip position." + ) + offset: Coordinate = Field( + ..., description="Relative offset from position reference." + ) + + class DelayParams(BaseModel): """Parameters for delay.""" @@ -203,10 +214,9 @@ def _validate_params( class Submerge(BaseModel): """Shared properties for the submerge function before aspiration or dispense.""" - positionReference: PositionReference = Field( - ..., description="Position reference for submerge." + startPosition: TipPosition = Field( + ..., description="Position reference for tip position before submerge." ) - offset: Coordinate = Field(..., description="Relative offset for submerge.") speed: _NonNegativeNumber = Field( ..., description="Speed of submerging, in millimeters per second." ) @@ -216,11 +226,8 @@ class Submerge(BaseModel): class RetractAspirate(BaseModel): """Shared properties for the retract function after aspiration.""" - positionReference: PositionReference = Field( - ..., description="Position reference for retract after aspirate." - ) - offset: Coordinate = Field( - ..., description="Relative offset for retract after aspirate." + endPosition: TipPosition = Field( + ..., description="Position reference for tip position after retract." ) speed: _NonNegativeNumber = Field( ..., description="Speed of retraction, in millimeters per second." @@ -239,11 +246,8 @@ class RetractAspirate(BaseModel): class RetractDispense(BaseModel): """Shared properties for the retract function after dispense.""" - positionReference: PositionReference = Field( - ..., description="Position reference for retract after dispense." - ) - offset: Coordinate = Field( - ..., description="Relative offset for retract after dispense." + endPosition: TipPosition = Field( + ..., description="Position reference for tip position after retract." ) speed: _NonNegativeNumber = Field( ..., description="Speed of retraction, in millimeters per second." @@ -269,10 +273,9 @@ class AspirateProperties(BaseModel): retract: RetractAspirate = Field( ..., description="Pipette retract settings after an aspirate." ) - positionReference: PositionReference = Field( - ..., description="Position reference for aspiration." + aspiratePosition: TipPosition = Field( + ..., description="Position reference for tip position during aspirate." ) - offset: Coordinate = Field(..., description="Relative offset for aspiration.") flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., description="Settings for flow rate keyed by target aspiration volume.", @@ -298,10 +301,9 @@ class SingleDispenseProperties(BaseModel): retract: RetractDispense = Field( ..., description="Pipette retract settings after a single dispense." ) - positionReference: PositionReference = Field( - ..., description="Position reference for single dispense." + dispensePosition: TipPosition = Field( + ..., description="Position reference for tip position during dispense." ) - offset: Coordinate = Field(..., description="Relative offset for single dispense.") flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., description="Settings for flow rate keyed by target dispense volume.", @@ -325,11 +327,8 @@ class MultiDispenseProperties(BaseModel): retract: RetractDispense = Field( ..., description="Pipette retract settings after a multi-dispense." ) - positionReference: PositionReference = Field( - ..., description="Position reference for multi-dispense." - ) - offset: Coordinate = Field( - ..., description="Relative offset for single multi-dispense." + dispensePosition: TipPosition = Field( + ..., description="Position reference for tip position during dispense." ) flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., diff --git a/shared-data/python/tests/liquid_classes/test_load.py b/shared-data/python/tests/liquid_classes/test_load.py index d0d96fd00feb..cf9865fc4be6 100644 --- a/shared-data/python/tests/liquid_classes/test_load.py +++ b/shared-data/python/tests/liquid_classes/test_load.py @@ -6,6 +6,7 @@ LiquidClassSchemaV1, PositionReference, Coordinate, + TipPosition, Submerge, DelayParams, DelayProperties, @@ -27,8 +28,10 @@ def test_load_definition() -> None: assert type(water_definition) is LiquidClassSchemaV1 assert water_definition.byPipette[0].pipetteModel == "flex_1channel_50" assert water_definition.byPipette[0].byTipType[0].aspirate.submerge == Submerge( - positionReference=PositionReference.WELL_TOP, - offset=Coordinate(x=0, y=0, z=2), + startPosition=TipPosition( + positionReference=PositionReference.WELL_TOP, + offset=Coordinate(x=0, y=0, z=2), + ), speed=100, delay=DelayProperties(enable=False, params=DelayParams(duration=0)), ) From 3b6577808dfef3b36002f652d8c76f2073fc90a4 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 21 Apr 2025 11:59:06 -0400 Subject: [PATCH 07/11] i have become typescript developer --- .../formLevel/handleFormChange/utils.ts | 52 +++++++++++++------ shared-data/js/types.ts | 15 +++--- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts index f657519af436..bbfd0d40e038 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts @@ -336,7 +336,7 @@ const getTouchTipFields = ( return { [`${liquidHandlingAction}_touchTip_checkbox`]: enable, [`${liquidHandlingAction}_touchTip_mmFromTop`]: params?.zOffset ?? null, - [`${liquidHandlingAction}_touchTip_mmFromEdge`]: params?.mmToEdge ?? null, + [`${liquidHandlingAction}_touchTip_mmFromEdge`]: params?.mmFromEdge ?? null, [`${liquidHandlingAction}_touchTip_speed`]: params?.speed ?? null, } } @@ -415,8 +415,19 @@ const getSubmergeRetractFields = (args: { } = args // all common submerge and retract fields - const { delay, offset, speed, positionReference } = submergeRetractLookup + const { delay, speed } = submergeRetractLookup + const [positionReference, offset] = + 'startPosition' in submergeRetractLookup + ? [ + submergeRetractLookup.startPosition.positionReference, + submergeRetractLookup.startPosition.offset, + ] + : [ + submergeRetractLookup.endPosition.positionReference, + submergeRetractLookup.endPosition.offset, + ] const fullPrefix = `${liquidHandlingAction}_${tipMovement}` as SubmergeRetractAspirateDispensePrefix + const offsetFields = getOffsetFields(offset, fullPrefix) const PositionReferenceFields = getPositionReferenceFields( positionReference, @@ -504,14 +515,20 @@ const getNoLiquidClassValuesMoveLiquid = ( singleDispense.pushOutByVolume as Array<[number, number]> ) ?? 0 - const aspirateOffsetFields = getOffsetFields(aspirate.offset, 'aspirate') - const dispenseOffsetFields = getOffsetFields(dispense.offset, 'dispense') + const aspirateOffsetFields = getOffsetFields( + aspirate.aspiratePosition.offset, + 'aspirate' + ) + const dispenseOffsetFields = getOffsetFields( + dispense.dispensePosition.offset, + 'dispense' + ) const aspiratePositionReferenceFields = getPositionReferenceFields( - aspirate.positionReference, + aspirate.aspiratePosition.positionReference, 'aspirate' ) const dispensePositionReferenceFields = getPositionReferenceFields( - dispense.positionReference, + dispense.dispensePosition.positionReference, 'dispense' ) @@ -530,7 +547,7 @@ const getNoLiquidClassValuesMoveLiquid = ( aspirate_retract_x_position: 0, aspirate_retract_y_position: 0, aspirate_touchTip_speed: aspirate.retract.touchTip.params?.speed, - aspirate_touchTip_mmFromEdge: aspirate.retract.touchTip.params?.mmToEdge, + aspirate_touchTip_mmFromEdge: aspirate.retract.touchTip.params?.mmFromEdge, aspirate_touchTip_mmFromTop: aspirate.retract.touchTip.params?.zOffset, } const dispenseFields = { @@ -550,7 +567,7 @@ const getNoLiquidClassValuesMoveLiquid = ( pushOut_checkbox: pushOutVolume > 0, pushOut_volume: pushOutVolume, dispense_touchTip_speed: dispense.retract.touchTip.params?.speed, - dispense_touchTip_mmFromEdge: dispense.retract.touchTip.params?.mmToEdge, + dispense_touchTip_mmFromEdge: dispense.retract.touchTip.params?.mmFromEdge, dispense_touchTip_mmFromTop: dispense.retract.touchTip.params?.zOffset, } return { @@ -601,7 +618,7 @@ const getNoLiquidClassValuesMix = ( 'aspirate' ) const aspiratePositionReferenceFields = getPositionReferenceFields( - aspirate.positionReference, + aspirate.aspiratePosition.positionReference, 'mix' ) const dispenseFlowRateFields = getFlowRateFields( @@ -625,7 +642,7 @@ const getNoLiquidClassValuesMix = ( pushOut_checkbox: pushOutVolume > 0, pushOut_volume: pushOutVolume, mix_touchTip_speed: singleDispense.retract.touchTip.params?.speed, - mix_touchTip_mmFromEdge: singleDispense.retract.touchTip.params?.mmToEdge, + mix_touchTip_mmFromEdge: singleDispense.retract.touchTip.params?.mmFromEdge, mix_touchTip_mmFromTop: singleDispense.retract.touchTip.params?.zOffset, } @@ -669,24 +686,28 @@ const getLiquidClassValuesMoveLiquid = (args: { const { path, tipRack, volume: rawVolume } = rawForm const volume = Number(rawVolume) const { - positionReference: aspiratePositionReference, - offset: aspirateOffset, flowRateByVolume: aspirateFlowRateByVolume, preWet, mix: aspirateMix, delay: aspirateDelay, } = aspirate + const { + positionReference: aspiratePositionReference, + offset: aspirateOffset, + } = aspirate.aspiratePosition const dispense = multiDispense != null && path === 'multiDispense' ? multiDispense : singleDispense const { - positionReference: dispensePositionReference, - offset: dispenseOffset, flowRateByVolume: dispenseFlowRateByVolume, delay: dispenseDelay, } = dispense + const { + positionReference: dispensePositionReference, + offset: dispenseOffset, + } = dispense.dispensePosition const { pushOutByVolume } = singleDispense // always get pushOut from singleDispense const dispenseMix = 'mix' in dispense ? dispense.mix : null const { @@ -861,11 +882,10 @@ const getLiquidClassValuesMix = (args: { const volume = Number(rawVolume) const { aspirate, singleDispense } = liquidClassValuesForTip const { - positionReference, - offset, flowRateByVolume: aspirateFlowRateByVolume, delay: aspirateDelay, } = aspirate + const { positionReference, offset } = aspirate.aspiratePosition const { flowRateByVolume: dispenseFlowRateByVolume, delay: dispenseDelay, diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index d43b99722f86..aa6c5e8fe6b0 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -727,6 +727,10 @@ type BlowoutLocation = 'source' | 'destination' | 'trash' interface DelayParams { duration: number } +export interface TipPosition { + positionReference: PositionReference + offset: Coordinates +} export interface DelayProperties { enable: boolean params?: DelayParams @@ -758,14 +762,12 @@ export interface BlowoutProperties { params?: BlowoutParams } export interface Submerge { - positionReference: PositionReference - offset: Coordinates + startPosition: TipPosition speed: number delay: DelayProperties } interface BaseRetract { - positionReference: PositionReference - offset: Coordinates + endPosition: TipPosition speed: number airGapByVolume: LiquidHandlingPropertyByVolume touchTip: TouchTipProperties @@ -778,24 +780,25 @@ export interface RetractDispense extends BaseRetract { interface BaseLiquidHandlingProperties { submerge: Submerge retract: RetractType - positionReference: PositionReference - offset: Coordinates flowRateByVolume: LiquidHandlingPropertyByVolume correctionByVolume: LiquidHandlingPropertyByVolume delay: DelayProperties } export interface AspirateProperties extends BaseLiquidHandlingProperties { + aspiratePosition: TipPosition preWet: boolean mix: MixProperties } export interface SingleDispenseProperties extends BaseLiquidHandlingProperties { + dispensePosition: TipPosition mix: MixProperties pushOutByVolume: LiquidHandlingPropertyByVolume } export interface MultiDispenseProperties extends BaseLiquidHandlingProperties { + dispensePosition: TipPosition conditioningByVolume: LiquidHandlingPropertyByVolume disposalByVolume: LiquidHandlingPropertyByVolume } From a236c8dee1d9e3e25ca92a965ea491cc3c8256f7 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 21 Apr 2025 13:56:57 -0400 Subject: [PATCH 08/11] revert previous schema change --- shared-data/command/schemas/11.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 515fbe9e7123..8b13c42d01b0 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -2058,7 +2058,7 @@ "LiquidClassTouchTipParams": { "description": "Parameters for touch-tip.", "properties": { - "mmFromEdge": { + "mmToEdge": { "anyOf": [ { "type": "integer" @@ -2068,7 +2068,7 @@ } ], "description": "Offset away from the the well edge, in millimeters.", - "title": "Mmfromedge" + "title": "Mmtoedge" }, "speed": { "anyOf": [ @@ -2097,7 +2097,7 @@ "title": "Zoffset" } }, - "required": ["zOffset", "mmFromEdge", "speed"], + "required": ["zOffset", "mmToEdge", "speed"], "title": "LiquidClassTouchTipParams", "type": "object" }, From 2f499144381bf9aca3c525effb0a8609c7e14c02 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Mon, 21 Apr 2025 14:36:01 -0400 Subject: [PATCH 09/11] i have become typescript refactorer --- .../steplist/formLevel/handleFormChange/utils.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts index bbfd0d40e038..170a8acd3453 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts @@ -416,18 +416,11 @@ const getSubmergeRetractFields = (args: { // all common submerge and retract fields const { delay, speed } = submergeRetractLookup - const [positionReference, offset] = + const { positionReference, offset } = 'startPosition' in submergeRetractLookup - ? [ - submergeRetractLookup.startPosition.positionReference, - submergeRetractLookup.startPosition.offset, - ] - : [ - submergeRetractLookup.endPosition.positionReference, - submergeRetractLookup.endPosition.offset, - ] + ? submergeRetractLookup.startPosition + : submergeRetractLookup.endPosition const fullPrefix = `${liquidHandlingAction}_${tipMovement}` as SubmergeRetractAspirateDispensePrefix - const offsetFields = getOffsetFields(offset, fullPrefix) const PositionReferenceFields = getPositionReferenceFields( positionReference, From 788e2e76725b4c3205ead385dcc0f34065131a6f Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Wed, 23 Apr 2025 11:27:04 -0400 Subject: [PATCH 10/11] update pydantic field descriptions --- shared-data/command/schemas/13.json | 12 ++++++------ .../liquid_classes/liquid_class_definition.py | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/shared-data/command/schemas/13.json b/shared-data/command/schemas/13.json index 725339bfcbc2..bb10ef4427ad 100644 --- a/shared-data/command/schemas/13.json +++ b/shared-data/command/schemas/13.json @@ -264,7 +264,7 @@ "properties": { "aspiratePosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position during aspirate." + "description": "Tip position during aspirate." }, "correctionByVolume": { "description": "Settings for volume correction keyed by by target aspiration volume, representing additional volume the plunger should move to accurately hit target volume.", @@ -3734,7 +3734,7 @@ }, "dispensePosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position during dispense." + "description": "Tip position during dispense." }, "disposalByVolume": { "description": "Settings for disposal volume keyed by target dispense volume.", @@ -4404,7 +4404,7 @@ }, "endPosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position after retract." + "description": "Tip position at the end of the retract." }, "speed": { "anyOf": [ @@ -4524,7 +4524,7 @@ }, "endPosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position after retract." + "description": "Tip position at the end of the retract." }, "speed": { "anyOf": [ @@ -5232,7 +5232,7 @@ }, "dispensePosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position during dispense." + "description": "Tip position during dispense." }, "flowRateByVolume": { "description": "Settings for flow rate keyed by target dispense volume.", @@ -5452,7 +5452,7 @@ }, "startPosition": { "$ref": "#/$defs/TipPosition", - "description": "Position reference for tip position before submerge." + "description": "Tip position before starting the submerge." } }, "required": ["startPosition", "speed", "delay"], diff --git a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py index 1effb811a132..cb1bdaf38403 100644 --- a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py +++ b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py @@ -215,7 +215,7 @@ class Submerge(BaseModel): """Shared properties for the submerge function before aspiration or dispense.""" startPosition: TipPosition = Field( - ..., description="Position reference for tip position before submerge." + ..., description="Tip position before starting the submerge." ) speed: _NonNegativeNumber = Field( ..., description="Speed of submerging, in millimeters per second." @@ -227,7 +227,7 @@ class RetractAspirate(BaseModel): """Shared properties for the retract function after aspiration.""" endPosition: TipPosition = Field( - ..., description="Position reference for tip position after retract." + ..., description="Tip position at the end of the retract." ) speed: _NonNegativeNumber = Field( ..., description="Speed of retraction, in millimeters per second." @@ -247,7 +247,7 @@ class RetractDispense(BaseModel): """Shared properties for the retract function after dispense.""" endPosition: TipPosition = Field( - ..., description="Position reference for tip position after retract." + ..., description="Tip position at the end of the retract." ) speed: _NonNegativeNumber = Field( ..., description="Speed of retraction, in millimeters per second." @@ -274,7 +274,7 @@ class AspirateProperties(BaseModel): ..., description="Pipette retract settings after an aspirate." ) aspiratePosition: TipPosition = Field( - ..., description="Position reference for tip position during aspirate." + ..., description="Tip position during aspirate." ) flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., @@ -302,7 +302,7 @@ class SingleDispenseProperties(BaseModel): ..., description="Pipette retract settings after a single dispense." ) dispensePosition: TipPosition = Field( - ..., description="Position reference for tip position during dispense." + ..., description="Tip position during dispense." ) flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., @@ -328,7 +328,7 @@ class MultiDispenseProperties(BaseModel): ..., description="Pipette retract settings after a multi-dispense." ) dispensePosition: TipPosition = Field( - ..., description="Position reference for tip position during dispense." + ..., description="Tip position during dispense." ) flowRateByVolume: LiquidHandlingPropertyByVolume = Field( ..., From 55c8e077341777f7b39a6b4915467f1c570f7310 Mon Sep 17 00:00:00 2001 From: jbleon95 Date: Wed, 23 Apr 2025 11:42:34 -0400 Subject: [PATCH 11/11] fixing some typescript nits --- .../src/steplist/formLevel/handleFormChange/utils.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts index 170a8acd3453..fedd172189a0 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.ts @@ -680,6 +680,7 @@ const getLiquidClassValuesMoveLiquid = (args: { const volume = Number(rawVolume) const { flowRateByVolume: aspirateFlowRateByVolume, + aspiratePosition, preWet, mix: aspirateMix, delay: aspirateDelay, @@ -687,7 +688,7 @@ const getLiquidClassValuesMoveLiquid = (args: { const { positionReference: aspiratePositionReference, offset: aspirateOffset, - } = aspirate.aspiratePosition + } = aspiratePosition const dispense = multiDispense != null && path === 'multiDispense' @@ -695,12 +696,13 @@ const getLiquidClassValuesMoveLiquid = (args: { : singleDispense const { flowRateByVolume: dispenseFlowRateByVolume, + dispensePosition, delay: dispenseDelay, } = dispense const { positionReference: dispensePositionReference, offset: dispenseOffset, - } = dispense.dispensePosition + } = dispensePosition const { pushOutByVolume } = singleDispense // always get pushOut from singleDispense const dispenseMix = 'mix' in dispense ? dispense.mix : null const { @@ -876,9 +878,10 @@ const getLiquidClassValuesMix = (args: { const { aspirate, singleDispense } = liquidClassValuesForTip const { flowRateByVolume: aspirateFlowRateByVolume, + aspiratePosition, delay: aspirateDelay, } = aspirate - const { positionReference, offset } = aspirate.aspiratePosition + const { positionReference, offset } = aspiratePosition const { flowRateByVolume: dispenseFlowRateByVolume, delay: dispenseDelay,