Skip to content

Commit f239548

Browse files
authored
feat(protocol-designer, shared-data): introduce reference position fields (#17771)
This PR introduces reference position fields for moveLiquid form, and wires them up (ex: aspirate_submerge_position_reference). Currently, 3 references are supported: 1) well top, 2) well bottom, and 3) well center. I also add the necessary migrations for these new fields. I add and wire up a custom hook for managing these positions in `TipPositionModal` in `usePositionReference` for code cleanliness, and create new utilities for managing errors, mins, and maxes based on the z value and position reference.
1 parent bfe3055 commit f239548

File tree

31 files changed

+909
-400
lines changed

31 files changed

+909
-400
lines changed

protocol-designer/cypress/support/MixSteps.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ enum MixContent {
3333
WasteChute = 'Waste chute',
3434
AspFlowRate = 'Aspirate flow rate',
3535
AspWellOrder = 'Aspirate well order',
36-
MixTipPosition = 'Mix tip position',
36+
MixTipPosition = 'Mix position',
3737
AdvancedPipSettings = 'Advanced pipetting settings',
3838
Delay = 'Delay',
3939
DelayDuration = 'Delay duration',

protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json

Lines changed: 50 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
},
1515
"designerApplication": {
1616
"name": "opentrons/protocol-designer",
17-
"version": "8.4.0",
17+
"version": "8.4.3-alpha.0",
1818
"data": {
19-
"_internalAppBuildDate": "Wed, 26 Feb 2025 19:45:16 GMT",
19+
"_internalAppBuildDate": "Mon, 10 Mar 2025 14:05:38 GMT",
2020
"pipetteTiprackAssignments": {
2121
"0b3f2210-75c7-11ea-b42f-4b64e50f43e5": [
2222
"opentrons/opentrons_96_tiprack_300ul/1"
@@ -130,7 +130,7 @@
130130
"0b3f2210-75c7-11ea-b42f-4b64e50f43e5": "left"
131131
},
132132
"trashBinLocationUpdate": {
133-
"9a510491-0be6-43a9-af6b-192249380d2a:trashBin": "cutout12"
133+
"2088a082-31af-4993-bb1f-10f9a5842305:trashBin": "cutout12"
134134
},
135135
"wasteChuteLocationUpdate": {},
136136
"stagingAreaLocationUpdate": {},
@@ -150,13 +150,19 @@
150150
"aspirate_mix_times": "2",
151151
"aspirate_mix_volume": "30",
152152
"aspirate_mmFromBottom": 1,
153+
"aspirate_position_reference": null,
153154
"aspirate_retract_delay_seconds": null,
154155
"aspirate_retract_mmFromBottom": null,
155156
"aspirate_retract_speed": null,
156157
"aspirate_retract_x_position": 0,
157158
"aspirate_retract_y_position": 0,
159+
"aspirate_retract_position_reference": null,
158160
"aspirate_submerge_delay_seconds": null,
159161
"aspirate_submerge_speed": null,
162+
"aspirate_submerge_mmFromBottom": null,
163+
"aspirate_submerge_x_position": null,
164+
"aspirate_submerge_y_position": null,
165+
"aspirate_submerge_position_reference": null,
160166
"aspirate_touchTip_checkbox": true,
161167
"aspirate_touchTip_mmFromTop": -2,
162168
"aspirate_touchTip_speed": null,
@@ -168,7 +174,7 @@
168174
"aspirate_y_position": 0,
169175
"blowout_checkbox": false,
170176
"blowout_flowRate": null,
171-
"blowout_location": "9a510491-0be6-43a9-af6b-192249380d2a:trashBin",
177+
"blowout_location": "2088a082-31af-4993-bb1f-10f9a5842305:trashBin",
172178
"blowout_z_offset": 0,
173179
"changeTip": "always",
174180
"dispense_airGap_checkbox": false,
@@ -182,13 +188,19 @@
182188
"dispense_mix_times": null,
183189
"dispense_mix_volume": null,
184190
"dispense_mmFromBottom": 0.5,
191+
"dispense_position_reference": null,
185192
"dispense_retract_delay_seconds": null,
186193
"dispense_retract_mmFromBottom": null,
187194
"dispense_retract_speed": null,
188195
"dispense_retract_x_position": 0,
189196
"dispense_retract_y_position": 0,
197+
"dispense_retract_position_reference": null,
190198
"dispense_submerge_delay_seconds": null,
191199
"dispense_submerge_speed": null,
200+
"dispense_submerge_mmFromBottom": null,
201+
"dispense_submerge_x_position": null,
202+
"dispense_submerge_y_position": null,
203+
"dispense_submerge_position_reference": null,
192204
"dispense_touchTip_checkbox": true,
193205
"dispense_touchTip_mmFromTop": null,
194206
"dispense_touchTip_speed": null,
@@ -199,7 +211,7 @@
199211
"dispense_y_position": 0,
200212
"disposalVolume_checkbox": true,
201213
"disposalVolume_volume": "20",
202-
"dropTip_location": "9a510491-0be6-43a9-af6b-192249380d2a:trashBin",
214+
"dropTip_location": "2088a082-31af-4993-bb1f-10f9a5842305:trashBin",
203215
"liquidClassesSupported": false,
204216
"liquidClass": null,
205217
"nozzles": null,
@@ -242,13 +254,13 @@
242254
"aspirate_flowRate": 40,
243255
"blowout_checkbox": true,
244256
"blowout_flowRate": 46.43,
245-
"blowout_location": "9a510491-0be6-43a9-af6b-192249380d2a:trashBin",
257+
"blowout_location": "2088a082-31af-4993-bb1f-10f9a5842305:trashBin",
246258
"blowout_z_offset": 0,
247259
"changeTip": "always",
248260
"dispense_delay_checkbox": false,
249261
"dispense_delay_seconds": "1",
250262
"dispense_flowRate": 35,
251-
"dropTip_location": "9a510491-0be6-43a9-af6b-192249380d2a:trashBin",
263+
"dropTip_location": "2088a082-31af-4993-bb1f-10f9a5842305:trashBin",
252264
"labware": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1",
253265
"liquidClassesSupported": false,
254266
"mix_mmFromBottom": 0.5,
@@ -2653,7 +2665,7 @@
26532665
"commandSchemaId": "opentronsCommandSchemaV10",
26542666
"commands": [
26552667
{
2656-
"key": "5d0329c3-4d69-4f65-b978-d7b935c17e36",
2668+
"key": "2963031f-9333-40d3-ad83-b255a51f9cc6",
26572669
"commandType": "loadPipette",
26582670
"params": {
26592671
"pipetteName": "p300_single_gen2",
@@ -2662,7 +2674,7 @@
26622674
}
26632675
},
26642676
{
2665-
"key": "1e524b6d-1df9-4956-9dbb-c45f0a460d88",
2677+
"key": "ac8744d8-79ea-4fc7-9844-015f735a320c",
26662678
"commandType": "loadLabware",
26672679
"params": {
26682680
"displayName": "Opentrons 96 Tip Rack 300 µL",
@@ -2676,7 +2688,7 @@
26762688
}
26772689
},
26782690
{
2679-
"key": "bff4fe19-28e8-4446-beae-fa34ec3c0347",
2691+
"key": "06a2c13e-ab3e-45d4-805f-61674430e902",
26802692
"commandType": "loadLabware",
26812693
"params": {
26822694
"displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt",
@@ -2690,7 +2702,7 @@
26902702
}
26912703
},
26922704
{
2693-
"key": "ff607e26-79e1-4033-acb4-af44c7157ca1",
2705+
"key": "645bc66d-7d0f-426c-bf91-7ee6128b09c8",
26942706
"commandType": "loadLabware",
26952707
"params": {
26962708
"displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap",
@@ -2705,7 +2717,7 @@
27052717
},
27062718
{
27072719
"commandType": "loadLiquid",
2708-
"key": "eb369a54-9776-4478-acdf-9643a9319993",
2720+
"key": "0c3223ba-3a26-45b6-a232-e0cbd386391e",
27092721
"params": {
27102722
"liquidId": "0",
27112723
"labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1",
@@ -2731,22 +2743,22 @@
27312743
},
27322744
{
27332745
"commandType": "waitForDuration",
2734-
"key": "6c390aa0-5f26-453d-9eb8-6bbea852b167",
2746+
"key": "d32254a0-ce17-44bb-b5ef-14eb66da6701",
27352747
"params": {
27362748
"seconds": 62,
27372749
"message": ""
27382750
}
27392751
},
27402752
{
27412753
"commandType": "waitForResume",
2742-
"key": "52a39b0e-b9ad-4fcf-9f25-cdbd0177b474",
2754+
"key": "22c51adc-1d3a-44dc-b134-056b3a34629c",
27432755
"params": {
27442756
"message": "Wait until user intervention"
27452757
}
27462758
},
27472759
{
27482760
"commandType": "pickUpTip",
2749-
"key": "15b6d898-7efb-434a-8cf3-42700c858a87",
2761+
"key": "380eef75-9f9f-49a1-b7e9-2c2e8226bb0d",
27502762
"params": {
27512763
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
27522764
"labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1",
@@ -2755,7 +2767,7 @@
27552767
},
27562768
{
27572769
"commandType": "aspirate",
2758-
"key": "552fdbac-3b8c-4e67-a600-68df4172ab3d",
2770+
"key": "5f3c99d6-af5b-43bf-9fc8-4dfd6adb5a84",
27592771
"params": {
27602772
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
27612773
"volume": 35,
@@ -2774,7 +2786,7 @@
27742786
},
27752787
{
27762788
"commandType": "dispense",
2777-
"key": "8e64ec0f-aae6-4039-9af4-5f7e54f91022",
2789+
"key": "a23b7f77-e397-47f8-9034-74bd0f972ded",
27782790
"params": {
27792791
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
27802792
"volume": 35,
@@ -2793,7 +2805,7 @@
27932805
},
27942806
{
27952807
"commandType": "aspirate",
2796-
"key": "26e546f8-26fa-4c3c-9e30-1721dcca0829",
2808+
"key": "eed0b98e-f626-4fcb-afd2-faeb1f65ec7a",
27972809
"params": {
27982810
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
27992811
"volume": 35,
@@ -2812,7 +2824,7 @@
28122824
},
28132825
{
28142826
"commandType": "dispense",
2815-
"key": "aa8f59a6-591a-421b-8d84-ad23b982fd8f",
2827+
"key": "42aa95b3-8732-44f7-95c5-2d37c25d5b2f",
28162828
"params": {
28172829
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28182830
"volume": 35,
@@ -2831,7 +2843,7 @@
28312843
},
28322844
{
28332845
"commandType": "aspirate",
2834-
"key": "f14e27c4-dd5e-4298-bed7-390a0a2bb9ac",
2846+
"key": "4b5b787d-8f63-4fa8-ac74-adf532414e4f",
28352847
"params": {
28362848
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28372849
"volume": 35,
@@ -2850,7 +2862,7 @@
28502862
},
28512863
{
28522864
"commandType": "dispense",
2853-
"key": "18f792d7-21a4-4c84-b32a-66e424eca473",
2865+
"key": "7a99c159-ac95-47b6-909f-4cd323718487",
28542866
"params": {
28552867
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28562868
"volume": 35,
@@ -2869,7 +2881,7 @@
28692881
},
28702882
{
28712883
"commandType": "moveToAddressableArea",
2872-
"key": "be3456c1-ec52-47da-a503-521bc3f67a65",
2884+
"key": "8b6e849f-97d2-4b98-9e9e-aae2316d6b0a",
28732885
"params": {
28742886
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28752887
"addressableAreaName": "fixedTrash",
@@ -2882,15 +2894,15 @@
28822894
},
28832895
{
28842896
"commandType": "blowOutInPlace",
2885-
"key": "7efbac2d-3a16-458a-9b6e-db22f78c7484",
2897+
"key": "7d7fa007-13dd-482b-ae31-b89c32bbd703",
28862898
"params": {
28872899
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28882900
"flowRate": 46.43
28892901
}
28902902
},
28912903
{
28922904
"commandType": "touchTip",
2893-
"key": "f304d8ae-b9ae-469a-b9e1-728f0831a966",
2905+
"key": "af31ea23-4317-4e8d-a518-73642660320e",
28942906
"params": {
28952907
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
28962908
"labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1",
@@ -2905,7 +2917,7 @@
29052917
},
29062918
{
29072919
"commandType": "moveToAddressableAreaForDropTip",
2908-
"key": "6dc42461-d584-4e29-a0a6-bee8b39abd4d",
2920+
"key": "694df1b8-ce40-4c29-80c5-d122ff6609ab",
29092921
"params": {
29102922
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29112923
"addressableAreaName": "fixedTrash",
@@ -2919,14 +2931,14 @@
29192931
},
29202932
{
29212933
"commandType": "dropTipInPlace",
2922-
"key": "09e15b9a-857c-4a40-9cd0-5cfbf3b19a04",
2934+
"key": "76bbb55c-8858-4ed1-aeac-f7101fe962e8",
29232935
"params": {
29242936
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5"
29252937
}
29262938
},
29272939
{
29282940
"commandType": "pickUpTip",
2929-
"key": "5b414a47-ea37-4863-8df1-acc2189a9a87",
2941+
"key": "4574884b-b082-42b7-9f4a-b23da0edfc07",
29302942
"params": {
29312943
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29322944
"labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1",
@@ -2935,7 +2947,7 @@
29352947
},
29362948
{
29372949
"commandType": "aspirate",
2938-
"key": "588b13ba-b592-447f-b38f-1b3e2fed13f2",
2950+
"key": "2c43b98c-0304-470d-a883-0a65ce042406",
29392951
"params": {
29402952
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29412953
"volume": 35,
@@ -2954,7 +2966,7 @@
29542966
},
29552967
{
29562968
"commandType": "dispense",
2957-
"key": "6dc99ddd-58ff-4ba3-a639-531242fed384",
2969+
"key": "c528a3f4-b17f-4ae3-9163-6ecdc184b704",
29582970
"params": {
29592971
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29602972
"volume": 35,
@@ -2973,7 +2985,7 @@
29732985
},
29742986
{
29752987
"commandType": "aspirate",
2976-
"key": "7bca4c13-0b9a-4b39-b873-2e3b02d4d755",
2988+
"key": "6ee6224f-c1b8-454c-879c-283218d8625a",
29772989
"params": {
29782990
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29792991
"volume": 35,
@@ -2992,7 +3004,7 @@
29923004
},
29933005
{
29943006
"commandType": "dispense",
2995-
"key": "b1101775-0ac7-4824-918b-f7e7d0ebcd26",
3007+
"key": "fb7cdb05-2936-4710-bc38-35570f455958",
29963008
"params": {
29973009
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
29983010
"volume": 35,
@@ -3011,7 +3023,7 @@
30113023
},
30123024
{
30133025
"commandType": "aspirate",
3014-
"key": "3f5d332e-c44a-44b9-94e4-89ca54957b9c",
3026+
"key": "2ed8a830-3be5-4d2c-8e3f-7746b09edac2",
30153027
"params": {
30163028
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30173029
"volume": 35,
@@ -3030,7 +3042,7 @@
30303042
},
30313043
{
30323044
"commandType": "dispense",
3033-
"key": "9fabc5cb-3c72-476f-b120-6b161a4d30f0",
3045+
"key": "29668d11-e662-4cde-a446-2f6a81db2972",
30343046
"params": {
30353047
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30363048
"volume": 35,
@@ -3049,7 +3061,7 @@
30493061
},
30503062
{
30513063
"commandType": "moveToAddressableArea",
3052-
"key": "584fa3cc-b28d-4bc3-a72c-fa280fa1ced7",
3064+
"key": "50bc04c7-58be-4860-ba75-1ab689ca2c55",
30533065
"params": {
30543066
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30553067
"addressableAreaName": "fixedTrash",
@@ -3062,15 +3074,15 @@
30623074
},
30633075
{
30643076
"commandType": "blowOutInPlace",
3065-
"key": "61b347bc-1e6c-4c9e-95fc-6f5e54f944f7",
3077+
"key": "e4374327-49c8-4b4b-83f1-6717b822b761",
30663078
"params": {
30673079
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30683080
"flowRate": 46.43
30693081
}
30703082
},
30713083
{
30723084
"commandType": "touchTip",
3073-
"key": "6fe3c4cc-5e5c-4e36-ae6f-7416cdd8dc42",
3085+
"key": "b552f381-6355-472d-aabf-c7cbede6caa0",
30743086
"params": {
30753087
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30763088
"labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1",
@@ -3085,7 +3097,7 @@
30853097
},
30863098
{
30873099
"commandType": "moveToAddressableAreaForDropTip",
3088-
"key": "9376953d-e1d5-4e6c-98a4-1bcab3e9cc87",
3100+
"key": "6cb151f7-b754-4b0a-823c-d88d8ad84888",
30893101
"params": {
30903102
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5",
30913103
"addressableAreaName": "fixedTrash",
@@ -3099,7 +3111,7 @@
30993111
},
31003112
{
31013113
"commandType": "dropTipInPlace",
3102-
"key": "b4734a5d-d2fd-49b0-b160-157ecc1465db",
3114+
"key": "3fc61315-c712-4131-a01e-32f0cc00a7db",
31033115
"params": {
31043116
"pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5"
31053117
}

0 commit comments

Comments
 (0)