opentrons 8.7.0a7__py3-none-any.whl → 8.7.0a8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of opentrons might be problematic. Click here for more details.
- opentrons/_version.py +2 -2
- opentrons/drivers/asyncio/communication/serial_connection.py +55 -129
- opentrons/drivers/flex_stacker/driver.py +6 -1
- opentrons/drivers/heater_shaker/abstract.py +0 -5
- opentrons/drivers/heater_shaker/driver.py +0 -10
- opentrons/drivers/heater_shaker/simulator.py +0 -4
- opentrons/drivers/thermocycler/abstract.py +0 -6
- opentrons/drivers/thermocycler/driver.py +10 -61
- opentrons/drivers/thermocycler/simulator.py +0 -6
- opentrons/hardware_control/api.py +5 -24
- opentrons/hardware_control/backends/controller.py +2 -8
- opentrons/hardware_control/backends/flex_protocol.py +1 -0
- opentrons/hardware_control/backends/ot3controller.py +3 -3
- opentrons/hardware_control/backends/ot3simulator.py +2 -2
- opentrons/hardware_control/backends/simulator.py +1 -2
- opentrons/hardware_control/backends/subsystem_manager.py +2 -5
- opentrons/hardware_control/emulation/abstract_emulator.py +4 -6
- opentrons/hardware_control/emulation/connection_handler.py +5 -8
- opentrons/hardware_control/emulation/heater_shaker.py +3 -12
- opentrons/hardware_control/emulation/settings.py +1 -1
- opentrons/hardware_control/emulation/thermocycler.py +15 -67
- opentrons/hardware_control/module_control.py +8 -82
- opentrons/hardware_control/modules/__init__.py +0 -3
- opentrons/hardware_control/modules/absorbance_reader.py +4 -11
- opentrons/hardware_control/modules/flex_stacker.py +9 -38
- opentrons/hardware_control/modules/heater_shaker.py +5 -42
- opentrons/hardware_control/modules/magdeck.py +4 -8
- opentrons/hardware_control/modules/mod_abc.py +5 -13
- opentrons/hardware_control/modules/tempdeck.py +5 -25
- opentrons/hardware_control/modules/thermocycler.py +11 -68
- opentrons/hardware_control/modules/types.py +1 -20
- opentrons/hardware_control/modules/utils.py +4 -11
- opentrons/hardware_control/nozzle_manager.py +0 -3
- opentrons/hardware_control/ot3api.py +7 -26
- opentrons/hardware_control/poller.py +8 -22
- opentrons/hardware_control/protocols/gripper_controller.py +1 -0
- opentrons/hardware_control/scripts/update_module_fw.py +0 -5
- opentrons/hardware_control/types.py +2 -31
- opentrons/legacy_commands/module_commands.py +0 -23
- opentrons/legacy_commands/protocol_commands.py +0 -20
- opentrons/legacy_commands/types.py +0 -80
- opentrons/motion_planning/deck_conflict.py +12 -17
- opentrons/motion_planning/waypoints.py +29 -15
- opentrons/protocol_api/__init__.py +1 -5
- opentrons/protocol_api/_types.py +1 -6
- opentrons/protocol_api/core/common.py +1 -3
- opentrons/protocol_api/core/engine/_default_labware_versions.py +11 -32
- opentrons/protocol_api/core/engine/labware.py +1 -8
- opentrons/protocol_api/core/engine/module_core.py +8 -75
- opentrons/protocol_api/core/engine/protocol.py +1 -18
- opentrons/protocol_api/core/engine/well.py +0 -8
- opentrons/protocol_api/core/legacy/legacy_module_core.py +4 -24
- opentrons/protocol_api/core/legacy/legacy_protocol_core.py +1 -11
- opentrons/protocol_api/core/legacy/legacy_well_core.py +0 -4
- opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +2 -14
- opentrons/protocol_api/core/module.py +4 -37
- opentrons/protocol_api/core/protocol.py +2 -11
- opentrons/protocol_api/core/well.py +0 -4
- opentrons/protocol_api/labware.py +0 -5
- opentrons/protocol_api/module_contexts.py +11 -117
- opentrons/protocol_api/protocol_context.py +4 -26
- opentrons/protocol_api/robot_context.py +21 -38
- opentrons/protocol_api/validation.py +1 -6
- opentrons/protocol_engine/actions/__init__.py +2 -4
- opentrons/protocol_engine/actions/actions.py +9 -22
- opentrons/protocol_engine/clients/sync_client.py +7 -42
- opentrons/protocol_engine/commands/__init__.py +0 -42
- opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +15 -2
- opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +15 -2
- opentrons/protocol_engine/commands/aspirate.py +0 -1
- opentrons/protocol_engine/commands/command.py +0 -1
- opentrons/protocol_engine/commands/command_unions.py +0 -49
- opentrons/protocol_engine/commands/dispense.py +0 -1
- opentrons/protocol_engine/commands/drop_tip.py +8 -32
- opentrons/protocol_engine/commands/heater_shaker/__init__.py +0 -14
- opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +4 -5
- opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +5 -31
- opentrons/protocol_engine/commands/movement_common.py +0 -2
- opentrons/protocol_engine/commands/pick_up_tip.py +11 -21
- opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +7 -38
- opentrons/protocol_engine/commands/thermocycler/__init__.py +0 -16
- opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +0 -6
- opentrons/protocol_engine/commands/thermocycler/run_profile.py +0 -8
- opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +6 -40
- opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +5 -29
- opentrons/protocol_engine/commands/touch_tip.py +1 -1
- opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +22 -6
- opentrons/protocol_engine/errors/__init__.py +0 -4
- opentrons/protocol_engine/errors/exceptions.py +0 -55
- opentrons/protocol_engine/execution/__init__.py +0 -2
- opentrons/protocol_engine/execution/command_executor.py +0 -8
- opentrons/protocol_engine/execution/create_queue_worker.py +1 -5
- opentrons/protocol_engine/execution/labware_movement.py +21 -10
- opentrons/protocol_engine/execution/movement.py +0 -2
- opentrons/protocol_engine/execution/queue_worker.py +0 -4
- opentrons/protocol_engine/execution/run_control.py +0 -8
- opentrons/protocol_engine/protocol_engine.py +34 -75
- opentrons/protocol_engine/resources/__init__.py +0 -2
- opentrons/protocol_engine/resources/deck_configuration_provider.py +0 -7
- opentrons/protocol_engine/resources/labware_validation.py +6 -10
- opentrons/protocol_engine/state/_labware_origin_math.py +636 -0
- opentrons/protocol_engine/state/_well_math.py +18 -60
- opentrons/protocol_engine/state/addressable_areas.py +0 -2
- opentrons/protocol_engine/state/commands.py +11 -14
- opentrons/protocol_engine/state/geometry.py +374 -213
- opentrons/protocol_engine/state/labware.py +102 -52
- opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +0 -37
- opentrons/protocol_engine/state/modules.py +8 -21
- opentrons/protocol_engine/state/motion.py +0 -44
- opentrons/protocol_engine/state/state.py +0 -14
- opentrons/protocol_engine/state/state_summary.py +0 -2
- opentrons/protocol_engine/state/tips.py +258 -177
- opentrons/protocol_engine/state/update_types.py +9 -16
- opentrons/protocol_engine/types/__init__.py +3 -9
- opentrons/protocol_engine/types/deck_configuration.py +1 -5
- opentrons/protocol_engine/types/instrument.py +1 -8
- opentrons/protocol_engine/types/labware.py +13 -1
- opentrons/protocol_engine/types/module.py +0 -10
- opentrons/protocol_engine/types/tip.py +0 -9
- opentrons/protocol_runner/create_simulating_orchestrator.py +2 -29
- opentrons/protocol_runner/run_orchestrator.py +2 -18
- opentrons/protocols/api_support/definitions.py +1 -1
- opentrons/protocols/api_support/types.py +1 -2
- opentrons/simulate.py +15 -48
- opentrons/system/camera.py +1 -1
- {opentrons-8.7.0a7.dist-info → opentrons-8.7.0a8.dist-info}/METADATA +4 -4
- {opentrons-8.7.0a7.dist-info → opentrons-8.7.0a8.dist-info}/RECORD +130 -146
- opentrons/protocol_api/core/engine/tasks.py +0 -48
- opentrons/protocol_api/core/legacy/tasks.py +0 -19
- opentrons/protocol_api/core/legacy_simulator/tasks.py +0 -19
- opentrons/protocol_api/core/tasks.py +0 -31
- opentrons/protocol_api/tasks.py +0 -48
- opentrons/protocol_engine/commands/create_timer.py +0 -83
- opentrons/protocol_engine/commands/heater_shaker/common.py +0 -20
- opentrons/protocol_engine/commands/heater_shaker/set_shake_speed.py +0 -136
- opentrons/protocol_engine/commands/set_tip_state.py +0 -97
- opentrons/protocol_engine/commands/thermocycler/start_run_extended_profile.py +0 -191
- opentrons/protocol_engine/commands/wait_for_tasks.py +0 -98
- opentrons/protocol_engine/execution/task_handler.py +0 -157
- opentrons/protocol_engine/resources/concurrency_provider.py +0 -27
- opentrons/protocol_engine/state/labware_origin_math/errors.py +0 -94
- opentrons/protocol_engine/state/labware_origin_math/stackup_origin_to_labware_origin.py +0 -1331
- opentrons/protocol_engine/state/tasks.py +0 -139
- opentrons/protocol_engine/types/tasks.py +0 -38
- {opentrons-8.7.0a7.dist-info → opentrons-8.7.0a8.dist-info}/WHEEL +0 -0
- {opentrons-8.7.0a7.dist-info → opentrons-8.7.0a8.dist-info}/entry_points.txt +0 -0
- {opentrons-8.7.0a7.dist-info → opentrons-8.7.0a8.dist-info}/licenses/LICENSE +0 -0
|
@@ -271,22 +271,6 @@ from .wait_for_duration import (
|
|
|
271
271
|
WaitForDurationCommandType,
|
|
272
272
|
)
|
|
273
273
|
|
|
274
|
-
from .create_timer import (
|
|
275
|
-
CreateTimer,
|
|
276
|
-
CreateTimerCreate,
|
|
277
|
-
CreateTimerParams,
|
|
278
|
-
CreateTimerResult,
|
|
279
|
-
CreateTimerCommandType,
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
from .wait_for_tasks import (
|
|
283
|
-
WaitForTasks,
|
|
284
|
-
WaitForTasksCreate,
|
|
285
|
-
WaitForTasksParams,
|
|
286
|
-
WaitForTasksResult,
|
|
287
|
-
WaitForTasksCommandType,
|
|
288
|
-
)
|
|
289
|
-
|
|
290
274
|
from .pick_up_tip import (
|
|
291
275
|
PickUpTip,
|
|
292
276
|
PickUpTipParams,
|
|
@@ -400,14 +384,6 @@ from .get_next_tip import (
|
|
|
400
384
|
GetNextTipCommandType,
|
|
401
385
|
)
|
|
402
386
|
|
|
403
|
-
from .set_tip_state import (
|
|
404
|
-
SetTipState,
|
|
405
|
-
SetTipStateCreate,
|
|
406
|
-
SetTipStateParams,
|
|
407
|
-
SetTipStateResult,
|
|
408
|
-
SetTipStateCommandType,
|
|
409
|
-
)
|
|
410
|
-
|
|
411
387
|
from .liquid_probe import (
|
|
412
388
|
LiquidProbe,
|
|
413
389
|
LiquidProbeParams,
|
|
@@ -643,12 +619,6 @@ __all__ = [
|
|
|
643
619
|
"WaitForDurationCreate",
|
|
644
620
|
"WaitForDurationResult",
|
|
645
621
|
"WaitForDurationCommandType",
|
|
646
|
-
# Timer command models
|
|
647
|
-
"CreateTimer",
|
|
648
|
-
"CreateTimerCreate",
|
|
649
|
-
"CreateTimerParams",
|
|
650
|
-
"CreateTimerResult",
|
|
651
|
-
"CreateTimerCommandType",
|
|
652
622
|
# pick up tip command models
|
|
653
623
|
"PickUpTip",
|
|
654
624
|
"PickUpTipCreate",
|
|
@@ -755,12 +725,6 @@ __all__ = [
|
|
|
755
725
|
"GetNextTipParams",
|
|
756
726
|
"GetNextTipResult",
|
|
757
727
|
"GetNextTipCommandType",
|
|
758
|
-
# set tip state command bundle
|
|
759
|
-
"SetTipState",
|
|
760
|
-
"SetTipStateCreate",
|
|
761
|
-
"SetTipStateParams",
|
|
762
|
-
"SetTipStateResult",
|
|
763
|
-
"SetTipStateCommandType",
|
|
764
728
|
# liquid probe command bundle
|
|
765
729
|
"LiquidProbe",
|
|
766
730
|
"LiquidProbeParams",
|
|
@@ -790,10 +754,4 @@ __all__ = [
|
|
|
790
754
|
"PressureDispenseCreate",
|
|
791
755
|
"PressureDispenseResult",
|
|
792
756
|
"PressureDispenseCommandType",
|
|
793
|
-
# wait for tasks command bundle
|
|
794
|
-
"WaitForTasks",
|
|
795
|
-
"WaitForTasksCreate",
|
|
796
|
-
"WaitForTasksParams",
|
|
797
|
-
"WaitForTasksResult",
|
|
798
|
-
"WaitForTasksCommandType",
|
|
799
757
|
]
|
|
@@ -102,12 +102,25 @@ class CloseLidImpl(AbstractCommandImpl[CloseLidParams, SuccessData[CloseLidResul
|
|
|
102
102
|
)
|
|
103
103
|
)
|
|
104
104
|
|
|
105
|
+
# The lid's labware definition stores gripper offsets for itself in the
|
|
106
|
+
# space normally meant for offsets for labware stacked atop it.
|
|
107
|
+
lid_gripper_offsets = self._state_view.labware.get_child_gripper_offsets(
|
|
108
|
+
labware_definition=lid_definition,
|
|
109
|
+
slot_name=None,
|
|
110
|
+
)
|
|
111
|
+
if lid_gripper_offsets is None:
|
|
112
|
+
raise ValueError(
|
|
113
|
+
"Gripper Offset values for Absorbance Reader Lid labware must not be None."
|
|
114
|
+
)
|
|
115
|
+
|
|
105
116
|
await self._labware_movement.move_labware_with_gripper(
|
|
106
117
|
labware_definition=lid_definition,
|
|
107
118
|
current_location=current_location,
|
|
108
119
|
new_location=new_location,
|
|
109
|
-
user_pick_up_offset=Point(
|
|
110
|
-
|
|
120
|
+
user_pick_up_offset=Point.from_xyz_attrs(
|
|
121
|
+
lid_gripper_offsets.pickUpOffset
|
|
122
|
+
),
|
|
123
|
+
user_drop_offset=Point.from_xyz_attrs(lid_gripper_offsets.dropOffset),
|
|
111
124
|
post_drop_slide_offset=None,
|
|
112
125
|
gripper_z_offset=LID_Z_CLEARANCE,
|
|
113
126
|
)
|
|
@@ -103,12 +103,25 @@ class OpenLidImpl(AbstractCommandImpl[OpenLidParams, SuccessData[OpenLidResult]]
|
|
|
103
103
|
mod_substate.module_id
|
|
104
104
|
)
|
|
105
105
|
|
|
106
|
+
# The lid's labware definition stores gripper offsets for itself in the
|
|
107
|
+
# space normally meant for offsets for labware stacked atop it.
|
|
108
|
+
lid_gripper_offsets = self._state_view.labware.get_child_gripper_offsets(
|
|
109
|
+
labware_definition=lid_definition,
|
|
110
|
+
slot_name=None,
|
|
111
|
+
)
|
|
112
|
+
if lid_gripper_offsets is None:
|
|
113
|
+
raise ValueError(
|
|
114
|
+
"Gripper Offset values for Absorbance Reader Lid labware must not be None."
|
|
115
|
+
)
|
|
116
|
+
|
|
106
117
|
await self._labware_movement.move_labware_with_gripper(
|
|
107
118
|
labware_definition=lid_definition,
|
|
108
119
|
current_location=current_location,
|
|
109
120
|
new_location=new_location,
|
|
110
|
-
user_pick_up_offset=Point(
|
|
111
|
-
|
|
121
|
+
user_pick_up_offset=Point.from_xyz_attrs(
|
|
122
|
+
lid_gripper_offsets.pickUpOffset
|
|
123
|
+
),
|
|
124
|
+
user_drop_offset=Point.from_xyz_attrs(lid_gripper_offsets.dropOffset),
|
|
112
125
|
post_drop_slide_offset=None,
|
|
113
126
|
gripper_z_offset=LID_Z_CLEARANCE,
|
|
114
127
|
)
|
|
@@ -161,7 +161,6 @@ class AspirateImplementation(AbstractCommandImpl[AspirateParams, _ExecuteReturn]
|
|
|
161
161
|
well_location=well_location,
|
|
162
162
|
current_well=current_well,
|
|
163
163
|
operation_volume=-params.volume,
|
|
164
|
-
offset_pipette_for_reservoir_subwells=False,
|
|
165
164
|
)
|
|
166
165
|
state_update.append(move_result.state_update)
|
|
167
166
|
if isinstance(move_result, DefinedErrorData):
|
|
@@ -185,7 +185,6 @@ class AbstractCommandImpl(
|
|
|
185
185
|
tip_handler: execution.TipHandler,
|
|
186
186
|
run_control: execution.RunControlHandler,
|
|
187
187
|
rail_lights: execution.RailLightsHandler,
|
|
188
|
-
task_handler: execution.TaskHandler,
|
|
189
188
|
model_utils: ModelUtils,
|
|
190
189
|
status_bar: execution.StatusBarHandler,
|
|
191
190
|
command_note_adder: CommandNoteAdder,
|
|
@@ -267,22 +267,6 @@ from .wait_for_duration import (
|
|
|
267
267
|
WaitForDurationCommandType,
|
|
268
268
|
)
|
|
269
269
|
|
|
270
|
-
from .create_timer import (
|
|
271
|
-
CreateTimer,
|
|
272
|
-
CreateTimerCreate,
|
|
273
|
-
CreateTimerParams,
|
|
274
|
-
CreateTimerResult,
|
|
275
|
-
CreateTimerCommandType,
|
|
276
|
-
)
|
|
277
|
-
|
|
278
|
-
from .wait_for_tasks import (
|
|
279
|
-
WaitForTasks,
|
|
280
|
-
WaitForTasksCreate,
|
|
281
|
-
WaitForTasksParams,
|
|
282
|
-
WaitForTasksResult,
|
|
283
|
-
WaitForTasksCommandType,
|
|
284
|
-
)
|
|
285
|
-
|
|
286
270
|
from .pick_up_tip import (
|
|
287
271
|
PickUpTip,
|
|
288
272
|
PickUpTipParams,
|
|
@@ -388,14 +372,6 @@ from .get_next_tip import (
|
|
|
388
372
|
GetNextTipCommandType,
|
|
389
373
|
)
|
|
390
374
|
|
|
391
|
-
from .set_tip_state import (
|
|
392
|
-
SetTipState,
|
|
393
|
-
SetTipStateCreate,
|
|
394
|
-
SetTipStateParams,
|
|
395
|
-
SetTipStateResult,
|
|
396
|
-
SetTipStateCommandType,
|
|
397
|
-
)
|
|
398
|
-
|
|
399
375
|
from .liquid_probe import (
|
|
400
376
|
LiquidProbe,
|
|
401
377
|
LiquidProbeParams,
|
|
@@ -478,8 +454,6 @@ Command = Annotated[
|
|
|
478
454
|
PrepareToAspirate,
|
|
479
455
|
WaitForResume,
|
|
480
456
|
WaitForDuration,
|
|
481
|
-
WaitForTasks,
|
|
482
|
-
CreateTimer,
|
|
483
457
|
PickUpTip,
|
|
484
458
|
SavePosition,
|
|
485
459
|
SetRailLights,
|
|
@@ -488,7 +462,6 @@ Command = Annotated[
|
|
|
488
462
|
VerifyTipPresence,
|
|
489
463
|
GetTipPresence,
|
|
490
464
|
GetNextTip,
|
|
491
|
-
SetTipState,
|
|
492
465
|
LiquidProbe,
|
|
493
466
|
TryLiquidProbe,
|
|
494
467
|
SealPipetteToTip,
|
|
@@ -498,7 +471,6 @@ Command = Annotated[
|
|
|
498
471
|
heater_shaker.SetTargetTemperature,
|
|
499
472
|
heater_shaker.DeactivateHeater,
|
|
500
473
|
heater_shaker.SetAndWaitForShakeSpeed,
|
|
501
|
-
heater_shaker.SetShakeSpeed,
|
|
502
474
|
heater_shaker.DeactivateShaker,
|
|
503
475
|
heater_shaker.OpenLabwareLatch,
|
|
504
476
|
heater_shaker.CloseLabwareLatch,
|
|
@@ -516,7 +488,6 @@ Command = Annotated[
|
|
|
516
488
|
thermocycler.OpenLid,
|
|
517
489
|
thermocycler.CloseLid,
|
|
518
490
|
thermocycler.RunProfile,
|
|
519
|
-
thermocycler.StartRunExtendedProfile,
|
|
520
491
|
thermocycler.RunExtendedProfile,
|
|
521
492
|
absorbance_reader.CloseLid,
|
|
522
493
|
absorbance_reader.OpenLid,
|
|
@@ -586,8 +557,6 @@ CommandParams = Union[
|
|
|
586
557
|
PrepareToAspirateParams,
|
|
587
558
|
WaitForResumeParams,
|
|
588
559
|
WaitForDurationParams,
|
|
589
|
-
WaitForTasksParams,
|
|
590
|
-
CreateTimerParams,
|
|
591
560
|
PickUpTipParams,
|
|
592
561
|
SavePositionParams,
|
|
593
562
|
SetRailLightsParams,
|
|
@@ -596,7 +565,6 @@ CommandParams = Union[
|
|
|
596
565
|
VerifyTipPresenceParams,
|
|
597
566
|
GetTipPresenceParams,
|
|
598
567
|
GetNextTipParams,
|
|
599
|
-
SetTipStateParams,
|
|
600
568
|
LiquidProbeParams,
|
|
601
569
|
TryLiquidProbeParams,
|
|
602
570
|
SealPipetteToTipParams,
|
|
@@ -606,7 +574,6 @@ CommandParams = Union[
|
|
|
606
574
|
heater_shaker.SetTargetTemperatureParams,
|
|
607
575
|
heater_shaker.DeactivateHeaterParams,
|
|
608
576
|
heater_shaker.SetAndWaitForShakeSpeedParams,
|
|
609
|
-
heater_shaker.SetShakeSpeedParams,
|
|
610
577
|
heater_shaker.DeactivateShakerParams,
|
|
611
578
|
heater_shaker.OpenLabwareLatchParams,
|
|
612
579
|
heater_shaker.CloseLabwareLatchParams,
|
|
@@ -624,7 +591,6 @@ CommandParams = Union[
|
|
|
624
591
|
thermocycler.OpenLidParams,
|
|
625
592
|
thermocycler.CloseLidParams,
|
|
626
593
|
thermocycler.RunProfileParams,
|
|
627
|
-
thermocycler.StartRunExtendedProfileParams,
|
|
628
594
|
thermocycler.RunExtendedProfileParams,
|
|
629
595
|
absorbance_reader.CloseLidParams,
|
|
630
596
|
absorbance_reader.OpenLidParams,
|
|
@@ -692,8 +658,6 @@ CommandType = Union[
|
|
|
692
658
|
PrepareToAspirateCommandType,
|
|
693
659
|
WaitForResumeCommandType,
|
|
694
660
|
WaitForDurationCommandType,
|
|
695
|
-
WaitForTasksCommandType,
|
|
696
|
-
CreateTimerCommandType,
|
|
697
661
|
PickUpTipCommandType,
|
|
698
662
|
SavePositionCommandType,
|
|
699
663
|
SetRailLightsCommandType,
|
|
@@ -702,7 +666,6 @@ CommandType = Union[
|
|
|
702
666
|
VerifyTipPresenceCommandType,
|
|
703
667
|
GetTipPresenceCommandType,
|
|
704
668
|
GetNextTipCommandType,
|
|
705
|
-
SetTipStateCommandType,
|
|
706
669
|
LiquidProbeCommandType,
|
|
707
670
|
TryLiquidProbeCommandType,
|
|
708
671
|
SealPipetteToTipCommandType,
|
|
@@ -712,7 +675,6 @@ CommandType = Union[
|
|
|
712
675
|
heater_shaker.SetTargetTemperatureCommandType,
|
|
713
676
|
heater_shaker.DeactivateHeaterCommandType,
|
|
714
677
|
heater_shaker.SetAndWaitForShakeSpeedCommandType,
|
|
715
|
-
heater_shaker.SetShakeSpeedCommandType,
|
|
716
678
|
heater_shaker.DeactivateShakerCommandType,
|
|
717
679
|
heater_shaker.OpenLabwareLatchCommandType,
|
|
718
680
|
heater_shaker.CloseLabwareLatchCommandType,
|
|
@@ -730,7 +692,6 @@ CommandType = Union[
|
|
|
730
692
|
thermocycler.OpenLidCommandType,
|
|
731
693
|
thermocycler.CloseLidCommandType,
|
|
732
694
|
thermocycler.RunProfileCommandType,
|
|
733
|
-
thermocycler.StartRunExtendedProfileCommandType,
|
|
734
695
|
thermocycler.RunExtendedProfileCommandType,
|
|
735
696
|
absorbance_reader.CloseLidCommandType,
|
|
736
697
|
absorbance_reader.OpenLidCommandType,
|
|
@@ -799,8 +760,6 @@ CommandCreate = Annotated[
|
|
|
799
760
|
PrepareToAspirateCreate,
|
|
800
761
|
WaitForResumeCreate,
|
|
801
762
|
WaitForDurationCreate,
|
|
802
|
-
WaitForTasksCreate,
|
|
803
|
-
CreateTimerCreate,
|
|
804
763
|
PickUpTipCreate,
|
|
805
764
|
SavePositionCreate,
|
|
806
765
|
SetRailLightsCreate,
|
|
@@ -809,7 +768,6 @@ CommandCreate = Annotated[
|
|
|
809
768
|
VerifyTipPresenceCreate,
|
|
810
769
|
GetTipPresenceCreate,
|
|
811
770
|
GetNextTipCreate,
|
|
812
|
-
SetTipStateCreate,
|
|
813
771
|
LiquidProbeCreate,
|
|
814
772
|
TryLiquidProbeCreate,
|
|
815
773
|
SealPipetteToTipCreate,
|
|
@@ -819,7 +777,6 @@ CommandCreate = Annotated[
|
|
|
819
777
|
heater_shaker.SetTargetTemperatureCreate,
|
|
820
778
|
heater_shaker.DeactivateHeaterCreate,
|
|
821
779
|
heater_shaker.SetAndWaitForShakeSpeedCreate,
|
|
822
|
-
heater_shaker.SetShakeSpeedCreate,
|
|
823
780
|
heater_shaker.DeactivateShakerCreate,
|
|
824
781
|
heater_shaker.OpenLabwareLatchCreate,
|
|
825
782
|
heater_shaker.CloseLabwareLatchCreate,
|
|
@@ -837,7 +794,6 @@ CommandCreate = Annotated[
|
|
|
837
794
|
thermocycler.OpenLidCreate,
|
|
838
795
|
thermocycler.CloseLidCreate,
|
|
839
796
|
thermocycler.RunProfileCreate,
|
|
840
|
-
thermocycler.StartRunExtendedProfileCreate,
|
|
841
797
|
thermocycler.RunExtendedProfileCreate,
|
|
842
798
|
absorbance_reader.CloseLidCreate,
|
|
843
799
|
absorbance_reader.OpenLidCreate,
|
|
@@ -914,8 +870,6 @@ CommandResult = Union[
|
|
|
914
870
|
PrepareToAspirateResult,
|
|
915
871
|
WaitForResumeResult,
|
|
916
872
|
WaitForDurationResult,
|
|
917
|
-
WaitForTasksResult,
|
|
918
|
-
CreateTimerResult,
|
|
919
873
|
PickUpTipResult,
|
|
920
874
|
SavePositionResult,
|
|
921
875
|
SetRailLightsResult,
|
|
@@ -924,7 +878,6 @@ CommandResult = Union[
|
|
|
924
878
|
VerifyTipPresenceResult,
|
|
925
879
|
GetTipPresenceResult,
|
|
926
880
|
GetNextTipResult,
|
|
927
|
-
SetTipStateResult,
|
|
928
881
|
LiquidProbeResult,
|
|
929
882
|
TryLiquidProbeResult,
|
|
930
883
|
SealPipetteToTipResult,
|
|
@@ -934,7 +887,6 @@ CommandResult = Union[
|
|
|
934
887
|
heater_shaker.SetTargetTemperatureResult,
|
|
935
888
|
heater_shaker.DeactivateHeaterResult,
|
|
936
889
|
heater_shaker.SetAndWaitForShakeSpeedResult,
|
|
937
|
-
heater_shaker.SetShakeSpeedResult,
|
|
938
890
|
heater_shaker.DeactivateShakerResult,
|
|
939
891
|
heater_shaker.OpenLabwareLatchResult,
|
|
940
892
|
heater_shaker.CloseLabwareLatchResult,
|
|
@@ -952,7 +904,6 @@ CommandResult = Union[
|
|
|
952
904
|
thermocycler.OpenLidResult,
|
|
953
905
|
thermocycler.CloseLidResult,
|
|
954
906
|
thermocycler.RunProfileResult,
|
|
955
|
-
thermocycler.StartRunExtendedProfileResult,
|
|
956
907
|
thermocycler.RunExtendedProfileResult,
|
|
957
908
|
absorbance_reader.CloseLidResult,
|
|
958
909
|
absorbance_reader.OpenLidResult,
|
|
@@ -101,7 +101,6 @@ class DispenseImplementation(AbstractCommandImpl[DispenseParams, _ExecuteReturn]
|
|
|
101
101
|
well_name=well_name,
|
|
102
102
|
well_location=well_location,
|
|
103
103
|
operation_volume=volume,
|
|
104
|
-
offset_pipette_for_reservoir_subwells=False,
|
|
105
104
|
)
|
|
106
105
|
if isinstance(move_result, DefinedErrorData):
|
|
107
106
|
return move_result
|
|
@@ -12,7 +12,7 @@ from opentrons.protocol_engine.errors.exceptions import TipAttachedError
|
|
|
12
12
|
from opentrons.protocol_engine.resources.model_utils import ModelUtils
|
|
13
13
|
|
|
14
14
|
from ..state.update_types import StateUpdate
|
|
15
|
-
from ..types import DropTipWellLocation
|
|
15
|
+
from ..types import DropTipWellLocation
|
|
16
16
|
from .pipetting_common import (
|
|
17
17
|
PipetteIdMixin,
|
|
18
18
|
TipPhysicallyAttachedError,
|
|
@@ -140,25 +140,6 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
140
140
|
partially_configured=is_partially_configured,
|
|
141
141
|
)
|
|
142
142
|
|
|
143
|
-
is_tip_rack = self._state_view.labware.get_definition(
|
|
144
|
-
labware_id
|
|
145
|
-
).parameters.isTiprack
|
|
146
|
-
|
|
147
|
-
# It's possible that we are dropping tips into a labware trash for pre API v2.14 OT-2 protocols
|
|
148
|
-
# (or something else unexpected), so if it is not a tip rack mark no wells as used
|
|
149
|
-
if is_tip_rack:
|
|
150
|
-
tips_to_mark_as_used = (
|
|
151
|
-
self._state_view.tips.compute_tips_to_mark_as_used_or_empty(
|
|
152
|
-
labware_id=labware_id,
|
|
153
|
-
well_name=well_name,
|
|
154
|
-
nozzle_map=self._state_view.pipettes.get_nozzle_configuration(
|
|
155
|
-
pipette_id
|
|
156
|
-
),
|
|
157
|
-
)
|
|
158
|
-
)
|
|
159
|
-
else:
|
|
160
|
-
tips_to_mark_as_used = []
|
|
161
|
-
|
|
162
143
|
move_result = await move_to_well(
|
|
163
144
|
movement=self._movement_handler,
|
|
164
145
|
model_utils=self._model_utils,
|
|
@@ -171,7 +152,12 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
171
152
|
return move_result
|
|
172
153
|
|
|
173
154
|
scrape_type = TipScrapeType.NONE
|
|
174
|
-
if
|
|
155
|
+
if (
|
|
156
|
+
params.scrape_tips
|
|
157
|
+
and self._state_view.geometry._labware.get_definition(
|
|
158
|
+
labware_id
|
|
159
|
+
).parameters.isTiprack
|
|
160
|
+
):
|
|
175
161
|
if int("".join(filter(str.isdigit, well_name))) <= 6:
|
|
176
162
|
scrape_type = TipScrapeType.RIGHT_ONE_COL
|
|
177
163
|
else:
|
|
@@ -208,10 +194,6 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
208
194
|
pipette_id=params.pipetteId,
|
|
209
195
|
tip_geometry=None,
|
|
210
196
|
tip_source=None,
|
|
211
|
-
).update_tip_rack_well_state(
|
|
212
|
-
tip_state=TipRackWellState.USED,
|
|
213
|
-
labware_id=labware_id,
|
|
214
|
-
well_names=tips_to_mark_as_used,
|
|
215
197
|
),
|
|
216
198
|
)
|
|
217
199
|
else:
|
|
@@ -219,16 +201,10 @@ class DropTipImplementation(AbstractCommandImpl[DropTipParams, _ExecuteReturn]):
|
|
|
219
201
|
public=DropTipResult(position=move_result.public.position),
|
|
220
202
|
state_update=move_result.state_update.set_fluid_unknown(
|
|
221
203
|
pipette_id=pipette_id
|
|
222
|
-
)
|
|
223
|
-
.update_pipette_tip_state(
|
|
204
|
+
).update_pipette_tip_state(
|
|
224
205
|
pipette_id=params.pipetteId,
|
|
225
206
|
tip_geometry=None,
|
|
226
207
|
tip_source=None,
|
|
227
|
-
)
|
|
228
|
-
.update_tip_rack_well_state(
|
|
229
|
-
tip_state=TipRackWellState.USED,
|
|
230
|
-
labware_id=labware_id,
|
|
231
|
-
well_names=tips_to_mark_as_used,
|
|
232
208
|
),
|
|
233
209
|
)
|
|
234
210
|
|
|
@@ -32,14 +32,6 @@ from .set_and_wait_for_shake_speed import (
|
|
|
32
32
|
SetAndWaitForShakeSpeedCommandType,
|
|
33
33
|
)
|
|
34
34
|
|
|
35
|
-
from .set_shake_speed import (
|
|
36
|
-
SetShakeSpeed,
|
|
37
|
-
SetShakeSpeedCreate,
|
|
38
|
-
SetShakeSpeedParams,
|
|
39
|
-
SetShakeSpeedResult,
|
|
40
|
-
SetShakeSpeedCommandType,
|
|
41
|
-
)
|
|
42
|
-
|
|
43
35
|
from .deactivate_shaker import (
|
|
44
36
|
DeactivateShaker,
|
|
45
37
|
DeactivateShakerCreate,
|
|
@@ -89,12 +81,6 @@ __all__ = [
|
|
|
89
81
|
"SetAndWaitForShakeSpeedParams",
|
|
90
82
|
"SetAndWaitForShakeSpeedResult",
|
|
91
83
|
"SetAndWaitForShakeSpeedCommandType",
|
|
92
|
-
# heaterShaker/setShakeSpeed
|
|
93
|
-
"SetShakeSpeed",
|
|
94
|
-
"SetShakeSpeedCreate",
|
|
95
|
-
"SetShakeSpeedParams",
|
|
96
|
-
"SetShakeSpeedResult",
|
|
97
|
-
"SetShakeSpeedCommandType",
|
|
98
84
|
# heaterShaker/deactivateShaker
|
|
99
85
|
"DeactivateShaker",
|
|
100
86
|
"DeactivateShakerCreate",
|
|
@@ -8,8 +8,6 @@ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, Succe
|
|
|
8
8
|
from ...errors.error_occurrence import ErrorOccurrence
|
|
9
9
|
from ...state import update_types
|
|
10
10
|
|
|
11
|
-
from .common import get_heatershaker_ready_to_shake
|
|
12
|
-
|
|
13
11
|
if TYPE_CHECKING:
|
|
14
12
|
from opentrons.protocol_engine.state.state import StateView
|
|
15
13
|
from opentrons.protocol_engine.execution import EquipmentHandler, MovementHandler
|
|
@@ -66,9 +64,10 @@ class SetAndWaitForShakeSpeedImpl(
|
|
|
66
64
|
module_id=params.moduleId
|
|
67
65
|
)
|
|
68
66
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
hs_module_substate.raise_if_labware_latch_not_closed()
|
|
68
|
+
|
|
69
|
+
# Verify speed from hs module view
|
|
70
|
+
validated_speed = hs_module_substate.validate_target_speed(params.rpm)
|
|
72
71
|
|
|
73
72
|
pipette_should_retract = (
|
|
74
73
|
self._state_view.motion.check_pipette_blocking_hs_shaker(
|
|
@@ -1,47 +1,31 @@
|
|
|
1
1
|
"""Command models to start heating a Heater-Shaker Module."""
|
|
2
2
|
from __future__ import annotations
|
|
3
|
-
from typing import Optional, TYPE_CHECKING
|
|
3
|
+
from typing import Optional, TYPE_CHECKING
|
|
4
4
|
from typing_extensions import Literal, Type
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
|
-
from pydantic.json_schema import SkipJsonSchema
|
|
8
7
|
|
|
9
8
|
from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData
|
|
10
9
|
from ...errors.error_occurrence import ErrorOccurrence
|
|
11
10
|
|
|
12
11
|
if TYPE_CHECKING:
|
|
13
12
|
from opentrons.protocol_engine.state.state import StateView
|
|
14
|
-
from opentrons.protocol_engine.execution import EquipmentHandler
|
|
13
|
+
from opentrons.protocol_engine.execution import EquipmentHandler
|
|
15
14
|
|
|
16
15
|
|
|
17
16
|
SetTargetTemperatureCommandType = Literal["heaterShaker/setTargetTemperature"]
|
|
18
17
|
|
|
19
18
|
|
|
20
|
-
def _remove_default(s: dict[str, Any]) -> None:
|
|
21
|
-
s.pop("default", None)
|
|
22
|
-
|
|
23
|
-
|
|
24
19
|
class SetTargetTemperatureParams(BaseModel):
|
|
25
20
|
"""Input parameters to set a Heater-Shaker's target temperature."""
|
|
26
21
|
|
|
27
22
|
moduleId: str = Field(..., description="Unique ID of the Heater-Shaker Module.")
|
|
28
23
|
celsius: float = Field(..., description="Target temperature in °C.")
|
|
29
|
-
taskId: str | SkipJsonSchema[None] = Field(
|
|
30
|
-
None,
|
|
31
|
-
description="Id for the background task that manages the temperature",
|
|
32
|
-
json_schema_extra=_remove_default,
|
|
33
|
-
)
|
|
34
24
|
|
|
35
25
|
|
|
36
26
|
class SetTargetTemperatureResult(BaseModel):
|
|
37
27
|
"""Result data from setting a Heater-Shaker's target temperature."""
|
|
38
28
|
|
|
39
|
-
taskId: str | SkipJsonSchema[None] = Field(
|
|
40
|
-
None,
|
|
41
|
-
description="The task id for the setTargetTemperature task",
|
|
42
|
-
json_schema_extra=_remove_default,
|
|
43
|
-
)
|
|
44
|
-
|
|
45
29
|
|
|
46
30
|
class SetTargetTemperatureImpl(
|
|
47
31
|
AbstractCommandImpl[
|
|
@@ -54,12 +38,10 @@ class SetTargetTemperatureImpl(
|
|
|
54
38
|
self,
|
|
55
39
|
state_view: StateView,
|
|
56
40
|
equipment: EquipmentHandler,
|
|
57
|
-
task_handler: TaskHandler,
|
|
58
41
|
**unused_dependencies: object,
|
|
59
42
|
) -> None:
|
|
60
43
|
self._state_view = state_view
|
|
61
44
|
self._equipment = equipment
|
|
62
|
-
self._task_handler = task_handler
|
|
63
45
|
|
|
64
46
|
async def execute(
|
|
65
47
|
self,
|
|
@@ -79,19 +61,11 @@ class SetTargetTemperatureImpl(
|
|
|
79
61
|
hs_module_substate.module_id
|
|
80
62
|
)
|
|
81
63
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
async with task_handler.synchronize_cancel_previous(
|
|
85
|
-
hs_module_substate.module_id
|
|
86
|
-
):
|
|
87
|
-
await hs_hardware_module.start_set_temperature(validated_temp)
|
|
88
|
-
await hs_hardware_module.await_temperature(validated_temp)
|
|
64
|
+
if hs_hardware_module is not None:
|
|
65
|
+
await hs_hardware_module.start_set_temperature(validated_temp)
|
|
89
66
|
|
|
90
|
-
task = await self._task_handler.create_task(
|
|
91
|
-
task_function=start_set_temperature, id=params.taskId
|
|
92
|
-
)
|
|
93
67
|
return SuccessData(
|
|
94
|
-
public=SetTargetTemperatureResult(
|
|
68
|
+
public=SetTargetTemperatureResult(),
|
|
95
69
|
)
|
|
96
70
|
|
|
97
71
|
|
|
@@ -152,7 +152,6 @@ async def move_to_well(
|
|
|
152
152
|
minimum_z_height: Optional[float] = None,
|
|
153
153
|
speed: Optional[float] = None,
|
|
154
154
|
operation_volume: Optional[float] = None,
|
|
155
|
-
offset_pipette_for_reservoir_subwells: bool = False,
|
|
156
155
|
) -> MoveToWellOperationReturn:
|
|
157
156
|
"""Execute a move to well microoperation."""
|
|
158
157
|
try:
|
|
@@ -166,7 +165,6 @@ async def move_to_well(
|
|
|
166
165
|
minimum_z_height=minimum_z_height,
|
|
167
166
|
speed=speed,
|
|
168
167
|
operation_volume=operation_volume,
|
|
169
|
-
offset_pipette_for_reservoir_subwells=offset_pipette_for_reservoir_subwells,
|
|
170
168
|
)
|
|
171
169
|
except StallOrCollisionDetectedError as e:
|
|
172
170
|
return DefinedErrorData(
|
|
@@ -10,7 +10,7 @@ from typing_extensions import Literal
|
|
|
10
10
|
from ..errors import ErrorOccurrence, PickUpTipTipNotAttachedError
|
|
11
11
|
from ..resources import ModelUtils
|
|
12
12
|
from ..state import update_types
|
|
13
|
-
from ..types import PickUpTipWellLocation, LabwareWellId
|
|
13
|
+
from ..types import PickUpTipWellLocation, LabwareWellId
|
|
14
14
|
from .pipetting_common import (
|
|
15
15
|
PipetteIdMixin,
|
|
16
16
|
)
|
|
@@ -121,14 +121,10 @@ class PickUpTipImplementation(AbstractCommandImpl[PickUpTipParams, _ExecuteRetur
|
|
|
121
121
|
labware_id = params.labwareId
|
|
122
122
|
well_name = params.wellName
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
nozzle_map=self._state_view.pipettes.get_nozzle_configuration(
|
|
129
|
-
pipette_id
|
|
130
|
-
),
|
|
131
|
-
)
|
|
124
|
+
tips_to_mark_as_used = self._state_view.tips.compute_tips_to_mark_as_used(
|
|
125
|
+
labware_id=labware_id,
|
|
126
|
+
well_name=well_name,
|
|
127
|
+
nozzle_map=self._state_view.pipettes.get_nozzle_configuration(pipette_id),
|
|
132
128
|
)
|
|
133
129
|
|
|
134
130
|
well_location = self._state_view.geometry.convert_pick_up_tip_well_location(
|
|
@@ -164,20 +160,16 @@ class PickUpTipImplementation(AbstractCommandImpl[PickUpTipParams, _ExecuteRetur
|
|
|
164
160
|
),
|
|
165
161
|
)
|
|
166
162
|
.set_fluid_empty(pipette_id=pipette_id, clean_tip=True)
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
labware_id=labware_id,
|
|
170
|
-
well_names=tips_to_mark_as_empty,
|
|
163
|
+
.mark_tips_as_used(
|
|
164
|
+
labware_id=labware_id, well_names=tips_to_mark_as_used
|
|
171
165
|
)
|
|
172
166
|
)
|
|
173
167
|
state_update = (
|
|
174
168
|
update_types.StateUpdate.reduce(
|
|
175
169
|
update_types.StateUpdate(), move_result.state_update
|
|
176
170
|
)
|
|
177
|
-
.
|
|
178
|
-
|
|
179
|
-
labware_id=labware_id,
|
|
180
|
-
well_names=tips_to_mark_as_empty,
|
|
171
|
+
.mark_tips_as_used(
|
|
172
|
+
labware_id=labware_id, well_names=tips_to_mark_as_used
|
|
181
173
|
)
|
|
182
174
|
.set_fluid_unknown(pipette_id=pipette_id)
|
|
183
175
|
)
|
|
@@ -205,10 +197,8 @@ class PickUpTipImplementation(AbstractCommandImpl[PickUpTipParams, _ExecuteRetur
|
|
|
205
197
|
labware_id=labware_id, well_name=well_name
|
|
206
198
|
),
|
|
207
199
|
)
|
|
208
|
-
.
|
|
209
|
-
|
|
210
|
-
labware_id=labware_id,
|
|
211
|
-
well_names=tips_to_mark_as_empty,
|
|
200
|
+
.mark_tips_as_used(
|
|
201
|
+
labware_id=labware_id, well_names=tips_to_mark_as_used
|
|
212
202
|
)
|
|
213
203
|
.set_fluid_empty(pipette_id=pipette_id, clean_tip=True)
|
|
214
204
|
.set_pipette_ready_to_aspirate(
|