opentrons 8.6.0a1__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/__init__.py +150 -0
- opentrons/_version.py +34 -0
- opentrons/calibration_storage/__init__.py +54 -0
- opentrons/calibration_storage/deck_configuration.py +62 -0
- opentrons/calibration_storage/encoder_decoder.py +31 -0
- opentrons/calibration_storage/file_operators.py +142 -0
- opentrons/calibration_storage/helpers.py +103 -0
- opentrons/calibration_storage/ot2/__init__.py +34 -0
- opentrons/calibration_storage/ot2/deck_attitude.py +85 -0
- opentrons/calibration_storage/ot2/mark_bad_calibration.py +27 -0
- opentrons/calibration_storage/ot2/models/__init__.py +0 -0
- opentrons/calibration_storage/ot2/models/v1.py +149 -0
- opentrons/calibration_storage/ot2/pipette_offset.py +129 -0
- opentrons/calibration_storage/ot2/tip_length.py +281 -0
- opentrons/calibration_storage/ot3/__init__.py +31 -0
- opentrons/calibration_storage/ot3/deck_attitude.py +83 -0
- opentrons/calibration_storage/ot3/gripper_offset.py +156 -0
- opentrons/calibration_storage/ot3/models/__init__.py +0 -0
- opentrons/calibration_storage/ot3/models/v1.py +122 -0
- opentrons/calibration_storage/ot3/module_offset.py +138 -0
- opentrons/calibration_storage/ot3/pipette_offset.py +95 -0
- opentrons/calibration_storage/types.py +45 -0
- opentrons/cli/__init__.py +21 -0
- opentrons/cli/__main__.py +5 -0
- opentrons/cli/analyze.py +501 -0
- opentrons/config/__init__.py +631 -0
- opentrons/config/advanced_settings.py +871 -0
- opentrons/config/defaults_ot2.py +214 -0
- opentrons/config/defaults_ot3.py +499 -0
- opentrons/config/feature_flags.py +86 -0
- opentrons/config/gripper_config.py +55 -0
- opentrons/config/reset.py +203 -0
- opentrons/config/robot_configs.py +187 -0
- opentrons/config/types.py +183 -0
- opentrons/drivers/__init__.py +0 -0
- opentrons/drivers/absorbance_reader/__init__.py +11 -0
- opentrons/drivers/absorbance_reader/abstract.py +72 -0
- opentrons/drivers/absorbance_reader/async_byonoy.py +352 -0
- opentrons/drivers/absorbance_reader/driver.py +81 -0
- opentrons/drivers/absorbance_reader/hid_protocol.py +161 -0
- opentrons/drivers/absorbance_reader/simulator.py +84 -0
- opentrons/drivers/asyncio/__init__.py +0 -0
- opentrons/drivers/asyncio/communication/__init__.py +22 -0
- opentrons/drivers/asyncio/communication/async_serial.py +183 -0
- opentrons/drivers/asyncio/communication/errors.py +88 -0
- opentrons/drivers/asyncio/communication/serial_connection.py +552 -0
- opentrons/drivers/command_builder.py +102 -0
- opentrons/drivers/flex_stacker/__init__.py +13 -0
- opentrons/drivers/flex_stacker/abstract.py +214 -0
- opentrons/drivers/flex_stacker/driver.py +768 -0
- opentrons/drivers/flex_stacker/errors.py +68 -0
- opentrons/drivers/flex_stacker/simulator.py +309 -0
- opentrons/drivers/flex_stacker/types.py +367 -0
- opentrons/drivers/flex_stacker/utils.py +19 -0
- opentrons/drivers/heater_shaker/__init__.py +5 -0
- opentrons/drivers/heater_shaker/abstract.py +76 -0
- opentrons/drivers/heater_shaker/driver.py +204 -0
- opentrons/drivers/heater_shaker/simulator.py +94 -0
- opentrons/drivers/mag_deck/__init__.py +6 -0
- opentrons/drivers/mag_deck/abstract.py +44 -0
- opentrons/drivers/mag_deck/driver.py +208 -0
- opentrons/drivers/mag_deck/simulator.py +63 -0
- opentrons/drivers/rpi_drivers/__init__.py +33 -0
- opentrons/drivers/rpi_drivers/dev_types.py +94 -0
- opentrons/drivers/rpi_drivers/gpio.py +282 -0
- opentrons/drivers/rpi_drivers/gpio_simulator.py +127 -0
- opentrons/drivers/rpi_drivers/interfaces.py +15 -0
- opentrons/drivers/rpi_drivers/types.py +364 -0
- opentrons/drivers/rpi_drivers/usb.py +102 -0
- opentrons/drivers/rpi_drivers/usb_simulator.py +22 -0
- opentrons/drivers/serial_communication.py +151 -0
- opentrons/drivers/smoothie_drivers/__init__.py +4 -0
- opentrons/drivers/smoothie_drivers/connection.py +51 -0
- opentrons/drivers/smoothie_drivers/constants.py +121 -0
- opentrons/drivers/smoothie_drivers/driver_3_0.py +1933 -0
- opentrons/drivers/smoothie_drivers/errors.py +49 -0
- opentrons/drivers/smoothie_drivers/parse_utils.py +143 -0
- opentrons/drivers/smoothie_drivers/simulator.py +99 -0
- opentrons/drivers/smoothie_drivers/types.py +16 -0
- opentrons/drivers/temp_deck/__init__.py +10 -0
- opentrons/drivers/temp_deck/abstract.py +54 -0
- opentrons/drivers/temp_deck/driver.py +197 -0
- opentrons/drivers/temp_deck/simulator.py +57 -0
- opentrons/drivers/thermocycler/__init__.py +12 -0
- opentrons/drivers/thermocycler/abstract.py +99 -0
- opentrons/drivers/thermocycler/driver.py +395 -0
- opentrons/drivers/thermocycler/simulator.py +126 -0
- opentrons/drivers/types.py +107 -0
- opentrons/drivers/utils.py +222 -0
- opentrons/execute.py +742 -0
- opentrons/hardware_control/__init__.py +65 -0
- opentrons/hardware_control/__main__.py +77 -0
- opentrons/hardware_control/adapters.py +98 -0
- opentrons/hardware_control/api.py +1347 -0
- opentrons/hardware_control/backends/__init__.py +7 -0
- opentrons/hardware_control/backends/controller.py +400 -0
- opentrons/hardware_control/backends/errors.py +9 -0
- opentrons/hardware_control/backends/estop_state.py +164 -0
- opentrons/hardware_control/backends/flex_protocol.py +497 -0
- opentrons/hardware_control/backends/ot3controller.py +1930 -0
- opentrons/hardware_control/backends/ot3simulator.py +900 -0
- opentrons/hardware_control/backends/ot3utils.py +664 -0
- opentrons/hardware_control/backends/simulator.py +442 -0
- opentrons/hardware_control/backends/status_bar_state.py +240 -0
- opentrons/hardware_control/backends/subsystem_manager.py +431 -0
- opentrons/hardware_control/backends/tip_presence_manager.py +173 -0
- opentrons/hardware_control/backends/types.py +14 -0
- opentrons/hardware_control/constants.py +6 -0
- opentrons/hardware_control/dev_types.py +125 -0
- opentrons/hardware_control/emulation/__init__.py +0 -0
- opentrons/hardware_control/emulation/abstract_emulator.py +21 -0
- opentrons/hardware_control/emulation/app.py +56 -0
- opentrons/hardware_control/emulation/connection_handler.py +38 -0
- opentrons/hardware_control/emulation/heater_shaker.py +150 -0
- opentrons/hardware_control/emulation/magdeck.py +60 -0
- opentrons/hardware_control/emulation/module_server/__init__.py +8 -0
- opentrons/hardware_control/emulation/module_server/client.py +78 -0
- opentrons/hardware_control/emulation/module_server/helpers.py +130 -0
- opentrons/hardware_control/emulation/module_server/models.py +31 -0
- opentrons/hardware_control/emulation/module_server/server.py +110 -0
- opentrons/hardware_control/emulation/parser.py +74 -0
- opentrons/hardware_control/emulation/proxy.py +241 -0
- opentrons/hardware_control/emulation/run_emulator.py +68 -0
- opentrons/hardware_control/emulation/scripts/__init__.py +0 -0
- opentrons/hardware_control/emulation/scripts/run_app.py +54 -0
- opentrons/hardware_control/emulation/scripts/run_module_emulator.py +72 -0
- opentrons/hardware_control/emulation/scripts/run_smoothie.py +37 -0
- opentrons/hardware_control/emulation/settings.py +119 -0
- opentrons/hardware_control/emulation/simulations.py +133 -0
- opentrons/hardware_control/emulation/smoothie.py +192 -0
- opentrons/hardware_control/emulation/tempdeck.py +69 -0
- opentrons/hardware_control/emulation/thermocycler.py +128 -0
- opentrons/hardware_control/emulation/types.py +10 -0
- opentrons/hardware_control/emulation/util.py +38 -0
- opentrons/hardware_control/errors.py +43 -0
- opentrons/hardware_control/execution_manager.py +164 -0
- opentrons/hardware_control/instruments/__init__.py +5 -0
- opentrons/hardware_control/instruments/instrument_abc.py +39 -0
- opentrons/hardware_control/instruments/ot2/__init__.py +0 -0
- opentrons/hardware_control/instruments/ot2/instrument_calibration.py +152 -0
- opentrons/hardware_control/instruments/ot2/pipette.py +777 -0
- opentrons/hardware_control/instruments/ot2/pipette_handler.py +995 -0
- opentrons/hardware_control/instruments/ot3/__init__.py +0 -0
- opentrons/hardware_control/instruments/ot3/gripper.py +420 -0
- opentrons/hardware_control/instruments/ot3/gripper_handler.py +173 -0
- opentrons/hardware_control/instruments/ot3/instrument_calibration.py +214 -0
- opentrons/hardware_control/instruments/ot3/pipette.py +858 -0
- opentrons/hardware_control/instruments/ot3/pipette_handler.py +1030 -0
- opentrons/hardware_control/module_control.py +332 -0
- opentrons/hardware_control/modules/__init__.py +69 -0
- opentrons/hardware_control/modules/absorbance_reader.py +373 -0
- opentrons/hardware_control/modules/errors.py +7 -0
- opentrons/hardware_control/modules/flex_stacker.py +948 -0
- opentrons/hardware_control/modules/heater_shaker.py +426 -0
- opentrons/hardware_control/modules/lid_temp_status.py +35 -0
- opentrons/hardware_control/modules/magdeck.py +233 -0
- opentrons/hardware_control/modules/mod_abc.py +245 -0
- opentrons/hardware_control/modules/module_calibration.py +93 -0
- opentrons/hardware_control/modules/plate_temp_status.py +61 -0
- opentrons/hardware_control/modules/tempdeck.py +299 -0
- opentrons/hardware_control/modules/thermocycler.py +731 -0
- opentrons/hardware_control/modules/types.py +417 -0
- opentrons/hardware_control/modules/update.py +255 -0
- opentrons/hardware_control/modules/utils.py +73 -0
- opentrons/hardware_control/motion_utilities.py +318 -0
- opentrons/hardware_control/nozzle_manager.py +422 -0
- opentrons/hardware_control/ot3_calibration.py +1171 -0
- opentrons/hardware_control/ot3api.py +3227 -0
- opentrons/hardware_control/pause_manager.py +31 -0
- opentrons/hardware_control/poller.py +112 -0
- opentrons/hardware_control/protocols/__init__.py +106 -0
- opentrons/hardware_control/protocols/asyncio_configurable.py +11 -0
- opentrons/hardware_control/protocols/calibratable.py +45 -0
- opentrons/hardware_control/protocols/chassis_accessory_manager.py +90 -0
- opentrons/hardware_control/protocols/configurable.py +48 -0
- opentrons/hardware_control/protocols/event_sourcer.py +18 -0
- opentrons/hardware_control/protocols/execution_controllable.py +33 -0
- opentrons/hardware_control/protocols/flex_calibratable.py +96 -0
- opentrons/hardware_control/protocols/flex_instrument_configurer.py +52 -0
- opentrons/hardware_control/protocols/gripper_controller.py +55 -0
- opentrons/hardware_control/protocols/hardware_manager.py +51 -0
- opentrons/hardware_control/protocols/identifiable.py +16 -0
- opentrons/hardware_control/protocols/instrument_configurer.py +206 -0
- opentrons/hardware_control/protocols/liquid_handler.py +266 -0
- opentrons/hardware_control/protocols/module_provider.py +16 -0
- opentrons/hardware_control/protocols/motion_controller.py +243 -0
- opentrons/hardware_control/protocols/position_estimator.py +45 -0
- opentrons/hardware_control/protocols/simulatable.py +10 -0
- opentrons/hardware_control/protocols/stoppable.py +9 -0
- opentrons/hardware_control/protocols/types.py +27 -0
- opentrons/hardware_control/robot_calibration.py +224 -0
- opentrons/hardware_control/scripts/README.md +28 -0
- opentrons/hardware_control/scripts/__init__.py +1 -0
- opentrons/hardware_control/scripts/gripper_control.py +208 -0
- opentrons/hardware_control/scripts/ot3gripper +7 -0
- opentrons/hardware_control/scripts/ot3repl +7 -0
- opentrons/hardware_control/scripts/repl.py +187 -0
- opentrons/hardware_control/scripts/tc_control.py +97 -0
- opentrons/hardware_control/simulator_setup.py +260 -0
- opentrons/hardware_control/thread_manager.py +431 -0
- opentrons/hardware_control/threaded_async_lock.py +97 -0
- opentrons/hardware_control/types.py +792 -0
- opentrons/hardware_control/util.py +234 -0
- opentrons/legacy_broker.py +53 -0
- opentrons/legacy_commands/__init__.py +1 -0
- opentrons/legacy_commands/commands.py +483 -0
- opentrons/legacy_commands/helpers.py +153 -0
- opentrons/legacy_commands/module_commands.py +215 -0
- opentrons/legacy_commands/protocol_commands.py +54 -0
- opentrons/legacy_commands/publisher.py +155 -0
- opentrons/legacy_commands/robot_commands.py +51 -0
- opentrons/legacy_commands/types.py +1115 -0
- opentrons/motion_planning/__init__.py +32 -0
- opentrons/motion_planning/adjacent_slots_getters.py +168 -0
- opentrons/motion_planning/deck_conflict.py +396 -0
- opentrons/motion_planning/errors.py +35 -0
- opentrons/motion_planning/types.py +42 -0
- opentrons/motion_planning/waypoints.py +218 -0
- opentrons/ordered_set.py +138 -0
- opentrons/protocol_api/__init__.py +105 -0
- opentrons/protocol_api/_liquid.py +157 -0
- opentrons/protocol_api/_liquid_properties.py +814 -0
- opentrons/protocol_api/_nozzle_layout.py +31 -0
- opentrons/protocol_api/_parameter_context.py +300 -0
- opentrons/protocol_api/_parameters.py +31 -0
- opentrons/protocol_api/_transfer_liquid_validation.py +108 -0
- opentrons/protocol_api/_types.py +43 -0
- opentrons/protocol_api/config.py +23 -0
- opentrons/protocol_api/core/__init__.py +23 -0
- opentrons/protocol_api/core/common.py +33 -0
- opentrons/protocol_api/core/core_map.py +74 -0
- opentrons/protocol_api/core/engine/__init__.py +22 -0
- opentrons/protocol_api/core/engine/_default_labware_versions.py +179 -0
- opentrons/protocol_api/core/engine/deck_conflict.py +348 -0
- opentrons/protocol_api/core/engine/exceptions.py +19 -0
- opentrons/protocol_api/core/engine/instrument.py +2391 -0
- opentrons/protocol_api/core/engine/labware.py +238 -0
- opentrons/protocol_api/core/engine/load_labware_params.py +73 -0
- opentrons/protocol_api/core/engine/module_core.py +1025 -0
- opentrons/protocol_api/core/engine/overlap_versions.py +20 -0
- opentrons/protocol_api/core/engine/pipette_movement_conflict.py +358 -0
- opentrons/protocol_api/core/engine/point_calculations.py +64 -0
- opentrons/protocol_api/core/engine/protocol.py +1153 -0
- opentrons/protocol_api/core/engine/robot.py +139 -0
- opentrons/protocol_api/core/engine/stringify.py +74 -0
- opentrons/protocol_api/core/engine/transfer_components_executor.py +990 -0
- opentrons/protocol_api/core/engine/well.py +241 -0
- opentrons/protocol_api/core/instrument.py +459 -0
- opentrons/protocol_api/core/labware.py +151 -0
- opentrons/protocol_api/core/legacy/__init__.py +11 -0
- opentrons/protocol_api/core/legacy/_labware_geometry.py +37 -0
- opentrons/protocol_api/core/legacy/deck.py +369 -0
- opentrons/protocol_api/core/legacy/labware_offset_provider.py +108 -0
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py +709 -0
- opentrons/protocol_api/core/legacy/legacy_labware_core.py +235 -0
- opentrons/protocol_api/core/legacy/legacy_module_core.py +592 -0
- opentrons/protocol_api/core/legacy/legacy_protocol_core.py +612 -0
- opentrons/protocol_api/core/legacy/legacy_well_core.py +162 -0
- opentrons/protocol_api/core/legacy/load_info.py +67 -0
- opentrons/protocol_api/core/legacy/module_geometry.py +547 -0
- opentrons/protocol_api/core/legacy/well_geometry.py +148 -0
- opentrons/protocol_api/core/legacy_simulator/__init__.py +16 -0
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +624 -0
- opentrons/protocol_api/core/legacy_simulator/legacy_protocol_core.py +85 -0
- opentrons/protocol_api/core/module.py +484 -0
- opentrons/protocol_api/core/protocol.py +311 -0
- opentrons/protocol_api/core/robot.py +51 -0
- opentrons/protocol_api/core/well.py +116 -0
- opentrons/protocol_api/core/well_grid.py +45 -0
- opentrons/protocol_api/create_protocol_context.py +177 -0
- opentrons/protocol_api/deck.py +223 -0
- opentrons/protocol_api/disposal_locations.py +244 -0
- opentrons/protocol_api/instrument_context.py +3212 -0
- opentrons/protocol_api/labware.py +1579 -0
- opentrons/protocol_api/module_contexts.py +1425 -0
- opentrons/protocol_api/module_validation_and_errors.py +61 -0
- opentrons/protocol_api/protocol_context.py +1688 -0
- opentrons/protocol_api/robot_context.py +303 -0
- opentrons/protocol_api/validation.py +761 -0
- opentrons/protocol_engine/__init__.py +155 -0
- opentrons/protocol_engine/actions/__init__.py +65 -0
- opentrons/protocol_engine/actions/action_dispatcher.py +30 -0
- opentrons/protocol_engine/actions/action_handler.py +13 -0
- opentrons/protocol_engine/actions/actions.py +302 -0
- opentrons/protocol_engine/actions/get_state_update.py +38 -0
- opentrons/protocol_engine/clients/__init__.py +5 -0
- opentrons/protocol_engine/clients/sync_client.py +174 -0
- opentrons/protocol_engine/clients/transports.py +197 -0
- opentrons/protocol_engine/commands/__init__.py +757 -0
- opentrons/protocol_engine/commands/absorbance_reader/__init__.py +61 -0
- opentrons/protocol_engine/commands/absorbance_reader/close_lid.py +154 -0
- opentrons/protocol_engine/commands/absorbance_reader/common.py +6 -0
- opentrons/protocol_engine/commands/absorbance_reader/initialize.py +151 -0
- opentrons/protocol_engine/commands/absorbance_reader/open_lid.py +154 -0
- opentrons/protocol_engine/commands/absorbance_reader/read.py +226 -0
- opentrons/protocol_engine/commands/air_gap_in_place.py +162 -0
- opentrons/protocol_engine/commands/aspirate.py +244 -0
- opentrons/protocol_engine/commands/aspirate_in_place.py +184 -0
- opentrons/protocol_engine/commands/aspirate_while_tracking.py +211 -0
- opentrons/protocol_engine/commands/blow_out.py +146 -0
- opentrons/protocol_engine/commands/blow_out_in_place.py +119 -0
- opentrons/protocol_engine/commands/calibration/__init__.py +60 -0
- opentrons/protocol_engine/commands/calibration/calibrate_gripper.py +166 -0
- opentrons/protocol_engine/commands/calibration/calibrate_module.py +117 -0
- opentrons/protocol_engine/commands/calibration/calibrate_pipette.py +96 -0
- opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +156 -0
- opentrons/protocol_engine/commands/command.py +308 -0
- opentrons/protocol_engine/commands/command_unions.py +974 -0
- opentrons/protocol_engine/commands/comment.py +57 -0
- opentrons/protocol_engine/commands/configure_for_volume.py +108 -0
- opentrons/protocol_engine/commands/configure_nozzle_layout.py +115 -0
- opentrons/protocol_engine/commands/custom.py +67 -0
- opentrons/protocol_engine/commands/dispense.py +194 -0
- opentrons/protocol_engine/commands/dispense_in_place.py +179 -0
- opentrons/protocol_engine/commands/dispense_while_tracking.py +204 -0
- opentrons/protocol_engine/commands/drop_tip.py +232 -0
- opentrons/protocol_engine/commands/drop_tip_in_place.py +205 -0
- opentrons/protocol_engine/commands/flex_stacker/__init__.py +64 -0
- opentrons/protocol_engine/commands/flex_stacker/common.py +900 -0
- opentrons/protocol_engine/commands/flex_stacker/empty.py +293 -0
- opentrons/protocol_engine/commands/flex_stacker/fill.py +281 -0
- opentrons/protocol_engine/commands/flex_stacker/retrieve.py +339 -0
- opentrons/protocol_engine/commands/flex_stacker/set_stored_labware.py +328 -0
- opentrons/protocol_engine/commands/flex_stacker/store.py +326 -0
- opentrons/protocol_engine/commands/generate_command_schema.py +61 -0
- opentrons/protocol_engine/commands/get_next_tip.py +134 -0
- opentrons/protocol_engine/commands/get_tip_presence.py +87 -0
- opentrons/protocol_engine/commands/hash_command_params.py +38 -0
- opentrons/protocol_engine/commands/heater_shaker/__init__.py +102 -0
- opentrons/protocol_engine/commands/heater_shaker/close_labware_latch.py +83 -0
- opentrons/protocol_engine/commands/heater_shaker/deactivate_heater.py +82 -0
- opentrons/protocol_engine/commands/heater_shaker/deactivate_shaker.py +84 -0
- opentrons/protocol_engine/commands/heater_shaker/open_labware_latch.py +110 -0
- opentrons/protocol_engine/commands/heater_shaker/set_and_wait_for_shake_speed.py +125 -0
- opentrons/protocol_engine/commands/heater_shaker/set_target_temperature.py +90 -0
- opentrons/protocol_engine/commands/heater_shaker/wait_for_temperature.py +102 -0
- opentrons/protocol_engine/commands/home.py +100 -0
- opentrons/protocol_engine/commands/identify_module.py +86 -0
- opentrons/protocol_engine/commands/labware_handling_common.py +29 -0
- opentrons/protocol_engine/commands/liquid_probe.py +464 -0
- opentrons/protocol_engine/commands/load_labware.py +210 -0
- opentrons/protocol_engine/commands/load_lid.py +154 -0
- opentrons/protocol_engine/commands/load_lid_stack.py +272 -0
- opentrons/protocol_engine/commands/load_liquid.py +95 -0
- opentrons/protocol_engine/commands/load_liquid_class.py +144 -0
- opentrons/protocol_engine/commands/load_module.py +223 -0
- opentrons/protocol_engine/commands/load_pipette.py +167 -0
- opentrons/protocol_engine/commands/magnetic_module/__init__.py +32 -0
- opentrons/protocol_engine/commands/magnetic_module/disengage.py +97 -0
- opentrons/protocol_engine/commands/magnetic_module/engage.py +119 -0
- opentrons/protocol_engine/commands/move_labware.py +546 -0
- opentrons/protocol_engine/commands/move_relative.py +102 -0
- opentrons/protocol_engine/commands/move_to_addressable_area.py +176 -0
- opentrons/protocol_engine/commands/move_to_addressable_area_for_drop_tip.py +198 -0
- opentrons/protocol_engine/commands/move_to_coordinates.py +107 -0
- opentrons/protocol_engine/commands/move_to_well.py +119 -0
- opentrons/protocol_engine/commands/movement_common.py +338 -0
- opentrons/protocol_engine/commands/pick_up_tip.py +241 -0
- opentrons/protocol_engine/commands/pipetting_common.py +443 -0
- opentrons/protocol_engine/commands/prepare_to_aspirate.py +121 -0
- opentrons/protocol_engine/commands/pressure_dispense.py +155 -0
- opentrons/protocol_engine/commands/reload_labware.py +90 -0
- opentrons/protocol_engine/commands/retract_axis.py +75 -0
- opentrons/protocol_engine/commands/robot/__init__.py +70 -0
- opentrons/protocol_engine/commands/robot/close_gripper_jaw.py +96 -0
- opentrons/protocol_engine/commands/robot/common.py +18 -0
- opentrons/protocol_engine/commands/robot/move_axes_relative.py +101 -0
- opentrons/protocol_engine/commands/robot/move_axes_to.py +100 -0
- opentrons/protocol_engine/commands/robot/move_to.py +94 -0
- opentrons/protocol_engine/commands/robot/open_gripper_jaw.py +86 -0
- opentrons/protocol_engine/commands/save_position.py +109 -0
- opentrons/protocol_engine/commands/seal_pipette_to_tip.py +353 -0
- opentrons/protocol_engine/commands/set_rail_lights.py +67 -0
- opentrons/protocol_engine/commands/set_status_bar.py +89 -0
- opentrons/protocol_engine/commands/temperature_module/__init__.py +46 -0
- opentrons/protocol_engine/commands/temperature_module/deactivate.py +86 -0
- opentrons/protocol_engine/commands/temperature_module/set_target_temperature.py +97 -0
- opentrons/protocol_engine/commands/temperature_module/wait_for_temperature.py +104 -0
- opentrons/protocol_engine/commands/thermocycler/__init__.py +152 -0
- opentrons/protocol_engine/commands/thermocycler/close_lid.py +87 -0
- opentrons/protocol_engine/commands/thermocycler/deactivate_block.py +80 -0
- opentrons/protocol_engine/commands/thermocycler/deactivate_lid.py +80 -0
- opentrons/protocol_engine/commands/thermocycler/open_lid.py +87 -0
- opentrons/protocol_engine/commands/thermocycler/run_extended_profile.py +171 -0
- opentrons/protocol_engine/commands/thermocycler/run_profile.py +124 -0
- opentrons/protocol_engine/commands/thermocycler/set_target_block_temperature.py +140 -0
- opentrons/protocol_engine/commands/thermocycler/set_target_lid_temperature.py +100 -0
- opentrons/protocol_engine/commands/thermocycler/wait_for_block_temperature.py +93 -0
- opentrons/protocol_engine/commands/thermocycler/wait_for_lid_temperature.py +89 -0
- opentrons/protocol_engine/commands/touch_tip.py +189 -0
- opentrons/protocol_engine/commands/unsafe/__init__.py +161 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_blow_out_in_place.py +100 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_drop_tip_in_place.py +121 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +82 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +208 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_stacker_close_latch.py +94 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_stacker_manual_retrieve.py +295 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_stacker_open_latch.py +91 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_stacker_prepare_shuttle.py +136 -0
- opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +77 -0
- opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +90 -0
- opentrons/protocol_engine/commands/unseal_pipette_from_tip.py +153 -0
- opentrons/protocol_engine/commands/verify_tip_presence.py +100 -0
- opentrons/protocol_engine/commands/wait_for_duration.py +76 -0
- opentrons/protocol_engine/commands/wait_for_resume.py +75 -0
- opentrons/protocol_engine/create_protocol_engine.py +193 -0
- opentrons/protocol_engine/engine_support.py +28 -0
- opentrons/protocol_engine/error_recovery_policy.py +81 -0
- opentrons/protocol_engine/errors/__init__.py +191 -0
- opentrons/protocol_engine/errors/error_occurrence.py +182 -0
- opentrons/protocol_engine/errors/exceptions.py +1308 -0
- opentrons/protocol_engine/execution/__init__.py +50 -0
- opentrons/protocol_engine/execution/command_executor.py +216 -0
- opentrons/protocol_engine/execution/create_queue_worker.py +102 -0
- opentrons/protocol_engine/execution/door_watcher.py +119 -0
- opentrons/protocol_engine/execution/equipment.py +819 -0
- opentrons/protocol_engine/execution/error_recovery_hardware_state_synchronizer.py +101 -0
- opentrons/protocol_engine/execution/gantry_mover.py +686 -0
- opentrons/protocol_engine/execution/hardware_stopper.py +147 -0
- opentrons/protocol_engine/execution/heater_shaker_movement_flagger.py +207 -0
- opentrons/protocol_engine/execution/labware_movement.py +297 -0
- opentrons/protocol_engine/execution/movement.py +349 -0
- opentrons/protocol_engine/execution/pipetting.py +607 -0
- opentrons/protocol_engine/execution/queue_worker.py +86 -0
- opentrons/protocol_engine/execution/rail_lights.py +25 -0
- opentrons/protocol_engine/execution/run_control.py +33 -0
- opentrons/protocol_engine/execution/status_bar.py +34 -0
- opentrons/protocol_engine/execution/thermocycler_movement_flagger.py +188 -0
- opentrons/protocol_engine/execution/thermocycler_plate_lifter.py +81 -0
- opentrons/protocol_engine/execution/tip_handler.py +550 -0
- opentrons/protocol_engine/labware_offset_standardization.py +194 -0
- opentrons/protocol_engine/notes/__init__.py +17 -0
- opentrons/protocol_engine/notes/notes.py +59 -0
- opentrons/protocol_engine/plugins.py +104 -0
- opentrons/protocol_engine/protocol_engine.py +683 -0
- opentrons/protocol_engine/resources/__init__.py +26 -0
- opentrons/protocol_engine/resources/deck_configuration_provider.py +232 -0
- opentrons/protocol_engine/resources/deck_data_provider.py +94 -0
- opentrons/protocol_engine/resources/file_provider.py +161 -0
- opentrons/protocol_engine/resources/fixture_validation.py +58 -0
- opentrons/protocol_engine/resources/labware_data_provider.py +106 -0
- opentrons/protocol_engine/resources/labware_validation.py +73 -0
- opentrons/protocol_engine/resources/model_utils.py +32 -0
- opentrons/protocol_engine/resources/module_data_provider.py +44 -0
- opentrons/protocol_engine/resources/ot3_validation.py +21 -0
- opentrons/protocol_engine/resources/pipette_data_provider.py +379 -0
- opentrons/protocol_engine/slot_standardization.py +128 -0
- opentrons/protocol_engine/state/__init__.py +1 -0
- opentrons/protocol_engine/state/_abstract_store.py +27 -0
- opentrons/protocol_engine/state/_axis_aligned_bounding_box.py +50 -0
- opentrons/protocol_engine/state/_labware_origin_math.py +636 -0
- opentrons/protocol_engine/state/_move_types.py +83 -0
- opentrons/protocol_engine/state/_well_math.py +193 -0
- opentrons/protocol_engine/state/addressable_areas.py +699 -0
- opentrons/protocol_engine/state/command_history.py +309 -0
- opentrons/protocol_engine/state/commands.py +1158 -0
- opentrons/protocol_engine/state/config.py +39 -0
- opentrons/protocol_engine/state/files.py +57 -0
- opentrons/protocol_engine/state/fluid_stack.py +138 -0
- opentrons/protocol_engine/state/geometry.py +2359 -0
- opentrons/protocol_engine/state/inner_well_math_utils.py +548 -0
- opentrons/protocol_engine/state/labware.py +1459 -0
- opentrons/protocol_engine/state/liquid_classes.py +82 -0
- opentrons/protocol_engine/state/liquids.py +73 -0
- opentrons/protocol_engine/state/module_substates/__init__.py +45 -0
- opentrons/protocol_engine/state/module_substates/absorbance_reader_substate.py +35 -0
- opentrons/protocol_engine/state/module_substates/flex_stacker_substate.py +112 -0
- opentrons/protocol_engine/state/module_substates/heater_shaker_module_substate.py +115 -0
- opentrons/protocol_engine/state/module_substates/magnetic_block_substate.py +17 -0
- opentrons/protocol_engine/state/module_substates/magnetic_module_substate.py +65 -0
- opentrons/protocol_engine/state/module_substates/temperature_module_substate.py +67 -0
- opentrons/protocol_engine/state/module_substates/thermocycler_module_substate.py +163 -0
- opentrons/protocol_engine/state/modules.py +1500 -0
- opentrons/protocol_engine/state/motion.py +373 -0
- opentrons/protocol_engine/state/pipettes.py +905 -0
- opentrons/protocol_engine/state/state.py +421 -0
- opentrons/protocol_engine/state/state_summary.py +36 -0
- opentrons/protocol_engine/state/tips.py +420 -0
- opentrons/protocol_engine/state/update_types.py +904 -0
- opentrons/protocol_engine/state/wells.py +290 -0
- opentrons/protocol_engine/types/__init__.py +308 -0
- opentrons/protocol_engine/types/automatic_tip_selection.py +39 -0
- opentrons/protocol_engine/types/command_annotations.py +53 -0
- opentrons/protocol_engine/types/deck_configuration.py +81 -0
- opentrons/protocol_engine/types/execution.py +96 -0
- opentrons/protocol_engine/types/hardware_passthrough.py +25 -0
- opentrons/protocol_engine/types/instrument.py +47 -0
- opentrons/protocol_engine/types/instrument_sensors.py +47 -0
- opentrons/protocol_engine/types/labware.py +131 -0
- opentrons/protocol_engine/types/labware_movement.py +22 -0
- opentrons/protocol_engine/types/labware_offset_location.py +111 -0
- opentrons/protocol_engine/types/labware_offset_vector.py +16 -0
- opentrons/protocol_engine/types/liquid.py +40 -0
- opentrons/protocol_engine/types/liquid_class.py +59 -0
- opentrons/protocol_engine/types/liquid_handling.py +13 -0
- opentrons/protocol_engine/types/liquid_level_detection.py +191 -0
- opentrons/protocol_engine/types/location.py +194 -0
- opentrons/protocol_engine/types/module.py +303 -0
- opentrons/protocol_engine/types/partial_tip_configuration.py +76 -0
- opentrons/protocol_engine/types/run_time_parameters.py +133 -0
- opentrons/protocol_engine/types/tip.py +18 -0
- opentrons/protocol_engine/types/util.py +21 -0
- opentrons/protocol_engine/types/well_position.py +124 -0
- opentrons/protocol_reader/__init__.py +37 -0
- opentrons/protocol_reader/extract_labware_definitions.py +66 -0
- opentrons/protocol_reader/file_format_validator.py +152 -0
- opentrons/protocol_reader/file_hasher.py +27 -0
- opentrons/protocol_reader/file_identifier.py +284 -0
- opentrons/protocol_reader/file_reader_writer.py +90 -0
- opentrons/protocol_reader/input_file.py +16 -0
- opentrons/protocol_reader/protocol_files_invalid_error.py +6 -0
- opentrons/protocol_reader/protocol_reader.py +188 -0
- opentrons/protocol_reader/protocol_source.py +124 -0
- opentrons/protocol_reader/role_analyzer.py +86 -0
- opentrons/protocol_runner/__init__.py +26 -0
- opentrons/protocol_runner/create_simulating_orchestrator.py +118 -0
- opentrons/protocol_runner/json_file_reader.py +55 -0
- opentrons/protocol_runner/json_translator.py +314 -0
- opentrons/protocol_runner/legacy_command_mapper.py +848 -0
- opentrons/protocol_runner/legacy_context_plugin.py +116 -0
- opentrons/protocol_runner/protocol_runner.py +530 -0
- opentrons/protocol_runner/python_protocol_wrappers.py +179 -0
- opentrons/protocol_runner/run_orchestrator.py +496 -0
- opentrons/protocol_runner/task_queue.py +95 -0
- opentrons/protocols/__init__.py +6 -0
- opentrons/protocols/advanced_control/__init__.py +0 -0
- opentrons/protocols/advanced_control/common.py +38 -0
- opentrons/protocols/advanced_control/mix.py +60 -0
- opentrons/protocols/advanced_control/transfers/__init__.py +0 -0
- opentrons/protocols/advanced_control/transfers/common.py +180 -0
- opentrons/protocols/advanced_control/transfers/transfer.py +972 -0
- opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +231 -0
- opentrons/protocols/api_support/__init__.py +0 -0
- opentrons/protocols/api_support/constants.py +8 -0
- opentrons/protocols/api_support/deck_type.py +110 -0
- opentrons/protocols/api_support/definitions.py +18 -0
- opentrons/protocols/api_support/instrument.py +151 -0
- opentrons/protocols/api_support/labware_like.py +233 -0
- opentrons/protocols/api_support/tip_tracker.py +175 -0
- opentrons/protocols/api_support/types.py +32 -0
- opentrons/protocols/api_support/util.py +403 -0
- opentrons/protocols/bundle.py +89 -0
- opentrons/protocols/duration/__init__.py +4 -0
- opentrons/protocols/duration/errors.py +5 -0
- opentrons/protocols/duration/estimator.py +628 -0
- opentrons/protocols/execution/__init__.py +0 -0
- opentrons/protocols/execution/dev_types.py +181 -0
- opentrons/protocols/execution/errors.py +40 -0
- opentrons/protocols/execution/execute.py +84 -0
- opentrons/protocols/execution/execute_json_v3.py +275 -0
- opentrons/protocols/execution/execute_json_v4.py +359 -0
- opentrons/protocols/execution/execute_json_v5.py +28 -0
- opentrons/protocols/execution/execute_python.py +169 -0
- opentrons/protocols/execution/json_dispatchers.py +87 -0
- opentrons/protocols/execution/types.py +7 -0
- opentrons/protocols/geometry/__init__.py +0 -0
- opentrons/protocols/geometry/planning.py +297 -0
- opentrons/protocols/labware.py +312 -0
- opentrons/protocols/models/__init__.py +0 -0
- opentrons/protocols/models/json_protocol.py +679 -0
- opentrons/protocols/parameters/__init__.py +0 -0
- opentrons/protocols/parameters/csv_parameter_definition.py +77 -0
- opentrons/protocols/parameters/csv_parameter_interface.py +96 -0
- opentrons/protocols/parameters/exceptions.py +34 -0
- opentrons/protocols/parameters/parameter_definition.py +272 -0
- opentrons/protocols/parameters/types.py +17 -0
- opentrons/protocols/parameters/validation.py +267 -0
- opentrons/protocols/parse.py +671 -0
- opentrons/protocols/types.py +159 -0
- opentrons/py.typed +0 -0
- opentrons/resources/scripts/lpc21isp +0 -0
- opentrons/resources/smoothie-edge-8414642.hex +23010 -0
- opentrons/simulate.py +1065 -0
- opentrons/system/__init__.py +6 -0
- opentrons/system/camera.py +51 -0
- opentrons/system/log_control.py +59 -0
- opentrons/system/nmcli.py +856 -0
- opentrons/system/resin.py +24 -0
- opentrons/system/smoothie_update.py +15 -0
- opentrons/system/wifi.py +204 -0
- opentrons/tools/__init__.py +0 -0
- opentrons/tools/args_handler.py +22 -0
- opentrons/tools/write_pipette_memory.py +157 -0
- opentrons/types.py +618 -0
- opentrons/util/__init__.py +1 -0
- opentrons/util/async_helpers.py +166 -0
- opentrons/util/broker.py +84 -0
- opentrons/util/change_notifier.py +47 -0
- opentrons/util/entrypoint_util.py +278 -0
- opentrons/util/get_union_elements.py +26 -0
- opentrons/util/helpers.py +6 -0
- opentrons/util/linal.py +178 -0
- opentrons/util/logging_config.py +265 -0
- opentrons/util/logging_queue_handler.py +61 -0
- opentrons/util/performance_helpers.py +157 -0
- opentrons-8.6.0a1.dist-info/METADATA +37 -0
- opentrons-8.6.0a1.dist-info/RECORD +600 -0
- opentrons-8.6.0a1.dist-info/WHEEL +4 -0
- opentrons-8.6.0a1.dist-info/entry_points.txt +3 -0
- opentrons-8.6.0a1.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,679 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This was initially generated by datamodel-codegen from the protocol schema in
|
|
3
|
+
shared-data. It's been modified by hand to be more friendly.
|
|
4
|
+
|
|
5
|
+
TODO: 20210330 Amit - consider moving this to opentrons-shared-data.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any, Dict, List, Optional, Union
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, BaseModel, Field
|
|
13
|
+
from typing_extensions import Literal
|
|
14
|
+
|
|
15
|
+
from opentrons_shared_data.labware.labware_definition import LabwareDefinition
|
|
16
|
+
from opentrons_shared_data.protocol import types
|
|
17
|
+
|
|
18
|
+
CommandAspirate: types.AspirateCommandId = "aspirate"
|
|
19
|
+
CommandDispense: types.DispenseCommandId = "dispense"
|
|
20
|
+
CommandAirGap: types.AirGapCommandId = "airGap"
|
|
21
|
+
CommandBlowout: types.BlowoutCommandId = "blowout"
|
|
22
|
+
CommandTouchTip: types.TouchTipCommandId = "touchTip"
|
|
23
|
+
CommandPickUpTip: types.PickUpTipCommandId = "pickUpTip"
|
|
24
|
+
CommandDropTip: types.DropTipCommandId = "dropTip"
|
|
25
|
+
CommandMoveToSlot: types.MoveToSlotCommandId = "moveToSlot"
|
|
26
|
+
CommandMoveToWell: types.MoveToWellCommandId = "moveToWell"
|
|
27
|
+
CommandDelay: types.DelayCommandId = "delay"
|
|
28
|
+
CommandMagneticModuleEngage: types.MagneticModuleEngageCommandId = (
|
|
29
|
+
"magneticModule/engageMagnet"
|
|
30
|
+
)
|
|
31
|
+
CommandMagneticModuleDisengage: types.MagneticModuleDisengageCommandId = (
|
|
32
|
+
"magneticModule/disengageMagnet"
|
|
33
|
+
)
|
|
34
|
+
CommandTemperatureModuleSetTarget: types.TemperatureModuleSetTargetCommandId = (
|
|
35
|
+
"temperatureModule/setTargetTemperature"
|
|
36
|
+
)
|
|
37
|
+
CommandTemperatureModuleAwait: types.TemperatureModuleAwaitCommandId = (
|
|
38
|
+
"temperatureModule/awaitTemperature"
|
|
39
|
+
)
|
|
40
|
+
CommandTemperatureModuleDeactivate: types.TemperatureModuleDeactivateCommandId = (
|
|
41
|
+
"temperatureModule/deactivate"
|
|
42
|
+
)
|
|
43
|
+
CommandThermocyclerSetTargetBlock: types.ThermocyclerSetTargetBlockCommandId = (
|
|
44
|
+
"thermocycler/setTargetBlockTemperature"
|
|
45
|
+
)
|
|
46
|
+
CommandThermocyclerSetTargetLid: types.ThermocyclerSetTargetLidCommandId = (
|
|
47
|
+
"thermocycler/setTargetLidTemperature"
|
|
48
|
+
)
|
|
49
|
+
CommandThermocyclerAwaitLidTemperature: types.ThermocyclerAwaitLidTemperatureCommandId = (
|
|
50
|
+
"thermocycler/awaitLidTemperature"
|
|
51
|
+
)
|
|
52
|
+
CommandThermocyclerAwaitBlockTemperature: types.ThermocyclerAwaitBlockTemperatureCommandId = (
|
|
53
|
+
"thermocycler/awaitBlockTemperature"
|
|
54
|
+
)
|
|
55
|
+
CommandThermocyclerDeactivateBlock: types.ThermocyclerDeactivateBlockCommandId = (
|
|
56
|
+
"thermocycler/deactivateBlock"
|
|
57
|
+
)
|
|
58
|
+
CommandThermocyclerDeactivateLid: types.ThermocyclerDeactivateLidCommandId = (
|
|
59
|
+
"thermocycler/deactivateLid"
|
|
60
|
+
)
|
|
61
|
+
CommandThermocyclerOpenLid: types.ThermocyclerOpenLidCommandId = "thermocycler/openLid"
|
|
62
|
+
CommandThermocyclerCloseLid: types.ThermocyclerCloseLidCommandId = (
|
|
63
|
+
"thermocycler/closeLid"
|
|
64
|
+
)
|
|
65
|
+
CommandThermocyclerRunProfile: types.ThermocyclerRunProfileCommandId = (
|
|
66
|
+
"thermocycler/runProfile"
|
|
67
|
+
)
|
|
68
|
+
CommandThermocyclerAwaitProfile: types.ThermocyclerAwaitProfileCommandId = (
|
|
69
|
+
"thermocycler/awaitProfileComplete"
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class Metadata(BaseModel):
|
|
74
|
+
"""
|
|
75
|
+
Optional metadata about the protocol
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
model_config = ConfigDict(extra="allow")
|
|
79
|
+
|
|
80
|
+
protocolName: Optional[str] = Field(
|
|
81
|
+
None, description="A short, human-readable name for the protocol"
|
|
82
|
+
)
|
|
83
|
+
author: Optional[str] = Field(
|
|
84
|
+
None, description="The author or organization who created the protocol"
|
|
85
|
+
)
|
|
86
|
+
description: Optional[Optional[str]] = Field(
|
|
87
|
+
None, description="A text description of the protocol."
|
|
88
|
+
)
|
|
89
|
+
created: Optional[float] = Field(
|
|
90
|
+
None, description="UNIX timestamp when this file was created"
|
|
91
|
+
)
|
|
92
|
+
lastModified: Optional[Optional[float]] = Field(
|
|
93
|
+
None, description="UNIX timestamp when this file was last modified"
|
|
94
|
+
)
|
|
95
|
+
category: Optional[Optional[str]] = Field(
|
|
96
|
+
None, description='Category of protocol (eg, "Basic Pipetting")'
|
|
97
|
+
)
|
|
98
|
+
subcategory: Optional[Optional[str]] = Field(
|
|
99
|
+
None, description='Subcategory of protocol (eg, "Cell Plating")'
|
|
100
|
+
)
|
|
101
|
+
tags: Optional[List[str]] = Field(
|
|
102
|
+
None, description="Tags to be used in searching for this protocol"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class DesignerApplication(BaseModel):
|
|
107
|
+
"""
|
|
108
|
+
Optional data & metadata not required to execute the protocol, used by the
|
|
109
|
+
application that created this protocol
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
name: Optional[str] = Field(
|
|
113
|
+
None,
|
|
114
|
+
description="Name of the application that created the protocol. Should "
|
|
115
|
+
"be namespaced under the organization or individual who "
|
|
116
|
+
'owns the organization, eg "opentrons/protocol-designer"',
|
|
117
|
+
)
|
|
118
|
+
version: Optional[str] = Field(
|
|
119
|
+
None, description="Version of the application that created the protocol"
|
|
120
|
+
)
|
|
121
|
+
data: Optional[Dict[str, Any]] = Field(
|
|
122
|
+
None, description="Any data used by the application that created this protocol"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class Robot(BaseModel):
|
|
127
|
+
model: Literal["OT-2 Standard"] = Field(
|
|
128
|
+
...,
|
|
129
|
+
description="Model of the robot this protocol is written for "
|
|
130
|
+
"(currently only OT-2 Standard is supported)",
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class ModuleOnlyParams(BaseModel):
|
|
135
|
+
module: str
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class OffsetFromBottomMm(BaseModel):
|
|
139
|
+
"""
|
|
140
|
+
Offset from bottom of well in millimeters
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
offsetFromBottomMm: float = Field(
|
|
144
|
+
..., description="Millimeters for pipette location offsets"
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class PipetteAccessParams(BaseModel):
|
|
149
|
+
pipette: str
|
|
150
|
+
labware: str
|
|
151
|
+
well: str
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class VolumeParams(BaseModel):
|
|
155
|
+
volume: float
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class FlowRate(BaseModel):
|
|
159
|
+
flowRate: float = Field(
|
|
160
|
+
..., description="Flow rate in uL/sec. Must be greater than 0", ge=0.0
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class Params2(PipetteAccessParams, OffsetFromBottomMm):
|
|
165
|
+
pass
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class Params1(Params2, FlowRate):
|
|
169
|
+
pass
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class Params(Params1, Params2, VolumeParams):
|
|
173
|
+
pass
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class LiquidCommand(BaseModel):
|
|
177
|
+
"""
|
|
178
|
+
Aspirate / dispense / air gap commands
|
|
179
|
+
"""
|
|
180
|
+
|
|
181
|
+
command: Literal["aspirate", "dispense", "airGap"]
|
|
182
|
+
params: Params
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class BlowoutCommand(BaseModel):
|
|
186
|
+
"""
|
|
187
|
+
Blowout command
|
|
188
|
+
"""
|
|
189
|
+
|
|
190
|
+
command: Literal["blowout"]
|
|
191
|
+
params: Params1
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class TouchTipCommand(BaseModel):
|
|
195
|
+
"""
|
|
196
|
+
Touch tip commands
|
|
197
|
+
"""
|
|
198
|
+
|
|
199
|
+
command: Literal["touchTip"]
|
|
200
|
+
params: Params2
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class PickUpDropTipCommand(BaseModel):
|
|
204
|
+
"""
|
|
205
|
+
Pick up tip / drop tip commands
|
|
206
|
+
"""
|
|
207
|
+
|
|
208
|
+
command: Literal["pickUpTip", "dropTip"]
|
|
209
|
+
params: PipetteAccessParams
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class Offset(BaseModel):
|
|
213
|
+
"""
|
|
214
|
+
Optional offset from slot bottom left corner, in mm
|
|
215
|
+
"""
|
|
216
|
+
|
|
217
|
+
x: float
|
|
218
|
+
y: float
|
|
219
|
+
z: float
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class Params3(BaseModel):
|
|
223
|
+
pipette: str
|
|
224
|
+
slot: str = Field(
|
|
225
|
+
...,
|
|
226
|
+
description="string '1'-'12', or special string 'span7_8_10_11' signify "
|
|
227
|
+
"it's a slot on the OT-2 deck. If it's a UUID, it's the "
|
|
228
|
+
"slot on the module referenced by that ID.",
|
|
229
|
+
)
|
|
230
|
+
offset: Optional[Offset] = Field(
|
|
231
|
+
None, description="Optional offset from slot bottom left corner, in mm"
|
|
232
|
+
)
|
|
233
|
+
minimumZHeight: Optional[float] = Field(
|
|
234
|
+
None,
|
|
235
|
+
description="Optional minimal Z margin in mm. If this is larger than "
|
|
236
|
+
"the API's default safe Z margin, it will make the arc "
|
|
237
|
+
"higher. If it's smaller, it will have no effect. Specifying "
|
|
238
|
+
"this for movements that would not arc (moving within the "
|
|
239
|
+
"same well in the same labware) will cause an arc movement "
|
|
240
|
+
"instead.",
|
|
241
|
+
ge=0.0,
|
|
242
|
+
)
|
|
243
|
+
forceDirect: Optional[bool] = Field(
|
|
244
|
+
None,
|
|
245
|
+
description="Default is false. If true, moving from one labware/well to "
|
|
246
|
+
"another will not arc to the default safe z, but instead will "
|
|
247
|
+
"move directly to the specified location. This will also force "
|
|
248
|
+
"the 'minimumZHeight' param to be ignored. A 'direct' movement "
|
|
249
|
+
"is in X/Y/Z simultaneously",
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class MoveToSlotCommand(BaseModel):
|
|
254
|
+
"""
|
|
255
|
+
Move to slot command. NOTE: this is an EXPERIMENTAL command, its behavior is
|
|
256
|
+
subject to change in future releases.
|
|
257
|
+
"""
|
|
258
|
+
|
|
259
|
+
command: Literal["moveToSlot"]
|
|
260
|
+
params: Params3
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class DelayCommandParams(BaseModel):
|
|
264
|
+
wait: Union[Literal[True], float] = Field(
|
|
265
|
+
...,
|
|
266
|
+
description="either a number of seconds to wait (fractional values OK), "
|
|
267
|
+
"or `true` to wait indefinitely until the user manually "
|
|
268
|
+
"resumes the protocol",
|
|
269
|
+
)
|
|
270
|
+
message: Optional[str] = Field(
|
|
271
|
+
None, description="optional message describing the delay"
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
class DelayCommand(BaseModel):
|
|
276
|
+
"""
|
|
277
|
+
Delay command
|
|
278
|
+
"""
|
|
279
|
+
|
|
280
|
+
command: Literal["delay"]
|
|
281
|
+
params: DelayCommandParams
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
class Params5(BaseModel):
|
|
285
|
+
engageHeight: float = Field(
|
|
286
|
+
...,
|
|
287
|
+
description="Height in mm(*) from bottom plane of labware (above if positive, "
|
|
288
|
+
"below if negative). *NOTE: for magneticModuleV1 (aka GEN1), these "
|
|
289
|
+
"are not true mm but an arbitrary unit equal to 0.5mm. So "
|
|
290
|
+
"`engageHeight: 2` means 1mm above the labware plane if the "
|
|
291
|
+
"command is for a GEN1 magnetic module, but would mean 2mm "
|
|
292
|
+
"above the labware plane for GEN2 module",
|
|
293
|
+
)
|
|
294
|
+
module: str
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class MagneticModuleEngageCommand(BaseModel):
|
|
298
|
+
"""
|
|
299
|
+
Magnetic module engage command. Engages magnet to specified height
|
|
300
|
+
"""
|
|
301
|
+
|
|
302
|
+
command: Literal["magneticModule/engageMagnet"]
|
|
303
|
+
params: Params5
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
class MagneticModuleDisengageCommand(BaseModel):
|
|
307
|
+
"""
|
|
308
|
+
Magnetic module disengage command. Moves magnet down to disengaged (home) position
|
|
309
|
+
"""
|
|
310
|
+
|
|
311
|
+
command: Literal["magneticModule/disengageMagnet"]
|
|
312
|
+
params: ModuleOnlyParams
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
class Params6(BaseModel):
|
|
316
|
+
module: str
|
|
317
|
+
temperature: float
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
class TemperatureModuleSetTargetCommand(BaseModel):
|
|
321
|
+
"""
|
|
322
|
+
Temperature module set target temperature command. Module will begin moving
|
|
323
|
+
to the target temperature. This command is non-blocking, it does not delay
|
|
324
|
+
until the temperature is reached.
|
|
325
|
+
"""
|
|
326
|
+
|
|
327
|
+
command: Literal["temperatureModule/setTargetTemperature"]
|
|
328
|
+
params: Params6
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
class Params7(BaseModel):
|
|
332
|
+
module: str
|
|
333
|
+
temperature: float
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
class TemperatureModuleAwaitTemperatureCommand(BaseModel):
|
|
337
|
+
"""
|
|
338
|
+
Temperature module await temperature command. Delay further protocol execution
|
|
339
|
+
until the specified temperature is reached.
|
|
340
|
+
"""
|
|
341
|
+
|
|
342
|
+
command: Literal["temperatureModule/awaitTemperature"]
|
|
343
|
+
params: Params7
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
class TemperatureModuleDeactivateCommand(BaseModel):
|
|
347
|
+
"""
|
|
348
|
+
Temperature module deactivate command. Module will stop actively controlling
|
|
349
|
+
its temperature and drift to ambient temperature.
|
|
350
|
+
"""
|
|
351
|
+
|
|
352
|
+
command: Literal["temperatureModule/deactivate"]
|
|
353
|
+
params: ModuleOnlyParams
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
class Params8(BaseModel):
|
|
357
|
+
module: str
|
|
358
|
+
temperature: float
|
|
359
|
+
volume: Optional[float] = None
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
class ThermocyclerSetTargetBlockTemperatureCommand(BaseModel):
|
|
363
|
+
"""
|
|
364
|
+
Thermocycler set target block temperature command. Lid will begin moving to
|
|
365
|
+
the target temperature. This command is non-blocking, it does not delay until
|
|
366
|
+
the temperature is reached.
|
|
367
|
+
"""
|
|
368
|
+
|
|
369
|
+
command: Literal["thermocycler/setTargetBlockTemperature"]
|
|
370
|
+
params: Params8
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
class Params9(BaseModel):
|
|
374
|
+
module: str
|
|
375
|
+
temperature: float
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
class ThermocyclerSetTargetLidTemperatureCommand(BaseModel):
|
|
379
|
+
"""
|
|
380
|
+
Thermocycler set target lid temperature command. Lid will begin moving to the
|
|
381
|
+
target temperature. This command is non-blocking, it does not delay until
|
|
382
|
+
the temperature is reached.
|
|
383
|
+
"""
|
|
384
|
+
|
|
385
|
+
command: Literal["thermocycler/setTargetLidTemperature"]
|
|
386
|
+
params: Params9
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
class Params10(BaseModel):
|
|
390
|
+
module: str
|
|
391
|
+
temperature: float
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
class ThermocyclerAwaitBlockTemperatureCommand(BaseModel):
|
|
395
|
+
"""
|
|
396
|
+
Thermocycler await block temperature command. Delay further protocol execution
|
|
397
|
+
until the specified temperature is reached.
|
|
398
|
+
"""
|
|
399
|
+
|
|
400
|
+
command: Literal["thermocycler/awaitBlockTemperature"]
|
|
401
|
+
params: Params10
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
class Params11(BaseModel):
|
|
405
|
+
module: str
|
|
406
|
+
temperature: float
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
class ThermocyclerAwaitLidTemperatureCommand(BaseModel):
|
|
410
|
+
"""
|
|
411
|
+
Thermocycler await lid temperature command. Delay further protocol execution
|
|
412
|
+
until the specified temperature is reached.
|
|
413
|
+
"""
|
|
414
|
+
|
|
415
|
+
command: Literal["thermocycler/awaitLidTemperature"]
|
|
416
|
+
params: Params11
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
class ThermocyclerDeactivateBlockCommand(BaseModel):
|
|
420
|
+
"""
|
|
421
|
+
Thermocycler deactivate block command. Module will stop actively controlling
|
|
422
|
+
its block temperature.
|
|
423
|
+
"""
|
|
424
|
+
|
|
425
|
+
command: Literal["thermocycler/deactivateBlock"]
|
|
426
|
+
params: ModuleOnlyParams
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
class ThermocyclerDeactivateLidCommand(BaseModel):
|
|
430
|
+
"""
|
|
431
|
+
Thermocycler deactivate lid command. Module will stop actively controlling
|
|
432
|
+
its lid temperature.
|
|
433
|
+
"""
|
|
434
|
+
|
|
435
|
+
command: Literal["thermocycler/deactivateLid"]
|
|
436
|
+
params: ModuleOnlyParams
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
class ThermocyclerOpenLidCommand(BaseModel):
|
|
440
|
+
"""
|
|
441
|
+
Thermocycler open lid command. This command will block until the lid is
|
|
442
|
+
fully open.
|
|
443
|
+
"""
|
|
444
|
+
|
|
445
|
+
command: Literal["thermocycler/openLid"]
|
|
446
|
+
params: ModuleOnlyParams
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
class ThermocyclerCloseLidCommand(BaseModel):
|
|
450
|
+
"""
|
|
451
|
+
Thermocycler close lid command. This command will block until the lid is
|
|
452
|
+
fully closed.
|
|
453
|
+
"""
|
|
454
|
+
|
|
455
|
+
command: Literal["thermocycler/closeLid"]
|
|
456
|
+
params: ModuleOnlyParams
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
class ProfileItem(BaseModel):
|
|
460
|
+
temperature: float = Field(..., description="Target temperature of profile step")
|
|
461
|
+
holdTime: float = Field(
|
|
462
|
+
..., description="Time (in seconds) to hold once temperature is reached"
|
|
463
|
+
)
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
class Params12(BaseModel):
|
|
467
|
+
module: str
|
|
468
|
+
profile: List[ProfileItem]
|
|
469
|
+
volume: float
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
class ThermocyclerRunProfile(BaseModel):
|
|
473
|
+
"""
|
|
474
|
+
Thermocycler run profile command. Begin running the specified profile steps on
|
|
475
|
+
the thermocycler. This command is non-blocking, it does not delay protocol
|
|
476
|
+
execution outside of thermocycler steps. No more thermocycler commands should
|
|
477
|
+
be given until a 'thermocycler/awaitProfileComplete' command is executed.
|
|
478
|
+
"""
|
|
479
|
+
|
|
480
|
+
command: Literal["thermocycler/runProfile"]
|
|
481
|
+
params: Params12
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
class ThermocyclerAwaitProfileCompleteCommand(BaseModel):
|
|
485
|
+
"""
|
|
486
|
+
Thermocycler await profile complete command. Blocks further protocol
|
|
487
|
+
execution until profile execution is complete.
|
|
488
|
+
"""
|
|
489
|
+
|
|
490
|
+
command: Literal["thermocycler/awaitProfileComplete"]
|
|
491
|
+
params: ModuleOnlyParams
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
class Offset1(BaseModel):
|
|
495
|
+
"""
|
|
496
|
+
Optional offset from well bottom center, in mm
|
|
497
|
+
"""
|
|
498
|
+
|
|
499
|
+
x: float
|
|
500
|
+
y: float
|
|
501
|
+
z: float
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
class Params13(BaseModel):
|
|
505
|
+
pipette: str
|
|
506
|
+
labware: str
|
|
507
|
+
well: str
|
|
508
|
+
offset: Optional[Offset1] = Field(
|
|
509
|
+
None, description="Optional offset from well bottom center, in mm"
|
|
510
|
+
)
|
|
511
|
+
minimumZHeight: Optional[float] = Field(
|
|
512
|
+
None,
|
|
513
|
+
description="Optional minimal Z margin in mm. If this is larger than "
|
|
514
|
+
"the API's default safe Z margin, it will make the arc higher. "
|
|
515
|
+
"If it's smaller, it will have no effect. Specifying this for "
|
|
516
|
+
"movements that would not arc (moving within the same well in "
|
|
517
|
+
"the same labware) will cause an arc movement instead.",
|
|
518
|
+
ge=0.0,
|
|
519
|
+
)
|
|
520
|
+
forceDirect: Optional[bool] = Field(
|
|
521
|
+
None,
|
|
522
|
+
description="Default is false. If true, moving from one labware/well "
|
|
523
|
+
"to another will not arc to the default safe z, but instead "
|
|
524
|
+
"will move directly to the specified location. This will also "
|
|
525
|
+
"force the 'minimumZHeight' param to be ignored. A 'direct' "
|
|
526
|
+
"movement is in X/Y/Z simultaneously",
|
|
527
|
+
)
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
class MoveToWellCommand(BaseModel):
|
|
531
|
+
"""
|
|
532
|
+
Move to well command. Move the pipette's critical point to the specified well
|
|
533
|
+
in a labware, with an optional offset. The pipette's critical point is a
|
|
534
|
+
reference point on the pipette. The critical point can be one of the following:
|
|
535
|
+
(1) Single-channel pipette with no tip: end of nozzle. (2) Multi-channel
|
|
536
|
+
pipette with no tip: end of backmost nozzle. (3) Single-channel pipette with
|
|
537
|
+
a tip: end of tip. (4) Multi-channel pipette with tip: end of tip on backmost
|
|
538
|
+
nozzle.
|
|
539
|
+
"""
|
|
540
|
+
|
|
541
|
+
command: Literal["moveToWell"]
|
|
542
|
+
params: Params13
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
AllCommands = Union[
|
|
546
|
+
LiquidCommand,
|
|
547
|
+
BlowoutCommand,
|
|
548
|
+
TouchTipCommand,
|
|
549
|
+
PickUpDropTipCommand,
|
|
550
|
+
MoveToSlotCommand,
|
|
551
|
+
DelayCommand,
|
|
552
|
+
MagneticModuleEngageCommand,
|
|
553
|
+
MagneticModuleDisengageCommand,
|
|
554
|
+
TemperatureModuleSetTargetCommand,
|
|
555
|
+
TemperatureModuleAwaitTemperatureCommand,
|
|
556
|
+
TemperatureModuleDeactivateCommand,
|
|
557
|
+
ThermocyclerSetTargetBlockTemperatureCommand,
|
|
558
|
+
ThermocyclerSetTargetLidTemperatureCommand,
|
|
559
|
+
ThermocyclerAwaitBlockTemperatureCommand,
|
|
560
|
+
ThermocyclerAwaitLidTemperatureCommand,
|
|
561
|
+
ThermocyclerDeactivateBlockCommand,
|
|
562
|
+
ThermocyclerDeactivateLidCommand,
|
|
563
|
+
ThermocyclerOpenLidCommand,
|
|
564
|
+
ThermocyclerCloseLidCommand,
|
|
565
|
+
ThermocyclerRunProfile,
|
|
566
|
+
ThermocyclerAwaitProfileCompleteCommand,
|
|
567
|
+
MoveToWellCommand,
|
|
568
|
+
]
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
class Pipettes(BaseModel):
|
|
572
|
+
"""
|
|
573
|
+
Fields describing an individual pipette
|
|
574
|
+
"""
|
|
575
|
+
|
|
576
|
+
model_config = ConfigDict(extra="allow")
|
|
577
|
+
|
|
578
|
+
mount: Literal["left", "right"] = Field(
|
|
579
|
+
..., description="Where the pipette is mounted"
|
|
580
|
+
)
|
|
581
|
+
name: str = Field(
|
|
582
|
+
...,
|
|
583
|
+
description="Name of a pipette. Does not contain info about specific "
|
|
584
|
+
"model/version. Should match keys in pipetteNameSpecs.json file",
|
|
585
|
+
)
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
class Labware(BaseModel):
|
|
589
|
+
"""
|
|
590
|
+
Fields describing a single labware on the deck
|
|
591
|
+
"""
|
|
592
|
+
|
|
593
|
+
model_config = ConfigDict(extra="allow")
|
|
594
|
+
|
|
595
|
+
slot: str = Field(
|
|
596
|
+
...,
|
|
597
|
+
description="string '1'-'12', or special string 'span7_8_10_11' signify "
|
|
598
|
+
"it's a slot on the OT-2 deck. If it's a UUID, it's the "
|
|
599
|
+
"slot on the module referenced by that ID.",
|
|
600
|
+
)
|
|
601
|
+
definitionId: str = Field(
|
|
602
|
+
..., description='reference to this labware\'s ID in "labwareDefinitions"'
|
|
603
|
+
)
|
|
604
|
+
displayName: Optional[str] = Field(
|
|
605
|
+
None,
|
|
606
|
+
description="An optional human-readable nickname for this labware. "
|
|
607
|
+
'Eg "Buffer Trough"',
|
|
608
|
+
)
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
class Modules(BaseModel):
|
|
612
|
+
"""
|
|
613
|
+
Fields describing a single module on the deck
|
|
614
|
+
"""
|
|
615
|
+
|
|
616
|
+
model_config = ConfigDict(extra="allow")
|
|
617
|
+
|
|
618
|
+
slot: str = Field(
|
|
619
|
+
...,
|
|
620
|
+
description="string '1'-'12', or special string 'span7_8_10_11' signify "
|
|
621
|
+
"it's a slot on the OT-2 deck. If it's a UUID, it's the "
|
|
622
|
+
"slot on the module referenced by that ID.",
|
|
623
|
+
)
|
|
624
|
+
model: str = Field(
|
|
625
|
+
...,
|
|
626
|
+
description="model of module. Eg 'magneticModuleV1' or 'magneticModuleV2'. "
|
|
627
|
+
"This should match a top-level key in "
|
|
628
|
+
"shared-data/module/definitions/2.json",
|
|
629
|
+
)
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
class Model(BaseModel):
|
|
633
|
+
otSharedSchema: Optional[
|
|
634
|
+
Literal["#/protocol/schemas/5", "#/protocol/schemas/4"]
|
|
635
|
+
] = Field(
|
|
636
|
+
None,
|
|
637
|
+
alias="$otSharedSchema",
|
|
638
|
+
description="The path to a valid Opentrons shared schema relative to "
|
|
639
|
+
"the shared-data directory, without its extension.",
|
|
640
|
+
)
|
|
641
|
+
schemaVersion: Literal[1, 2, 3, 4, 5] = Field(
|
|
642
|
+
..., description="Schema version of a protocol is a single integer"
|
|
643
|
+
)
|
|
644
|
+
metadata: Metadata = Field(..., description="Optional metadata about the protocol")
|
|
645
|
+
designerApplication: Optional[DesignerApplication] = Field(
|
|
646
|
+
None,
|
|
647
|
+
description="Optional data & metadata not required to execute the protocol, "
|
|
648
|
+
"used by the application that created this protocol",
|
|
649
|
+
)
|
|
650
|
+
robot: Robot
|
|
651
|
+
pipettes: Dict[str, Pipettes] = Field(
|
|
652
|
+
...,
|
|
653
|
+
description="The pipettes used in this protocol, keyed by an arbitrary "
|
|
654
|
+
"unique ID",
|
|
655
|
+
)
|
|
656
|
+
labwareDefinitions: Dict[str, LabwareDefinition] = Field(
|
|
657
|
+
...,
|
|
658
|
+
description="All labware definitions used by labware in this protocol, "
|
|
659
|
+
"keyed by UUID",
|
|
660
|
+
)
|
|
661
|
+
labware: Dict[str, Labware] = Field(
|
|
662
|
+
...,
|
|
663
|
+
description="All types of labware used in this protocol, and references "
|
|
664
|
+
"to their definitions",
|
|
665
|
+
)
|
|
666
|
+
modules: Optional[Dict[str, Modules]] = Field(
|
|
667
|
+
None, description="All modules used in this protocol"
|
|
668
|
+
)
|
|
669
|
+
commands: List[AllCommands] = Field(
|
|
670
|
+
...,
|
|
671
|
+
description="An array of command objects representing steps to be executed "
|
|
672
|
+
"on the robot",
|
|
673
|
+
)
|
|
674
|
+
commandAnnotations: Optional[Dict[str, Any]] = Field(
|
|
675
|
+
None,
|
|
676
|
+
description="An optional object of annotations associated with commands. "
|
|
677
|
+
"Its usage has not yet been defined, so its shape is not "
|
|
678
|
+
"enforced by this schema.",
|
|
679
|
+
)
|
|
File without changes
|