From dca0516ea77d2dcc3e532042a845fa72286d7dfa Mon Sep 17 00:00:00 2001 From: caila-marashaj Date: Wed, 15 Jan 2025 17:32:30 -0500 Subject: [PATCH 1/5] add aspirate and dispense while tracking commands --- .../protocol_engine/commands/__init__.py | 28 ++ .../protocol_engine/commands/aspirate.py | 5 +- .../commands/aspirate_while_tracking.py | 249 ++++++++++++++++++ .../commands/command_unions.py | 26 ++ .../protocol_engine/commands/dispense.py | 8 +- .../commands/dispense_while_tracking.py | 202 ++++++++++++++ .../commands/movement_common.py | 2 +- .../commands/pipetting_common.py | 98 +++++++ .../protocol_engine/execution/pipetting.py | 189 +++++++++++-- .../protocol_engine/state/frustum_helpers.py | 8 +- .../opentrons/protocol_engine/state/motion.py | 2 +- 11 files changed, 792 insertions(+), 25 deletions(-) create mode 100644 api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py create mode 100644 api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py diff --git a/api/src/opentrons/protocol_engine/commands/__init__.py b/api/src/opentrons/protocol_engine/commands/__init__.py index a11222f57b0..e56e3da3b38 100644 --- a/api/src/opentrons/protocol_engine/commands/__init__.py +++ b/api/src/opentrons/protocol_engine/commands/__init__.py @@ -61,6 +61,14 @@ AspirateCommandType, ) +from .aspirate_while_tracking import ( + AspirateWhileTracking, + AspirateWhileTrackingParams, + AspirateWhileTrackingCreate, + AspirateWhileTrackingResult, + AspirateWhileTrackingCommandType, +) + from .aspirate_in_place import ( AspirateInPlace, AspirateInPlaceParams, @@ -93,6 +101,14 @@ DispenseCommandType, ) +from .dispense_while_tracking import ( + DispenseWhileTracking, + DispenseWhileTrackingParams, + DispenseWhileTrackingCreate, + DispenseWhileTrackingResult, + DispenseWhileTrackingCommandType, +) + from .dispense_in_place import ( DispenseInPlace, DispenseInPlaceParams, @@ -414,6 +430,12 @@ "AspirateParams", "AspirateResult", "AspirateCommandType", + # aspirate while tracking command models + "AspirateWhileTracking", + "AspirateWhileTrackingCreate", + "AspirateWhileTrackingParams", + "AspirateWhileTrackingResult", + "AspirateWhileTrackingCommandType", # aspirate in place command models "AspirateInPlace", "AspirateInPlaceCreate", @@ -438,6 +460,12 @@ "DispenseParams", "DispenseResult", "DispenseCommandType", + # dispense while tracking command models + "DispenseWhileTracking", + "DispenseWhileTrackingCreate", + "DispenseWhileTrackingParams", + "DispenseWhileTrackingResult", + "DispenseWhileTrackingCommandType", # dispense in place command models "DispenseInPlace", "DispenseInPlaceCreate", diff --git a/api/src/opentrons/protocol_engine/commands/aspirate.py b/api/src/opentrons/protocol_engine/commands/aspirate.py index 9664d733b8a..b07cd522f93 100644 --- a/api/src/opentrons/protocol_engine/commands/aspirate.py +++ b/api/src/opentrons/protocol_engine/commands/aspirate.py @@ -47,7 +47,10 @@ class AspirateParams( - PipetteIdMixin, AspirateVolumeMixin, FlowRateMixin, LiquidHandlingWellLocationMixin + PipetteIdMixin, + AspirateVolumeMixin, + FlowRateMixin, + LiquidHandlingWellLocationMixin, ): """Parameters required to aspirate from a specific well.""" diff --git a/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py b/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py new file mode 100644 index 00000000000..5ea29af8f6e --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py @@ -0,0 +1,249 @@ +"""Aspirate command request, result, and implementation models.""" + +from __future__ import annotations +from typing import TYPE_CHECKING, Optional, Type, Union +from typing_extensions import Literal + +from .pipetting_common import ( + OverpressureError, + PipetteIdMixin, + AspirateVolumeMixin, + FlowRateMixin, + BaseLiquidHandlingResult, + aspirate_while_tracking, + prepare_for_aspirate, +) +from .movement_common import ( + LiquidHandlingWellLocationMixin, + DestinationPositionResult, + StallOrCollisionError, + move_to_well, +) +from .command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + DefinedErrorData, + SuccessData, +) + +from opentrons.hardware_control import HardwareControlAPI + +from ..state.update_types import StateUpdate, CLEAR +from ..types import ( + WellLocation, + WellOrigin, + CurrentWell, +) + +if TYPE_CHECKING: + from ..execution import MovementHandler, PipettingHandler + from ..resources import ModelUtils + from ..state.state import StateView + from ..notes import CommandNoteAdder + + +AspirateWhileTrackingCommandType = Literal["aspirateWhileTracking"] + + +class AspirateWhileTrackingParams( + PipetteIdMixin, + AspirateVolumeMixin, + FlowRateMixin, + LiquidHandlingWellLocationMixin, +): + """Parameters required to aspirate from a specific well.""" + + pass + + +class AspirateWhileTrackingResult(BaseLiquidHandlingResult, DestinationPositionResult): + """Result data from execution of an Aspirate command.""" + + pass + + +_ExecuteReturn = Union[ + SuccessData[AspirateWhileTrackingResult], + DefinedErrorData[OverpressureError] | DefinedErrorData[StallOrCollisionError], +] + + +class AspirateWhileTrackingImplementation( + AbstractCommandImpl[AspirateWhileTrackingParams, _ExecuteReturn] +): + """AspirateWhileTracking command implementation.""" + + def __init__( + self, + pipetting: PipettingHandler, + state_view: StateView, + hardware_api: HardwareControlAPI, + movement: MovementHandler, + command_note_adder: CommandNoteAdder, + model_utils: ModelUtils, + **kwargs: object, + ) -> None: + self._pipetting = pipetting + self._state_view = state_view + self._hardware_api = hardware_api + self._movement = movement + self._command_note_adder = command_note_adder + self._model_utils = model_utils + + async def execute(self, params: AspirateWhileTrackingParams) -> _ExecuteReturn: + """Move to and aspirate from the requested well. + + Raises: + TipNotAttachedError: if no tip is attached to the pipette. + """ + pipette_id = params.pipetteId + labware_id = params.labwareId + well_name = params.wellName + well_location = params.wellLocation + + state_update = StateUpdate() + + final_location = self._state_view.geometry.get_well_position( + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + operation_volume=-params.volume, + pipette_id=pipette_id, + ) + + ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate( + pipette_id=pipette_id + ) + + current_well = None + + if not ready_to_aspirate: + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=WellLocation(origin=WellOrigin.TOP), + ) + state_update.append(move_result.state_update) + if isinstance(move_result, DefinedErrorData): + return DefinedErrorData(move_result.public, state_update=state_update) + + prepare_result = await prepare_for_aspirate( + pipette_id=pipette_id, + pipetting=self._pipetting, + model_utils=self._model_utils, + # Note that the retryLocation is the final location, inside the liquid, + # because that's where we'd want the client to try re-aspirating if this + # command fails and the run enters error recovery. + location_if_error={"retryLocation": final_location}, + ) + state_update.append(prepare_result.state_update) + if isinstance(prepare_result, DefinedErrorData): + return DefinedErrorData( + public=prepare_result.public, state_update=state_update + ) + + # set our current deck location to the well now that we've made + # an intermediate move for the "prepare for aspirate" step + current_well = CurrentWell( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + ) + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + current_well=current_well, + ) + state_update.append(move_result.state_update) + if isinstance(move_result, DefinedErrorData): + return DefinedErrorData( + public=move_result.public, state_update=state_update + ) + + aspirate_result = await aspirate_while_tracking( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + volume=params.volume, + flow_rate=params.flowRate, + location_if_error={ + "retryLocation": ( + move_result.public.position.x, + move_result.public.position.y, + move_result.public.position.z, + ) + }, + command_note_adder=self._command_note_adder, + pipetting=self._pipetting, + model_utils=self._model_utils, + ) + state_update.append(aspirate_result.state_update) + if isinstance(aspirate_result, DefinedErrorData): + state_update.set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, + well_name, + params.pipetteId, + ), + volume_added=CLEAR, + ) + return DefinedErrorData( + public=aspirate_result.public, state_update=state_update + ) + + state_update.set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, well_name, pipette_id + ), + volume_added=-aspirate_result.public.volume + * self._state_view.geometry.get_nozzles_per_well( + labware_id, + well_name, + params.pipetteId, + ), + ) + + return SuccessData( + public=AspirateWhileTrackingResult( + volume=aspirate_result.public.volume, + position=move_result.public.position, + ), + state_update=state_update, + ) + + +class AspirateWhileTracking( + BaseCommand[ + AspirateWhileTrackingParams, + AspirateWhileTrackingResult, + OverpressureError | StallOrCollisionError, + ] +): + """AspirateWhileTracking command model.""" + + commandType: AspirateWhileTrackingCommandType = "aspirateWhileTracking" + params: AspirateWhileTrackingParams + result: Optional[AspirateWhileTrackingResult] = None + + _ImplementationCls: Type[ + AspirateWhileTrackingImplementation + ] = AspirateWhileTrackingImplementation + + +class AspirateWhileTrackingCreate(BaseCommandCreate[AspirateWhileTrackingParams]): + """Create aspirate command request model.""" + + commandType: AspirateWhileTrackingCommandType = "aspirateWhileTracking" + params: AspirateWhileTrackingParams + + _CommandCls: Type[AspirateWhileTracking] = AspirateWhileTracking diff --git a/api/src/opentrons/protocol_engine/commands/command_unions.py b/api/src/opentrons/protocol_engine/commands/command_unions.py index 06a2160c75e..3d44444babe 100644 --- a/api/src/opentrons/protocol_engine/commands/command_unions.py +++ b/api/src/opentrons/protocol_engine/commands/command_unions.py @@ -58,6 +58,14 @@ AspirateInPlaceCommandType, ) +from .aspirate_while_tracking import ( + AspirateWhileTracking, + AspirateWhileTrackingParams, + AspirateWhileTrackingCreate, + AspirateWhileTrackingResult, + AspirateWhileTrackingCommandType, +) + from .comment import ( Comment, CommentParams, @@ -82,6 +90,14 @@ DispenseCommandType, ) +from .dispense_while_tracking import ( + DispenseWhileTracking, + DispenseWhileTrackingParams, + DispenseWhileTrackingCreate, + DispenseWhileTrackingResult, + DispenseWhileTrackingCommandType, +) + from .dispense_in_place import ( DispenseInPlace, DispenseInPlaceParams, @@ -366,10 +382,12 @@ AirGapInPlace, Aspirate, AspirateInPlace, + AspirateWhileTracking, Comment, Custom, Dispense, DispenseInPlace, + DispenseWhileTracking, BlowOut, BlowOutInPlace, ConfigureForVolume, @@ -455,6 +473,7 @@ CommandParams = Union[ AirGapInPlaceParams, AspirateParams, + AspirateWhileTrackingParams, AspirateInPlaceParams, CommentParams, ConfigureForVolumeParams, @@ -462,6 +481,7 @@ CustomParams, DispenseParams, DispenseInPlaceParams, + DispenseWhileTrackingParams, BlowOutParams, BlowOutInPlaceParams, DropTipParams, @@ -543,6 +563,7 @@ CommandType = Union[ AirGapInPlaceCommandType, AspirateCommandType, + AspirateWhileTrackingCommandType, AspirateInPlaceCommandType, CommentCommandType, ConfigureForVolumeCommandType, @@ -550,6 +571,7 @@ CustomCommandType, DispenseCommandType, DispenseInPlaceCommandType, + DispenseWhileTrackingCommandType, BlowOutCommandType, BlowOutInPlaceCommandType, DropTipCommandType, @@ -632,6 +654,7 @@ Union[ AirGapInPlaceCreate, AspirateCreate, + AspirateWhileTrackingCreate, AspirateInPlaceCreate, CommentCreate, ConfigureForVolumeCreate, @@ -639,6 +662,7 @@ CustomCreate, DispenseCreate, DispenseInPlaceCreate, + DispenseWhileTrackingCreate, BlowOutCreate, BlowOutInPlaceCreate, DropTipCreate, @@ -729,6 +753,7 @@ CommandResult = Union[ AirGapInPlaceResult, AspirateResult, + AspirateWhileTrackingResult, AspirateInPlaceResult, CommentResult, ConfigureForVolumeResult, @@ -736,6 +761,7 @@ CustomResult, DispenseResult, DispenseInPlaceResult, + DispenseWhileTrackingResult, BlowOutResult, BlowOutInPlaceResult, DropTipResult, diff --git a/api/src/opentrons/protocol_engine/commands/dispense.py b/api/src/opentrons/protocol_engine/commands/dispense.py index 8ad2365ccb5..3b4b84f6b75 100644 --- a/api/src/opentrons/protocol_engine/commands/dispense.py +++ b/api/src/opentrons/protocol_engine/commands/dispense.py @@ -45,7 +45,10 @@ def _remove_default(s: dict[str, Any]) -> None: class DispenseParams( - PipetteIdMixin, DispenseVolumeMixin, FlowRateMixin, LiquidHandlingWellLocationMixin + PipetteIdMixin, + DispenseVolumeMixin, + FlowRateMixin, + LiquidHandlingWellLocationMixin, ): """Payload required to dispense to a specific well.""" @@ -89,7 +92,6 @@ async def execute(self, params: DispenseParams) -> _ExecuteReturn: well_location = params.wellLocation labware_id = params.labwareId well_name = params.wellName - volume = params.volume # TODO(pbm, 10-15-24): call self._state_view.geometry.validate_dispense_volume_into_well() @@ -105,7 +107,7 @@ async def execute(self, params: DispenseParams) -> _ExecuteReturn: return move_result dispense_result = await dispense_in_place( pipette_id=params.pipetteId, - volume=volume, + volume=params.volume, flow_rate=params.flowRate, push_out=params.pushOut, location_if_error={ diff --git a/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py b/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py new file mode 100644 index 00000000000..de4904f5295 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py @@ -0,0 +1,202 @@ +"""Dispense command request, result, and implementation models.""" + +from __future__ import annotations +from typing import TYPE_CHECKING, Optional, Type, Union, Any +from typing_extensions import Literal + + +from pydantic import Field +from pydantic.json_schema import SkipJsonSchema + +from ..state.update_types import StateUpdate, CLEAR +from .pipetting_common import ( + PipetteIdMixin, + DispenseVolumeMixin, + FlowRateMixin, + BaseLiquidHandlingResult, + OverpressureError, + dispense_while_tracking, +) +from .movement_common import ( + LiquidHandlingWellLocationMixin, + DestinationPositionResult, + StallOrCollisionError, + move_to_well, +) +from .command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + DefinedErrorData, + SuccessData, +) + +if TYPE_CHECKING: + from ..execution import MovementHandler, PipettingHandler + from ..resources import ModelUtils + from ..state.state import StateView + + +DispenseWhileTrackingCommandType = Literal["dispenseWhileTracking"] + + +def _remove_default(s: dict[str, Any]) -> None: + s.pop("default", None) + + +class DispenseWhileTrackingParams( + PipetteIdMixin, + DispenseVolumeMixin, + FlowRateMixin, + LiquidHandlingWellLocationMixin, +): + """Payload required to dispense to a specific well.""" + + pushOut: float | SkipJsonSchema[None] = Field( + None, + description="push the plunger a small amount farther than necessary for accurate low-volume dispensing", + json_schema_extra=_remove_default, + ) + + +class DispenseWhileTrackingResult(BaseLiquidHandlingResult, DestinationPositionResult): + """Result data from the execution of a Dispense command.""" + + pass + + +_ExecuteReturn = Union[ + SuccessData[DispenseWhileTrackingResult], + DefinedErrorData[OverpressureError] | DefinedErrorData[StallOrCollisionError], +] + + +class DispenseWhileTrackingImplementation( + AbstractCommandImpl[DispenseWhileTrackingParams, _ExecuteReturn] +): + """Dispense command implementation.""" + + def __init__( + self, + state_view: StateView, + movement: MovementHandler, + pipetting: PipettingHandler, + model_utils: ModelUtils, + **kwargs: object, + ) -> None: + self._state_view = state_view + self._movement = movement + self._pipetting = pipetting + self._model_utils = model_utils + + async def execute(self, params: DispenseWhileTrackingParams) -> _ExecuteReturn: + """Move to and dispense to the requested well.""" + well_location = params.wellLocation + labware_id = params.labwareId + well_name = params.wellName + + # TODO(pbm, 10-15-24): call self._state_view.geometry.validate_dispense_volume_into_well() + + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, + pipette_id=params.pipetteId, + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + ) + if isinstance(move_result, DefinedErrorData): + return move_result + dispense_result = await dispense_while_tracking( + pipette_id=params.pipetteId, + labware_id=labware_id, + well_name=well_name, + volume=params.volume, + flow_rate=params.flowRate, + push_out=params.pushOut, + location_if_error={ + "retryLocation": ( + move_result.public.position.x, + move_result.public.position.y, + move_result.public.position.z, + ) + }, + pipetting=self._pipetting, + model_utils=self._model_utils, + ) + + if isinstance(dispense_result, DefinedErrorData): + return DefinedErrorData( + public=dispense_result.public, + state_update=( + StateUpdate.reduce( + move_result.state_update, dispense_result.state_update + ).set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, well_name, params.pipetteId + ), + volume_added=CLEAR, + ) + ), + state_update_if_false_positive=StateUpdate.reduce( + move_result.state_update, + dispense_result.state_update_if_false_positive, + ), + ) + else: + volume_added = ( + self._state_view.pipettes.get_liquid_dispensed_by_ejecting_volume( + pipette_id=params.pipetteId, volume=dispense_result.public.volume + ) + ) + if volume_added is not None: + volume_added *= self._state_view.geometry.get_nozzles_per_well( + labware_id, well_name, params.pipetteId + ) + return SuccessData( + public=DispenseWhileTrackingResult( + volume=dispense_result.public.volume, + position=move_result.public.position, + ), + state_update=( + StateUpdate.reduce( + move_result.state_update, dispense_result.state_update + ).set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, well_name, params.pipetteId + ), + volume_added=volume_added + if volume_added is not None + else CLEAR, + ) + ), + ) + + +class DispenseWhileTracking( + BaseCommand[ + DispenseWhileTrackingParams, + DispenseWhileTrackingResult, + OverpressureError | StallOrCollisionError, + ] +): + """Dispense command model.""" + + commandType: DispenseWhileTrackingCommandType = "dispenseWhileTracking" + params: DispenseWhileTrackingParams + result: Optional[DispenseWhileTrackingResult] = None + + _ImplementationCls: Type[ + DispenseWhileTrackingImplementation + ] = DispenseWhileTrackingImplementation + + +class DispenseWhileTrackingCreate(BaseCommandCreate[DispenseWhileTrackingParams]): + """Create dispense command request model.""" + + commandType: DispenseWhileTrackingCommandType = "dispenseWhileTracking" + params: DispenseWhileTrackingParams + + _CommandCls: Type[DispenseWhileTracking] = DispenseWhileTracking diff --git a/api/src/opentrons/protocol_engine/commands/movement_common.py b/api/src/opentrons/protocol_engine/commands/movement_common.py index babf70b29d9..5cff8d5f358 100644 --- a/api/src/opentrons/protocol_engine/commands/movement_common.py +++ b/api/src/opentrons/protocol_engine/commands/movement_common.py @@ -61,7 +61,7 @@ class LiquidHandlingWellLocationMixin(BaseModel): ) wellLocation: LiquidHandlingWellLocation = Field( default_factory=LiquidHandlingWellLocation, - description="Relative well location at which to perform the operation", + description="Relative wwellell location at which to perform the operation", ) diff --git a/api/src/opentrons/protocol_engine/commands/pipetting_common.py b/api/src/opentrons/protocol_engine/commands/pipetting_common.py index c373642a02e..6740a4babb3 100644 --- a/api/src/opentrons/protocol_engine/commands/pipetting_common.py +++ b/api/src/opentrons/protocol_engine/commands/pipetting_common.py @@ -217,6 +217,104 @@ async def aspirate_in_place( ) +async def aspirate_while_tracking( + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + location_if_error: ErrorLocationInfo, + command_note_adder: CommandNoteAdder, + pipetting: PipettingHandler, + model_utils: ModelUtils, +) -> SuccessData[BaseLiquidHandlingResult] | DefinedErrorData[OverpressureError]: + """Execute an aspirate while tracking microoperation.""" + try: + volume_aspirated = await pipetting.aspirate_while_tracking( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + volume=volume, + flow_rate=flow_rate, + command_note_adder=command_note_adder, + ) + except PipetteOverpressureError as e: + return DefinedErrorData( + public=OverpressureError( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + wrappedErrors=[ + ErrorOccurrence.from_failed( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + error=e, + ) + ], + errorInfo=location_if_error, + ), + state_update=StateUpdate().set_fluid_unknown(pipette_id=pipette_id), + ) + else: + return SuccessData( + public=BaseLiquidHandlingResult( + volume=volume_aspirated, + ), + state_update=StateUpdate().set_fluid_aspirated( + pipette_id=pipette_id, + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=volume_aspirated), + ), + ) + + +async def dispense_while_tracking( + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + push_out: float | None, + location_if_error: ErrorLocationInfo, + pipetting: PipettingHandler, + model_utils: ModelUtils, +) -> SuccessData[BaseLiquidHandlingResult] | DefinedErrorData[OverpressureError]: + """Execute an dispense while tracking microoperation.""" + try: + volume_dispensed = await pipetting.dispense_while_tracking( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + volume=volume, + flow_rate=flow_rate, + push_out=push_out, + ) + except PipetteOverpressureError as e: + return DefinedErrorData( + public=OverpressureError( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + wrappedErrors=[ + ErrorOccurrence.from_failed( + id=model_utils.generate_id(), + createdAt=model_utils.get_timestamp(), + error=e, + ) + ], + errorInfo=location_if_error, + ), + state_update=StateUpdate().set_fluid_unknown(pipette_id=pipette_id), + ) + else: + return SuccessData( + public=BaseLiquidHandlingResult( + volume=volume_dispensed, + ), + state_update=StateUpdate().set_fluid_ejected( + pipette_id=pipette_id, + volume=volume_dispensed, + ), + ) + + async def dispense_in_place( pipette_id: str, volume: float, diff --git a/api/src/opentrons/protocol_engine/execution/pipetting.py b/api/src/opentrons/protocol_engine/execution/pipetting.py index 10d613e4dcf..bd689c4c226 100644 --- a/api/src/opentrons/protocol_engine/execution/pipetting.py +++ b/api/src/opentrons/protocol_engine/execution/pipetting.py @@ -1,5 +1,5 @@ """Pipetting command handling.""" -from typing import Optional, Iterator +from typing import Optional, Iterator, Tuple from typing_extensions import Protocol as TypingProtocol from contextlib import contextmanager @@ -45,6 +45,28 @@ async def aspirate_in_place( ) -> float: """Set flow-rate and aspirate.""" + async def aspirate_while_tracking( + self, + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + command_note_adder: CommandNoteAdder, + ) -> float: + """Set flow-rate and aspirate while tracking.""" + + async def dispense_while_tracking( + self, + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + push_out: Optional[float], + ) -> float: + """Set flow-rate and dispense while tracking.""" + async def dispense_in_place( self, pipette_id: str, @@ -99,9 +121,47 @@ async def prepare_for_aspirate(self, pipette_id: str) -> None: hw_mount = self._state_view.pipettes.get_mount(pipette_id).to_hw_mount() await self._hardware_api.prepare_for_aspirate(mount=hw_mount) - async def aspirate_in_place( + def get_hw_aspirate_params( + self, + pipette_id: str, + volume: float, + command_note_adder: CommandNoteAdder, + ) -> Tuple[HardwarePipette, float]: + """Get params for hardware aspirate.""" + _adjusted_volume = _validate_aspirate_volume( + state_view=self._state_view, + pipette_id=pipette_id, + aspirate_volume=volume, + command_note_adder=command_note_adder, + ) + _hw_pipette = self._state_view.pipettes.get_hardware_pipette( + pipette_id=pipette_id, + attached_pipettes=self._hardware_api.attached_instruments, + ) + return _hw_pipette, _adjusted_volume + + def get_hw_dispense_params( + self, + pipette_id: str, + volume: float, + ) -> Tuple[HardwarePipette, float]: + """Get params for hardware dispense.""" + _adjusted_volume = _validate_dispense_volume( + state_view=self._state_view, + pipette_id=pipette_id, + dispense_volume=volume, + ) + _hw_pipette = self._state_view.pipettes.get_hardware_pipette( + pipette_id=pipette_id, + attached_pipettes=self._hardware_api.attached_instruments, + ) + return _hw_pipette, _adjusted_volume + + async def aspirate_while_tracking( self, pipette_id: str, + labware_id: str, + well_name: str, volume: float, flow_rate: float, command_note_adder: CommandNoteAdder, @@ -112,15 +172,76 @@ async def aspirate_in_place( PipetteOverpressureError, propagated as-is from the hardware controller. """ # get mount and config data from state and hardware controller - adjusted_volume = _validate_aspirate_volume( - state_view=self._state_view, - pipette_id=pipette_id, - aspirate_volume=volume, - command_note_adder=command_note_adder, + """hw_pipette, adjusted_volume = self.get_hw_aspirate_params( + pipette_id, volume, command_note_adder ) - hw_pipette = self._state_view.pipettes.get_hardware_pipette( - pipette_id=pipette_id, - attached_pipettes=self._hardware_api.attached_instruments, + + aspirate_z_distance = self._state_view.geometry.get_liquid_handling_z_change( + labware_id=labware_id, + well_name=well_name, + operation_volume=volume * -1, + ) + with self._set_flow_rate(pipette=hw_pipette, aspirate_flow_rate=flow_rate): + await self._hardware_api.aspirate_while_tracking( + mount=hw_pipette.mount, + z_distance=aspirate_z_distance, + flow_rate=flow_rate, + volume=adjusted_volume, + ) + return adjusted_volume + """ + return 0.0 + + async def dispense_while_tracking( + self, + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + push_out: Optional[float], + ) -> float: + """Set flow-rate and dispense. + + Raises: + PipetteOverpressureError, propagated as-is from the hardware controller. + """ + # get mount and config data from state and hardware controller + """hw_pipette, adjusted_volume = self.get_hw_dispense_params(pipette_id, volume) + + dispense_z_distance = self._state_view.geometry.get_liquid_handling_z_change( + labware_id=labware_id, + well_name=well_name, + operation_volume=volume, + ) + with self._set_flow_rate(pipette=hw_pipette, dispense_flow_rate=flow_rate): + await self._hardware_api.dispense_while_tracking( + mount=hw_pipette.mount, + z_distance=dispense_z_distance, + flow_rate=flow_rate, + volume=adjusted_volume, + push_out=push_out, + ) + + return adjusted_volume + """ + return 0.0 + + async def aspirate_in_place( + self, + pipette_id: str, + volume: float, + flow_rate: float, + command_note_adder: CommandNoteAdder, + ) -> float: + """Set flow-rate and aspirate. + + Raises: + PipetteOverpressureError, propagated as-is from the hardware controller. + """ + # get mount and config data from state and hardware controller + hw_pipette, adjusted_volume = self.get_hw_aspirate_params( + pipette_id, volume, command_note_adder ) with self._set_flow_rate(pipette=hw_pipette, aspirate_flow_rate=flow_rate): await self._hardware_api.aspirate( @@ -137,13 +258,7 @@ async def dispense_in_place( push_out: Optional[float], ) -> float: """Dispense liquid without moving the pipette.""" - adjusted_volume = _validate_dispense_volume( - state_view=self._state_view, pipette_id=pipette_id, dispense_volume=volume - ) - hw_pipette = self._state_view.pipettes.get_hardware_pipette( - pipette_id=pipette_id, - attached_pipettes=self._hardware_api.attached_instruments, - ) + hw_pipette, adjusted_volume = self.get_hw_dispense_params(pipette_id, volume) # TODO (tz, 8-23-23): add a check for push_out not larger that the max volume allowed when working on this https://opentrons.atlassian.net/browse/RSS-329 if push_out and push_out < 0: raise InvalidPushOutVolumeError( @@ -272,6 +387,7 @@ async def dispense_in_place( raise InvalidPushOutVolumeError( "push out value cannot have a negative value." ) + raise ValueError("why am i here") self._validate_tip_attached(pipette_id=pipette_id, command_name="dispense") return _validate_dispense_volume( state_view=self._state_view, pipette_id=pipette_id, dispense_volume=volume @@ -303,6 +419,45 @@ def _validate_tip_attached(self, pipette_id: str, command_name: str) -> None: f"Cannot perform {command_name} without a tip attached" ) + async def aspirate_while_tracking( + self, + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + command_note_adder: CommandNoteAdder, + ) -> float: + """Virtually aspirate (no-op).""" + self._validate_tip_attached(pipette_id=pipette_id, command_name="aspirate") + + return _validate_aspirate_volume( + state_view=self._state_view, + pipette_id=pipette_id, + aspirate_volume=volume, + command_note_adder=command_note_adder, + ) + + async def dispense_while_tracking( + self, + pipette_id: str, + labware_id: str, + well_name: str, + volume: float, + flow_rate: float, + push_out: Optional[float], + ) -> float: + """Virtually dispense (no-op).""" + # TODO (tz, 8-23-23): add a check for push_out not larger that the max volume allowed when working on this https://opentrons.atlassian.net/browse/RSS-329 + if push_out and push_out < 0: + raise InvalidPushOutVolumeError( + "push out value cannot have a negative value." + ) + self._validate_tip_attached(pipette_id=pipette_id, command_name="dispense") + return _validate_dispense_volume( + state_view=self._state_view, pipette_id=pipette_id, dispense_volume=volume + ) + def create_pipetting_handler( state_view: StateView, hardware_api: HardwareControlAPI diff --git a/api/src/opentrons/protocol_engine/state/frustum_helpers.py b/api/src/opentrons/protocol_engine/state/frustum_helpers.py index b28fb936be7..3c1fa867759 100644 --- a/api/src/opentrons/protocol_engine/state/frustum_helpers.py +++ b/api/src/opentrons/protocol_engine/state/frustum_helpers.py @@ -362,7 +362,9 @@ def find_volume_at_well_height( volumetric_capacity = get_well_volumetric_capacity(well_geometry) max_height = volumetric_capacity[-1][0] if target_height < 0 or target_height > max_height: - raise InvalidLiquidHeightFound("Invalid target height.") + # find where we fail bc height < lld minimum and kick off error recovery + # to allow the pipette to go to well.bottom() rather than probe in the future + raise InvalidLiquidHeightFound(f"Invalid target height {target_height}.") # volumes in volumetric_capacity are relative to each frustum, # so we have to find the volume of all the full sections enclosed # beneath the target height @@ -423,7 +425,9 @@ def find_height_at_well_volume( volumetric_capacity = get_well_volumetric_capacity(well_geometry) max_volume = sum(row[1] for row in volumetric_capacity) if target_volume < 0 or target_volume > max_volume: - raise InvalidLiquidHeightFound("Invalid target volume.") + raise InvalidLiquidHeightFound( + f"Invalid target volume {target_volume}, max vol {max_volume}." + ) sorted_well = sorted(well_geometry.sections, key=lambda section: section.topHeight) # find the section the target volume is in and compute the height diff --git a/api/src/opentrons/protocol_engine/state/motion.py b/api/src/opentrons/protocol_engine/state/motion.py index 855025d01b6..15a8d6a633c 100644 --- a/api/src/opentrons/protocol_engine/state/motion.py +++ b/api/src/opentrons/protocol_engine/state/motion.py @@ -129,7 +129,7 @@ def get_movement_waypoints_to_well( extra_waypoints = self._geometry.get_extra_waypoints( location=location, to_slot=destination_slot ) - + # baddie here try: return motion_planning.get_waypoints( move_type=move_type, From dde3208aed1932938465bb45d29103aa94c7ed30 Mon Sep 17 00:00:00 2001 From: caila-marashaj Date: Wed, 15 Jan 2025 17:36:18 -0500 Subject: [PATCH 2/5] update command schema --- shared-data/command/schemas/11.json | 1500 +++++++++++++++++++++------ 1 file changed, 1200 insertions(+), 300 deletions(-) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 01cd2e3f4a8..e2d61c13874 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -9,7 +9,9 @@ "type": "string" } }, - "required": ["addressableAreaName"], + "required": [ + "addressableAreaName" + ], "title": "AddressableAreaLocation", "type": "object" }, @@ -29,7 +31,11 @@ "type": "number" } }, - "required": ["x", "y", "z"], + "required": [ + "x", + "y", + "z" + ], "title": "AddressableOffsetVector", "type": "object" }, @@ -39,7 +45,9 @@ "commandType": { "const": "airGapInPlace", "default": "airGapInPlace", - "enum": ["airGapInPlace"], + "enum": [ + "airGapInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -57,7 +65,9 @@ "$ref": "#/$defs/AirGapInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "AirGapInPlaceCreate", "type": "object" }, @@ -82,7 +92,11 @@ "type": "number" } }, - "required": ["flowRate", "volume", "pipetteId"], + "required": [ + "flowRate", + "volume", + "pipetteId" + ], "title": "AirGapInPlaceParams", "type": "object" }, @@ -92,7 +106,9 @@ "style": { "const": "ALL", "default": "ALL", - "enum": ["ALL"], + "enum": [ + "ALL" + ], "title": "Style", "type": "string" } @@ -106,7 +122,9 @@ "commandType": { "const": "aspirate", "default": "aspirate", - "enum": ["aspirate"], + "enum": [ + "aspirate" + ], "title": "Commandtype", "type": "string" }, @@ -124,7 +142,9 @@ "$ref": "#/$defs/AspirateParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "AspirateCreate", "type": "object" }, @@ -134,7 +154,9 @@ "commandType": { "const": "aspirateInPlace", "default": "aspirateInPlace", - "enum": ["aspirateInPlace"], + "enum": [ + "aspirateInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -152,7 +174,9 @@ "$ref": "#/$defs/AspirateInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "AspirateInPlaceCreate", "type": "object" }, @@ -177,7 +201,11 @@ "type": "number" } }, - "required": ["flowRate", "volume", "pipetteId"], + "required": [ + "flowRate", + "volume", + "pipetteId" + ], "title": "AspirateInPlaceParams", "type": "object" }, @@ -208,7 +236,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative well location at which to perform the operation" + "description": "Relative wwellell location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -216,7 +244,13 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "flowRate", + "volume", + "pipetteId" + ], "title": "AspirateParams", "type": "object" }, @@ -337,13 +371,92 @@ "title": "AspirateProperties", "type": "object" }, + "AspirateWhileTrackingCreate": { + "description": "Create aspirate command request model.", + "properties": { + "commandType": { + "const": "aspirateWhileTracking", + "default": "aspirateWhileTracking", + "enum": [ + "aspirateWhileTracking" + ], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/AspirateWhileTrackingParams" + } + }, + "required": [ + "params" + ], + "title": "AspirateWhileTrackingCreate", + "type": "object" + }, + "AspirateWhileTrackingParams": { + "description": "Parameters required to aspirate from a specific well.", + "properties": { + "flowRate": { + "description": "Speed in \u00b5L/s configured for the pipette", + "exclusiveMinimum": 0.0, + "title": "Flowrate", + "type": "number" + }, + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "volume": { + "description": "The amount of liquid to aspirate, in \u00b5L. Must not be greater than the remaining available amount, which depends on the pipette (see `loadPipette`), its configuration (see `configureForVolume`), the tip (see `pickUpTip`), and the amount you've aspirated so far. There is some tolerance for floating point rounding errors.", + "minimum": 0.0, + "title": "Volume", + "type": "number" + }, + "wellLocation": { + "$ref": "#/$defs/LiquidHandlingWellLocation", + "description": "Relative wwellell location at which to perform the operation" + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": [ + "labwareId", + "wellName", + "flowRate", + "volume", + "pipetteId" + ], + "title": "AspirateWhileTrackingParams", + "type": "object" + }, "BlowOutCreate": { "description": "Create blow-out command request model.", "properties": { "commandType": { "const": "blowout", "default": "blowout", - "enum": ["blowout"], + "enum": [ + "blowout" + ], "title": "Commandtype", "type": "string" }, @@ -361,7 +474,9 @@ "$ref": "#/$defs/BlowOutParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "BlowOutCreate", "type": "object" }, @@ -371,7 +486,9 @@ "commandType": { "const": "blowOutInPlace", "default": "blowOutInPlace", - "enum": ["blowOutInPlace"], + "enum": [ + "blowOutInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -389,7 +506,9 @@ "$ref": "#/$defs/BlowOutInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "BlowOutInPlaceCreate", "type": "object" }, @@ -408,7 +527,10 @@ "type": "string" } }, - "required": ["flowRate", "pipetteId"], + "required": [ + "flowRate", + "pipetteId" + ], "title": "BlowOutInPlaceParams", "type": "object" }, @@ -441,13 +563,22 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "flowRate", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "flowRate", + "pipetteId" + ], "title": "BlowOutParams", "type": "object" }, "BlowoutLocation": { "description": "Location for blowout during a transfer function.", - "enum": ["source", "destination", "trash"], + "enum": [ + "source", + "destination", + "trash" + ], "title": "BlowoutLocation", "type": "string" }, @@ -473,7 +604,10 @@ "description": "Location well or trash entity for blow out." } }, - "required": ["location", "flowRate"], + "required": [ + "location", + "flowRate" + ], "title": "BlowoutParams", "type": "object" }, @@ -491,7 +625,9 @@ "title": "Params" } }, - "required": ["enable"], + "required": [ + "enable" + ], "title": "BlowoutProperties", "type": "object" }, @@ -501,7 +637,9 @@ "commandType": { "const": "calibration/calibrateGripper", "default": "calibration/calibrateGripper", - "enum": ["calibration/calibrateGripper"], + "enum": [ + "calibration/calibrateGripper" + ], "title": "Commandtype", "type": "string" }, @@ -519,7 +657,9 @@ "$ref": "#/$defs/CalibrateGripperParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CalibrateGripperCreate", "type": "object" }, @@ -536,12 +676,17 @@ "title": "Otherjawoffset" } }, - "required": ["jaw"], + "required": [ + "jaw" + ], "title": "CalibrateGripperParams", "type": "object" }, "CalibrateGripperParamsJaw": { - "enum": ["front", "rear"], + "enum": [ + "front", + "rear" + ], "title": "CalibrateGripperParamsJaw", "type": "string" }, @@ -551,7 +696,9 @@ "commandType": { "const": "calibration/calibrateModule", "default": "calibration/calibrateModule", - "enum": ["calibration/calibrateModule"], + "enum": [ + "calibration/calibrateModule" + ], "title": "Commandtype", "type": "string" }, @@ -569,7 +716,9 @@ "$ref": "#/$defs/CalibrateModuleParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CalibrateModuleCreate", "type": "object" }, @@ -591,7 +740,11 @@ "description": "The instrument mount used to calibrate the module." } }, - "required": ["moduleId", "labwareId", "mount"], + "required": [ + "moduleId", + "labwareId", + "mount" + ], "title": "CalibrateModuleParams", "type": "object" }, @@ -601,7 +754,9 @@ "commandType": { "const": "calibration/calibratePipette", "default": "calibration/calibratePipette", - "enum": ["calibration/calibratePipette"], + "enum": [ + "calibration/calibratePipette" + ], "title": "Commandtype", "type": "string" }, @@ -619,7 +774,9 @@ "$ref": "#/$defs/CalibratePipetteParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CalibratePipetteCreate", "type": "object" }, @@ -631,7 +788,9 @@ "description": "Instrument mount to calibrate." } }, - "required": ["mount"], + "required": [ + "mount" + ], "title": "CalibratePipetteParams", "type": "object" }, @@ -641,7 +800,9 @@ "commandType": { "const": "heaterShaker/closeLabwareLatch", "default": "heaterShaker/closeLabwareLatch", - "enum": ["heaterShaker/closeLabwareLatch"], + "enum": [ + "heaterShaker/closeLabwareLatch" + ], "title": "Commandtype", "type": "string" }, @@ -659,7 +820,9 @@ "$ref": "#/$defs/CloseLabwareLatchParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CloseLabwareLatchCreate", "type": "object" }, @@ -672,7 +835,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "CloseLabwareLatchParams", "type": "object" }, @@ -681,25 +846,38 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": ["A1", "H1", "A12", "H12"], + "enum": [ + "A1", + "H1", + "A12", + "H12" + ], "title": "Primarynozzle", "type": "string" }, "style": { "const": "COLUMN", "default": "COLUMN", - "enum": ["COLUMN"], + "enum": [ + "COLUMN" + ], "title": "Style", "type": "string" } }, - "required": ["primaryNozzle"], + "required": [ + "primaryNozzle" + ], "title": "ColumnNozzleLayoutConfiguration", "type": "object" }, "CommandIntent": { "description": "Run intent for a given command.\n\nProps:\n PROTOCOL: the command is part of the protocol run itself.\n SETUP: the command is part of the setup phase of a run.", - "enum": ["protocol", "setup", "fixit"], + "enum": [ + "protocol", + "setup", + "fixit" + ], "title": "CommandIntent", "type": "string" }, @@ -709,7 +887,9 @@ "commandType": { "const": "comment", "default": "comment", - "enum": ["comment"], + "enum": [ + "comment" + ], "title": "Commandtype", "type": "string" }, @@ -727,7 +907,9 @@ "$ref": "#/$defs/CommentParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CommentCreate", "type": "object" }, @@ -740,7 +922,9 @@ "type": "string" } }, - "required": ["message"], + "required": [ + "message" + ], "title": "CommentParams", "type": "object" }, @@ -750,7 +934,9 @@ "commandType": { "const": "configureForVolume", "default": "configureForVolume", - "enum": ["configureForVolume"], + "enum": [ + "configureForVolume" + ], "title": "Commandtype", "type": "string" }, @@ -768,7 +954,9 @@ "$ref": "#/$defs/ConfigureForVolumeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "ConfigureForVolumeCreate", "type": "object" }, @@ -792,7 +980,10 @@ "type": "number" } }, - "required": ["pipetteId", "volume"], + "required": [ + "pipetteId", + "volume" + ], "title": "ConfigureForVolumeParams", "type": "object" }, @@ -802,7 +993,9 @@ "commandType": { "const": "configureNozzleLayout", "default": "configureNozzleLayout", - "enum": ["configureNozzleLayout"], + "enum": [ + "configureNozzleLayout" + ], "title": "Commandtype", "type": "string" }, @@ -820,7 +1013,9 @@ "$ref": "#/$defs/ConfigureNozzleLayoutParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "ConfigureNozzleLayoutCreate", "type": "object" }, @@ -853,7 +1048,10 @@ "type": "string" } }, - "required": ["pipetteId", "configurationParams"], + "required": [ + "pipetteId", + "configurationParams" + ], "title": "ConfigureNozzleLayoutParams", "type": "object" }, @@ -894,7 +1092,11 @@ "title": "Z" } }, - "required": ["x", "y", "z"], + "required": [ + "x", + "y", + "z" + ], "title": "Coordinate", "type": "object" }, @@ -904,7 +1106,9 @@ "commandType": { "const": "custom", "default": "custom", - "enum": ["custom"], + "enum": [ + "custom" + ], "title": "Commandtype", "type": "string" }, @@ -922,7 +1126,9 @@ "$ref": "#/$defs/CustomParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CustomCreate", "type": "object" }, @@ -939,7 +1145,9 @@ "commandType": { "const": "thermocycler/deactivateBlock", "default": "thermocycler/deactivateBlock", - "enum": ["thermocycler/deactivateBlock"], + "enum": [ + "thermocycler/deactivateBlock" + ], "title": "Commandtype", "type": "string" }, @@ -957,7 +1165,9 @@ "$ref": "#/$defs/DeactivateBlockParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DeactivateBlockCreate", "type": "object" }, @@ -970,7 +1180,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DeactivateBlockParams", "type": "object" }, @@ -980,7 +1192,9 @@ "commandType": { "const": "heaterShaker/deactivateHeater", "default": "heaterShaker/deactivateHeater", - "enum": ["heaterShaker/deactivateHeater"], + "enum": [ + "heaterShaker/deactivateHeater" + ], "title": "Commandtype", "type": "string" }, @@ -998,7 +1212,9 @@ "$ref": "#/$defs/DeactivateHeaterParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DeactivateHeaterCreate", "type": "object" }, @@ -1011,7 +1227,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DeactivateHeaterParams", "type": "object" }, @@ -1021,7 +1239,9 @@ "commandType": { "const": "thermocycler/deactivateLid", "default": "thermocycler/deactivateLid", - "enum": ["thermocycler/deactivateLid"], + "enum": [ + "thermocycler/deactivateLid" + ], "title": "Commandtype", "type": "string" }, @@ -1039,7 +1259,9 @@ "$ref": "#/$defs/DeactivateLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DeactivateLidCreate", "type": "object" }, @@ -1052,7 +1274,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DeactivateLidParams", "type": "object" }, @@ -1062,7 +1286,9 @@ "commandType": { "const": "heaterShaker/deactivateShaker", "default": "heaterShaker/deactivateShaker", - "enum": ["heaterShaker/deactivateShaker"], + "enum": [ + "heaterShaker/deactivateShaker" + ], "title": "Commandtype", "type": "string" }, @@ -1080,7 +1306,9 @@ "$ref": "#/$defs/DeactivateShakerParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DeactivateShakerCreate", "type": "object" }, @@ -1093,7 +1321,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DeactivateShakerParams", "type": "object" }, @@ -1103,7 +1333,9 @@ "commandType": { "const": "temperatureModule/deactivate", "default": "temperatureModule/deactivate", - "enum": ["temperatureModule/deactivate"], + "enum": [ + "temperatureModule/deactivate" + ], "title": "Commandtype", "type": "string" }, @@ -1121,7 +1353,9 @@ "$ref": "#/$defs/DeactivateTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DeactivateTemperatureCreate", "type": "object" }, @@ -1134,7 +1368,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DeactivateTemperatureParams", "type": "object" }, @@ -1154,7 +1390,11 @@ "type": "number" } }, - "required": ["x", "y", "z"], + "required": [ + "x", + "y", + "z" + ], "title": "DeckPoint", "type": "object" }, @@ -1166,7 +1406,9 @@ "description": "A slot on the robot's deck.\n\nThe plain numbers like `\"5\"` are for the OT-2, and the coordinates like `\"C2\"` are for the Flex.\n\nWhen you provide one of these values, you can use either style. It will automatically be converted to match the robot.\n\nWhen one of these values is returned, it will always match the robot." } }, - "required": ["slotName"], + "required": [ + "slotName" + ], "title": "DeckSlotLocation", "type": "object" }, @@ -1219,7 +1461,9 @@ "title": "Duration" } }, - "required": ["duration"], + "required": [ + "duration" + ], "title": "DelayParams", "type": "object" }, @@ -1237,7 +1481,9 @@ "title": "Params" } }, - "required": ["enable"], + "required": [ + "enable" + ], "title": "DelayProperties", "type": "object" }, @@ -1247,7 +1493,9 @@ "commandType": { "const": "magneticModule/disengage", "default": "magneticModule/disengage", - "enum": ["magneticModule/disengage"], + "enum": [ + "magneticModule/disengage" + ], "title": "Commandtype", "type": "string" }, @@ -1265,7 +1513,9 @@ "$ref": "#/$defs/DisengageParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DisengageCreate", "type": "object" }, @@ -1278,7 +1528,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "DisengageParams", "type": "object" }, @@ -1288,7 +1540,9 @@ "commandType": { "const": "dispense", "default": "dispense", - "enum": ["dispense"], + "enum": [ + "dispense" + ], "title": "Commandtype", "type": "string" }, @@ -1306,7 +1560,9 @@ "$ref": "#/$defs/DispenseParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DispenseCreate", "type": "object" }, @@ -1316,7 +1572,9 @@ "commandType": { "const": "dispenseInPlace", "default": "dispenseInPlace", - "enum": ["dispenseInPlace"], + "enum": [ + "dispenseInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -1334,7 +1592,9 @@ "$ref": "#/$defs/DispenseInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DispenseInPlaceCreate", "type": "object" }, @@ -1364,7 +1624,11 @@ "type": "number" } }, - "required": ["flowRate", "volume", "pipetteId"], + "required": [ + "flowRate", + "volume", + "pipetteId" + ], "title": "DispenseInPlaceParams", "type": "object" }, @@ -1400,7 +1664,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative well location at which to perform the operation" + "description": "Relative wwellell location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -1408,17 +1672,107 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "flowRate", + "volume", + "pipetteId" + ], "title": "DispenseParams", "type": "object" }, + "DispenseWhileTrackingCreate": { + "description": "Create dispense command request model.", + "properties": { + "commandType": { + "const": "dispenseWhileTracking", + "default": "dispenseWhileTracking", + "enum": [ + "dispenseWhileTracking" + ], + "title": "Commandtype", + "type": "string" + }, + "intent": { + "$ref": "#/$defs/CommandIntent", + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "title": "Intent" + }, + "key": { + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "title": "Key", + "type": "string" + }, + "params": { + "$ref": "#/$defs/DispenseWhileTrackingParams" + } + }, + "required": [ + "params" + ], + "title": "DispenseWhileTrackingCreate", + "type": "object" + }, + "DispenseWhileTrackingParams": { + "description": "Payload required to dispense to a specific well.", + "properties": { + "flowRate": { + "description": "Speed in \u00b5L/s configured for the pipette", + "exclusiveMinimum": 0.0, + "title": "Flowrate", + "type": "number" + }, + "labwareId": { + "description": "Identifier of labware to use.", + "title": "Labwareid", + "type": "string" + }, + "pipetteId": { + "description": "Identifier of pipette to use for liquid handling.", + "title": "Pipetteid", + "type": "string" + }, + "pushOut": { + "description": "push the plunger a small amount farther than necessary for accurate low-volume dispensing", + "title": "Pushout", + "type": "number" + }, + "volume": { + "description": "The amount of liquid to dispense, in \u00b5L. Must not be greater than the currently aspirated volume. There is some tolerance for floating point rounding errors.", + "minimum": 0.0, + "title": "Volume", + "type": "number" + }, + "wellLocation": { + "$ref": "#/$defs/LiquidHandlingWellLocation", + "description": "Relative wwellell location at which to perform the operation" + }, + "wellName": { + "description": "Name of well to use in labware.", + "title": "Wellname", + "type": "string" + } + }, + "required": [ + "labwareId", + "wellName", + "flowRate", + "volume", + "pipetteId" + ], + "title": "DispenseWhileTrackingParams", + "type": "object" + }, "DropTipCreate": { "description": "Drop tip command creation request model.", "properties": { "commandType": { "const": "dropTip", "default": "dropTip", - "enum": ["dropTip"], + "enum": [ + "dropTip" + ], "title": "Commandtype", "type": "string" }, @@ -1436,7 +1790,9 @@ "$ref": "#/$defs/DropTipParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DropTipCreate", "type": "object" }, @@ -1446,7 +1802,9 @@ "commandType": { "const": "dropTipInPlace", "default": "dropTipInPlace", - "enum": ["dropTipInPlace"], + "enum": [ + "dropTipInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -1464,7 +1822,9 @@ "$ref": "#/$defs/DropTipInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "DropTipInPlaceCreate", "type": "object" }, @@ -1482,7 +1842,9 @@ "type": "string" } }, - "required": ["pipetteId"], + "required": [ + "pipetteId" + ], "title": "DropTipInPlaceParams", "type": "object" }, @@ -1519,7 +1881,11 @@ "type": "string" } }, - "required": ["pipetteId", "labwareId", "wellName"], + "required": [ + "pipetteId", + "labwareId", + "wellName" + ], "title": "DropTipParams", "type": "object" }, @@ -1539,7 +1905,12 @@ }, "DropTipWellOrigin": { "description": "The origin of a DropTipWellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well\n DEFAULT: the default drop-tip location of the well,\n based on pipette configuration and length of the tip.", - "enum": ["top", "bottom", "center", "default"], + "enum": [ + "top", + "bottom", + "center", + "default" + ], "title": "DropTipWellOrigin", "type": "string" }, @@ -1549,7 +1920,9 @@ "commandType": { "const": "magneticModule/engage", "default": "magneticModule/engage", - "enum": ["magneticModule/engage"], + "enum": [ + "magneticModule/engage" + ], "title": "Commandtype", "type": "string" }, @@ -1567,7 +1940,9 @@ "$ref": "#/$defs/EngageParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "EngageCreate", "type": "object" }, @@ -1585,7 +1960,10 @@ "type": "string" } }, - "required": ["moduleId", "height"], + "required": [ + "moduleId", + "height" + ], "title": "EngageParams", "type": "object" }, @@ -1595,7 +1973,9 @@ "commandType": { "const": "getNextTip", "default": "getNextTip", - "enum": ["getNextTip"], + "enum": [ + "getNextTip" + ], "title": "Commandtype", "type": "string" }, @@ -1613,7 +1993,9 @@ "$ref": "#/$defs/GetNextTipParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "GetNextTipCreate", "type": "object" }, @@ -1639,7 +2021,10 @@ "type": "string" } }, - "required": ["pipetteId", "labwareIds"], + "required": [ + "pipetteId", + "labwareIds" + ], "title": "GetNextTipParams", "type": "object" }, @@ -1649,7 +2034,9 @@ "commandType": { "const": "getTipPresence", "default": "getTipPresence", - "enum": ["getTipPresence"], + "enum": [ + "getTipPresence" + ], "title": "Commandtype", "type": "string" }, @@ -1667,7 +2054,9 @@ "$ref": "#/$defs/GetTipPresenceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "GetTipPresenceCreate", "type": "object" }, @@ -1680,7 +2069,9 @@ "type": "string" } }, - "required": ["pipetteId"], + "required": [ + "pipetteId" + ], "title": "GetTipPresenceParams", "type": "object" }, @@ -1690,7 +2081,9 @@ "commandType": { "const": "home", "default": "home", - "enum": ["home"], + "enum": [ + "home" + ], "title": "Commandtype", "type": "string" }, @@ -1708,7 +2101,9 @@ "$ref": "#/$defs/HomeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "HomeCreate", "type": "object" }, @@ -1738,7 +2133,9 @@ "commandType": { "const": "absorbanceReader/initialize", "default": "absorbanceReader/initialize", - "enum": ["absorbanceReader/initialize"], + "enum": [ + "absorbanceReader/initialize" + ], "title": "Commandtype", "type": "string" }, @@ -1756,7 +2153,9 @@ "$ref": "#/$defs/InitializeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "InitializeCreate", "type": "object" }, @@ -1765,7 +2164,10 @@ "properties": { "measureMode": { "description": "Initialize single or multi measurement mode.", - "enum": ["single", "multi"], + "enum": [ + "single", + "multi" + ], "title": "Measuremode", "type": "string" }, @@ -1788,19 +2190,31 @@ "type": "array" } }, - "required": ["moduleId", "measureMode", "sampleWavelengths"], + "required": [ + "moduleId", + "measureMode", + "sampleWavelengths" + ], "title": "InitializeParams", "type": "object" }, "InstrumentSensorId": { "description": "Primary and secondary sensor ids.", - "enum": ["primary", "secondary", "both"], + "enum": [ + "primary", + "secondary", + "both" + ], "title": "InstrumentSensorId", "type": "string" }, "LabwareMovementStrategy": { "description": "Strategy to use for labware movement.", - "enum": ["usingGripper", "manualMoveWithPause", "manualMoveWithoutPause"], + "enum": [ + "usingGripper", + "manualMoveWithPause", + "manualMoveWithoutPause" + ], "title": "LabwareMovementStrategy", "type": "string" }, @@ -1820,7 +2234,11 @@ "type": "number" } }, - "required": ["x", "y", "z"], + "required": [ + "x", + "y", + "z" + ], "title": "LabwareOffsetVector", "type": "object" }, @@ -1908,7 +2326,11 @@ "title": "Zoffset" } }, - "required": ["zOffset", "mmToEdge", "speed"], + "required": [ + "zOffset", + "mmToEdge", + "speed" + ], "title": "LiquidClassTouchTipParams", "type": "object" }, @@ -1929,7 +2351,9 @@ }, { "const": "operationVolume", - "enum": ["operationVolume"], + "enum": [ + "operationVolume" + ], "type": "string" } ], @@ -1947,7 +2371,9 @@ "commandType": { "const": "liquidProbe", "default": "liquidProbe", - "enum": ["liquidProbe"], + "enum": [ + "liquidProbe" + ], "title": "Commandtype", "type": "string" }, @@ -1965,7 +2391,9 @@ "$ref": "#/$defs/LiquidProbeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LiquidProbeCreate", "type": "object" }, @@ -1992,7 +2420,11 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "pipetteId" + ], "title": "LiquidProbeParams", "type": "object" }, @@ -2002,7 +2434,9 @@ "commandType": { "const": "loadLabware", "default": "loadLabware", - "enum": ["loadLabware"], + "enum": [ + "loadLabware" + ], "title": "Commandtype", "type": "string" }, @@ -2020,7 +2454,9 @@ "$ref": "#/$defs/LoadLabwareParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadLabwareCreate", "type": "object" }, @@ -2055,7 +2491,9 @@ }, { "const": "offDeck", - "enum": ["offDeck"], + "enum": [ + "offDeck" + ], "type": "string" }, { @@ -2076,7 +2514,12 @@ "type": "integer" } }, - "required": ["location", "loadName", "namespace", "version"], + "required": [ + "location", + "loadName", + "namespace", + "version" + ], "title": "LoadLabwareParams", "type": "object" }, @@ -2086,7 +2529,9 @@ "commandType": { "const": "loadLid", "default": "loadLid", - "enum": ["loadLid"], + "enum": [ + "loadLid" + ], "title": "Commandtype", "type": "string" }, @@ -2104,7 +2549,9 @@ "$ref": "#/$defs/LoadLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadLidCreate", "type": "object" }, @@ -2129,7 +2576,9 @@ }, { "const": "offDeck", - "enum": ["offDeck"], + "enum": [ + "offDeck" + ], "type": "string" }, { @@ -2150,7 +2599,12 @@ "type": "integer" } }, - "required": ["location", "loadName", "namespace", "version"], + "required": [ + "location", + "loadName", + "namespace", + "version" + ], "title": "LoadLidParams", "type": "object" }, @@ -2160,7 +2614,9 @@ "commandType": { "const": "loadLidStack", "default": "loadLidStack", - "enum": ["loadLidStack"], + "enum": [ + "loadLidStack" + ], "title": "Commandtype", "type": "string" }, @@ -2178,7 +2634,9 @@ "$ref": "#/$defs/LoadLidStackParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadLidStackCreate", "type": "object" }, @@ -2203,7 +2661,9 @@ }, { "const": "offDeck", - "enum": ["offDeck"], + "enum": [ + "offDeck" + ], "type": "string" }, { @@ -2229,7 +2689,13 @@ "type": "integer" } }, - "required": ["location", "loadName", "namespace", "version", "quantity"], + "required": [ + "location", + "loadName", + "namespace", + "version", + "quantity" + ], "title": "LoadLidStackParams", "type": "object" }, @@ -2239,7 +2705,9 @@ "commandType": { "const": "loadLiquidClass", "default": "loadLiquidClass", - "enum": ["loadLiquidClass"], + "enum": [ + "loadLiquidClass" + ], "title": "Commandtype", "type": "string" }, @@ -2257,7 +2725,9 @@ "$ref": "#/$defs/LoadLiquidClassParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadLiquidClassCreate", "type": "object" }, @@ -2274,7 +2744,9 @@ "description": "The liquid class to store." } }, - "required": ["liquidClassRecord"], + "required": [ + "liquidClassRecord" + ], "title": "LoadLiquidClassParams", "type": "object" }, @@ -2284,7 +2756,9 @@ "commandType": { "const": "loadLiquid", "default": "loadLiquid", - "enum": ["loadLiquid"], + "enum": [ + "loadLiquid" + ], "title": "Commandtype", "type": "string" }, @@ -2302,7 +2776,9 @@ "$ref": "#/$defs/LoadLiquidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadLiquidCreate", "type": "object" }, @@ -2321,7 +2797,9 @@ }, { "const": "EMPTY", - "enum": ["EMPTY"], + "enum": [ + "EMPTY" + ], "type": "string" } ], @@ -2337,7 +2815,11 @@ "type": "object" } }, - "required": ["liquidId", "labwareId", "volumeByWell"], + "required": [ + "liquidId", + "labwareId", + "volumeByWell" + ], "title": "LoadLiquidParams", "type": "object" }, @@ -2347,7 +2829,9 @@ "commandType": { "const": "loadModule", "default": "loadModule", - "enum": ["loadModule"], + "enum": [ + "loadModule" + ], "title": "Commandtype", "type": "string" }, @@ -2365,7 +2849,9 @@ "$ref": "#/$defs/LoadModuleParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadModuleCreate", "type": "object" }, @@ -2386,7 +2872,10 @@ "type": "string" } }, - "required": ["model", "location"], + "required": [ + "model", + "location" + ], "title": "LoadModuleParams", "type": "object" }, @@ -2396,7 +2885,9 @@ "commandType": { "const": "loadPipette", "default": "loadPipette", - "enum": ["loadPipette"], + "enum": [ + "loadPipette" + ], "title": "Commandtype", "type": "string" }, @@ -2414,7 +2905,9 @@ "$ref": "#/$defs/LoadPipetteParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "LoadPipetteCreate", "type": "object" }, @@ -2445,13 +2938,19 @@ "type": "string" } }, - "required": ["pipetteName", "mount"], + "required": [ + "pipetteName", + "mount" + ], "title": "LoadPipetteParams", "type": "object" }, "MaintenancePosition": { "description": "Maintenance position options.", - "enum": ["attachPlate", "attachInstrument"], + "enum": [ + "attachPlate", + "attachInstrument" + ], "title": "MaintenancePosition", "type": "string" }, @@ -2477,7 +2976,10 @@ "title": "Volume" } }, - "required": ["repetitions", "volume"], + "required": [ + "repetitions", + "volume" + ], "title": "MixParams", "type": "object" }, @@ -2495,7 +2997,9 @@ "title": "Params" } }, - "required": ["enable"], + "required": [ + "enable" + ], "title": "MixProperties", "type": "object" }, @@ -2508,7 +3012,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "ModuleLocation", "type": "object" }, @@ -2546,7 +3052,11 @@ "type": "string" }, "MountType": { - "enum": ["left", "right", "extension"], + "enum": [ + "left", + "right", + "extension" + ], "title": "MountType", "type": "string" }, @@ -2556,7 +3066,9 @@ "commandType": { "const": "robot/moveAxesRelative", "default": "robot/moveAxesRelative", - "enum": ["robot/moveAxesRelative"], + "enum": [ + "robot/moveAxesRelative" + ], "title": "Commandtype", "type": "string" }, @@ -2574,7 +3086,9 @@ "$ref": "#/$defs/MoveAxesRelativeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveAxesRelativeCreate", "type": "object" }, @@ -2595,7 +3109,9 @@ "type": "number" } }, - "required": ["axis_map"], + "required": [ + "axis_map" + ], "title": "MoveAxesRelativeParams", "type": "object" }, @@ -2605,7 +3121,9 @@ "commandType": { "const": "robot/moveAxesTo", "default": "robot/moveAxesTo", - "enum": ["robot/moveAxesTo"], + "enum": [ + "robot/moveAxesTo" + ], "title": "Commandtype", "type": "string" }, @@ -2623,7 +3141,9 @@ "$ref": "#/$defs/MoveAxesToParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveAxesToCreate", "type": "object" }, @@ -2652,7 +3172,9 @@ "type": "number" } }, - "required": ["axis_map"], + "required": [ + "axis_map" + ], "title": "MoveAxesToParams", "type": "object" }, @@ -2662,7 +3184,9 @@ "commandType": { "const": "moveLabware", "default": "moveLabware", - "enum": ["moveLabware"], + "enum": [ + "moveLabware" + ], "title": "Commandtype", "type": "string" }, @@ -2680,7 +3204,9 @@ "$ref": "#/$defs/MoveLabwareParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveLabwareCreate", "type": "object" }, @@ -2710,7 +3236,9 @@ }, { "const": "offDeck", - "enum": ["offDeck"], + "enum": [ + "offDeck" + ], "type": "string" }, { @@ -2730,7 +3258,11 @@ "description": "Whether to use the gripper to perform the labware movement or to perform a manual movement with an option to pause." } }, - "required": ["labwareId", "newLocation", "strategy"], + "required": [ + "labwareId", + "newLocation", + "strategy" + ], "title": "MoveLabwareParams", "type": "object" }, @@ -2740,7 +3272,9 @@ "commandType": { "const": "moveRelative", "default": "moveRelative", - "enum": ["moveRelative"], + "enum": [ + "moveRelative" + ], "title": "Commandtype", "type": "string" }, @@ -2758,7 +3292,9 @@ "$ref": "#/$defs/MoveRelativeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveRelativeCreate", "type": "object" }, @@ -2780,7 +3316,11 @@ "type": "string" } }, - "required": ["pipetteId", "axis", "distance"], + "required": [ + "pipetteId", + "axis", + "distance" + ], "title": "MoveRelativeParams", "type": "object" }, @@ -2790,7 +3330,9 @@ "commandType": { "const": "moveToAddressableArea", "default": "moveToAddressableArea", - "enum": ["moveToAddressableArea"], + "enum": [ + "moveToAddressableArea" + ], "title": "Commandtype", "type": "string" }, @@ -2808,7 +3350,9 @@ "$ref": "#/$defs/MoveToAddressableAreaParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToAddressableAreaCreate", "type": "object" }, @@ -2818,7 +3362,9 @@ "commandType": { "const": "moveToAddressableAreaForDropTip", "default": "moveToAddressableAreaForDropTip", - "enum": ["moveToAddressableAreaForDropTip"], + "enum": [ + "moveToAddressableAreaForDropTip" + ], "title": "Commandtype", "type": "string" }, @@ -2836,7 +3382,9 @@ "$ref": "#/$defs/MoveToAddressableAreaForDropTipParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToAddressableAreaForDropTipCreate", "type": "object" }, @@ -2889,7 +3437,10 @@ "type": "number" } }, - "required": ["pipetteId", "addressableAreaName"], + "required": [ + "pipetteId", + "addressableAreaName" + ], "title": "MoveToAddressableAreaForDropTipParams", "type": "object" }, @@ -2938,7 +3489,10 @@ "type": "boolean" } }, - "required": ["pipetteId", "addressableAreaName"], + "required": [ + "pipetteId", + "addressableAreaName" + ], "title": "MoveToAddressableAreaParams", "type": "object" }, @@ -2948,7 +3502,9 @@ "commandType": { "const": "moveToCoordinates", "default": "moveToCoordinates", - "enum": ["moveToCoordinates"], + "enum": [ + "moveToCoordinates" + ], "title": "Commandtype", "type": "string" }, @@ -2966,7 +3522,9 @@ "$ref": "#/$defs/MoveToCoordinatesParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToCoordinatesCreate", "type": "object" }, @@ -2999,7 +3557,10 @@ "type": "number" } }, - "required": ["pipetteId", "coordinates"], + "required": [ + "pipetteId", + "coordinates" + ], "title": "MoveToCoordinatesParams", "type": "object" }, @@ -3009,7 +3570,9 @@ "commandType": { "const": "robot/moveTo", "default": "robot/moveTo", - "enum": ["robot/moveTo"], + "enum": [ + "robot/moveTo" + ], "title": "Commandtype", "type": "string" }, @@ -3027,7 +3590,9 @@ "$ref": "#/$defs/MoveToParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToCreate", "type": "object" }, @@ -3037,7 +3602,9 @@ "commandType": { "const": "calibration/moveToMaintenancePosition", "default": "calibration/moveToMaintenancePosition", - "enum": ["calibration/moveToMaintenancePosition"], + "enum": [ + "calibration/moveToMaintenancePosition" + ], "title": "Commandtype", "type": "string" }, @@ -3055,7 +3622,9 @@ "$ref": "#/$defs/MoveToMaintenancePositionParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToMaintenancePositionCreate", "type": "object" }, @@ -3072,7 +3641,9 @@ "description": "Gantry mount to move maintenance position." } }, - "required": ["mount"], + "required": [ + "mount" + ], "title": "MoveToMaintenancePositionParams", "type": "object" }, @@ -3093,7 +3664,10 @@ "type": "number" } }, - "required": ["mount", "destination"], + "required": [ + "mount", + "destination" + ], "title": "MoveToParams", "type": "object" }, @@ -3103,7 +3677,9 @@ "commandType": { "const": "moveToWell", "default": "moveToWell", - "enum": ["moveToWell"], + "enum": [ + "moveToWell" + ], "title": "Commandtype", "type": "string" }, @@ -3121,7 +3697,9 @@ "$ref": "#/$defs/MoveToWellParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "MoveToWellCreate", "type": "object" }, @@ -3164,13 +3742,21 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "pipetteId" + ], "title": "MoveToWellParams", "type": "object" }, "MovementAxis": { "description": "Axis on which to issue a relative movement.", - "enum": ["x", "y", "z"], + "enum": [ + "x", + "y", + "z" + ], "title": "MovementAxis", "type": "string" }, @@ -3363,7 +3949,9 @@ "type": "string" } }, - "required": ["labwareId"], + "required": [ + "labwareId" + ], "title": "OnLabwareLocation", "type": "object" }, @@ -3373,7 +3961,9 @@ "commandType": { "const": "heaterShaker/openLabwareLatch", "default": "heaterShaker/openLabwareLatch", - "enum": ["heaterShaker/openLabwareLatch"], + "enum": [ + "heaterShaker/openLabwareLatch" + ], "title": "Commandtype", "type": "string" }, @@ -3391,7 +3981,9 @@ "$ref": "#/$defs/OpenLabwareLatchParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "OpenLabwareLatchCreate", "type": "object" }, @@ -3404,7 +3996,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "OpenLabwareLatchParams", "type": "object" }, @@ -3414,7 +4008,9 @@ "commandType": { "const": "pickUpTip", "default": "pickUpTip", - "enum": ["pickUpTip"], + "enum": [ + "pickUpTip" + ], "title": "Commandtype", "type": "string" }, @@ -3432,7 +4028,9 @@ "$ref": "#/$defs/PickUpTipParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "PickUpTipCreate", "type": "object" }, @@ -3459,7 +4057,11 @@ "type": "string" } }, - "required": ["pipetteId", "labwareId", "wellName"], + "required": [ + "pipetteId", + "labwareId", + "wellName" + ], "title": "PickUpTipParams", "type": "object" }, @@ -3479,7 +4081,11 @@ }, "PickUpTipWellOrigin": { "description": "The origin of a PickUpTipWellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well", - "enum": ["top", "bottom", "center"], + "enum": [ + "top", + "bottom", + "center" + ], "title": "PickUpTipWellOrigin", "type": "string" }, @@ -3511,7 +4117,12 @@ }, "PositionReference": { "description": "Positional reference for liquid handling operations.", - "enum": ["well-bottom", "well-top", "well-center", "liquid-meniscus"], + "enum": [ + "well-bottom", + "well-top", + "well-center", + "liquid-meniscus" + ], "title": "PositionReference", "type": "string" }, @@ -3521,7 +4132,9 @@ "commandType": { "const": "prepareToAspirate", "default": "prepareToAspirate", - "enum": ["prepareToAspirate"], + "enum": [ + "prepareToAspirate" + ], "title": "Commandtype", "type": "string" }, @@ -3539,7 +4152,9 @@ "$ref": "#/$defs/PrepareToAspirateParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "PrepareToAspirateCreate", "type": "object" }, @@ -3552,7 +4167,9 @@ "type": "string" } }, - "required": ["pipetteId"], + "required": [ + "pipetteId" + ], "title": "PrepareToAspirateParams", "type": "object" }, @@ -3573,7 +4190,10 @@ "type": "array" } }, - "required": ["steps", "repetitions"], + "required": [ + "steps", + "repetitions" + ], "title": "ProfileCycle", "type": "object" }, @@ -3591,7 +4211,10 @@ "type": "number" } }, - "required": ["celsius", "holdSeconds"], + "required": [ + "celsius", + "holdSeconds" + ], "title": "ProfileStep", "type": "object" }, @@ -3612,19 +4235,30 @@ }, "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": ["A1", "H1", "A12", "H12"], + "enum": [ + "A1", + "H1", + "A12", + "H12" + ], "title": "Primarynozzle", "type": "string" }, "style": { "const": "QUADRANT", "default": "QUADRANT", - "enum": ["QUADRANT"], + "enum": [ + "QUADRANT" + ], "title": "Style", "type": "string" } }, - "required": ["primaryNozzle", "frontRightNozzle", "backLeftNozzle"], + "required": [ + "primaryNozzle", + "frontRightNozzle", + "backLeftNozzle" + ], "title": "QuadrantNozzleLayoutConfiguration", "type": "object" }, @@ -3634,7 +4268,9 @@ "commandType": { "const": "absorbanceReader/read", "default": "absorbanceReader/read", - "enum": ["absorbanceReader/read"], + "enum": [ + "absorbanceReader/read" + ], "title": "Commandtype", "type": "string" }, @@ -3652,7 +4288,9 @@ "$ref": "#/$defs/ReadAbsorbanceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "ReadAbsorbanceCreate", "type": "object" }, @@ -3670,7 +4308,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "ReadAbsorbanceParams", "type": "object" }, @@ -3680,7 +4320,9 @@ "commandType": { "const": "reloadLabware", "default": "reloadLabware", - "enum": ["reloadLabware"], + "enum": [ + "reloadLabware" + ], "title": "Commandtype", "type": "string" }, @@ -3698,7 +4340,9 @@ "$ref": "#/$defs/ReloadLabwareParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "ReloadLabwareCreate", "type": "object" }, @@ -3711,7 +4355,9 @@ "type": "string" } }, - "required": ["labwareId"], + "required": [ + "labwareId" + ], "title": "ReloadLabwareParams", "type": "object" }, @@ -3802,7 +4448,9 @@ "commandType": { "const": "retractAxis", "default": "retractAxis", - "enum": ["retractAxis"], + "enum": [ + "retractAxis" + ], "title": "Commandtype", "type": "string" }, @@ -3820,7 +4468,9 @@ "$ref": "#/$defs/RetractAxisParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "RetractAxisCreate", "type": "object" }, @@ -3832,7 +4482,9 @@ "description": "Axis to retract to its home position as quickly as safely possible. The difference between retracting an axis and homing an axis using the home command is that a home will always probe the limit switch and will work as the first motion command a robot will need to execute; On the other hand, retraction will rely on this previously determined home position to move to it as fast as safely possible. So on the Flex, it will move (fast) the axis to the previously recorded home position and on the OT2, it will move (fast) the axis a safe distance from the previously recorded home position, and then slowly approach the limit switch." } }, - "required": ["axis"], + "required": [ + "axis" + ], "title": "RetractAxisParams", "type": "object" }, @@ -3968,19 +4620,28 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": ["A1", "H1", "A12", "H12"], + "enum": [ + "A1", + "H1", + "A12", + "H12" + ], "title": "Primarynozzle", "type": "string" }, "style": { "const": "ROW", "default": "ROW", - "enum": ["ROW"], + "enum": [ + "ROW" + ], "title": "Style", "type": "string" } }, - "required": ["primaryNozzle"], + "required": [ + "primaryNozzle" + ], "title": "RowNozzleLayoutConfiguration", "type": "object" }, @@ -3990,7 +4651,9 @@ "commandType": { "const": "thermocycler/runExtendedProfile", "default": "thermocycler/runExtendedProfile", - "enum": ["thermocycler/runExtendedProfile"], + "enum": [ + "thermocycler/runExtendedProfile" + ], "title": "Commandtype", "type": "string" }, @@ -4008,7 +4671,9 @@ "$ref": "#/$defs/RunExtendedProfileParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "RunExtendedProfileCreate", "type": "object" }, @@ -4041,7 +4706,10 @@ "type": "array" } }, - "required": ["moduleId", "profileElements"], + "required": [ + "moduleId", + "profileElements" + ], "title": "RunExtendedProfileParams", "type": "object" }, @@ -4051,7 +4719,9 @@ "commandType": { "const": "thermocycler/runProfile", "default": "thermocycler/runProfile", - "enum": ["thermocycler/runProfile"], + "enum": [ + "thermocycler/runProfile" + ], "title": "Commandtype", "type": "string" }, @@ -4069,7 +4739,9 @@ "$ref": "#/$defs/RunProfileParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "RunProfileCreate", "type": "object" }, @@ -4095,7 +4767,10 @@ "type": "array" } }, - "required": ["moduleId", "profile"], + "required": [ + "moduleId", + "profile" + ], "title": "RunProfileParams", "type": "object" }, @@ -4113,7 +4788,10 @@ "type": "number" } }, - "required": ["celsius", "holdSeconds"], + "required": [ + "celsius", + "holdSeconds" + ], "title": "RunProfileStepParams", "type": "object" }, @@ -4123,7 +4801,9 @@ "commandType": { "const": "savePosition", "default": "savePosition", - "enum": ["savePosition"], + "enum": [ + "savePosition" + ], "title": "Commandtype", "type": "string" }, @@ -4141,7 +4821,9 @@ "$ref": "#/$defs/SavePositionParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SavePositionCreate", "type": "object" }, @@ -4164,7 +4846,9 @@ "type": "string" } }, - "required": ["pipetteId"], + "required": [ + "pipetteId" + ], "title": "SavePositionParams", "type": "object" }, @@ -4174,7 +4858,9 @@ "commandType": { "const": "heaterShaker/setAndWaitForShakeSpeed", "default": "heaterShaker/setAndWaitForShakeSpeed", - "enum": ["heaterShaker/setAndWaitForShakeSpeed"], + "enum": [ + "heaterShaker/setAndWaitForShakeSpeed" + ], "title": "Commandtype", "type": "string" }, @@ -4192,7 +4878,9 @@ "$ref": "#/$defs/SetAndWaitForShakeSpeedParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetAndWaitForShakeSpeedCreate", "type": "object" }, @@ -4210,7 +4898,10 @@ "type": "number" } }, - "required": ["moduleId", "rpm"], + "required": [ + "moduleId", + "rpm" + ], "title": "SetAndWaitForShakeSpeedParams", "type": "object" }, @@ -4220,7 +4911,9 @@ "commandType": { "const": "setRailLights", "default": "setRailLights", - "enum": ["setRailLights"], + "enum": [ + "setRailLights" + ], "title": "Commandtype", "type": "string" }, @@ -4238,7 +4931,9 @@ "$ref": "#/$defs/SetRailLightsParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetRailLightsCreate", "type": "object" }, @@ -4251,7 +4946,9 @@ "type": "boolean" } }, - "required": ["on"], + "required": [ + "on" + ], "title": "SetRailLightsParams", "type": "object" }, @@ -4261,7 +4958,9 @@ "commandType": { "const": "setStatusBar", "default": "setStatusBar", - "enum": ["setStatusBar"], + "enum": [ + "setStatusBar" + ], "title": "Commandtype", "type": "string" }, @@ -4279,7 +4978,9 @@ "$ref": "#/$defs/SetStatusBarParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetStatusBarCreate", "type": "object" }, @@ -4291,7 +4992,9 @@ "description": "The animation that should be executed on the status bar." } }, - "required": ["animation"], + "required": [ + "animation" + ], "title": "SetStatusBarParams", "type": "object" }, @@ -4301,7 +5004,9 @@ "commandType": { "const": "thermocycler/setTargetBlockTemperature", "default": "thermocycler/setTargetBlockTemperature", - "enum": ["thermocycler/setTargetBlockTemperature"], + "enum": [ + "thermocycler/setTargetBlockTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -4319,7 +5024,9 @@ "$ref": "#/$defs/SetTargetBlockTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetTargetBlockTemperatureCreate", "type": "object" }, @@ -4347,7 +5054,10 @@ "type": "string" } }, - "required": ["moduleId", "celsius"], + "required": [ + "moduleId", + "celsius" + ], "title": "SetTargetBlockTemperatureParams", "type": "object" }, @@ -4357,7 +5067,9 @@ "commandType": { "const": "thermocycler/setTargetLidTemperature", "default": "thermocycler/setTargetLidTemperature", - "enum": ["thermocycler/setTargetLidTemperature"], + "enum": [ + "thermocycler/setTargetLidTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -4375,7 +5087,9 @@ "$ref": "#/$defs/SetTargetLidTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetTargetLidTemperatureCreate", "type": "object" }, @@ -4393,7 +5107,10 @@ "type": "string" } }, - "required": ["moduleId", "celsius"], + "required": [ + "moduleId", + "celsius" + ], "title": "SetTargetLidTemperatureParams", "type": "object" }, @@ -4550,25 +5267,40 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": ["A1", "H1", "A12", "H12"], + "enum": [ + "A1", + "H1", + "A12", + "H12" + ], "title": "Primarynozzle", "type": "string" }, "style": { "const": "SINGLE", "default": "SINGLE", - "enum": ["SINGLE"], + "enum": [ + "SINGLE" + ], "title": "Style", "type": "string" } }, - "required": ["primaryNozzle"], + "required": [ + "primaryNozzle" + ], "title": "SingleNozzleLayoutConfiguration", "type": "object" }, "StatusBarAnimation": { "description": "Status Bar animation options.", - "enum": ["idle", "confirm", "updating", "disco", "off"], + "enum": [ + "idle", + "confirm", + "updating", + "disco", + "off" + ], "title": "StatusBarAnimation", "type": "string" }, @@ -4643,13 +5375,22 @@ "title": "Speed" } }, - "required": ["positionReference", "offset", "speed", "delay"], + "required": [ + "positionReference", + "offset", + "speed", + "delay" + ], "title": "Submerge", "type": "object" }, "TipPresenceStatus": { "description": "Tip presence status reported by a pipette.", - "enum": ["present", "absent", "unknown"], + "enum": [ + "present", + "absent", + "unknown" + ], "title": "TipPresenceStatus", "type": "string" }, @@ -4659,7 +5400,9 @@ "commandType": { "const": "touchTip", "default": "touchTip", - "enum": ["touchTip"], + "enum": [ + "touchTip" + ], "title": "Commandtype", "type": "string" }, @@ -4677,7 +5420,9 @@ "$ref": "#/$defs/TouchTipParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "TouchTipCreate", "type": "object" }, @@ -4720,7 +5465,11 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "pipetteId" + ], "title": "TouchTipParams", "type": "object" }, @@ -4738,7 +5487,9 @@ "title": "Params" } }, - "required": ["enable"], + "required": [ + "enable" + ], "title": "TouchTipProperties", "type": "object" }, @@ -4748,7 +5499,9 @@ "commandType": { "const": "tryLiquidProbe", "default": "tryLiquidProbe", - "enum": ["tryLiquidProbe"], + "enum": [ + "tryLiquidProbe" + ], "title": "Commandtype", "type": "string" }, @@ -4766,7 +5519,9 @@ "$ref": "#/$defs/TryLiquidProbeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "TryLiquidProbeCreate", "type": "object" }, @@ -4793,7 +5548,11 @@ "type": "string" } }, - "required": ["labwareId", "wellName", "pipetteId"], + "required": [ + "labwareId", + "wellName", + "pipetteId" + ], "title": "TryLiquidProbeParams", "type": "object" }, @@ -4803,7 +5562,9 @@ "commandType": { "const": "unsafe/blowOutInPlace", "default": "unsafe/blowOutInPlace", - "enum": ["unsafe/blowOutInPlace"], + "enum": [ + "unsafe/blowOutInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -4821,7 +5582,9 @@ "$ref": "#/$defs/UnsafeBlowOutInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UnsafeBlowOutInPlaceCreate", "type": "object" }, @@ -4840,7 +5603,10 @@ "type": "string" } }, - "required": ["flowRate", "pipetteId"], + "required": [ + "flowRate", + "pipetteId" + ], "title": "UnsafeBlowOutInPlaceParams", "type": "object" }, @@ -4850,7 +5616,9 @@ "commandType": { "const": "unsafe/dropTipInPlace", "default": "unsafe/dropTipInPlace", - "enum": ["unsafe/dropTipInPlace"], + "enum": [ + "unsafe/dropTipInPlace" + ], "title": "Commandtype", "type": "string" }, @@ -4868,7 +5636,9 @@ "$ref": "#/$defs/UnsafeDropTipInPlaceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UnsafeDropTipInPlaceCreate", "type": "object" }, @@ -4886,7 +5656,9 @@ "type": "string" } }, - "required": ["pipetteId"], + "required": [ + "pipetteId" + ], "title": "UnsafeDropTipInPlaceParams", "type": "object" }, @@ -4896,7 +5668,9 @@ "commandType": { "const": "unsafe/engageAxes", "default": "unsafe/engageAxes", - "enum": ["unsafe/engageAxes"], + "enum": [ + "unsafe/engageAxes" + ], "title": "Commandtype", "type": "string" }, @@ -4914,7 +5688,9 @@ "$ref": "#/$defs/UnsafeEngageAxesParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UnsafeEngageAxesCreate", "type": "object" }, @@ -4930,7 +5706,9 @@ "type": "array" } }, - "required": ["axes"], + "required": [ + "axes" + ], "title": "UnsafeEngageAxesParams", "type": "object" }, @@ -4940,7 +5718,9 @@ "commandType": { "const": "unsafe/placeLabware", "default": "unsafe/placeLabware", - "enum": ["unsafe/placeLabware"], + "enum": [ + "unsafe/placeLabware" + ], "title": "Commandtype", "type": "string" }, @@ -4958,7 +5738,9 @@ "$ref": "#/$defs/UnsafePlaceLabwareParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UnsafePlaceLabwareCreate", "type": "object" }, @@ -4989,7 +5771,10 @@ "title": "Location" } }, - "required": ["labwareURI", "location"], + "required": [ + "labwareURI", + "location" + ], "title": "UnsafePlaceLabwareParams", "type": "object" }, @@ -4999,7 +5784,9 @@ "commandType": { "const": "unsafe/ungripLabware", "default": "unsafe/ungripLabware", - "enum": ["unsafe/ungripLabware"], + "enum": [ + "unsafe/ungripLabware" + ], "title": "Commandtype", "type": "string" }, @@ -5017,7 +5804,9 @@ "$ref": "#/$defs/UnsafeUngripLabwareParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UnsafeUngripLabwareCreate", "type": "object" }, @@ -5033,7 +5822,9 @@ "commandType": { "const": "unsafe/updatePositionEstimators", "default": "unsafe/updatePositionEstimators", - "enum": ["unsafe/updatePositionEstimators"], + "enum": [ + "unsafe/updatePositionEstimators" + ], "title": "Commandtype", "type": "string" }, @@ -5051,7 +5842,9 @@ "$ref": "#/$defs/UpdatePositionEstimatorsParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "UpdatePositionEstimatorsCreate", "type": "object" }, @@ -5067,7 +5860,9 @@ "type": "array" } }, - "required": ["axes"], + "required": [ + "axes" + ], "title": "UpdatePositionEstimatorsParams", "type": "object" }, @@ -5087,7 +5882,11 @@ "type": "number" } }, - "required": ["x", "y", "z"], + "required": [ + "x", + "y", + "z" + ], "title": "Vec3f", "type": "object" }, @@ -5097,7 +5896,9 @@ "commandType": { "const": "verifyTipPresence", "default": "verifyTipPresence", - "enum": ["verifyTipPresence"], + "enum": [ + "verifyTipPresence" + ], "title": "Commandtype", "type": "string" }, @@ -5115,7 +5916,9 @@ "$ref": "#/$defs/VerifyTipPresenceParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "VerifyTipPresenceCreate", "type": "object" }, @@ -5137,7 +5940,10 @@ "type": "string" } }, - "required": ["pipetteId", "expectedState"], + "required": [ + "pipetteId", + "expectedState" + ], "title": "VerifyTipPresenceParams", "type": "object" }, @@ -5147,7 +5953,9 @@ "commandType": { "const": "thermocycler/waitForBlockTemperature", "default": "thermocycler/waitForBlockTemperature", - "enum": ["thermocycler/waitForBlockTemperature"], + "enum": [ + "thermocycler/waitForBlockTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5165,7 +5973,9 @@ "$ref": "#/$defs/WaitForBlockTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForBlockTemperatureCreate", "type": "object" }, @@ -5178,7 +5988,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "WaitForBlockTemperatureParams", "type": "object" }, @@ -5188,7 +6000,9 @@ "commandType": { "const": "waitForDuration", "default": "waitForDuration", - "enum": ["waitForDuration"], + "enum": [ + "waitForDuration" + ], "title": "Commandtype", "type": "string" }, @@ -5206,7 +6020,9 @@ "$ref": "#/$defs/WaitForDurationParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForDurationCreate", "type": "object" }, @@ -5224,7 +6040,9 @@ "type": "number" } }, - "required": ["seconds"], + "required": [ + "seconds" + ], "title": "WaitForDurationParams", "type": "object" }, @@ -5234,7 +6052,9 @@ "commandType": { "const": "thermocycler/waitForLidTemperature", "default": "thermocycler/waitForLidTemperature", - "enum": ["thermocycler/waitForLidTemperature"], + "enum": [ + "thermocycler/waitForLidTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5252,7 +6072,9 @@ "$ref": "#/$defs/WaitForLidTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForLidTemperatureCreate", "type": "object" }, @@ -5265,7 +6087,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "WaitForLidTemperatureParams", "type": "object" }, @@ -5274,7 +6098,10 @@ "properties": { "commandType": { "default": "waitForResume", - "enum": ["waitForResume", "pause"], + "enum": [ + "waitForResume", + "pause" + ], "title": "Commandtype", "type": "string" }, @@ -5292,7 +6119,9 @@ "$ref": "#/$defs/WaitForResumeParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForResumeCreate", "type": "object" }, @@ -5352,7 +6181,12 @@ }, "WellOrigin": { "description": "Origin of WellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well\n MENISCUS: the meniscus-center of the well", - "enum": ["top", "bottom", "center", "meniscus"], + "enum": [ + "top", + "bottom", + "center", + "meniscus" + ], "title": "WellOrigin", "type": "string" }, @@ -5362,7 +6196,9 @@ "commandType": { "const": "robot/closeGripperJaw", "default": "robot/closeGripperJaw", - "enum": ["robot/closeGripperJaw"], + "enum": [ + "robot/closeGripperJaw" + ], "title": "Commandtype", "type": "string" }, @@ -5380,7 +6216,9 @@ "$ref": "#/$defs/closeGripperJawParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "closeGripperJawCreate", "type": "object" }, @@ -5402,7 +6240,9 @@ "commandType": { "const": "robot/openGripperJaw", "default": "robot/openGripperJaw", - "enum": ["robot/openGripperJaw"], + "enum": [ + "robot/openGripperJaw" + ], "title": "Commandtype", "type": "string" }, @@ -5420,7 +6260,9 @@ "$ref": "#/$defs/openGripperJawParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "openGripperJawCreate", "type": "object" }, @@ -5436,7 +6278,9 @@ "commandType": { "const": "absorbanceReader/closeLid", "default": "absorbanceReader/closeLid", - "enum": ["absorbanceReader/closeLid"], + "enum": [ + "absorbanceReader/closeLid" + ], "title": "Commandtype", "type": "string" }, @@ -5454,7 +6298,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__absorbance_reader__close_lid__CloseLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CloseLidCreate", "type": "object" }, @@ -5467,7 +6313,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "CloseLidParams", "type": "object" }, @@ -5477,7 +6325,9 @@ "commandType": { "const": "absorbanceReader/openLid", "default": "absorbanceReader/openLid", - "enum": ["absorbanceReader/openLid"], + "enum": [ + "absorbanceReader/openLid" + ], "title": "Commandtype", "type": "string" }, @@ -5495,7 +6345,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__absorbance_reader__open_lid__OpenLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "OpenLidCreate", "type": "object" }, @@ -5508,7 +6360,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "OpenLidParams", "type": "object" }, @@ -5518,7 +6372,9 @@ "commandType": { "const": "heaterShaker/setTargetTemperature", "default": "heaterShaker/setTargetTemperature", - "enum": ["heaterShaker/setTargetTemperature"], + "enum": [ + "heaterShaker/setTargetTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5536,7 +6392,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__set_target_temperature__SetTargetTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetTargetTemperatureCreate", "type": "object" }, @@ -5554,7 +6412,10 @@ "type": "string" } }, - "required": ["moduleId", "celsius"], + "required": [ + "moduleId", + "celsius" + ], "title": "SetTargetTemperatureParams", "type": "object" }, @@ -5564,7 +6425,9 @@ "commandType": { "const": "heaterShaker/waitForTemperature", "default": "heaterShaker/waitForTemperature", - "enum": ["heaterShaker/waitForTemperature"], + "enum": [ + "heaterShaker/waitForTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5582,7 +6445,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__wait_for_temperature__WaitForTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForTemperatureCreate", "type": "object" }, @@ -5600,7 +6465,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "WaitForTemperatureParams", "type": "object" }, @@ -5610,7 +6477,9 @@ "commandType": { "const": "temperatureModule/setTargetTemperature", "default": "temperatureModule/setTargetTemperature", - "enum": ["temperatureModule/setTargetTemperature"], + "enum": [ + "temperatureModule/setTargetTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5628,7 +6497,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__temperature_module__set_target_temperature__SetTargetTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "SetTargetTemperatureCreate", "type": "object" }, @@ -5646,7 +6517,10 @@ "type": "string" } }, - "required": ["moduleId", "celsius"], + "required": [ + "moduleId", + "celsius" + ], "title": "SetTargetTemperatureParams", "type": "object" }, @@ -5656,7 +6530,9 @@ "commandType": { "const": "temperatureModule/waitForTemperature", "default": "temperatureModule/waitForTemperature", - "enum": ["temperatureModule/waitForTemperature"], + "enum": [ + "temperatureModule/waitForTemperature" + ], "title": "Commandtype", "type": "string" }, @@ -5674,7 +6550,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__temperature_module__wait_for_temperature__WaitForTemperatureParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "WaitForTemperatureCreate", "type": "object" }, @@ -5692,7 +6570,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "WaitForTemperatureParams", "type": "object" }, @@ -5702,7 +6582,9 @@ "commandType": { "const": "thermocycler/closeLid", "default": "thermocycler/closeLid", - "enum": ["thermocycler/closeLid"], + "enum": [ + "thermocycler/closeLid" + ], "title": "Commandtype", "type": "string" }, @@ -5720,7 +6602,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__thermocycler__close_lid__CloseLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "CloseLidCreate", "type": "object" }, @@ -5733,7 +6617,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "CloseLidParams", "type": "object" }, @@ -5743,7 +6629,9 @@ "commandType": { "const": "thermocycler/openLid", "default": "thermocycler/openLid", - "enum": ["thermocycler/openLid"], + "enum": [ + "thermocycler/openLid" + ], "title": "Commandtype", "type": "string" }, @@ -5761,7 +6649,9 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__thermocycler__open_lid__OpenLidParams" } }, - "required": ["params"], + "required": [ + "params" + ], "title": "OpenLidCreate", "type": "object" }, @@ -5774,7 +6664,9 @@ "type": "string" } }, - "required": ["moduleId"], + "required": [ + "moduleId" + ], "title": "OpenLidParams", "type": "object" } @@ -5790,6 +6682,7 @@ "airGapInPlace": "#/$defs/AirGapInPlaceCreate", "aspirate": "#/$defs/AspirateCreate", "aspirateInPlace": "#/$defs/AspirateInPlaceCreate", + "aspirateWhileTracking": "#/$defs/AspirateWhileTrackingCreate", "blowOutInPlace": "#/$defs/BlowOutInPlaceCreate", "blowout": "#/$defs/BlowOutCreate", "calibration/calibrateGripper": "#/$defs/CalibrateGripperCreate", @@ -5802,6 +6695,7 @@ "custom": "#/$defs/CustomCreate", "dispense": "#/$defs/DispenseCreate", "dispenseInPlace": "#/$defs/DispenseInPlaceCreate", + "dispenseWhileTracking": "#/$defs/DispenseWhileTrackingCreate", "dropTip": "#/$defs/DropTipCreate", "dropTipInPlace": "#/$defs/DropTipInPlaceCreate", "flexStacker/retrieve": "#/$defs/RetrieveCreate", @@ -5879,6 +6773,9 @@ { "$ref": "#/$defs/AspirateCreate" }, + { + "$ref": "#/$defs/AspirateWhileTrackingCreate" + }, { "$ref": "#/$defs/AspirateInPlaceCreate" }, @@ -5900,6 +6797,9 @@ { "$ref": "#/$defs/DispenseInPlaceCreate" }, + { + "$ref": "#/$defs/DispenseWhileTrackingCreate" + }, { "$ref": "#/$defs/BlowOutCreate" }, From 946208da67c25dcb054c19e01d2c85a0709a98b5 Mon Sep 17 00:00:00 2001 From: caila-marashaj Date: Wed, 15 Jan 2025 17:39:24 -0500 Subject: [PATCH 3/5] get rid of extra changes --- api/src/opentrons/protocol_engine/commands/dispense.py | 8 +++----- .../opentrons/protocol_engine/commands/movement_common.py | 2 +- api/src/opentrons/protocol_engine/execution/pipetting.py | 1 - .../opentrons/protocol_engine/state/frustum_helpers.py | 8 ++------ api/src/opentrons/protocol_engine/state/motion.py | 2 +- 5 files changed, 7 insertions(+), 14 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/dispense.py b/api/src/opentrons/protocol_engine/commands/dispense.py index 3b4b84f6b75..8ad2365ccb5 100644 --- a/api/src/opentrons/protocol_engine/commands/dispense.py +++ b/api/src/opentrons/protocol_engine/commands/dispense.py @@ -45,10 +45,7 @@ def _remove_default(s: dict[str, Any]) -> None: class DispenseParams( - PipetteIdMixin, - DispenseVolumeMixin, - FlowRateMixin, - LiquidHandlingWellLocationMixin, + PipetteIdMixin, DispenseVolumeMixin, FlowRateMixin, LiquidHandlingWellLocationMixin ): """Payload required to dispense to a specific well.""" @@ -92,6 +89,7 @@ async def execute(self, params: DispenseParams) -> _ExecuteReturn: well_location = params.wellLocation labware_id = params.labwareId well_name = params.wellName + volume = params.volume # TODO(pbm, 10-15-24): call self._state_view.geometry.validate_dispense_volume_into_well() @@ -107,7 +105,7 @@ async def execute(self, params: DispenseParams) -> _ExecuteReturn: return move_result dispense_result = await dispense_in_place( pipette_id=params.pipetteId, - volume=params.volume, + volume=volume, flow_rate=params.flowRate, push_out=params.pushOut, location_if_error={ diff --git a/api/src/opentrons/protocol_engine/commands/movement_common.py b/api/src/opentrons/protocol_engine/commands/movement_common.py index 5cff8d5f358..babf70b29d9 100644 --- a/api/src/opentrons/protocol_engine/commands/movement_common.py +++ b/api/src/opentrons/protocol_engine/commands/movement_common.py @@ -61,7 +61,7 @@ class LiquidHandlingWellLocationMixin(BaseModel): ) wellLocation: LiquidHandlingWellLocation = Field( default_factory=LiquidHandlingWellLocation, - description="Relative wwellell location at which to perform the operation", + description="Relative well location at which to perform the operation", ) diff --git a/api/src/opentrons/protocol_engine/execution/pipetting.py b/api/src/opentrons/protocol_engine/execution/pipetting.py index bd689c4c226..2365347348e 100644 --- a/api/src/opentrons/protocol_engine/execution/pipetting.py +++ b/api/src/opentrons/protocol_engine/execution/pipetting.py @@ -387,7 +387,6 @@ async def dispense_in_place( raise InvalidPushOutVolumeError( "push out value cannot have a negative value." ) - raise ValueError("why am i here") self._validate_tip_attached(pipette_id=pipette_id, command_name="dispense") return _validate_dispense_volume( state_view=self._state_view, pipette_id=pipette_id, dispense_volume=volume diff --git a/api/src/opentrons/protocol_engine/state/frustum_helpers.py b/api/src/opentrons/protocol_engine/state/frustum_helpers.py index 3c1fa867759..b28fb936be7 100644 --- a/api/src/opentrons/protocol_engine/state/frustum_helpers.py +++ b/api/src/opentrons/protocol_engine/state/frustum_helpers.py @@ -362,9 +362,7 @@ def find_volume_at_well_height( volumetric_capacity = get_well_volumetric_capacity(well_geometry) max_height = volumetric_capacity[-1][0] if target_height < 0 or target_height > max_height: - # find where we fail bc height < lld minimum and kick off error recovery - # to allow the pipette to go to well.bottom() rather than probe in the future - raise InvalidLiquidHeightFound(f"Invalid target height {target_height}.") + raise InvalidLiquidHeightFound("Invalid target height.") # volumes in volumetric_capacity are relative to each frustum, # so we have to find the volume of all the full sections enclosed # beneath the target height @@ -425,9 +423,7 @@ def find_height_at_well_volume( volumetric_capacity = get_well_volumetric_capacity(well_geometry) max_volume = sum(row[1] for row in volumetric_capacity) if target_volume < 0 or target_volume > max_volume: - raise InvalidLiquidHeightFound( - f"Invalid target volume {target_volume}, max vol {max_volume}." - ) + raise InvalidLiquidHeightFound("Invalid target volume.") sorted_well = sorted(well_geometry.sections, key=lambda section: section.topHeight) # find the section the target volume is in and compute the height diff --git a/api/src/opentrons/protocol_engine/state/motion.py b/api/src/opentrons/protocol_engine/state/motion.py index 15a8d6a633c..855025d01b6 100644 --- a/api/src/opentrons/protocol_engine/state/motion.py +++ b/api/src/opentrons/protocol_engine/state/motion.py @@ -129,7 +129,7 @@ def get_movement_waypoints_to_well( extra_waypoints = self._geometry.get_extra_waypoints( location=location, to_slot=destination_slot ) - # baddie here + try: return motion_planning.get_waypoints( move_type=move_type, From cc3b52085606938019d0478d797052e76d91c474 Mon Sep 17 00:00:00 2001 From: caila-marashaj Date: Wed, 15 Jan 2025 17:49:35 -0500 Subject: [PATCH 4/5] fix command schema snapshot test --- shared-data/command/schemas/11.json | 1369 ++++++--------------------- 1 file changed, 308 insertions(+), 1061 deletions(-) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index e2d61c13874..9a4e336f2c6 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -9,9 +9,7 @@ "type": "string" } }, - "required": [ - "addressableAreaName" - ], + "required": ["addressableAreaName"], "title": "AddressableAreaLocation", "type": "object" }, @@ -31,11 +29,7 @@ "type": "number" } }, - "required": [ - "x", - "y", - "z" - ], + "required": ["x", "y", "z"], "title": "AddressableOffsetVector", "type": "object" }, @@ -45,9 +39,7 @@ "commandType": { "const": "airGapInPlace", "default": "airGapInPlace", - "enum": [ - "airGapInPlace" - ], + "enum": ["airGapInPlace"], "title": "Commandtype", "type": "string" }, @@ -65,9 +57,7 @@ "$ref": "#/$defs/AirGapInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "AirGapInPlaceCreate", "type": "object" }, @@ -92,11 +82,7 @@ "type": "number" } }, - "required": [ - "flowRate", - "volume", - "pipetteId" - ], + "required": ["flowRate", "volume", "pipetteId"], "title": "AirGapInPlaceParams", "type": "object" }, @@ -106,9 +92,7 @@ "style": { "const": "ALL", "default": "ALL", - "enum": [ - "ALL" - ], + "enum": ["ALL"], "title": "Style", "type": "string" } @@ -122,9 +106,7 @@ "commandType": { "const": "aspirate", "default": "aspirate", - "enum": [ - "aspirate" - ], + "enum": ["aspirate"], "title": "Commandtype", "type": "string" }, @@ -142,9 +124,7 @@ "$ref": "#/$defs/AspirateParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "AspirateCreate", "type": "object" }, @@ -154,9 +134,7 @@ "commandType": { "const": "aspirateInPlace", "default": "aspirateInPlace", - "enum": [ - "aspirateInPlace" - ], + "enum": ["aspirateInPlace"], "title": "Commandtype", "type": "string" }, @@ -174,9 +152,7 @@ "$ref": "#/$defs/AspirateInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "AspirateInPlaceCreate", "type": "object" }, @@ -201,11 +177,7 @@ "type": "number" } }, - "required": [ - "flowRate", - "volume", - "pipetteId" - ], + "required": ["flowRate", "volume", "pipetteId"], "title": "AspirateInPlaceParams", "type": "object" }, @@ -236,7 +208,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative wwellell location at which to perform the operation" + "description": "Relative well location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -244,13 +216,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "flowRate", - "volume", - "pipetteId" - ], + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], "title": "AspirateParams", "type": "object" }, @@ -377,9 +343,7 @@ "commandType": { "const": "aspirateWhileTracking", "default": "aspirateWhileTracking", - "enum": [ - "aspirateWhileTracking" - ], + "enum": ["aspirateWhileTracking"], "title": "Commandtype", "type": "string" }, @@ -397,9 +361,7 @@ "$ref": "#/$defs/AspirateWhileTrackingParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "AspirateWhileTrackingCreate", "type": "object" }, @@ -430,7 +392,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative wwellell location at which to perform the operation" + "description": "Relative well location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -438,13 +400,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "flowRate", - "volume", - "pipetteId" - ], + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], "title": "AspirateWhileTrackingParams", "type": "object" }, @@ -454,9 +410,7 @@ "commandType": { "const": "blowout", "default": "blowout", - "enum": [ - "blowout" - ], + "enum": ["blowout"], "title": "Commandtype", "type": "string" }, @@ -474,9 +428,7 @@ "$ref": "#/$defs/BlowOutParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "BlowOutCreate", "type": "object" }, @@ -486,9 +438,7 @@ "commandType": { "const": "blowOutInPlace", "default": "blowOutInPlace", - "enum": [ - "blowOutInPlace" - ], + "enum": ["blowOutInPlace"], "title": "Commandtype", "type": "string" }, @@ -506,9 +456,7 @@ "$ref": "#/$defs/BlowOutInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "BlowOutInPlaceCreate", "type": "object" }, @@ -527,10 +475,7 @@ "type": "string" } }, - "required": [ - "flowRate", - "pipetteId" - ], + "required": ["flowRate", "pipetteId"], "title": "BlowOutInPlaceParams", "type": "object" }, @@ -563,22 +508,13 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "flowRate", - "pipetteId" - ], + "required": ["labwareId", "wellName", "flowRate", "pipetteId"], "title": "BlowOutParams", "type": "object" }, "BlowoutLocation": { "description": "Location for blowout during a transfer function.", - "enum": [ - "source", - "destination", - "trash" - ], + "enum": ["source", "destination", "trash"], "title": "BlowoutLocation", "type": "string" }, @@ -604,10 +540,7 @@ "description": "Location well or trash entity for blow out." } }, - "required": [ - "location", - "flowRate" - ], + "required": ["location", "flowRate"], "title": "BlowoutParams", "type": "object" }, @@ -625,9 +558,7 @@ "title": "Params" } }, - "required": [ - "enable" - ], + "required": ["enable"], "title": "BlowoutProperties", "type": "object" }, @@ -637,9 +568,7 @@ "commandType": { "const": "calibration/calibrateGripper", "default": "calibration/calibrateGripper", - "enum": [ - "calibration/calibrateGripper" - ], + "enum": ["calibration/calibrateGripper"], "title": "Commandtype", "type": "string" }, @@ -657,9 +586,7 @@ "$ref": "#/$defs/CalibrateGripperParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CalibrateGripperCreate", "type": "object" }, @@ -676,17 +603,12 @@ "title": "Otherjawoffset" } }, - "required": [ - "jaw" - ], + "required": ["jaw"], "title": "CalibrateGripperParams", "type": "object" }, "CalibrateGripperParamsJaw": { - "enum": [ - "front", - "rear" - ], + "enum": ["front", "rear"], "title": "CalibrateGripperParamsJaw", "type": "string" }, @@ -696,9 +618,7 @@ "commandType": { "const": "calibration/calibrateModule", "default": "calibration/calibrateModule", - "enum": [ - "calibration/calibrateModule" - ], + "enum": ["calibration/calibrateModule"], "title": "Commandtype", "type": "string" }, @@ -716,9 +636,7 @@ "$ref": "#/$defs/CalibrateModuleParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CalibrateModuleCreate", "type": "object" }, @@ -740,11 +658,7 @@ "description": "The instrument mount used to calibrate the module." } }, - "required": [ - "moduleId", - "labwareId", - "mount" - ], + "required": ["moduleId", "labwareId", "mount"], "title": "CalibrateModuleParams", "type": "object" }, @@ -754,9 +668,7 @@ "commandType": { "const": "calibration/calibratePipette", "default": "calibration/calibratePipette", - "enum": [ - "calibration/calibratePipette" - ], + "enum": ["calibration/calibratePipette"], "title": "Commandtype", "type": "string" }, @@ -774,9 +686,7 @@ "$ref": "#/$defs/CalibratePipetteParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CalibratePipetteCreate", "type": "object" }, @@ -788,9 +698,7 @@ "description": "Instrument mount to calibrate." } }, - "required": [ - "mount" - ], + "required": ["mount"], "title": "CalibratePipetteParams", "type": "object" }, @@ -800,9 +708,7 @@ "commandType": { "const": "heaterShaker/closeLabwareLatch", "default": "heaterShaker/closeLabwareLatch", - "enum": [ - "heaterShaker/closeLabwareLatch" - ], + "enum": ["heaterShaker/closeLabwareLatch"], "title": "Commandtype", "type": "string" }, @@ -820,9 +726,7 @@ "$ref": "#/$defs/CloseLabwareLatchParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CloseLabwareLatchCreate", "type": "object" }, @@ -835,9 +739,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "CloseLabwareLatchParams", "type": "object" }, @@ -846,38 +748,25 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": [ - "A1", - "H1", - "A12", - "H12" - ], + "enum": ["A1", "H1", "A12", "H12"], "title": "Primarynozzle", "type": "string" }, "style": { "const": "COLUMN", "default": "COLUMN", - "enum": [ - "COLUMN" - ], + "enum": ["COLUMN"], "title": "Style", "type": "string" } }, - "required": [ - "primaryNozzle" - ], + "required": ["primaryNozzle"], "title": "ColumnNozzleLayoutConfiguration", "type": "object" }, "CommandIntent": { "description": "Run intent for a given command.\n\nProps:\n PROTOCOL: the command is part of the protocol run itself.\n SETUP: the command is part of the setup phase of a run.", - "enum": [ - "protocol", - "setup", - "fixit" - ], + "enum": ["protocol", "setup", "fixit"], "title": "CommandIntent", "type": "string" }, @@ -887,9 +776,7 @@ "commandType": { "const": "comment", "default": "comment", - "enum": [ - "comment" - ], + "enum": ["comment"], "title": "Commandtype", "type": "string" }, @@ -907,9 +794,7 @@ "$ref": "#/$defs/CommentParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CommentCreate", "type": "object" }, @@ -922,9 +807,7 @@ "type": "string" } }, - "required": [ - "message" - ], + "required": ["message"], "title": "CommentParams", "type": "object" }, @@ -934,9 +817,7 @@ "commandType": { "const": "configureForVolume", "default": "configureForVolume", - "enum": [ - "configureForVolume" - ], + "enum": ["configureForVolume"], "title": "Commandtype", "type": "string" }, @@ -954,9 +835,7 @@ "$ref": "#/$defs/ConfigureForVolumeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "ConfigureForVolumeCreate", "type": "object" }, @@ -980,10 +859,7 @@ "type": "number" } }, - "required": [ - "pipetteId", - "volume" - ], + "required": ["pipetteId", "volume"], "title": "ConfigureForVolumeParams", "type": "object" }, @@ -993,9 +869,7 @@ "commandType": { "const": "configureNozzleLayout", "default": "configureNozzleLayout", - "enum": [ - "configureNozzleLayout" - ], + "enum": ["configureNozzleLayout"], "title": "Commandtype", "type": "string" }, @@ -1013,9 +887,7 @@ "$ref": "#/$defs/ConfigureNozzleLayoutParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "ConfigureNozzleLayoutCreate", "type": "object" }, @@ -1048,10 +920,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "configurationParams" - ], + "required": ["pipetteId", "configurationParams"], "title": "ConfigureNozzleLayoutParams", "type": "object" }, @@ -1092,11 +961,7 @@ "title": "Z" } }, - "required": [ - "x", - "y", - "z" - ], + "required": ["x", "y", "z"], "title": "Coordinate", "type": "object" }, @@ -1106,9 +971,7 @@ "commandType": { "const": "custom", "default": "custom", - "enum": [ - "custom" - ], + "enum": ["custom"], "title": "Commandtype", "type": "string" }, @@ -1126,9 +989,7 @@ "$ref": "#/$defs/CustomParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CustomCreate", "type": "object" }, @@ -1145,9 +1006,7 @@ "commandType": { "const": "thermocycler/deactivateBlock", "default": "thermocycler/deactivateBlock", - "enum": [ - "thermocycler/deactivateBlock" - ], + "enum": ["thermocycler/deactivateBlock"], "title": "Commandtype", "type": "string" }, @@ -1165,9 +1024,7 @@ "$ref": "#/$defs/DeactivateBlockParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DeactivateBlockCreate", "type": "object" }, @@ -1180,9 +1037,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DeactivateBlockParams", "type": "object" }, @@ -1192,9 +1047,7 @@ "commandType": { "const": "heaterShaker/deactivateHeater", "default": "heaterShaker/deactivateHeater", - "enum": [ - "heaterShaker/deactivateHeater" - ], + "enum": ["heaterShaker/deactivateHeater"], "title": "Commandtype", "type": "string" }, @@ -1212,9 +1065,7 @@ "$ref": "#/$defs/DeactivateHeaterParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DeactivateHeaterCreate", "type": "object" }, @@ -1227,9 +1078,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DeactivateHeaterParams", "type": "object" }, @@ -1239,9 +1088,7 @@ "commandType": { "const": "thermocycler/deactivateLid", "default": "thermocycler/deactivateLid", - "enum": [ - "thermocycler/deactivateLid" - ], + "enum": ["thermocycler/deactivateLid"], "title": "Commandtype", "type": "string" }, @@ -1259,9 +1106,7 @@ "$ref": "#/$defs/DeactivateLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DeactivateLidCreate", "type": "object" }, @@ -1274,9 +1119,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DeactivateLidParams", "type": "object" }, @@ -1286,9 +1129,7 @@ "commandType": { "const": "heaterShaker/deactivateShaker", "default": "heaterShaker/deactivateShaker", - "enum": [ - "heaterShaker/deactivateShaker" - ], + "enum": ["heaterShaker/deactivateShaker"], "title": "Commandtype", "type": "string" }, @@ -1306,9 +1147,7 @@ "$ref": "#/$defs/DeactivateShakerParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DeactivateShakerCreate", "type": "object" }, @@ -1321,9 +1160,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DeactivateShakerParams", "type": "object" }, @@ -1333,9 +1170,7 @@ "commandType": { "const": "temperatureModule/deactivate", "default": "temperatureModule/deactivate", - "enum": [ - "temperatureModule/deactivate" - ], + "enum": ["temperatureModule/deactivate"], "title": "Commandtype", "type": "string" }, @@ -1353,9 +1188,7 @@ "$ref": "#/$defs/DeactivateTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DeactivateTemperatureCreate", "type": "object" }, @@ -1368,9 +1201,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DeactivateTemperatureParams", "type": "object" }, @@ -1390,11 +1221,7 @@ "type": "number" } }, - "required": [ - "x", - "y", - "z" - ], + "required": ["x", "y", "z"], "title": "DeckPoint", "type": "object" }, @@ -1406,9 +1233,7 @@ "description": "A slot on the robot's deck.\n\nThe plain numbers like `\"5\"` are for the OT-2, and the coordinates like `\"C2\"` are for the Flex.\n\nWhen you provide one of these values, you can use either style. It will automatically be converted to match the robot.\n\nWhen one of these values is returned, it will always match the robot." } }, - "required": [ - "slotName" - ], + "required": ["slotName"], "title": "DeckSlotLocation", "type": "object" }, @@ -1461,9 +1286,7 @@ "title": "Duration" } }, - "required": [ - "duration" - ], + "required": ["duration"], "title": "DelayParams", "type": "object" }, @@ -1481,9 +1304,7 @@ "title": "Params" } }, - "required": [ - "enable" - ], + "required": ["enable"], "title": "DelayProperties", "type": "object" }, @@ -1493,9 +1314,7 @@ "commandType": { "const": "magneticModule/disengage", "default": "magneticModule/disengage", - "enum": [ - "magneticModule/disengage" - ], + "enum": ["magneticModule/disengage"], "title": "Commandtype", "type": "string" }, @@ -1513,9 +1332,7 @@ "$ref": "#/$defs/DisengageParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DisengageCreate", "type": "object" }, @@ -1528,9 +1345,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "DisengageParams", "type": "object" }, @@ -1540,9 +1355,7 @@ "commandType": { "const": "dispense", "default": "dispense", - "enum": [ - "dispense" - ], + "enum": ["dispense"], "title": "Commandtype", "type": "string" }, @@ -1560,9 +1373,7 @@ "$ref": "#/$defs/DispenseParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DispenseCreate", "type": "object" }, @@ -1572,9 +1383,7 @@ "commandType": { "const": "dispenseInPlace", "default": "dispenseInPlace", - "enum": [ - "dispenseInPlace" - ], + "enum": ["dispenseInPlace"], "title": "Commandtype", "type": "string" }, @@ -1592,9 +1401,7 @@ "$ref": "#/$defs/DispenseInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DispenseInPlaceCreate", "type": "object" }, @@ -1624,11 +1431,7 @@ "type": "number" } }, - "required": [ - "flowRate", - "volume", - "pipetteId" - ], + "required": ["flowRate", "volume", "pipetteId"], "title": "DispenseInPlaceParams", "type": "object" }, @@ -1664,7 +1467,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative wwellell location at which to perform the operation" + "description": "Relative well location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -1672,13 +1475,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "flowRate", - "volume", - "pipetteId" - ], + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], "title": "DispenseParams", "type": "object" }, @@ -1688,9 +1485,7 @@ "commandType": { "const": "dispenseWhileTracking", "default": "dispenseWhileTracking", - "enum": [ - "dispenseWhileTracking" - ], + "enum": ["dispenseWhileTracking"], "title": "Commandtype", "type": "string" }, @@ -1708,9 +1503,7 @@ "$ref": "#/$defs/DispenseWhileTrackingParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DispenseWhileTrackingCreate", "type": "object" }, @@ -1746,7 +1539,7 @@ }, "wellLocation": { "$ref": "#/$defs/LiquidHandlingWellLocation", - "description": "Relative wwellell location at which to perform the operation" + "description": "Relative well location at which to perform the operation" }, "wellName": { "description": "Name of well to use in labware.", @@ -1754,13 +1547,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "flowRate", - "volume", - "pipetteId" - ], + "required": ["labwareId", "wellName", "flowRate", "volume", "pipetteId"], "title": "DispenseWhileTrackingParams", "type": "object" }, @@ -1770,9 +1557,7 @@ "commandType": { "const": "dropTip", "default": "dropTip", - "enum": [ - "dropTip" - ], + "enum": ["dropTip"], "title": "Commandtype", "type": "string" }, @@ -1790,9 +1575,7 @@ "$ref": "#/$defs/DropTipParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DropTipCreate", "type": "object" }, @@ -1802,9 +1585,7 @@ "commandType": { "const": "dropTipInPlace", "default": "dropTipInPlace", - "enum": [ - "dropTipInPlace" - ], + "enum": ["dropTipInPlace"], "title": "Commandtype", "type": "string" }, @@ -1822,9 +1603,7 @@ "$ref": "#/$defs/DropTipInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "DropTipInPlaceCreate", "type": "object" }, @@ -1842,9 +1621,7 @@ "type": "string" } }, - "required": [ - "pipetteId" - ], + "required": ["pipetteId"], "title": "DropTipInPlaceParams", "type": "object" }, @@ -1881,11 +1658,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "labwareId", - "wellName" - ], + "required": ["pipetteId", "labwareId", "wellName"], "title": "DropTipParams", "type": "object" }, @@ -1905,12 +1678,7 @@ }, "DropTipWellOrigin": { "description": "The origin of a DropTipWellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well\n DEFAULT: the default drop-tip location of the well,\n based on pipette configuration and length of the tip.", - "enum": [ - "top", - "bottom", - "center", - "default" - ], + "enum": ["top", "bottom", "center", "default"], "title": "DropTipWellOrigin", "type": "string" }, @@ -1920,9 +1688,7 @@ "commandType": { "const": "magneticModule/engage", "default": "magneticModule/engage", - "enum": [ - "magneticModule/engage" - ], + "enum": ["magneticModule/engage"], "title": "Commandtype", "type": "string" }, @@ -1940,9 +1706,7 @@ "$ref": "#/$defs/EngageParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "EngageCreate", "type": "object" }, @@ -1960,10 +1724,7 @@ "type": "string" } }, - "required": [ - "moduleId", - "height" - ], + "required": ["moduleId", "height"], "title": "EngageParams", "type": "object" }, @@ -1973,9 +1734,7 @@ "commandType": { "const": "getNextTip", "default": "getNextTip", - "enum": [ - "getNextTip" - ], + "enum": ["getNextTip"], "title": "Commandtype", "type": "string" }, @@ -1993,9 +1752,7 @@ "$ref": "#/$defs/GetNextTipParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "GetNextTipCreate", "type": "object" }, @@ -2021,10 +1778,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "labwareIds" - ], + "required": ["pipetteId", "labwareIds"], "title": "GetNextTipParams", "type": "object" }, @@ -2034,9 +1788,7 @@ "commandType": { "const": "getTipPresence", "default": "getTipPresence", - "enum": [ - "getTipPresence" - ], + "enum": ["getTipPresence"], "title": "Commandtype", "type": "string" }, @@ -2054,9 +1806,7 @@ "$ref": "#/$defs/GetTipPresenceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "GetTipPresenceCreate", "type": "object" }, @@ -2069,9 +1819,7 @@ "type": "string" } }, - "required": [ - "pipetteId" - ], + "required": ["pipetteId"], "title": "GetTipPresenceParams", "type": "object" }, @@ -2081,9 +1829,7 @@ "commandType": { "const": "home", "default": "home", - "enum": [ - "home" - ], + "enum": ["home"], "title": "Commandtype", "type": "string" }, @@ -2101,9 +1847,7 @@ "$ref": "#/$defs/HomeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "HomeCreate", "type": "object" }, @@ -2133,9 +1877,7 @@ "commandType": { "const": "absorbanceReader/initialize", "default": "absorbanceReader/initialize", - "enum": [ - "absorbanceReader/initialize" - ], + "enum": ["absorbanceReader/initialize"], "title": "Commandtype", "type": "string" }, @@ -2153,9 +1895,7 @@ "$ref": "#/$defs/InitializeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "InitializeCreate", "type": "object" }, @@ -2164,10 +1904,7 @@ "properties": { "measureMode": { "description": "Initialize single or multi measurement mode.", - "enum": [ - "single", - "multi" - ], + "enum": ["single", "multi"], "title": "Measuremode", "type": "string" }, @@ -2190,31 +1927,19 @@ "type": "array" } }, - "required": [ - "moduleId", - "measureMode", - "sampleWavelengths" - ], + "required": ["moduleId", "measureMode", "sampleWavelengths"], "title": "InitializeParams", "type": "object" }, "InstrumentSensorId": { "description": "Primary and secondary sensor ids.", - "enum": [ - "primary", - "secondary", - "both" - ], + "enum": ["primary", "secondary", "both"], "title": "InstrumentSensorId", "type": "string" }, "LabwareMovementStrategy": { "description": "Strategy to use for labware movement.", - "enum": [ - "usingGripper", - "manualMoveWithPause", - "manualMoveWithoutPause" - ], + "enum": ["usingGripper", "manualMoveWithPause", "manualMoveWithoutPause"], "title": "LabwareMovementStrategy", "type": "string" }, @@ -2234,11 +1959,7 @@ "type": "number" } }, - "required": [ - "x", - "y", - "z" - ], + "required": ["x", "y", "z"], "title": "LabwareOffsetVector", "type": "object" }, @@ -2326,11 +2047,7 @@ "title": "Zoffset" } }, - "required": [ - "zOffset", - "mmToEdge", - "speed" - ], + "required": ["zOffset", "mmToEdge", "speed"], "title": "LiquidClassTouchTipParams", "type": "object" }, @@ -2351,9 +2068,7 @@ }, { "const": "operationVolume", - "enum": [ - "operationVolume" - ], + "enum": ["operationVolume"], "type": "string" } ], @@ -2371,9 +2086,7 @@ "commandType": { "const": "liquidProbe", "default": "liquidProbe", - "enum": [ - "liquidProbe" - ], + "enum": ["liquidProbe"], "title": "Commandtype", "type": "string" }, @@ -2391,9 +2104,7 @@ "$ref": "#/$defs/LiquidProbeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LiquidProbeCreate", "type": "object" }, @@ -2420,11 +2131,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "pipetteId" - ], + "required": ["labwareId", "wellName", "pipetteId"], "title": "LiquidProbeParams", "type": "object" }, @@ -2434,9 +2141,7 @@ "commandType": { "const": "loadLabware", "default": "loadLabware", - "enum": [ - "loadLabware" - ], + "enum": ["loadLabware"], "title": "Commandtype", "type": "string" }, @@ -2454,9 +2159,7 @@ "$ref": "#/$defs/LoadLabwareParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadLabwareCreate", "type": "object" }, @@ -2491,9 +2194,7 @@ }, { "const": "offDeck", - "enum": [ - "offDeck" - ], + "enum": ["offDeck"], "type": "string" }, { @@ -2514,12 +2215,7 @@ "type": "integer" } }, - "required": [ - "location", - "loadName", - "namespace", - "version" - ], + "required": ["location", "loadName", "namespace", "version"], "title": "LoadLabwareParams", "type": "object" }, @@ -2529,9 +2225,7 @@ "commandType": { "const": "loadLid", "default": "loadLid", - "enum": [ - "loadLid" - ], + "enum": ["loadLid"], "title": "Commandtype", "type": "string" }, @@ -2549,9 +2243,7 @@ "$ref": "#/$defs/LoadLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadLidCreate", "type": "object" }, @@ -2576,9 +2268,7 @@ }, { "const": "offDeck", - "enum": [ - "offDeck" - ], + "enum": ["offDeck"], "type": "string" }, { @@ -2599,12 +2289,7 @@ "type": "integer" } }, - "required": [ - "location", - "loadName", - "namespace", - "version" - ], + "required": ["location", "loadName", "namespace", "version"], "title": "LoadLidParams", "type": "object" }, @@ -2614,9 +2299,7 @@ "commandType": { "const": "loadLidStack", "default": "loadLidStack", - "enum": [ - "loadLidStack" - ], + "enum": ["loadLidStack"], "title": "Commandtype", "type": "string" }, @@ -2634,9 +2317,7 @@ "$ref": "#/$defs/LoadLidStackParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadLidStackCreate", "type": "object" }, @@ -2661,9 +2342,7 @@ }, { "const": "offDeck", - "enum": [ - "offDeck" - ], + "enum": ["offDeck"], "type": "string" }, { @@ -2689,13 +2368,7 @@ "type": "integer" } }, - "required": [ - "location", - "loadName", - "namespace", - "version", - "quantity" - ], + "required": ["location", "loadName", "namespace", "version", "quantity"], "title": "LoadLidStackParams", "type": "object" }, @@ -2705,9 +2378,7 @@ "commandType": { "const": "loadLiquidClass", "default": "loadLiquidClass", - "enum": [ - "loadLiquidClass" - ], + "enum": ["loadLiquidClass"], "title": "Commandtype", "type": "string" }, @@ -2725,9 +2396,7 @@ "$ref": "#/$defs/LoadLiquidClassParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadLiquidClassCreate", "type": "object" }, @@ -2744,9 +2413,7 @@ "description": "The liquid class to store." } }, - "required": [ - "liquidClassRecord" - ], + "required": ["liquidClassRecord"], "title": "LoadLiquidClassParams", "type": "object" }, @@ -2756,9 +2423,7 @@ "commandType": { "const": "loadLiquid", "default": "loadLiquid", - "enum": [ - "loadLiquid" - ], + "enum": ["loadLiquid"], "title": "Commandtype", "type": "string" }, @@ -2776,9 +2441,7 @@ "$ref": "#/$defs/LoadLiquidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadLiquidCreate", "type": "object" }, @@ -2797,9 +2460,7 @@ }, { "const": "EMPTY", - "enum": [ - "EMPTY" - ], + "enum": ["EMPTY"], "type": "string" } ], @@ -2815,11 +2476,7 @@ "type": "object" } }, - "required": [ - "liquidId", - "labwareId", - "volumeByWell" - ], + "required": ["liquidId", "labwareId", "volumeByWell"], "title": "LoadLiquidParams", "type": "object" }, @@ -2829,9 +2486,7 @@ "commandType": { "const": "loadModule", "default": "loadModule", - "enum": [ - "loadModule" - ], + "enum": ["loadModule"], "title": "Commandtype", "type": "string" }, @@ -2849,9 +2504,7 @@ "$ref": "#/$defs/LoadModuleParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadModuleCreate", "type": "object" }, @@ -2872,10 +2525,7 @@ "type": "string" } }, - "required": [ - "model", - "location" - ], + "required": ["model", "location"], "title": "LoadModuleParams", "type": "object" }, @@ -2885,9 +2535,7 @@ "commandType": { "const": "loadPipette", "default": "loadPipette", - "enum": [ - "loadPipette" - ], + "enum": ["loadPipette"], "title": "Commandtype", "type": "string" }, @@ -2905,9 +2553,7 @@ "$ref": "#/$defs/LoadPipetteParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "LoadPipetteCreate", "type": "object" }, @@ -2938,19 +2584,13 @@ "type": "string" } }, - "required": [ - "pipetteName", - "mount" - ], + "required": ["pipetteName", "mount"], "title": "LoadPipetteParams", "type": "object" }, "MaintenancePosition": { "description": "Maintenance position options.", - "enum": [ - "attachPlate", - "attachInstrument" - ], + "enum": ["attachPlate", "attachInstrument"], "title": "MaintenancePosition", "type": "string" }, @@ -2976,10 +2616,7 @@ "title": "Volume" } }, - "required": [ - "repetitions", - "volume" - ], + "required": ["repetitions", "volume"], "title": "MixParams", "type": "object" }, @@ -2997,9 +2634,7 @@ "title": "Params" } }, - "required": [ - "enable" - ], + "required": ["enable"], "title": "MixProperties", "type": "object" }, @@ -3012,9 +2647,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "ModuleLocation", "type": "object" }, @@ -3052,11 +2685,7 @@ "type": "string" }, "MountType": { - "enum": [ - "left", - "right", - "extension" - ], + "enum": ["left", "right", "extension"], "title": "MountType", "type": "string" }, @@ -3066,9 +2695,7 @@ "commandType": { "const": "robot/moveAxesRelative", "default": "robot/moveAxesRelative", - "enum": [ - "robot/moveAxesRelative" - ], + "enum": ["robot/moveAxesRelative"], "title": "Commandtype", "type": "string" }, @@ -3086,9 +2713,7 @@ "$ref": "#/$defs/MoveAxesRelativeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveAxesRelativeCreate", "type": "object" }, @@ -3109,9 +2734,7 @@ "type": "number" } }, - "required": [ - "axis_map" - ], + "required": ["axis_map"], "title": "MoveAxesRelativeParams", "type": "object" }, @@ -3121,9 +2744,7 @@ "commandType": { "const": "robot/moveAxesTo", "default": "robot/moveAxesTo", - "enum": [ - "robot/moveAxesTo" - ], + "enum": ["robot/moveAxesTo"], "title": "Commandtype", "type": "string" }, @@ -3141,9 +2762,7 @@ "$ref": "#/$defs/MoveAxesToParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveAxesToCreate", "type": "object" }, @@ -3172,9 +2791,7 @@ "type": "number" } }, - "required": [ - "axis_map" - ], + "required": ["axis_map"], "title": "MoveAxesToParams", "type": "object" }, @@ -3184,9 +2801,7 @@ "commandType": { "const": "moveLabware", "default": "moveLabware", - "enum": [ - "moveLabware" - ], + "enum": ["moveLabware"], "title": "Commandtype", "type": "string" }, @@ -3204,9 +2819,7 @@ "$ref": "#/$defs/MoveLabwareParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveLabwareCreate", "type": "object" }, @@ -3236,9 +2849,7 @@ }, { "const": "offDeck", - "enum": [ - "offDeck" - ], + "enum": ["offDeck"], "type": "string" }, { @@ -3258,11 +2869,7 @@ "description": "Whether to use the gripper to perform the labware movement or to perform a manual movement with an option to pause." } }, - "required": [ - "labwareId", - "newLocation", - "strategy" - ], + "required": ["labwareId", "newLocation", "strategy"], "title": "MoveLabwareParams", "type": "object" }, @@ -3272,9 +2879,7 @@ "commandType": { "const": "moveRelative", "default": "moveRelative", - "enum": [ - "moveRelative" - ], + "enum": ["moveRelative"], "title": "Commandtype", "type": "string" }, @@ -3292,9 +2897,7 @@ "$ref": "#/$defs/MoveRelativeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveRelativeCreate", "type": "object" }, @@ -3316,11 +2919,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "axis", - "distance" - ], + "required": ["pipetteId", "axis", "distance"], "title": "MoveRelativeParams", "type": "object" }, @@ -3330,9 +2929,7 @@ "commandType": { "const": "moveToAddressableArea", "default": "moveToAddressableArea", - "enum": [ - "moveToAddressableArea" - ], + "enum": ["moveToAddressableArea"], "title": "Commandtype", "type": "string" }, @@ -3350,9 +2947,7 @@ "$ref": "#/$defs/MoveToAddressableAreaParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToAddressableAreaCreate", "type": "object" }, @@ -3362,9 +2957,7 @@ "commandType": { "const": "moveToAddressableAreaForDropTip", "default": "moveToAddressableAreaForDropTip", - "enum": [ - "moveToAddressableAreaForDropTip" - ], + "enum": ["moveToAddressableAreaForDropTip"], "title": "Commandtype", "type": "string" }, @@ -3382,9 +2975,7 @@ "$ref": "#/$defs/MoveToAddressableAreaForDropTipParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToAddressableAreaForDropTipCreate", "type": "object" }, @@ -3437,10 +3028,7 @@ "type": "number" } }, - "required": [ - "pipetteId", - "addressableAreaName" - ], + "required": ["pipetteId", "addressableAreaName"], "title": "MoveToAddressableAreaForDropTipParams", "type": "object" }, @@ -3489,10 +3077,7 @@ "type": "boolean" } }, - "required": [ - "pipetteId", - "addressableAreaName" - ], + "required": ["pipetteId", "addressableAreaName"], "title": "MoveToAddressableAreaParams", "type": "object" }, @@ -3502,9 +3087,7 @@ "commandType": { "const": "moveToCoordinates", "default": "moveToCoordinates", - "enum": [ - "moveToCoordinates" - ], + "enum": ["moveToCoordinates"], "title": "Commandtype", "type": "string" }, @@ -3522,9 +3105,7 @@ "$ref": "#/$defs/MoveToCoordinatesParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToCoordinatesCreate", "type": "object" }, @@ -3557,10 +3138,7 @@ "type": "number" } }, - "required": [ - "pipetteId", - "coordinates" - ], + "required": ["pipetteId", "coordinates"], "title": "MoveToCoordinatesParams", "type": "object" }, @@ -3570,9 +3148,7 @@ "commandType": { "const": "robot/moveTo", "default": "robot/moveTo", - "enum": [ - "robot/moveTo" - ], + "enum": ["robot/moveTo"], "title": "Commandtype", "type": "string" }, @@ -3590,9 +3166,7 @@ "$ref": "#/$defs/MoveToParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToCreate", "type": "object" }, @@ -3602,9 +3176,7 @@ "commandType": { "const": "calibration/moveToMaintenancePosition", "default": "calibration/moveToMaintenancePosition", - "enum": [ - "calibration/moveToMaintenancePosition" - ], + "enum": ["calibration/moveToMaintenancePosition"], "title": "Commandtype", "type": "string" }, @@ -3622,9 +3194,7 @@ "$ref": "#/$defs/MoveToMaintenancePositionParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToMaintenancePositionCreate", "type": "object" }, @@ -3641,9 +3211,7 @@ "description": "Gantry mount to move maintenance position." } }, - "required": [ - "mount" - ], + "required": ["mount"], "title": "MoveToMaintenancePositionParams", "type": "object" }, @@ -3664,10 +3232,7 @@ "type": "number" } }, - "required": [ - "mount", - "destination" - ], + "required": ["mount", "destination"], "title": "MoveToParams", "type": "object" }, @@ -3677,9 +3242,7 @@ "commandType": { "const": "moveToWell", "default": "moveToWell", - "enum": [ - "moveToWell" - ], + "enum": ["moveToWell"], "title": "Commandtype", "type": "string" }, @@ -3697,9 +3260,7 @@ "$ref": "#/$defs/MoveToWellParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "MoveToWellCreate", "type": "object" }, @@ -3742,21 +3303,13 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "pipetteId" - ], + "required": ["labwareId", "wellName", "pipetteId"], "title": "MoveToWellParams", "type": "object" }, "MovementAxis": { "description": "Axis on which to issue a relative movement.", - "enum": [ - "x", - "y", - "z" - ], + "enum": ["x", "y", "z"], "title": "MovementAxis", "type": "string" }, @@ -3949,9 +3502,7 @@ "type": "string" } }, - "required": [ - "labwareId" - ], + "required": ["labwareId"], "title": "OnLabwareLocation", "type": "object" }, @@ -3961,9 +3512,7 @@ "commandType": { "const": "heaterShaker/openLabwareLatch", "default": "heaterShaker/openLabwareLatch", - "enum": [ - "heaterShaker/openLabwareLatch" - ], + "enum": ["heaterShaker/openLabwareLatch"], "title": "Commandtype", "type": "string" }, @@ -3981,9 +3530,7 @@ "$ref": "#/$defs/OpenLabwareLatchParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "OpenLabwareLatchCreate", "type": "object" }, @@ -3996,9 +3543,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "OpenLabwareLatchParams", "type": "object" }, @@ -4008,9 +3553,7 @@ "commandType": { "const": "pickUpTip", "default": "pickUpTip", - "enum": [ - "pickUpTip" - ], + "enum": ["pickUpTip"], "title": "Commandtype", "type": "string" }, @@ -4028,9 +3571,7 @@ "$ref": "#/$defs/PickUpTipParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "PickUpTipCreate", "type": "object" }, @@ -4057,11 +3598,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "labwareId", - "wellName" - ], + "required": ["pipetteId", "labwareId", "wellName"], "title": "PickUpTipParams", "type": "object" }, @@ -4081,11 +3618,7 @@ }, "PickUpTipWellOrigin": { "description": "The origin of a PickUpTipWellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well", - "enum": [ - "top", - "bottom", - "center" - ], + "enum": ["top", "bottom", "center"], "title": "PickUpTipWellOrigin", "type": "string" }, @@ -4117,12 +3650,7 @@ }, "PositionReference": { "description": "Positional reference for liquid handling operations.", - "enum": [ - "well-bottom", - "well-top", - "well-center", - "liquid-meniscus" - ], + "enum": ["well-bottom", "well-top", "well-center", "liquid-meniscus"], "title": "PositionReference", "type": "string" }, @@ -4132,9 +3660,7 @@ "commandType": { "const": "prepareToAspirate", "default": "prepareToAspirate", - "enum": [ - "prepareToAspirate" - ], + "enum": ["prepareToAspirate"], "title": "Commandtype", "type": "string" }, @@ -4152,9 +3678,7 @@ "$ref": "#/$defs/PrepareToAspirateParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "PrepareToAspirateCreate", "type": "object" }, @@ -4167,9 +3691,7 @@ "type": "string" } }, - "required": [ - "pipetteId" - ], + "required": ["pipetteId"], "title": "PrepareToAspirateParams", "type": "object" }, @@ -4190,10 +3712,7 @@ "type": "array" } }, - "required": [ - "steps", - "repetitions" - ], + "required": ["steps", "repetitions"], "title": "ProfileCycle", "type": "object" }, @@ -4211,10 +3730,7 @@ "type": "number" } }, - "required": [ - "celsius", - "holdSeconds" - ], + "required": ["celsius", "holdSeconds"], "title": "ProfileStep", "type": "object" }, @@ -4235,30 +3751,19 @@ }, "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": [ - "A1", - "H1", - "A12", - "H12" - ], + "enum": ["A1", "H1", "A12", "H12"], "title": "Primarynozzle", "type": "string" }, "style": { "const": "QUADRANT", "default": "QUADRANT", - "enum": [ - "QUADRANT" - ], + "enum": ["QUADRANT"], "title": "Style", "type": "string" } }, - "required": [ - "primaryNozzle", - "frontRightNozzle", - "backLeftNozzle" - ], + "required": ["primaryNozzle", "frontRightNozzle", "backLeftNozzle"], "title": "QuadrantNozzleLayoutConfiguration", "type": "object" }, @@ -4268,9 +3773,7 @@ "commandType": { "const": "absorbanceReader/read", "default": "absorbanceReader/read", - "enum": [ - "absorbanceReader/read" - ], + "enum": ["absorbanceReader/read"], "title": "Commandtype", "type": "string" }, @@ -4288,9 +3791,7 @@ "$ref": "#/$defs/ReadAbsorbanceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "ReadAbsorbanceCreate", "type": "object" }, @@ -4308,9 +3809,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "ReadAbsorbanceParams", "type": "object" }, @@ -4320,9 +3819,7 @@ "commandType": { "const": "reloadLabware", "default": "reloadLabware", - "enum": [ - "reloadLabware" - ], + "enum": ["reloadLabware"], "title": "Commandtype", "type": "string" }, @@ -4340,9 +3837,7 @@ "$ref": "#/$defs/ReloadLabwareParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "ReloadLabwareCreate", "type": "object" }, @@ -4355,9 +3850,7 @@ "type": "string" } }, - "required": [ - "labwareId" - ], + "required": ["labwareId"], "title": "ReloadLabwareParams", "type": "object" }, @@ -4448,9 +3941,7 @@ "commandType": { "const": "retractAxis", "default": "retractAxis", - "enum": [ - "retractAxis" - ], + "enum": ["retractAxis"], "title": "Commandtype", "type": "string" }, @@ -4468,9 +3959,7 @@ "$ref": "#/$defs/RetractAxisParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "RetractAxisCreate", "type": "object" }, @@ -4482,9 +3971,7 @@ "description": "Axis to retract to its home position as quickly as safely possible. The difference between retracting an axis and homing an axis using the home command is that a home will always probe the limit switch and will work as the first motion command a robot will need to execute; On the other hand, retraction will rely on this previously determined home position to move to it as fast as safely possible. So on the Flex, it will move (fast) the axis to the previously recorded home position and on the OT2, it will move (fast) the axis a safe distance from the previously recorded home position, and then slowly approach the limit switch." } }, - "required": [ - "axis" - ], + "required": ["axis"], "title": "RetractAxisParams", "type": "object" }, @@ -4620,28 +4107,19 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": [ - "A1", - "H1", - "A12", - "H12" - ], + "enum": ["A1", "H1", "A12", "H12"], "title": "Primarynozzle", "type": "string" }, "style": { "const": "ROW", "default": "ROW", - "enum": [ - "ROW" - ], + "enum": ["ROW"], "title": "Style", "type": "string" } }, - "required": [ - "primaryNozzle" - ], + "required": ["primaryNozzle"], "title": "RowNozzleLayoutConfiguration", "type": "object" }, @@ -4651,9 +4129,7 @@ "commandType": { "const": "thermocycler/runExtendedProfile", "default": "thermocycler/runExtendedProfile", - "enum": [ - "thermocycler/runExtendedProfile" - ], + "enum": ["thermocycler/runExtendedProfile"], "title": "Commandtype", "type": "string" }, @@ -4671,9 +4147,7 @@ "$ref": "#/$defs/RunExtendedProfileParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "RunExtendedProfileCreate", "type": "object" }, @@ -4706,10 +4180,7 @@ "type": "array" } }, - "required": [ - "moduleId", - "profileElements" - ], + "required": ["moduleId", "profileElements"], "title": "RunExtendedProfileParams", "type": "object" }, @@ -4719,9 +4190,7 @@ "commandType": { "const": "thermocycler/runProfile", "default": "thermocycler/runProfile", - "enum": [ - "thermocycler/runProfile" - ], + "enum": ["thermocycler/runProfile"], "title": "Commandtype", "type": "string" }, @@ -4739,9 +4208,7 @@ "$ref": "#/$defs/RunProfileParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "RunProfileCreate", "type": "object" }, @@ -4767,10 +4234,7 @@ "type": "array" } }, - "required": [ - "moduleId", - "profile" - ], + "required": ["moduleId", "profile"], "title": "RunProfileParams", "type": "object" }, @@ -4788,10 +4252,7 @@ "type": "number" } }, - "required": [ - "celsius", - "holdSeconds" - ], + "required": ["celsius", "holdSeconds"], "title": "RunProfileStepParams", "type": "object" }, @@ -4801,9 +4262,7 @@ "commandType": { "const": "savePosition", "default": "savePosition", - "enum": [ - "savePosition" - ], + "enum": ["savePosition"], "title": "Commandtype", "type": "string" }, @@ -4821,9 +4280,7 @@ "$ref": "#/$defs/SavePositionParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SavePositionCreate", "type": "object" }, @@ -4846,9 +4303,7 @@ "type": "string" } }, - "required": [ - "pipetteId" - ], + "required": ["pipetteId"], "title": "SavePositionParams", "type": "object" }, @@ -4858,9 +4313,7 @@ "commandType": { "const": "heaterShaker/setAndWaitForShakeSpeed", "default": "heaterShaker/setAndWaitForShakeSpeed", - "enum": [ - "heaterShaker/setAndWaitForShakeSpeed" - ], + "enum": ["heaterShaker/setAndWaitForShakeSpeed"], "title": "Commandtype", "type": "string" }, @@ -4878,9 +4331,7 @@ "$ref": "#/$defs/SetAndWaitForShakeSpeedParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetAndWaitForShakeSpeedCreate", "type": "object" }, @@ -4898,10 +4349,7 @@ "type": "number" } }, - "required": [ - "moduleId", - "rpm" - ], + "required": ["moduleId", "rpm"], "title": "SetAndWaitForShakeSpeedParams", "type": "object" }, @@ -4911,9 +4359,7 @@ "commandType": { "const": "setRailLights", "default": "setRailLights", - "enum": [ - "setRailLights" - ], + "enum": ["setRailLights"], "title": "Commandtype", "type": "string" }, @@ -4931,9 +4377,7 @@ "$ref": "#/$defs/SetRailLightsParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetRailLightsCreate", "type": "object" }, @@ -4946,9 +4390,7 @@ "type": "boolean" } }, - "required": [ - "on" - ], + "required": ["on"], "title": "SetRailLightsParams", "type": "object" }, @@ -4958,9 +4400,7 @@ "commandType": { "const": "setStatusBar", "default": "setStatusBar", - "enum": [ - "setStatusBar" - ], + "enum": ["setStatusBar"], "title": "Commandtype", "type": "string" }, @@ -4978,9 +4418,7 @@ "$ref": "#/$defs/SetStatusBarParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetStatusBarCreate", "type": "object" }, @@ -4992,9 +4430,7 @@ "description": "The animation that should be executed on the status bar." } }, - "required": [ - "animation" - ], + "required": ["animation"], "title": "SetStatusBarParams", "type": "object" }, @@ -5004,9 +4440,7 @@ "commandType": { "const": "thermocycler/setTargetBlockTemperature", "default": "thermocycler/setTargetBlockTemperature", - "enum": [ - "thermocycler/setTargetBlockTemperature" - ], + "enum": ["thermocycler/setTargetBlockTemperature"], "title": "Commandtype", "type": "string" }, @@ -5024,9 +4458,7 @@ "$ref": "#/$defs/SetTargetBlockTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetTargetBlockTemperatureCreate", "type": "object" }, @@ -5054,10 +4486,7 @@ "type": "string" } }, - "required": [ - "moduleId", - "celsius" - ], + "required": ["moduleId", "celsius"], "title": "SetTargetBlockTemperatureParams", "type": "object" }, @@ -5067,9 +4496,7 @@ "commandType": { "const": "thermocycler/setTargetLidTemperature", "default": "thermocycler/setTargetLidTemperature", - "enum": [ - "thermocycler/setTargetLidTemperature" - ], + "enum": ["thermocycler/setTargetLidTemperature"], "title": "Commandtype", "type": "string" }, @@ -5087,9 +4514,7 @@ "$ref": "#/$defs/SetTargetLidTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetTargetLidTemperatureCreate", "type": "object" }, @@ -5107,10 +4532,7 @@ "type": "string" } }, - "required": [ - "moduleId", - "celsius" - ], + "required": ["moduleId", "celsius"], "title": "SetTargetLidTemperatureParams", "type": "object" }, @@ -5267,40 +4689,25 @@ "properties": { "primaryNozzle": { "description": "The primary nozzle to use in the layout configuration. This nozzle will update the critical point of the current pipette. For now, this is also the back left corner of your rectangle.", - "enum": [ - "A1", - "H1", - "A12", - "H12" - ], + "enum": ["A1", "H1", "A12", "H12"], "title": "Primarynozzle", "type": "string" }, "style": { "const": "SINGLE", "default": "SINGLE", - "enum": [ - "SINGLE" - ], + "enum": ["SINGLE"], "title": "Style", "type": "string" } }, - "required": [ - "primaryNozzle" - ], + "required": ["primaryNozzle"], "title": "SingleNozzleLayoutConfiguration", "type": "object" }, "StatusBarAnimation": { "description": "Status Bar animation options.", - "enum": [ - "idle", - "confirm", - "updating", - "disco", - "off" - ], + "enum": ["idle", "confirm", "updating", "disco", "off"], "title": "StatusBarAnimation", "type": "string" }, @@ -5375,22 +4782,13 @@ "title": "Speed" } }, - "required": [ - "positionReference", - "offset", - "speed", - "delay" - ], + "required": ["positionReference", "offset", "speed", "delay"], "title": "Submerge", "type": "object" }, "TipPresenceStatus": { "description": "Tip presence status reported by a pipette.", - "enum": [ - "present", - "absent", - "unknown" - ], + "enum": ["present", "absent", "unknown"], "title": "TipPresenceStatus", "type": "string" }, @@ -5400,9 +4798,7 @@ "commandType": { "const": "touchTip", "default": "touchTip", - "enum": [ - "touchTip" - ], + "enum": ["touchTip"], "title": "Commandtype", "type": "string" }, @@ -5420,9 +4816,7 @@ "$ref": "#/$defs/TouchTipParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "TouchTipCreate", "type": "object" }, @@ -5465,11 +4859,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "pipetteId" - ], + "required": ["labwareId", "wellName", "pipetteId"], "title": "TouchTipParams", "type": "object" }, @@ -5487,9 +4877,7 @@ "title": "Params" } }, - "required": [ - "enable" - ], + "required": ["enable"], "title": "TouchTipProperties", "type": "object" }, @@ -5499,9 +4887,7 @@ "commandType": { "const": "tryLiquidProbe", "default": "tryLiquidProbe", - "enum": [ - "tryLiquidProbe" - ], + "enum": ["tryLiquidProbe"], "title": "Commandtype", "type": "string" }, @@ -5519,9 +4905,7 @@ "$ref": "#/$defs/TryLiquidProbeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "TryLiquidProbeCreate", "type": "object" }, @@ -5548,11 +4932,7 @@ "type": "string" } }, - "required": [ - "labwareId", - "wellName", - "pipetteId" - ], + "required": ["labwareId", "wellName", "pipetteId"], "title": "TryLiquidProbeParams", "type": "object" }, @@ -5562,9 +4942,7 @@ "commandType": { "const": "unsafe/blowOutInPlace", "default": "unsafe/blowOutInPlace", - "enum": [ - "unsafe/blowOutInPlace" - ], + "enum": ["unsafe/blowOutInPlace"], "title": "Commandtype", "type": "string" }, @@ -5582,9 +4960,7 @@ "$ref": "#/$defs/UnsafeBlowOutInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UnsafeBlowOutInPlaceCreate", "type": "object" }, @@ -5603,10 +4979,7 @@ "type": "string" } }, - "required": [ - "flowRate", - "pipetteId" - ], + "required": ["flowRate", "pipetteId"], "title": "UnsafeBlowOutInPlaceParams", "type": "object" }, @@ -5616,9 +4989,7 @@ "commandType": { "const": "unsafe/dropTipInPlace", "default": "unsafe/dropTipInPlace", - "enum": [ - "unsafe/dropTipInPlace" - ], + "enum": ["unsafe/dropTipInPlace"], "title": "Commandtype", "type": "string" }, @@ -5636,9 +5007,7 @@ "$ref": "#/$defs/UnsafeDropTipInPlaceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UnsafeDropTipInPlaceCreate", "type": "object" }, @@ -5656,9 +5025,7 @@ "type": "string" } }, - "required": [ - "pipetteId" - ], + "required": ["pipetteId"], "title": "UnsafeDropTipInPlaceParams", "type": "object" }, @@ -5668,9 +5035,7 @@ "commandType": { "const": "unsafe/engageAxes", "default": "unsafe/engageAxes", - "enum": [ - "unsafe/engageAxes" - ], + "enum": ["unsafe/engageAxes"], "title": "Commandtype", "type": "string" }, @@ -5688,9 +5053,7 @@ "$ref": "#/$defs/UnsafeEngageAxesParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UnsafeEngageAxesCreate", "type": "object" }, @@ -5706,9 +5069,7 @@ "type": "array" } }, - "required": [ - "axes" - ], + "required": ["axes"], "title": "UnsafeEngageAxesParams", "type": "object" }, @@ -5718,9 +5079,7 @@ "commandType": { "const": "unsafe/placeLabware", "default": "unsafe/placeLabware", - "enum": [ - "unsafe/placeLabware" - ], + "enum": ["unsafe/placeLabware"], "title": "Commandtype", "type": "string" }, @@ -5738,9 +5097,7 @@ "$ref": "#/$defs/UnsafePlaceLabwareParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UnsafePlaceLabwareCreate", "type": "object" }, @@ -5771,10 +5128,7 @@ "title": "Location" } }, - "required": [ - "labwareURI", - "location" - ], + "required": ["labwareURI", "location"], "title": "UnsafePlaceLabwareParams", "type": "object" }, @@ -5784,9 +5138,7 @@ "commandType": { "const": "unsafe/ungripLabware", "default": "unsafe/ungripLabware", - "enum": [ - "unsafe/ungripLabware" - ], + "enum": ["unsafe/ungripLabware"], "title": "Commandtype", "type": "string" }, @@ -5804,9 +5156,7 @@ "$ref": "#/$defs/UnsafeUngripLabwareParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UnsafeUngripLabwareCreate", "type": "object" }, @@ -5822,9 +5172,7 @@ "commandType": { "const": "unsafe/updatePositionEstimators", "default": "unsafe/updatePositionEstimators", - "enum": [ - "unsafe/updatePositionEstimators" - ], + "enum": ["unsafe/updatePositionEstimators"], "title": "Commandtype", "type": "string" }, @@ -5842,9 +5190,7 @@ "$ref": "#/$defs/UpdatePositionEstimatorsParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "UpdatePositionEstimatorsCreate", "type": "object" }, @@ -5860,9 +5206,7 @@ "type": "array" } }, - "required": [ - "axes" - ], + "required": ["axes"], "title": "UpdatePositionEstimatorsParams", "type": "object" }, @@ -5882,11 +5226,7 @@ "type": "number" } }, - "required": [ - "x", - "y", - "z" - ], + "required": ["x", "y", "z"], "title": "Vec3f", "type": "object" }, @@ -5896,9 +5236,7 @@ "commandType": { "const": "verifyTipPresence", "default": "verifyTipPresence", - "enum": [ - "verifyTipPresence" - ], + "enum": ["verifyTipPresence"], "title": "Commandtype", "type": "string" }, @@ -5916,9 +5254,7 @@ "$ref": "#/$defs/VerifyTipPresenceParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "VerifyTipPresenceCreate", "type": "object" }, @@ -5940,10 +5276,7 @@ "type": "string" } }, - "required": [ - "pipetteId", - "expectedState" - ], + "required": ["pipetteId", "expectedState"], "title": "VerifyTipPresenceParams", "type": "object" }, @@ -5953,9 +5286,7 @@ "commandType": { "const": "thermocycler/waitForBlockTemperature", "default": "thermocycler/waitForBlockTemperature", - "enum": [ - "thermocycler/waitForBlockTemperature" - ], + "enum": ["thermocycler/waitForBlockTemperature"], "title": "Commandtype", "type": "string" }, @@ -5973,9 +5304,7 @@ "$ref": "#/$defs/WaitForBlockTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForBlockTemperatureCreate", "type": "object" }, @@ -5988,9 +5317,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "WaitForBlockTemperatureParams", "type": "object" }, @@ -6000,9 +5327,7 @@ "commandType": { "const": "waitForDuration", "default": "waitForDuration", - "enum": [ - "waitForDuration" - ], + "enum": ["waitForDuration"], "title": "Commandtype", "type": "string" }, @@ -6020,9 +5345,7 @@ "$ref": "#/$defs/WaitForDurationParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForDurationCreate", "type": "object" }, @@ -6040,9 +5363,7 @@ "type": "number" } }, - "required": [ - "seconds" - ], + "required": ["seconds"], "title": "WaitForDurationParams", "type": "object" }, @@ -6052,9 +5373,7 @@ "commandType": { "const": "thermocycler/waitForLidTemperature", "default": "thermocycler/waitForLidTemperature", - "enum": [ - "thermocycler/waitForLidTemperature" - ], + "enum": ["thermocycler/waitForLidTemperature"], "title": "Commandtype", "type": "string" }, @@ -6072,9 +5391,7 @@ "$ref": "#/$defs/WaitForLidTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForLidTemperatureCreate", "type": "object" }, @@ -6087,9 +5404,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "WaitForLidTemperatureParams", "type": "object" }, @@ -6098,10 +5413,7 @@ "properties": { "commandType": { "default": "waitForResume", - "enum": [ - "waitForResume", - "pause" - ], + "enum": ["waitForResume", "pause"], "title": "Commandtype", "type": "string" }, @@ -6119,9 +5431,7 @@ "$ref": "#/$defs/WaitForResumeParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForResumeCreate", "type": "object" }, @@ -6181,12 +5491,7 @@ }, "WellOrigin": { "description": "Origin of WellLocation offset.\n\nProps:\n TOP: the top-center of the well\n BOTTOM: the bottom-center of the well\n CENTER: the middle-center of the well\n MENISCUS: the meniscus-center of the well", - "enum": [ - "top", - "bottom", - "center", - "meniscus" - ], + "enum": ["top", "bottom", "center", "meniscus"], "title": "WellOrigin", "type": "string" }, @@ -6196,9 +5501,7 @@ "commandType": { "const": "robot/closeGripperJaw", "default": "robot/closeGripperJaw", - "enum": [ - "robot/closeGripperJaw" - ], + "enum": ["robot/closeGripperJaw"], "title": "Commandtype", "type": "string" }, @@ -6216,9 +5519,7 @@ "$ref": "#/$defs/closeGripperJawParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "closeGripperJawCreate", "type": "object" }, @@ -6240,9 +5541,7 @@ "commandType": { "const": "robot/openGripperJaw", "default": "robot/openGripperJaw", - "enum": [ - "robot/openGripperJaw" - ], + "enum": ["robot/openGripperJaw"], "title": "Commandtype", "type": "string" }, @@ -6260,9 +5559,7 @@ "$ref": "#/$defs/openGripperJawParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "openGripperJawCreate", "type": "object" }, @@ -6278,9 +5575,7 @@ "commandType": { "const": "absorbanceReader/closeLid", "default": "absorbanceReader/closeLid", - "enum": [ - "absorbanceReader/closeLid" - ], + "enum": ["absorbanceReader/closeLid"], "title": "Commandtype", "type": "string" }, @@ -6298,9 +5593,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__absorbance_reader__close_lid__CloseLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CloseLidCreate", "type": "object" }, @@ -6313,9 +5606,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "CloseLidParams", "type": "object" }, @@ -6325,9 +5616,7 @@ "commandType": { "const": "absorbanceReader/openLid", "default": "absorbanceReader/openLid", - "enum": [ - "absorbanceReader/openLid" - ], + "enum": ["absorbanceReader/openLid"], "title": "Commandtype", "type": "string" }, @@ -6345,9 +5634,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__absorbance_reader__open_lid__OpenLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "OpenLidCreate", "type": "object" }, @@ -6360,9 +5647,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "OpenLidParams", "type": "object" }, @@ -6372,9 +5657,7 @@ "commandType": { "const": "heaterShaker/setTargetTemperature", "default": "heaterShaker/setTargetTemperature", - "enum": [ - "heaterShaker/setTargetTemperature" - ], + "enum": ["heaterShaker/setTargetTemperature"], "title": "Commandtype", "type": "string" }, @@ -6392,9 +5675,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__set_target_temperature__SetTargetTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetTargetTemperatureCreate", "type": "object" }, @@ -6412,10 +5693,7 @@ "type": "string" } }, - "required": [ - "moduleId", - "celsius" - ], + "required": ["moduleId", "celsius"], "title": "SetTargetTemperatureParams", "type": "object" }, @@ -6425,9 +5703,7 @@ "commandType": { "const": "heaterShaker/waitForTemperature", "default": "heaterShaker/waitForTemperature", - "enum": [ - "heaterShaker/waitForTemperature" - ], + "enum": ["heaterShaker/waitForTemperature"], "title": "Commandtype", "type": "string" }, @@ -6445,9 +5721,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__heater_shaker__wait_for_temperature__WaitForTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForTemperatureCreate", "type": "object" }, @@ -6465,9 +5739,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "WaitForTemperatureParams", "type": "object" }, @@ -6477,9 +5749,7 @@ "commandType": { "const": "temperatureModule/setTargetTemperature", "default": "temperatureModule/setTargetTemperature", - "enum": [ - "temperatureModule/setTargetTemperature" - ], + "enum": ["temperatureModule/setTargetTemperature"], "title": "Commandtype", "type": "string" }, @@ -6497,9 +5767,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__temperature_module__set_target_temperature__SetTargetTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "SetTargetTemperatureCreate", "type": "object" }, @@ -6517,10 +5785,7 @@ "type": "string" } }, - "required": [ - "moduleId", - "celsius" - ], + "required": ["moduleId", "celsius"], "title": "SetTargetTemperatureParams", "type": "object" }, @@ -6530,9 +5795,7 @@ "commandType": { "const": "temperatureModule/waitForTemperature", "default": "temperatureModule/waitForTemperature", - "enum": [ - "temperatureModule/waitForTemperature" - ], + "enum": ["temperatureModule/waitForTemperature"], "title": "Commandtype", "type": "string" }, @@ -6550,9 +5813,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__temperature_module__wait_for_temperature__WaitForTemperatureParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "WaitForTemperatureCreate", "type": "object" }, @@ -6570,9 +5831,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "WaitForTemperatureParams", "type": "object" }, @@ -6582,9 +5841,7 @@ "commandType": { "const": "thermocycler/closeLid", "default": "thermocycler/closeLid", - "enum": [ - "thermocycler/closeLid" - ], + "enum": ["thermocycler/closeLid"], "title": "Commandtype", "type": "string" }, @@ -6602,9 +5859,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__thermocycler__close_lid__CloseLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "CloseLidCreate", "type": "object" }, @@ -6617,9 +5872,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "CloseLidParams", "type": "object" }, @@ -6629,9 +5882,7 @@ "commandType": { "const": "thermocycler/openLid", "default": "thermocycler/openLid", - "enum": [ - "thermocycler/openLid" - ], + "enum": ["thermocycler/openLid"], "title": "Commandtype", "type": "string" }, @@ -6649,9 +5900,7 @@ "$ref": "#/$defs/opentrons__protocol_engine__commands__thermocycler__open_lid__OpenLidParams" } }, - "required": [ - "params" - ], + "required": ["params"], "title": "OpenLidCreate", "type": "object" }, @@ -6664,9 +5913,7 @@ "type": "string" } }, - "required": [ - "moduleId" - ], + "required": ["moduleId"], "title": "OpenLidParams", "type": "object" } From 21863f5a5af16aec7b2607ff4c2b7bfd5dfbcf13 Mon Sep 17 00:00:00 2001 From: caila-marashaj Date: Thu, 16 Jan 2025 11:08:57 -0500 Subject: [PATCH 5/5] fix descriptions --- .../protocol_engine/commands/aspirate_while_tracking.py | 2 +- .../protocol_engine/commands/dispense_while_tracking.py | 2 +- shared-data/command/schemas/11.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py b/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py index 5ea29af8f6e..4f3ec9cf6db 100644 --- a/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py +++ b/api/src/opentrons/protocol_engine/commands/aspirate_while_tracking.py @@ -241,7 +241,7 @@ class AspirateWhileTracking( class AspirateWhileTrackingCreate(BaseCommandCreate[AspirateWhileTrackingParams]): - """Create aspirate command request model.""" + """Create aspirateWhileTracking command request model.""" commandType: AspirateWhileTrackingCommandType = "aspirateWhileTracking" params: AspirateWhileTrackingParams diff --git a/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py b/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py index de4904f5295..7d287c7c01d 100644 --- a/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py +++ b/api/src/opentrons/protocol_engine/commands/dispense_while_tracking.py @@ -194,7 +194,7 @@ class DispenseWhileTracking( class DispenseWhileTrackingCreate(BaseCommandCreate[DispenseWhileTrackingParams]): - """Create dispense command request model.""" + """Create dispenseWhileTracking command request model.""" commandType: DispenseWhileTrackingCommandType = "dispenseWhileTracking" params: DispenseWhileTrackingParams diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 9a4e336f2c6..3c02116a190 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -338,7 +338,7 @@ "type": "object" }, "AspirateWhileTrackingCreate": { - "description": "Create aspirate command request model.", + "description": "Create aspirateWhileTracking command request model.", "properties": { "commandType": { "const": "aspirateWhileTracking", @@ -1480,7 +1480,7 @@ "type": "object" }, "DispenseWhileTrackingCreate": { - "description": "Create dispense command request model.", + "description": "Create dispenseWhileTracking command request model.", "properties": { "commandType": { "const": "dispenseWhileTracking",