From e4497f452a0eaed2b11444c580cd79845f4747be Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Tue, 18 Mar 2025 13:49:22 -0400 Subject: [PATCH 1/6] add way to check if tip is clean --- .../protocol_api/core/engine/instrument.py | 10 +++++ .../opentrons/protocol_api/core/instrument.py | 4 ++ .../core/legacy/legacy_instrument_core.py | 4 ++ .../legacy_instrument_core.py | 3 ++ .../protocol_engine/commands/pick_up_tip.py | 4 +- .../protocol_engine/state/pipettes.py | 42 ++++++++++++++++++- .../protocol_engine/state/update_types.py | 18 +++++++- 7 files changed, 81 insertions(+), 4 deletions(-) diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index 60a7d3e59f7..571b543e94a 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -939,6 +939,16 @@ def get_current_volume(self) -> float: return current_volume or 0 + def get_has_clean_tip(self) -> bool: + try: + clean_tip = self._engine_client.state.pipettes.get_has_clean_tip( + self._pipette_id + ) + except TipNotAttachedError: + clean_tip = False + + return clean_tip + def get_available_volume(self) -> float: try: available_volume = self._engine_client.state.pipettes.get_available_volume( diff --git a/api/src/opentrons/protocol_api/core/instrument.py b/api/src/opentrons/protocol_api/core/instrument.py index 7c0aab3f235..7ad0f8a8e31 100644 --- a/api/src/opentrons/protocol_api/core/instrument.py +++ b/api/src/opentrons/protocol_api/core/instrument.py @@ -252,6 +252,10 @@ def get_working_volume(self) -> float: def get_current_volume(self) -> float: ... + @abstractmethod + def get_has_clean_tip(self) -> bool: + ... + @abstractmethod def get_available_volume(self) -> float: ... diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py index 5140a3f0a78..6be6f64c2cf 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py @@ -500,6 +500,10 @@ def get_current_volume(self) -> float: """Get the current volume.""" return self.get_hardware_state()["current_volume"] + def get_has_clean_tip(self) -> bool: + """Get if has a clean tip, only used with LLD and engine commands.""" + return False + def get_available_volume(self) -> float: """Get the available volume.""" return self.get_hardware_state()["available_volume"] diff --git a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py index 388c26bfd70..c216326ac0d 100644 --- a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py @@ -377,6 +377,9 @@ def get_working_volume(self) -> float: def get_current_volume(self) -> float: return self._pipette_dict["current_volume"] + def get_has_clean_tip(self) -> bool: + return False + def get_available_volume(self) -> float: return self._pipette_dict["available_volume"] diff --git a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py index c142e3ec974..debee215e94 100644 --- a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py +++ b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py @@ -150,7 +150,7 @@ async def execute( pipette_id=pipette_id, tip_geometry=e.tip_geometry, ) - .set_fluid_empty(pipette_id=pipette_id) + .set_fluid_clean(pipette_id=pipette_id) .mark_tips_as_used( pipette_id=pipette_id, labware_id=labware_id, well_name=well_name ) @@ -188,7 +188,7 @@ async def execute( .mark_tips_as_used( pipette_id=pipette_id, labware_id=labware_id, well_name=well_name ) - .set_fluid_empty(pipette_id=pipette_id) + .set_fluid_clean(pipette_id=pipette_id) .set_pipette_ready_to_aspirate( pipette_id=pipette_id, ready_to_aspirate=True ) diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index c8e87ae9b62..e619c661e48 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -11,6 +11,7 @@ Optional, Tuple, cast, + Union, ) from typing_extensions import assert_never @@ -126,6 +127,7 @@ class PipetteState: nozzle_configuration_by_id: Dict[str, NozzleMap] liquid_presence_detection_by_id: Dict[str, bool] ready_to_aspirate_by_id: Dict[str, bool] + has_clean_tips_by_id: Dict[str, bool] class PipetteStore(HasState[PipetteState], HandlesActions): @@ -147,6 +149,7 @@ def __init__(self) -> None: nozzle_configuration_by_id={}, liquid_presence_detection_by_id={}, ready_to_aspirate_by_id={}, + has_clean_tips_by_id={}, ) def handle_action(self, action: Action) -> None: @@ -213,6 +216,7 @@ def _update_tip_state(self, state_update: update_types.StateUpdate) -> None: else: pipette_id = state_update.pipette_tip_state.pipette_id self._state.attached_tip_by_id[pipette_id] = None + self._state.has_clean_tips_by_id[pipette_id] = False static_config = self._state.static_config_by_id.get(pipette_id) if static_config: @@ -329,12 +333,20 @@ def _update_ready_for_aspirate( def _update_volumes(self, state_update: update_types.StateUpdate) -> None: if state_update.pipette_aspirated_fluid == update_types.NO_CHANGE: return + # if this is updating to anything but clean mark the tip as unclean + if state_update.pipette_aspirated_fluid.type != "clean": + self._state.has_clean_tips_by_id[ + state_update.pipette_aspirated_fluid.pipette_id + ] = False + if state_update.pipette_aspirated_fluid.type == "aspirated": self._update_aspirated(state_update.pipette_aspirated_fluid) elif state_update.pipette_aspirated_fluid.type == "ejected": self._update_ejected(state_update.pipette_aspirated_fluid) elif state_update.pipette_aspirated_fluid.type == "empty": self._update_empty(state_update.pipette_aspirated_fluid) + elif state_update.pipette_aspirated_fluid.type == "clean": + self._update_empty(state_update.pipette_aspirated_fluid) elif state_update.pipette_aspirated_fluid.type == "unknown": self._update_unknown(state_update.pipette_aspirated_fluid) else: @@ -353,7 +365,12 @@ def _update_aspirated( def _update_ejected(self, update: update_types.PipetteEjectedFluidUpdate) -> None: self._fluid_stack_log_if_empty(update.pipette_id).remove_fluid(update.volume) - def _update_empty(self, update: update_types.PipetteEmptyFluidUpdate) -> None: + def _update_empty( + self, + update: Union[ + update_types.PipetteEmptyFluidUpdate, update_types.PipetteCleanFluidUpdate + ], + ) -> None: self._state.pipette_contents_by_id[update.pipette_id] = fluid_stack.FluidStack() def _update_unknown(self, update: update_types.PipetteUnknownFluidUpdate) -> None: @@ -494,6 +511,29 @@ def get_aspirated_volume(self, pipette_id: str) -> Optional[float]: f"Pipette {pipette_id} not found; unable to get current volume." ) from e + def get_has_clean_tip(self, pipette_id: str) -> bool: + """Get if the tip of a pipette by ID is clean. + + This is only true directly after a pick up tip, once any kind of aspirate happens + it is no longer clean + + Returns: + True if the tip is clean + False if it is unclean + + Raises: + PipetteNotLoadedError: pipette ID does not exist. + TipNotAttachedError: if no tip is attached to the pipette. + """ + self.validate_tip_state(pipette_id, True) + + try: + return self._state.has_clean_tips_by_id[pipette_id] + except KeyError as e: + raise errors.PipetteNotLoadedError( + f"Pipette {pipette_id} not found; unable to get current volume." + ) from e + def get_liquid_dispensed_by_ejecting_volume( self, pipette_id: str, volume: float ) -> Optional[float]: diff --git a/api/src/opentrons/protocol_engine/state/update_types.py b/api/src/opentrons/protocol_engine/state/update_types.py index 6c751069776..1eddbf7bfa1 100644 --- a/api/src/opentrons/protocol_engine/state/update_types.py +++ b/api/src/opentrons/protocol_engine/state/update_types.py @@ -326,6 +326,14 @@ class PipetteEmptyFluidUpdate: type: typing.Literal["empty"] = "empty" +@dataclasses.dataclass +class PipetteCleanFluidUpdate: + """Sets the pipette to be valid and empty and clean.""" + + pipette_id: str + type: typing.Literal["clean"] = "clean" + + @dataclasses.dataclass class AbsorbanceReaderLidUpdate: """An update to an absorbance reader's lid location.""" @@ -433,6 +441,7 @@ class StateUpdate: | PipetteEjectedFluidUpdate | PipetteUnknownFluidUpdate | PipetteEmptyFluidUpdate + | PipetteCleanFluidUpdate | NoChangeType ) = NO_CHANGE @@ -777,12 +786,19 @@ def set_fluid_unknown(self: Self, pipette_id: str) -> Self: return self def set_fluid_empty(self: Self, pipette_id: str) -> Self: - """Update record fo fluid held inside a pipette. See `PipetteEmptyFluidUpdate`.""" + """Update record of fluid held inside a pipette. See `PipetteEmptyFluidUpdate`.""" self.pipette_aspirated_fluid = PipetteEmptyFluidUpdate( type="empty", pipette_id=pipette_id ) return self + def set_fluid_clean(self: Self, pipette_id: str) -> Self: + """Update record of fluid held inside a pipette and mark tip as clean. See `PipetteEmptyFluidUpdate`.""" + self.pipette_aspirated_fluid = PipetteCleanFluidUpdate( + type="clean", pipette_id=pipette_id + ) + return self + def set_absorbance_reader_lid(self: Self, module_id: str, is_lid_on: bool) -> Self: """Update an absorbance reader's lid location. See `AbsorbanceReaderLidUpdate`.""" assert self.absorbance_reader_state_update == NO_CHANGE From c6e470a91c8cd2c206b42d3c587abe9dd4c59f2e Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Tue, 18 Mar 2025 13:49:37 -0400 Subject: [PATCH 2/6] check if tip is clean before an auto-probe --- api/src/opentrons/protocol_api/instrument_context.py | 1 + 1 file changed, 1 insertion(+) diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 48a175824eb..dab7b488bac 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -271,6 +271,7 @@ def aspirate( and self.liquid_presence_detection and self._core.nozzle_configuration_valid_for_lld() and self._core.get_current_volume() == 0 + and self._core.get_has_clean_tip() ): self._raise_if_pressure_not_supported_by_pipette() self.require_liquid_presence(well=well) From 7e9645be88a7d1d148acbc5c3d60c8b79df8dbc3 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Tue, 18 Mar 2025 13:50:14 -0400 Subject: [PATCH 3/6] fix old tests --- api/tests/opentrons/protocol_api/test_instrument_context.py | 1 + .../opentrons/protocol_engine/commands/test_pick_up_tip.py | 4 ++-- .../opentrons/protocol_engine/state/test_pipette_store_old.py | 1 + .../opentrons/protocol_engine/state/test_pipette_view_old.py | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 9b7828ade65..75936af6f89 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -1621,6 +1621,7 @@ def test_mix_with_lpd( decoy.when(mock_instrument_core.get_aspirate_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.get_dispense_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.has_tip()).then_return(True) + decoy.when(mock_instrument_core.get_has_clean_tip()).then_return(True) decoy.when(mock_instrument_core.get_current_volume()).then_return(0.0) decoy.when(mock_instrument_core.nozzle_configuration_valid_for_lld()).then_return( True diff --git a/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py b/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py index 7ddb04839ee..a4f9c32bfe8 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py +++ b/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py @@ -107,7 +107,7 @@ async def test_success( tips_used=update_types.TipsUsedUpdate( pipette_id="pipette-id", labware_id="labware-id", well_name="A3" ), - pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( + pipette_aspirated_fluid=update_types.PipetteCleanFluidUpdate( pipette_id="pipette-id" ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( @@ -192,7 +192,7 @@ async def test_tip_physically_missing_error( pipette_tip_state=update_types.PipetteTipStateUpdate( pipette_id="pipette-id", tip_geometry=sentinel.tip_geometry ), - pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( + pipette_aspirated_fluid=update_types.PipetteCleanFluidUpdate( pipette_id="pipette-id" ), tips_used=update_types.TipsUsedUpdate( diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py index d28cc6db809..4ac96983e3d 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py @@ -72,6 +72,7 @@ def test_sets_initial_state(subject: PipetteStore) -> None: nozzle_configuration_by_id={}, liquid_presence_detection_by_id={}, ready_to_aspirate_by_id={}, + has_clean_tips_by_id={}, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py b/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py index ca2da58794a..c9e180c3535 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py @@ -88,6 +88,7 @@ def get_pipette_view( pipette_contents_by_id: Optional[ Dict[str, Optional[fluid_stack.FluidStack]] ] = None, + has_clean_tips_by_id: Optional[Dict[str, bool]] = None, ) -> PipetteView: """Get a pipette view test subject with the specified state.""" state = PipetteState( @@ -102,6 +103,7 @@ def get_pipette_view( nozzle_configuration_by_id=nozzle_layout_by_id or {}, liquid_presence_detection_by_id=liquid_presence_detection_by_id or {}, ready_to_aspirate_by_id=ready_to_aspirate_by_id or {}, + has_clean_tips_by_id=has_clean_tips_by_id or {}, ) return PipetteView(state=state) From 14ba7b8cfa15acb6704d6aa139a50be085400a9c Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Tue, 18 Mar 2025 13:50:24 -0400 Subject: [PATCH 4/6] add a new test --- .../protocol_api/test_instrument_context.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 75936af6f89..c9c82046113 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -1673,6 +1673,65 @@ def test_mix_with_lpd( ) +@pytest.mark.ot3_only +@pytest.mark.parametrize("clean,expected", [(True, 1), (False, 0)]) +def test_aspirate_with_lpd( + decoy: Decoy, + mock_instrument_core: InstrumentCore, + subject: InstrumentContext, + mock_protocol_core: ProtocolCore, + clean: bool, + expected: int, +) -> None: + """It should aspirate/dispense to a well several times and do 1 lpd.""" + mock_well = decoy.mock(cls=Well) + bottom_location = Location(point=Point(1, 2, 3), labware=mock_well) + top_location = Location(point=Point(3, 2, 1), labware=None) + input_location = Location(point=Point(2, 2, 2), labware=None) + last_location = Location(point=Point(9, 9, 9), labware=None) + + decoy.when(mock_protocol_core.get_last_location(Mount.LEFT)).then_return( + last_location + ) + decoy.when( + mock_validation.validate_location( + location=input_location, last_location=last_location + ) + ).then_return(WellTarget(well=mock_well, location=None, in_place=False)) + decoy.when( + mock_validation.validate_location(location=None, last_location=last_location) + ).then_return(WellTarget(well=mock_well, location=None, in_place=False)) + decoy.when(mock_well.bottom(z=1.0)).then_return(bottom_location) + decoy.when(mock_well.top()).then_return(top_location) + decoy.when(mock_instrument_core.get_aspirate_flow_rate(1.23)).then_return(5.67) + decoy.when(mock_instrument_core.get_dispense_flow_rate(1.23)).then_return(5.67) + decoy.when(mock_instrument_core.has_tip()).then_return(True) + decoy.when(mock_instrument_core.get_has_clean_tip()).then_return(clean) + decoy.when(mock_instrument_core.get_current_volume()).then_return(0.0) + decoy.when(mock_instrument_core.nozzle_configuration_valid_for_lld()).then_return( + True + ) + + subject.liquid_presence_detection = True + subject.aspirate(volume=10.0, location=input_location, rate=1.23) + decoy.verify( + mock_instrument_core.aspirate( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + ), + times=1, + ) + decoy.verify( + mock_instrument_core.liquid_probe_with_recovery(mock_well._core, top_location), + times=expected, + ) + + @pytest.mark.parametrize( "api_version", versions_between( From 6dd7bd356b48442a1bf2b09805aa0ee2948342d1 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Wed, 19 Mar 2025 14:10:40 -0400 Subject: [PATCH 5/6] make 'clean' a part of empty fluid instead of it's own fluid --- .../protocol_engine/commands/pick_up_tip.py | 4 ++-- .../protocol_engine/state/pipettes.py | 21 +++++++------------ .../protocol_engine/state/update_types.py | 21 +++---------------- .../protocol_engine/commands/test_blow_out.py | 2 +- .../commands/test_blow_out_in_place.py | 2 +- .../commands/test_pick_up_tip.py | 8 +++---- .../commands/test_prepare_to_aspirate.py | 3 ++- .../unsafe/test_unsafe_blow_out_in_place.py | 2 +- .../state/test_pipette_store_old.py | 16 +++++++------- 9 files changed, 29 insertions(+), 50 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py index debee215e94..0d35312364a 100644 --- a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py +++ b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py @@ -150,7 +150,7 @@ async def execute( pipette_id=pipette_id, tip_geometry=e.tip_geometry, ) - .set_fluid_clean(pipette_id=pipette_id) + .set_fluid_empty(pipette_id=pipette_id, clean_tip=True) .mark_tips_as_used( pipette_id=pipette_id, labware_id=labware_id, well_name=well_name ) @@ -188,7 +188,7 @@ async def execute( .mark_tips_as_used( pipette_id=pipette_id, labware_id=labware_id, well_name=well_name ) - .set_fluid_clean(pipette_id=pipette_id) + .set_fluid_empty(pipette_id=pipette_id, clean_tip=True) .set_pipette_ready_to_aspirate( pipette_id=pipette_id, ready_to_aspirate=True ) diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index e619c661e48..518753f822e 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -11,7 +11,6 @@ Optional, Tuple, cast, - Union, ) from typing_extensions import assert_never @@ -333,11 +332,11 @@ def _update_ready_for_aspirate( def _update_volumes(self, state_update: update_types.StateUpdate) -> None: if state_update.pipette_aspirated_fluid == update_types.NO_CHANGE: return - # if this is updating to anything but clean mark the tip as unclean - if state_update.pipette_aspirated_fluid.type != "clean": - self._state.has_clean_tips_by_id[ - state_update.pipette_aspirated_fluid.pipette_id - ] = False + # set the tip state to unclean, if an "empty" update has a clean_tip flag + # it will set it to true + self._state.has_clean_tips_by_id[ + state_update.pipette_aspirated_fluid.pipette_id + ] = False if state_update.pipette_aspirated_fluid.type == "aspirated": self._update_aspirated(state_update.pipette_aspirated_fluid) @@ -345,8 +344,6 @@ def _update_volumes(self, state_update: update_types.StateUpdate) -> None: self._update_ejected(state_update.pipette_aspirated_fluid) elif state_update.pipette_aspirated_fluid.type == "empty": self._update_empty(state_update.pipette_aspirated_fluid) - elif state_update.pipette_aspirated_fluid.type == "clean": - self._update_empty(state_update.pipette_aspirated_fluid) elif state_update.pipette_aspirated_fluid.type == "unknown": self._update_unknown(state_update.pipette_aspirated_fluid) else: @@ -365,13 +362,9 @@ def _update_aspirated( def _update_ejected(self, update: update_types.PipetteEjectedFluidUpdate) -> None: self._fluid_stack_log_if_empty(update.pipette_id).remove_fluid(update.volume) - def _update_empty( - self, - update: Union[ - update_types.PipetteEmptyFluidUpdate, update_types.PipetteCleanFluidUpdate - ], - ) -> None: + def _update_empty(self, update: update_types.PipetteEmptyFluidUpdate) -> None: self._state.pipette_contents_by_id[update.pipette_id] = fluid_stack.FluidStack() + self._state.has_clean_tips_by_id[update.pipette_id] = update.clean_tip def _update_unknown(self, update: update_types.PipetteUnknownFluidUpdate) -> None: self._state.pipette_contents_by_id[update.pipette_id] = None diff --git a/api/src/opentrons/protocol_engine/state/update_types.py b/api/src/opentrons/protocol_engine/state/update_types.py index 1eddbf7bfa1..0457952f169 100644 --- a/api/src/opentrons/protocol_engine/state/update_types.py +++ b/api/src/opentrons/protocol_engine/state/update_types.py @@ -323,17 +323,10 @@ class PipetteEmptyFluidUpdate: """Sets the pipette to be valid and empty.""" pipette_id: str + clean_tip: bool type: typing.Literal["empty"] = "empty" -@dataclasses.dataclass -class PipetteCleanFluidUpdate: - """Sets the pipette to be valid and empty and clean.""" - - pipette_id: str - type: typing.Literal["clean"] = "clean" - - @dataclasses.dataclass class AbsorbanceReaderLidUpdate: """An update to an absorbance reader's lid location.""" @@ -441,7 +434,6 @@ class StateUpdate: | PipetteEjectedFluidUpdate | PipetteUnknownFluidUpdate | PipetteEmptyFluidUpdate - | PipetteCleanFluidUpdate | NoChangeType ) = NO_CHANGE @@ -785,17 +777,10 @@ def set_fluid_unknown(self: Self, pipette_id: str) -> Self: ) return self - def set_fluid_empty(self: Self, pipette_id: str) -> Self: + def set_fluid_empty(self: Self, pipette_id: str, clean_tip: bool = False) -> Self: """Update record of fluid held inside a pipette. See `PipetteEmptyFluidUpdate`.""" self.pipette_aspirated_fluid = PipetteEmptyFluidUpdate( - type="empty", pipette_id=pipette_id - ) - return self - - def set_fluid_clean(self: Self, pipette_id: str) -> Self: - """Update record of fluid held inside a pipette and mark tip as clean. See `PipetteEmptyFluidUpdate`.""" - self.pipette_aspirated_fluid = PipetteCleanFluidUpdate( - type="clean", pipette_id=pipette_id + type="empty", pipette_id=pipette_id, clean_tip=clean_tip ) return self diff --git a/api/tests/opentrons/protocol_engine/commands/test_blow_out.py b/api/tests/opentrons/protocol_engine/commands/test_blow_out.py index 408ca799141..5bef84d830f 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_blow_out.py +++ b/api/tests/opentrons/protocol_engine/commands/test_blow_out.py @@ -97,7 +97,7 @@ async def test_blow_out_implementation( new_deck_point=DeckPoint(x=1, y=2, z=3), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=False ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( pipette_id="pipette-id", ready_to_aspirate=False diff --git a/api/tests/opentrons/protocol_engine/commands/test_blow_out_in_place.py b/api/tests/opentrons/protocol_engine/commands/test_blow_out_in_place.py index 4dd496bd174..8d8908fadb1 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_blow_out_in_place.py +++ b/api/tests/opentrons/protocol_engine/commands/test_blow_out_in_place.py @@ -61,7 +61,7 @@ async def test_blow_out_in_place_implementation( public=BlowOutInPlaceResult(), state_update=update_types.StateUpdate( pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=False ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( pipette_id="pipette-id", ready_to_aspirate=False diff --git a/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py b/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py index a4f9c32bfe8..1c33e023069 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py +++ b/api/tests/opentrons/protocol_engine/commands/test_pick_up_tip.py @@ -107,8 +107,8 @@ async def test_success( tips_used=update_types.TipsUsedUpdate( pipette_id="pipette-id", labware_id="labware-id", well_name="A3" ), - pipette_aspirated_fluid=update_types.PipetteCleanFluidUpdate( - pipette_id="pipette-id" + pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( + pipette_id="pipette-id", clean_tip=True ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( pipette_id="pipette-id", ready_to_aspirate=True @@ -192,8 +192,8 @@ async def test_tip_physically_missing_error( pipette_tip_state=update_types.PipetteTipStateUpdate( pipette_id="pipette-id", tip_geometry=sentinel.tip_geometry ), - pipette_aspirated_fluid=update_types.PipetteCleanFluidUpdate( - pipette_id="pipette-id" + pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( + pipette_id="pipette-id", clean_tip=True ), tips_used=update_types.TipsUsedUpdate( pipette_id="pipette-id", labware_id="labware-id", well_name="well-name" diff --git a/api/tests/opentrons/protocol_engine/commands/test_prepare_to_aspirate.py b/api/tests/opentrons/protocol_engine/commands/test_prepare_to_aspirate.py index 1bff4797a9c..a113d2670fa 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_prepare_to_aspirate.py +++ b/api/tests/opentrons/protocol_engine/commands/test_prepare_to_aspirate.py @@ -53,7 +53,8 @@ async def test_prepare_to_aspirate_implementation( public=PrepareToAspirateResult(), state_update=update_types.StateUpdate( pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="some id" + pipette_id="some id", + clean_tip=False, ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( pipette_id="some id", ready_to_aspirate=True diff --git a/api/tests/opentrons/protocol_engine/commands/unsafe/test_unsafe_blow_out_in_place.py b/api/tests/opentrons/protocol_engine/commands/unsafe/test_unsafe_blow_out_in_place.py index c142235c529..6d51cda6425 100644 --- a/api/tests/opentrons/protocol_engine/commands/unsafe/test_unsafe_blow_out_in_place.py +++ b/api/tests/opentrons/protocol_engine/commands/unsafe/test_unsafe_blow_out_in_place.py @@ -46,7 +46,7 @@ async def test_blow_out_in_place_implementation( public=UnsafeBlowOutInPlaceResult(), state_update=update_types.StateUpdate( pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=False ), ready_to_aspirate=update_types.PipetteAspirateReadyUpdate( pipette_id="pipette-id", ready_to_aspirate=False diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py index 4ac96983e3d..96839c4780e 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py @@ -282,7 +282,7 @@ def test_handles_pick_up_and_drop_tip(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=42, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="abc" + pipette_id="abc", clean_tip=True ), ), ) @@ -338,7 +338,7 @@ def test_handles_drop_tip_in_place(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=42, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="xyz" + pipette_id="xyz", clean_tip=False ), ), ) @@ -393,7 +393,7 @@ def test_handles_unsafe_drop_tip_in_place(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=42, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="xyz" + pipette_id="xyz", clean_tip=False ), ), ) @@ -455,7 +455,7 @@ def test_aspirate_adds_volume(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=42, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=True ), ), ) @@ -512,7 +512,7 @@ def test_dispense_subtracts_volume(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=47, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=True ), ), ) @@ -569,7 +569,7 @@ def test_blow_out_clears_volume(subject: PipetteStore) -> None: tip_geometry=TipGeometry(volume=47, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=True ), ), ) @@ -739,7 +739,7 @@ def test_prepare_to_aspirate_marks_pipette_ready( tip_geometry=TipGeometry(volume=42, length=101, diameter=8.0), ), pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="xyz" + pipette_id="xyz", clean_tip=True ), ), ) @@ -754,7 +754,7 @@ def test_prepare_to_aspirate_marks_pipette_ready( command=dummy_command, state_update=update_types.StateUpdate( pipette_aspirated_fluid=update_types.PipetteEmptyFluidUpdate( - pipette_id="pipette-id" + pipette_id="pipette-id", clean_tip=False ) ), ) From 2b07daaaeeeaea7ceb7b351ad1d08e37e3bec1d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:32:37 -0400 Subject: [PATCH 6/6] fix(analyses-snapshot-testing): heal EXEC-781-only-auto-probe-with-clean-tips snapshots (#17840) This PR was requested on the PR https://github.com/Opentrons/opentrons/pull/17808 Co-authored-by: sfoster1 <3091648+sfoster1@users.noreply.github.com> --- ...2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 530 ++++++------------ ...hot[d2c818bf00][Flex_S_v2_20_P50_LPD].json | 84 +-- 2 files changed, 195 insertions(+), 419 deletions(-) diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index b37b45fdeed..a9efbd27b38 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2b866b03f3][Flex_S_v2_21_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -11456,44 +11456,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "37521a0b1c1a673a476797b337d89d16", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 227.88, - "y": 42.74, - "z": 46.4 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b30428396a416e3d22093cf4c773b47c", + "key": "8d5dc9ceb669175108f93b821f403727", "notes": [], "params": { "flowRate": 160.0, @@ -11527,7 +11495,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "49d59ded6092111efa96d0567bad1a49", + "key": "43d8169498a5f84816bca477531e1564", "notes": [], "params": { "flowRate": 160.0, @@ -11561,7 +11529,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e77f6719b8f3419aa0b9f02fc60b9aa9", + "key": "d0bb321d0f9eb1152108758ed66c154e", "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", @@ -11589,7 +11557,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "478e3582f4eb2ed128a5daca61a4e9b6", + "key": "e31f19cc912391a5710262df31fd9eba", "notes": [], "params": { "pipetteId": "UUID" @@ -11603,7 +11571,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d117b92df9213935f80289757890dfb1", + "key": "3cacbc774e59f4ff6b36864a69fcbd9c", "notes": [], "params": { "message": "Tip rack in C3" @@ -11617,7 +11585,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a08648d6082ed9ac8f0bbd06ad286f1a", + "key": "f79a8ab85161e3ce2107ff94c1eab479", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 🟢 A4 🟢 A5 🟢 A6 🟢 A7 🟢 A8 🟢 A9 🟢 A10 🟢 A11 🟢 A12 🟢 " @@ -11631,7 +11599,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "786e445d77fb813503843582c1e0e240", + "key": "504a1d8f15780690909de2dd3cd50287", "notes": [], "params": { "message": "B: B1 ❌ B2 🟢 B3 🟢 B4 🟢 B5 🟢 B6 🟢 B7 🟢 B8 🟢 B9 🟢 B10 🟢 B11 🟢 B12 🟢 " @@ -11645,7 +11613,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5925cf7a20814afaf40e53aa8ae06558", + "key": "46a080967cf0fc3763e735da4fbd0431", "notes": [], "params": { "message": "C: C1 ❌ C2 🟢 C3 🟢 C4 🟢 C5 🟢 C6 🟢 C7 🟢 C8 🟢 C9 🟢 C10 🟢 C11 🟢 C12 🟢 " @@ -11659,7 +11627,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "6db826519588f9431bb3af0e3fa706c9", + "key": "a3e9dc3c7d4efaf31a158736f3276ad9", "notes": [], "params": { "message": "D: D1 ❌ D2 🟢 D3 🟢 D4 🟢 D5 🟢 D6 🟢 D7 🟢 D8 🟢 D9 🟢 D10 🟢 D11 🟢 D12 🟢 " @@ -11673,7 +11641,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "8ebd61bc9e0a48c2ede74a548db4a60c", + "key": "77798a2b6360245a0e2e6bed8ec1cc85", "notes": [], "params": { "message": "E: E1 ❌ E2 🟢 E3 🟢 E4 🟢 E5 🟢 E6 🟢 E7 🟢 E8 🟢 E9 🟢 E10 🟢 E11 🟢 E12 🟢 " @@ -11687,7 +11655,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9f42eca386eaaf3630878c24096682fc", + "key": "af4ea1bed36ac334a59e3b614e50d65c", "notes": [], "params": { "message": "F: F1 ❌ F2 🟢 F3 🟢 F4 🟢 F5 🟢 F6 🟢 F7 🟢 F8 🟢 F9 🟢 F10 🟢 F11 🟢 F12 🟢 " @@ -11701,7 +11669,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1b7a1f8eb4e410f40b730ada3973af21", + "key": "547e59ed2be00862fa6fb66583c0e653", "notes": [], "params": { "message": "G: G1 ❌ G2 🟢 G3 🟢 G4 🟢 G5 🟢 G6 🟢 G7 🟢 G8 🟢 G9 🟢 G10 🟢 G11 🟢 G12 🟢 " @@ -11715,7 +11683,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b80f271858de256646cdf2682ac749bf", + "key": "5546c2f3093864067f04d41eb9f9565c", "notes": [], "params": { "message": "H: H1 ❌ H2 🟢 H3 🟢 H4 🟢 H5 🟢 H6 🟢 H7 🟢 H8 🟢 H9 🟢 H10 🟢 H11 🟢 H12 🟢 " @@ -11729,7 +11697,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "58570b636ea0e4ab4e3dca83d9414cfc", + "key": "90f64a728daf5655cf41da6bb22b8b42", "notes": [], "params": { "labwareId": "UUID", @@ -11780,7 +11748,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d0db82bcc9973012d30c92664d808e18", + "key": "abc9b326efade509679bbc0beec6876e", "notes": [], "params": { "labwareId": "UUID", @@ -11838,7 +11806,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d42132b53600539d7ad1de002cb0e06e", + "key": "0b5bb9a6ba06b569793d629fb952c66e", "notes": [], "params": { "configurationParams": { @@ -11856,7 +11824,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "7666f3511c92bd4c79c2f4796e187c6a", + "key": "925de626f8dcca1ac36fee4f4a52e614", "notes": [], "params": { "labwareId": "UUID", @@ -11889,7 +11857,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e3c9e792dd81698a173ca216c297bf1c", + "key": "df2849ad9cf9192a927a658dc75bb03b", "notes": [], "params": { "labwareId": "UUID", @@ -11921,7 +11889,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c760f293c7e422858709f934985e1a7d", + "key": "aea15650804b971c8859b4d7ca08d4c3", "notes": [], "params": { "flowRate": 160.0, @@ -11955,7 +11923,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9ead8491882088b5d251c946e6338db4", + "key": "745042744c2a3f269fe8cb63a550344d", "notes": [], "params": { "flowRate": 160.0, @@ -11990,7 +11958,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ce9a3b4288bf193a6e190156ac284977", + "key": "a9fa04e3df1637e3273b4508bae66037", "notes": [], "params": { "flowRate": 160.0, @@ -12024,7 +11992,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d9cd2dbdfc0197f336b169f58404a0fa", + "key": "664cba3f5d3d51fc0e69586b5411fcb9", "notes": [], "params": { "flowRate": 160.0, @@ -12059,7 +12027,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "10498510a8ab571cad1b17f8cd0d38a2", + "key": "7e181e5466b619ff5b18345e896207b1", "notes": [], "params": { "flowRate": 160.0, @@ -12093,7 +12061,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "289400847435f9ac40532b1f0d4ddb62", + "key": "236939fc46f2d44ca4dabbe43668721c", "notes": [], "params": { "flowRate": 160.0, @@ -12127,7 +12095,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "0d7d8f0b4cadfbe34a2e63b472ea515a", + "key": "db6c2c6167b21f9d2aa4f22b32e9431f", "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", @@ -12155,7 +12123,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5b98c2c25afe6ed45a9e5f7d53d10913", + "key": "a61fae2f303942f24d09f99577bb2775", "notes": [], "params": { "pipetteId": "UUID" @@ -12169,7 +12137,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f6d9c7f90feafa27f614adc77e3e4a6c", + "key": "5621a72db7aaaf729e2eae75a77f72b1", "notes": [], "params": { "message": "Tip rack in C3" @@ -12183,7 +12151,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "bd26801f990ee766417912053b5d1d85", + "key": "050eefa5b88528504f088fa90295e802", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " @@ -12197,7 +12165,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "6ce49ea6e7d7158920fe3037dd769a82", + "key": "8709f05192291770b5aac3de7b2fc966", "notes": [], "params": { "message": "B: B1 🟢 B2 🟢 B3 🟢 B4 🟢 B5 🟢 B6 🟢 B7 🟢 B8 🟢 B9 🟢 B10 🟢 B11 🟢 B12 🟢 " @@ -12211,7 +12179,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1ea2709eca69d325bac93d5c12b61102", + "key": "c5c51601ce373606e16c3be546311993", "notes": [], "params": { "message": "C: C1 🟢 C2 🟢 C3 🟢 C4 🟢 C5 🟢 C6 🟢 C7 🟢 C8 🟢 C9 🟢 C10 🟢 C11 🟢 C12 🟢 " @@ -12225,7 +12193,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e550f01cf1e380d18ddbcd7856a759a6", + "key": "6823a91f554641a57a58a1f83c5e1629", "notes": [], "params": { "message": "D: D1 🟢 D2 🟢 D3 🟢 D4 🟢 D5 🟢 D6 🟢 D7 🟢 D8 🟢 D9 🟢 D10 🟢 D11 🟢 D12 🟢 " @@ -12239,7 +12207,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ad2af3e14a3d8ffb7814798537726073", + "key": "fed6938ddf633fcb801880a76e1495de", "notes": [], "params": { "message": "E: E1 🟢 E2 🟢 E3 🟢 E4 🟢 E5 🟢 E6 🟢 E7 🟢 E8 🟢 E9 🟢 E10 🟢 E11 🟢 E12 🟢 " @@ -12253,7 +12221,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "32e88a4d628686db346517f72eacb3e9", + "key": "c6868801aa1f0bd9d42be705647dad7a", "notes": [], "params": { "message": "F: F1 🟢 F2 🟢 F3 🟢 F4 🟢 F5 🟢 F6 🟢 F7 🟢 F8 🟢 F9 🟢 F10 🟢 F11 🟢 F12 🟢 " @@ -12267,7 +12235,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "71ae76605b9b3f27159f619b4fd24d77", + "key": "311967e5daa20073d61f1aef65a41ab6", "notes": [], "params": { "message": "G: G1 🟢 G2 🟢 G3 🟢 G4 🟢 G5 🟢 G6 🟢 G7 🟢 G8 🟢 G9 🟢 G10 🟢 G11 🟢 G12 🟢 " @@ -12281,7 +12249,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a829ef01b67f8a6a5657384b811e8670", + "key": "aa42fb995f1522e29b657ca35e544f20", "notes": [], "params": { "message": "H: H1 🟢 H2 🟢 H3 🟢 H4 🟢 H5 🟢 H6 🟢 H7 🟢 H8 🟢 H9 🟢 H10 🟢 H11 🟢 H12 🟢 " @@ -12295,7 +12263,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5365e04fad40b79ec18d0f0ec67be6b4", + "key": "fbfd4b66141011c7d007b69a5c819eec", "notes": [], "params": { "configurationParams": { @@ -12312,7 +12280,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ff11e465f62590cae83e688b10e2223f", + "key": "938807648033b7a2982321adcc4622ea", "notes": [], "params": { "labwareId": "UUID", @@ -12345,7 +12313,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9ad8654c7993d6585b0cbc6476129ff5", + "key": "c995df00dc5fdf4a996335e5492f97ae", "notes": [], "params": { "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" @@ -12359,7 +12327,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "73032c12c503d675d7394d98ebcaed59", + "key": "d5f4067bf60905c2586d989c51bb8f0b", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " @@ -12373,7 +12341,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "8ae1d2605e1a91cc1c318849bfdada67", + "key": "621077160b577dae5fb717d29fefa8ac", "notes": [], "params": { "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " @@ -12387,7 +12355,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "bae058c3acd2294054b74da2c83df5ba", + "key": "1ddfafb84e787c3190e0ca595e0279e9", "notes": [], "params": { "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " @@ -12401,7 +12369,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ef186548c415cad51bd2c1f5a5ca6709", + "key": "f68311a4565ef1ecdc40a42a53737d18", "notes": [], "params": { "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " @@ -12415,7 +12383,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "8654bf1423f4bc950cc979848c1922d5", + "key": "23e3fa68297139a304253751aad93a2f", "notes": [], "params": { "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " @@ -12429,7 +12397,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "fd972ba6efcfa6e2c423e748b769ae09", + "key": "67581534f702b3c535ba6853ad6260c2", "notes": [], "params": { "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " @@ -12443,7 +12411,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "740c240306f144d6eb3f2f37b137ae1f", + "key": "eade61ea299da38b97eb03f24b2e2ac2", "notes": [], "params": { "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " @@ -12457,7 +12425,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ea105a8bc9ec6645a6d993b584bf8369", + "key": "c69e1563811347706bdcca3afba224c4", "notes": [], "params": { "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " @@ -12471,7 +12439,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5a0d372a3eae37ae4898fc29e7f3840e", + "key": "a266d4e8b54098db45744fab736032a4", "notes": [], "params": { "labwareId": "UUID", @@ -12503,7 +12471,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f39e598e806daf765313a303d0d157ee", + "key": "28320c727a5a357e7253d8123b2c75e7", "notes": [], "params": { "flowRate": 160.0, @@ -12537,7 +12505,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f909836a4d4875e5ccfeaa5f6c139666", + "key": "6138aa86eda74258aa8ba7755ff8f925", "notes": [], "params": { "forceDirect": false, @@ -12569,7 +12537,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "92afd096c372098f64a9bfb0873b355b", + "key": "59d463f3f404b8eed690c5f796e1c718", "notes": [], "params": { "flowRate": 160.0, @@ -12603,7 +12571,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ef0781edef6aca01d9879b1a09d9b3f2", + "key": "89dbdc7d58823bb1011310aaf51894f3", "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", @@ -12631,7 +12599,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "af716ae841d9585043867a431d539d55", + "key": "3a1a4e934381e82cf7cf2e0024e9351c", "notes": [], "params": { "flowRate": 80.0, @@ -12646,7 +12614,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "349bb0bf929376ee5a1c92c7882fdacf", + "key": "df51d1db979396b02c3c9ca1390ace20", "notes": [], "params": { "pipetteId": "UUID" @@ -12655,44 +12623,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "66068d631b0410c78ec504b2efd9192f", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 227.88, - "y": 42.74, - "z": 46.4 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "72a351430efa97bacea8b8baa9e67d7a", + "key": "1252de21e35ac5a1ba3632e7cbdc5d40", "notes": [], "params": { "flowRate": 160.0, @@ -12726,7 +12662,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "75759431a0a6325eeaf70f09f1541b2f", + "key": "e05726fa7cb7fe03f8e1860602101ad1", "notes": [], "params": { "forceDirect": false, @@ -12758,7 +12694,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f40963e7ee5296cada36d22981b64865", + "key": "822e4cc17011096182bb39152110de20", "notes": [], "params": { "flowRate": 160.0, @@ -12792,7 +12728,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ca81c96c5e6706521c28eeb429560dbb", + "key": "1a856e688efdf785824b16754de01f4a", "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", @@ -12820,7 +12756,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e1d6d21093014d3715ff4f1e41d64add", + "key": "ff019800aed807f1f500a472c93d1ab2", "notes": [], "params": { "flowRate": 80.0, @@ -12835,7 +12771,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "0947370822b6af57af2a7acabdfb1c4d", + "key": "c8ac2def1f3ecd53215306d6994d5235", "notes": [], "params": { "pipetteId": "UUID" @@ -12844,44 +12780,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "6f32130e79de0fab3b9694367d1df14d", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 227.88, - "y": 42.74, - "z": 46.4 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "375d7aacf8cfb56bd73ae3fe64eda953", + "key": "cbc4966178857a8d871e6cbf8b5e468e", "notes": [], "params": { "flowRate": 160.0, @@ -12915,7 +12819,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "188aead45e3881975f879a62331bf6d9", + "key": "c92fbc7e9ff0b9fb211da4a65c9ca8df", "notes": [], "params": { "flowRate": 160.0, @@ -12944,44 +12848,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "3c58ecc0dd1bb01b8c561c1a5b8efc79", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 178.38, - "y": 181.24, - "z": 18.0 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d953a57ea73562ecbb1bb7c46fa516dc", + "key": "bac9031d809e834a71f220509fe31c87", "notes": [], "params": { "flowRate": 160.0, @@ -13015,7 +12887,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "802a4b04ebd2b303f50dd568f841dc2e", + "key": "b51759601ef014c14fa118847042cfc1", "notes": [], "params": { "flowRate": 160.0, @@ -13050,7 +12922,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ffcef1be9b48b826f0cc646961192d81", + "key": "ee127bb3c8545afb25861c7110c8fd11", "notes": [], "params": { "flowRate": 160.0, @@ -13084,7 +12956,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "4fb4e8b75e18cb95da915141eb49b7d0", + "key": "a624256ba53757b7c7209577733db707", "notes": [], "params": { "flowRate": 160.0, @@ -13119,7 +12991,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1c6fe66b1d9cc8a50c94f2818e9bb0c0", + "key": "ef547b43ba1037869f69fbb2fca9f17f", "notes": [], "params": { "flowRate": 160.0, @@ -13153,7 +13025,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "05998ba40ade9c08ed03d97aebb538e8", + "key": "e137f89081bd8d258ac5725932414634", "notes": [], "params": { "flowRate": 160.0, @@ -13188,7 +13060,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d0e081f09d5e7358497f152498b7ff67", + "key": "f341aac660686dec096f7f4e92a26ad5", "notes": [], "params": { "flowRate": 160.0, @@ -13222,7 +13094,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "39a94f9fe6a63daaaef83ccceee0e661", + "key": "93dc3494cee85810a30e238af9aa900b", "notes": [], "params": { "flowRate": 160.0, @@ -13257,7 +13129,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "60db0e75d04bf60b1dde66ad4346214c", + "key": "281963371731ff764d33b17fbba7645c", "notes": [], "params": { "flowRate": 160.0, @@ -13291,7 +13163,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "54213b7b2f9be52a52f64cf8841a5d83", + "key": "761685013b662cd831b69d0fc7586331", "notes": [], "params": { "flowRate": 160.0, @@ -13325,7 +13197,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "56fe165d9f183c0829edd60e88bf9ada", + "key": "9bc392436a21c11e1b2507c6ac29fed5", "notes": [], "params": { "alternateDropLocation": false, @@ -13357,7 +13229,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9bba35ad84bf2275a6f3298fd03d5187", + "key": "d261de13527d53f3c7a773fc801e1982", "notes": [], "params": { "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" @@ -13371,7 +13243,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "fbe3905bfb62be150cd42317a36f0e8f", + "key": "061ecc5bc44df0010bdbf4fe57a42271", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " @@ -13385,7 +13257,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3cc7f1b0fe6b2a8d90591c32ac0c9cde", + "key": "44fdec1e6f233db04608f6b7d2b5cbc1", "notes": [], "params": { "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " @@ -13399,7 +13271,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a455eac2b6ad82f8c15fd9dda45d8882", + "key": "32e318705d59e3324c514e51e75ae8f5", "notes": [], "params": { "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " @@ -13413,7 +13285,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "2cd8818343ed0e921367bd42ef1112ee", + "key": "09735943834301fed41de59ee122375c", "notes": [], "params": { "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " @@ -13427,7 +13299,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f92b8f56db51db3b60599e7b28445a36", + "key": "24bfe4aed143e6e1706470bc2b8a4088", "notes": [], "params": { "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " @@ -13441,7 +13313,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "44922a596363eb6844146a36fe3ac517", + "key": "66509f6a69c66416c8883f8e5cee4f88", "notes": [], "params": { "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " @@ -13455,7 +13327,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3be4bbcb6d53e5eeffb1afa4e8d3a24a", + "key": "423a7492c4e80b345af381c8064a7b8c", "notes": [], "params": { "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " @@ -13469,7 +13341,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "69ffdab33828b93ec704bdbc413c1737", + "key": "4fdaeaadc515b81c83a9cd5bdace914c", "notes": [], "params": { "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " @@ -13483,7 +13355,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "555305195a9fa7a6e42458e37a2934e3", + "key": "2e939eeef6d3def2cd3b27284a741813", "notes": [], "params": { "labwareId": "UUID", @@ -13516,7 +13388,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "889eee1bbba96644a80db22726b4a69a", + "key": "af100d259047f85c2bf99c23bf288b70", "notes": [], "params": { "labwareId": "UUID", @@ -13548,7 +13420,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f72e9c3d813de4285e722ec87c596154", + "key": "6609221ecdb410074daf02ad724fdd9f", "notes": [], "params": { "flowRate": 160.0, @@ -13582,7 +13454,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ad48da5e9be4a5df85ddcf8d7184d0c8", + "key": "ddfac92e769fbf54a6095d0b0a51beda", "notes": [], "params": { "flowRate": 160.0, @@ -13617,7 +13489,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "fbdf4b8ac2749cb43d260e15c7b5bdc4", + "key": "b094be0c9f92607f7db0446386229bd8", "notes": [], "params": { "flowRate": 160.0, @@ -13651,7 +13523,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "72f42105daee58b1475cf8ecf7a1beb4", + "key": "582c15ef62964aaeb5c7f588431e1e3c", "notes": [], "params": { "flowRate": 160.0, @@ -13686,7 +13558,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b8d9b6e0d7f61b0fbf64506e479cab62", + "key": "fca3f395a93afb9ea92e574368325e96", "notes": [], "params": { "flowRate": 160.0, @@ -13720,7 +13592,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1e09ac145c0efa97283b7cd9f049edf4", + "key": "86eaad0106ca78ceb26f1410c23bf680", "notes": [], "params": { "flowRate": 160.0, @@ -13749,44 +13621,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "8024e861cc4bf515fb9ca70c4ec8a74b", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 227.88, - "y": 42.74, - "z": 46.4 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9166539061095ad42ec58573fc8ebd04", + "key": "53665a76d3ef37c2d172c596cac9a008", "notes": [], "params": { "flowRate": 160.0, @@ -13820,7 +13660,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "2c73b1942409fa2c78c7bae9b7a4fab1", + "key": "2957c5df7f8033a7f04f92e055767e52", "notes": [], "params": { "flowRate": 160.0, @@ -13849,44 +13689,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "78c817792c844a6b3441b1b214f8add9", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A1" - }, - "result": { - "position": { - "x": 178.38, - "y": 181.24, - "z": 18.0 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "02130e935d2b1096c98f46562a5a4940", + "key": "09e0efc929038ff863d0bff72a1cfedd", "notes": [], "params": { "flowRate": 160.0, @@ -13920,7 +13728,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9b374953d929a83ceb00b787065f4749", + "key": "b48c21028fd11097340d8eb41b1e06b2", "notes": [], "params": { "flowRate": 160.0, @@ -13954,7 +13762,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f44c5b4dcf502560454b7c55f86ce207", + "key": "8bd56072fd30b9f133668dae19bd0402", "notes": [], "params": { "labwareId": "UUID", @@ -13987,7 +13795,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "396dbf283e4856e439bf95b1464d6774", + "key": "0f9dd14db62fb6d520a734cf4ac98bdd", "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", @@ -14015,7 +13823,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "6bd9b67b490d5fcb1f6f2a5574813599", + "key": "2618625e0b451293f4d91bb2207e2dd9", "notes": [], "params": { "flowRate": 80.0, @@ -14030,7 +13838,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b12de52c4b99321ce3dd3ebef1ace986", + "key": "f2e446e44b4db957a71aa78f5b55fe17", "notes": [], "params": { "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" @@ -14044,7 +13852,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e05ac7b430c14364b6f2fdf3dc2af27e", + "key": "caacf3e88cc743d64476ffeb147d569f", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " @@ -14058,7 +13866,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3cf4c37d88b549ff7edb749d39b12893", + "key": "19e7470625f7d507633ca30c5c6f22a6", "notes": [], "params": { "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " @@ -14072,7 +13880,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d9d646d906f12bb1c967be93839f7299", + "key": "03d772aa22e9481cb4dab6a23336f71e", "notes": [], "params": { "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " @@ -14086,7 +13894,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "6f55ed54e09f89c01243bb2285cbbf48", + "key": "7b5c1b557791233b713c585eb6d01df7", "notes": [], "params": { "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " @@ -14100,7 +13908,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "19c19a260d4adfa0c89801870fb888af", + "key": "3fd8fcc2e27c37ac2af23d5f9228bee2", "notes": [], "params": { "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " @@ -14114,7 +13922,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3b29221f75f3b684631085f5297945d7", + "key": "6a8eaa506b3654babf0b34af2d2e8bf4", "notes": [], "params": { "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " @@ -14128,7 +13936,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "04a79ca0387a44d148485363d8825314", + "key": "1d1fbd1f0b98b361342764e2d1280a31", "notes": [], "params": { "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " @@ -14142,7 +13950,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "51040551e5ab6544ed7df57e3d31af1c", + "key": "1ebddafcfae8593cd6dfbb36dbdcc926", "notes": [], "params": { "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " @@ -14156,7 +13964,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1237ae4e1a24ca35be4422f0f6ce94dd", + "key": "4ebb85ca661e563cf66ccdb970c2f0d4", "notes": [], "params": { "alternateDropLocation": false, @@ -14189,7 +13997,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "2807c440b5749ca58f964eea2b0173bd", + "key": "9426dcbd62cd698d133d0a4a4c20922c", "notes": [], "params": { "message": "Tip rack in Opentrons Flex 96 Tip Rack Adapter" @@ -14203,7 +14011,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "49a6a126b3f1bd562b481b1ed0aa2076", + "key": "eec490509315bfb50e077ad5db4c0efa", "notes": [], "params": { "message": "A: A1 ❌ A2 ❌ A3 ❌ A4 ❌ A5 ❌ A6 ❌ A7 ❌ A8 ❌ A9 ❌ A10 ❌ A11 ❌ A12 ❌ " @@ -14217,7 +14025,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b28eaed62162a6cba37b2b2adbce3da7", + "key": "03bce4573c65967efd6a590864c83c1b", "notes": [], "params": { "message": "B: B1 ❌ B2 ❌ B3 ❌ B4 ❌ B5 ❌ B6 ❌ B7 ❌ B8 ❌ B9 ❌ B10 ❌ B11 ❌ B12 ❌ " @@ -14231,7 +14039,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c23e5efd595af9bd86091d2d55ce4b9a", + "key": "10da2498e42e44f9a826beb480709144", "notes": [], "params": { "message": "C: C1 ❌ C2 ❌ C3 ❌ C4 ❌ C5 ❌ C6 ❌ C7 ❌ C8 ❌ C9 ❌ C10 ❌ C11 ❌ C12 ❌ " @@ -14245,7 +14053,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "07b2576296bc2809caf537d7f7b23e32", + "key": "72090e9fd4e2796898b6ff98183bcc53", "notes": [], "params": { "message": "D: D1 ❌ D2 ❌ D3 ❌ D4 ❌ D5 ❌ D6 ❌ D7 ❌ D8 ❌ D9 ❌ D10 ❌ D11 ❌ D12 ❌ " @@ -14259,7 +14067,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "bf247b006b5c8ef36385e4ec56c417c3", + "key": "9847a626d986b0b0f24be462998f184e", "notes": [], "params": { "message": "E: E1 ❌ E2 ❌ E3 ❌ E4 ❌ E5 ❌ E6 ❌ E7 ❌ E8 ❌ E9 ❌ E10 ❌ E11 ❌ E12 ❌ " @@ -14273,7 +14081,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "7792788aff047a2c81f5326af7d60612", + "key": "f434a3e6906aa41fbd2b379a1e02e856", "notes": [], "params": { "message": "F: F1 ❌ F2 ❌ F3 ❌ F4 ❌ F5 ❌ F6 ❌ F7 ❌ F8 ❌ F9 ❌ F10 ❌ F11 ❌ F12 ❌ " @@ -14287,7 +14095,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c924c03e02674de3e6cb386a3f2a3dd2", + "key": "5c83594bfbb74d88013c4f8327fbd9dd", "notes": [], "params": { "message": "G: G1 ❌ G2 ❌ G3 ❌ G4 ❌ G5 ❌ G6 ❌ G7 ❌ G8 ❌ G9 ❌ G10 ❌ G11 ❌ G12 ❌ " @@ -14301,7 +14109,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1d51c2a28f6474ff8e1869e842e280ef", + "key": "e5de4309aafb89a91f5920f6b3c761e4", "notes": [], "params": { "message": "H: H1 ❌ H2 ❌ H3 ❌ H4 ❌ H5 ❌ H6 ❌ H7 ❌ H8 ❌ H9 ❌ H10 ❌ H11 ❌ H12 ❌ " @@ -14315,7 +14123,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5f76720ac31bec344907102b24db2587", + "key": "a451c97528613833b6410f88af7530ec", "notes": [], "params": { "message": "I think the above should not be empty?" @@ -14329,7 +14137,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f8aa7b28aea0b80b4fa83831e80ab7c0", + "key": "a9e5150f3d1fb87d33936b7d38cd53f8", "notes": [], "params": { "labwareId": "UUID", @@ -14395,7 +14203,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ecca018448f3be0be1d42df4abe64d29", + "key": "825116e020c9f193844ff0e34dfd2926", "notes": [], "params": { "labwareId": "UUID", @@ -14490,7 +14298,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "0b8b0a843658fab0070a14b29383d4b6", + "key": "07602591cf307f8396f0d7739a4b6628", "notes": [], "params": { "moduleId": "UUID" @@ -14504,7 +14312,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5d5f3d5b64948ce5d0442c949b58580d", + "key": "79bfa16d2cd4a392ca4edcd70f36499f", "notes": [], "params": { "celsius": 38.0, @@ -14522,7 +14330,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "55f7eea09ff71c6b93b52d15f9b778ba", + "key": "38abc67ca848dce21580fcb2a4c91a4a", "notes": [], "params": { "moduleId": "UUID" @@ -14536,7 +14344,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "bd916b6b732fbfe8e2151cdf842d4d77", + "key": "cdbdfdb23c503134e067a4027082fa1d", "notes": [], "params": { "celsius": 38.0, @@ -14553,7 +14361,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "61c47242119c089e39c2970fbb9c5a87", + "key": "2723cde615c6e0734ade8f275e779fe0", "notes": [], "params": { "moduleId": "UUID" @@ -14567,7 +14375,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "26d710513eb567d25ec6c7564178f2f6", + "key": "f408af8544c27e73dad57b2c82111dd9", "notes": [], "params": { "moduleId": "UUID" @@ -14581,7 +14389,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "328cffb6ec92cddfdf9b793822084af8", + "key": "7be936ae8289a4ce569f91a548f7364f", "notes": [], "params": { "labwareId": "UUID", @@ -14641,7 +14449,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a644d2f8960bb1f9ea36838d49796e86", + "key": "93d55882e8dc2ee82e04632fcad24bdf", "notes": [], "params": { "moduleId": "UUID" @@ -14655,7 +14463,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "04bc1e2c660b9a49ff9b4ae75b2a7530", + "key": "9ed4f76ebc9695a9d035855b36115a22", "notes": [], "params": { "moduleId": "UUID" @@ -14669,7 +14477,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a2c406012e8e618eba18668129dc7210", + "key": "9ae6574f7724b6253706f93b1e00fb13", "notes": [], "params": { "moduleId": "UUID" @@ -14685,7 +14493,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "7e902c9531e52458c9c1e86eb4fb3bb6", + "key": "bf034101c050142f107e4707febd354b", "notes": [], "params": { "labwareId": "UUID", @@ -14763,7 +14571,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "76e684c73a4874bf4e8c3c80ee466258", + "key": "e30e2dece987637c21648ba6d85b0cdf", "notes": [], "params": { "moduleId": "UUID" @@ -14777,7 +14585,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "788cd6378d690bb4cb1a55713b109ff4", + "key": "69a2a8602c1660ef08a2f2ba92b2ad20", "notes": [], "params": { "celsius": 38.0, @@ -14792,7 +14600,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "866729c2f032edcbb976943d6afed1b8", + "key": "152eedca888a97121f36a3c46ef2a371", "notes": [], "params": { "moduleId": "UUID", @@ -14809,7 +14617,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "12e4febccf2785fec55a7cea18901c34", + "key": "b9d6c7022e3942a17551b1b839998506", "notes": [], "params": { "moduleId": "UUID" @@ -14823,7 +14631,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "91146a40c4e7497a9d69be9920689507", + "key": "21c180ae2288a0ab0d3de167688806e0", "notes": [], "params": { "moduleId": "UUID" @@ -14837,7 +14645,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "511c2d31b524be9c8c36fba36edf17b6", + "key": "e039843ed7ad670c188214c760c53f2e", "notes": [], "params": { "moduleId": "UUID" @@ -14851,7 +14659,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "77b87b86baa82a0bdbbee3674ae3778f", + "key": "1f256b95b5a787511f076c129885363c", "notes": [], "params": { "moduleId": "UUID" @@ -14867,7 +14675,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "dc518febf332036503375d529f643de2", + "key": "91c9f46b7646567f1fb944124f297ca8", "notes": [], "params": { "labwareId": "UUID", @@ -14949,7 +14757,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "452014b616f7c44e48ae0e0d8ba04d4d", + "key": "9d275ff542b16ab2bb87784916bab630", "notes": [], "params": { "celsius": 38.0, @@ -14966,7 +14774,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "4e0d56666b7e4686daedba5eaa6e3bd3", + "key": "15165e83e748536f4285d9854e493f7a", "notes": [], "params": { "moduleId": "UUID" @@ -14980,7 +14788,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c6b71690c162eb1d471add58f20491fe", + "key": "a913a5fc591976f20b260a69eca2e5d2", "notes": [], "params": { "moduleId": "UUID" @@ -14994,7 +14802,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a9659e82d69a0cb7cb289ca5787195e9", + "key": "94b7690362cd09648a30901a9662e855", "notes": [], "params": { "labwareId": "UUID", @@ -15068,7 +14876,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "365ab2acd2036e30c2b4ba4422301d5f", + "key": "a7f24faca51c9fec8ad352b303567090", "notes": [], "params": { "moduleId": "UUID" @@ -15082,7 +14890,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a80b3f4b976053ae6453bc8505b218ce", + "key": "16680d14e68fb37857861b36030d406c", "notes": [], "params": { "fileName": "smoke_APR_data.csv", @@ -15201,7 +15009,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "05cfadac7c9a474a7bafe928aee58bf6", + "key": "1cd3d8461c2f207df3301d15fc53a704", "notes": [], "params": { "message": "single: {600: {'A1': 0.0, 'A2': 0.0, 'A3': 0.0, 'A4': 0.0, 'A5': 0.0, 'A6': 0.0, 'A7': 0.0, 'A8': 0.0, 'A9': 0.0, 'A10': 0.0, 'A11': 0.0, 'A12': 0.0, 'B1': 0.0, 'B2': 0.0, 'B3': 0.0, 'B4': 0.0, 'B5': 0.0, 'B6': 0.0, 'B7': 0.0, 'B8': 0.0, 'B9': 0.0, 'B10': 0.0, 'B11': 0.0, 'B12': 0.0, 'C1': 0.0, 'C2': 0.0, 'C3': 0.0, 'C4': 0.0, 'C5': 0.0, 'C6': 0.0, 'C7': 0.0, 'C8': 0.0, 'C9': 0.0, 'C10': 0.0, 'C11': 0.0, 'C12': 0.0, 'D1': 0.0, 'D2': 0.0, 'D3': 0.0, 'D4': 0.0, 'D5': 0.0, 'D6': 0.0, 'D7': 0.0, 'D8': 0.0, 'D9': 0.0, 'D10': 0.0, 'D11': 0.0, 'D12': 0.0, 'E1': 0.0, 'E2': 0.0, 'E3': 0.0, 'E4': 0.0, 'E5': 0.0, 'E6': 0.0, 'E7': 0.0, 'E8': 0.0, 'E9': 0.0, 'E10': 0.0, 'E11': 0.0, 'E12': 0.0, 'F1': 0.0, 'F2': 0.0, 'F3': 0.0, 'F4': 0.0, 'F5': 0.0, 'F6': 0.0, 'F7': 0.0, 'F8': 0.0, 'F9': 0.0, 'F10': 0.0, 'F11': 0.0, 'F12': 0.0, 'G1': 0.0, 'G2': 0.0, 'G3': 0.0, 'G4': 0.0, 'G5': 0.0, 'G6': 0.0, 'G7': 0.0, 'G8': 0.0, 'G9': 0.0, 'G10': 0.0, 'G11': 0.0, 'G12': 0.0, 'H1': 0.0, 'H2': 0.0, 'H3': 0.0, 'H4': 0.0, 'H5': 0.0, 'H6': 0.0, 'H7': 0.0, 'H8': 0.0, 'H9': 0.0, 'H10': 0.0, 'H11': 0.0, 'H12': 0.0}}" @@ -15215,7 +15023,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b042e24dd46699520cdedd3f0201ca91", + "key": "a89b363a404d46dea229575ec6e858e3", "notes": [], "params": { "message": "single: {600: {'A1': 0.0, 'A2': 0.0, 'A3': 0.0, 'A4': 0.0, 'A5': 0.0, 'A6': 0.0, 'A7': 0.0, 'A8': 0.0, 'A9': 0.0, 'A10': 0.0, 'A11': 0.0, 'A12': 0.0, 'B1': 0.0, 'B2': 0.0, 'B3': 0.0, 'B4': 0.0, 'B5': 0.0, 'B6': 0.0, 'B7': 0.0, 'B8': 0.0, 'B9': 0.0, 'B10': 0.0, 'B11': 0.0, 'B12': 0.0, 'C1': 0.0, 'C2': 0.0, 'C3': 0.0, 'C4': 0.0, 'C5': 0.0, 'C6': 0.0, 'C7': 0.0, 'C8': 0.0, 'C9': 0.0, 'C10': 0.0, 'C11': 0.0, 'C12': 0.0, 'D1': 0.0, 'D2': 0.0, 'D3': 0.0, 'D4': 0.0, 'D5': 0.0, 'D6': 0.0, 'D7': 0.0, 'D8': 0.0, 'D9': 0.0, 'D10': 0.0, 'D11': 0.0, 'D12': 0.0, 'E1': 0.0, 'E2': 0.0, 'E3': 0.0, 'E4': 0.0, 'E5': 0.0, 'E6': 0.0, 'E7': 0.0, 'E8': 0.0, 'E9': 0.0, 'E10': 0.0, 'E11': 0.0, 'E12': 0.0, 'F1': 0.0, 'F2': 0.0, 'F3': 0.0, 'F4': 0.0, 'F5': 0.0, 'F6': 0.0, 'F7': 0.0, 'F8': 0.0, 'F9': 0.0, 'F10': 0.0, 'F11': 0.0, 'F12': 0.0, 'G1': 0.0, 'G2': 0.0, 'G3': 0.0, 'G4': 0.0, 'G5': 0.0, 'G6': 0.0, 'G7': 0.0, 'G8': 0.0, 'G9': 0.0, 'G10': 0.0, 'G11': 0.0, 'G12': 0.0, 'H1': 0.0, 'H2': 0.0, 'H3': 0.0, 'H4': 0.0, 'H5': 0.0, 'H6': 0.0, 'H7': 0.0, 'H8': 0.0, 'H9': 0.0, 'H10': 0.0, 'H11': 0.0, 'H12': 0.0}}" @@ -15229,7 +15037,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "09edafc3bb1819d89e21f50c773a8b1b", + "key": "e7d18ca6b1a3903ad9ec60161f9fb8ba", "notes": [], "params": { "moduleId": "UUID" @@ -15243,7 +15051,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "055de5adcc2476b33f12d303e2f7cd33", + "key": "52730941aa839dfa28418c7b5b4f24b5", "notes": [], "params": { "labwareId": "UUID", @@ -15305,7 +15113,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "55fb67ef834deb180669717bbf9bcd08", + "key": "ea78e104df91152ad14143bb67e98bd7", "notes": [], "params": { "labwareId": "UUID", @@ -15347,7 +15155,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1c42b3e678be0b97d217eda3ba27d0ff", + "key": "93b54213d765ba3b83a1d34fd27c2161", "notes": [], "params": { "labwareId": "UUID", @@ -15380,7 +15188,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "7a9ace3c6ffc32e339e9199029c6e542", + "key": "14370ac4ec3eef47f51e253380335b4e", "notes": [], "params": { "forceDirect": false, @@ -15412,7 +15220,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "084b51ab7765e9610bb25aad3c5b1420", + "key": "a431ade7442c4b1be1fda0ea5191ceba", "notes": [], "params": { "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be at the LPC calibrated height." @@ -15426,7 +15234,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "2df58176bd8560ade9f37f43564db735", + "key": "5003a25f60bb352e910adef1098587fa", "notes": [], "params": { "labwareId": "UUID" @@ -15456,7 +15264,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "bded418ba653fcd22e912654c04201ce", + "key": "348a8acd40e73b2723a0ca8b09a2e7f5", "notes": [], "params": { "forceDirect": false, @@ -15488,7 +15296,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d24f2277648c132f7aa5610e8afd4a16", + "key": "982a94fd7303e66aa6259b6eb805e808", "notes": [], "params": { "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." @@ -15502,7 +15310,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "77f86a46915f1f1983f21b7554d629a3", + "key": "acb7feb8e883d58e6bd169f14da2ca06", "notes": [], "params": { "labwareId": "UUID", @@ -15560,7 +15368,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b95e1bdd513812eb0f58b6b868ff95ff", + "key": "d06fd1079071892d4f896f9daa10ff89", "notes": [], "params": { "forceDirect": false, @@ -15592,7 +15400,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1fd12fd0b35e829620c353dfa08361b7", + "key": "424db1d1c50dbde8014cd2ef2238ded6", "notes": [], "params": { "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be at the LPC calibrated height." @@ -15606,7 +15414,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "4b3b80805d46a3dda0c85c4bd3ac65f7", + "key": "8d6373ee9287e77e4b6719910cb8228d", "notes": [], "params": { "labwareId": "UUID" @@ -15636,7 +15444,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "9283a054c84e7ebfbcafa37fb521bcbb", + "key": "43e853d8b631492d257678cefe8026dd", "notes": [], "params": { "forceDirect": false, @@ -15668,7 +15476,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "8091e40fd9cd4ee7383042b2d7c05138", + "key": "d0a7deeda4ca5e597a812635602650a2", "notes": [], "params": { "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot D2? It should be 10mm higher than the LPC calibrated height." @@ -15682,7 +15490,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3f56958b0a32d667ef60cd9d31c04fd3", + "key": "66d67195eeaae2f0a92958350b3fb939", "notes": [], "params": { "labwareId": "UUID", @@ -15741,7 +15549,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "853869a39e88a9d5a4d957d55ba28677", + "key": "7a606d5788955882027e428a14aaeb1e", "notes": [], "params": { "forceDirect": false, @@ -15773,7 +15581,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "704a3d359b6a341879d4c2a6bee6e5d9", + "key": "781168bd5a7e02b46a55f37231802add", "notes": [], "params": { "message": "Is the pipette tip in the middle of the PCR Plate, well A1, in slot C2? It should be 10mm higher than the LPC calibrated height." @@ -15787,7 +15595,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "a0930229a45be6add3b6f59133da1de6", + "key": "cd444e409d19cc34ae13c57c78bb086e", "notes": [], "params": { "labwareId": "UUID", @@ -15838,7 +15646,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "471a6fca269ae526432b1af3abd27b1a", + "key": "c5d7971ec2f6b522614c2d2f88094e1d", "notes": [], "params": { "forceDirect": false, @@ -15870,7 +15678,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b8898277b6b61116b58e55e0dbb28563", + "key": "1d59eda3d33ebec0f868e8338bbddfba", "notes": [], "params": { "message": "Is the pipette tip in the middle of the reservoir , well A1, in slot D2? It should be at the LPC calibrated height." @@ -15884,7 +15692,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c92dcade8aedaf07ae1091b486804e95", + "key": "29d9d636fc2e8788aca7a2ab3bf1ff42", "notes": [], "params": { "alternateDropLocation": false, @@ -15916,7 +15724,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "aa312bc19fee7fed08946bfb02cafef4", + "key": "4635c8bdd0af988291bd7ac6b20f5a3f", "notes": [], "params": { "labwareId": "UUID", @@ -15967,7 +15775,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c9392d146973b6fc471984b1ecea94df", + "key": "cb0da417e9dda17600e8bb3b689581ba", "notes": [], "params": { "message": "!!!!!!!!!!YOU NEED TO REDO LPC!!!!!!!!!!" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json index 2dd0984c104..64fba4ed23f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json @@ -4461,44 +4461,12 @@ "startedAt": "TIMESTAMP", "status": "succeeded" }, - { - "commandType": "liquidProbe", - "completedAt": "TIMESTAMP", - "createdAt": "TIMESTAMP", - "id": "UUID", - "key": "8a6371348d39f444fc65e7304dde52ce", - "notes": [], - "params": { - "labwareId": "UUID", - "pipetteId": "UUID", - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 2.0 - }, - "origin": "top", - "volumeOffset": 0.0 - }, - "wellName": "A3" - }, - "result": { - "position": { - "x": 360.38, - "y": 256.78, - "z": 33.4 - }, - "z_position": "SimulatedProbeResult" - }, - "startedAt": "TIMESTAMP", - "status": "succeeded" - }, { "commandType": "aspirate", "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "b22e2f859d148b4dfdb91b3e43ddd7c0", + "key": "778e826c901184eabfcc20d2b5a2e49f", "notes": [], "params": { "flowRate": 35.0, @@ -4532,7 +4500,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d7b826433bfc2c5dd7650b7f64de4387", + "key": "38675e4e928860df768c3e85d5768603", "notes": [], "params": { "flowRate": 57.0, @@ -4566,7 +4534,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "45c70122bf33abff61217f0c752c06a4", + "key": "b4caf3b2661bcba8f6a838f6ea450075", "notes": [], "params": { "addressableAreaName": "movableTrashA3", @@ -4595,7 +4563,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "440594c1295a83478b3bf55db1efc12d", + "key": "2b7db72bdd89db19f1ed47e67528f28b", "notes": [], "params": { "pipetteId": "UUID" @@ -4609,7 +4577,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "dbeb059b62f722adf17e49167171024f", + "key": "41dbfe52d75d3788b387c0d9338e34ea", "notes": [], "params": { "message": "Reservoir in D3 is to have NO liquid" @@ -4623,7 +4591,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "04ea53a488348ffb1688af708b65f7e4", + "key": "4b3f9b7518054b692c5325c9f314bbc2", "notes": [], "params": { "labwareId": "UUID", @@ -4656,7 +4624,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "e94242544868a35ba08cec280d753bc6", + "key": "1263b3f609a7880eaa95c752e2bd475d", "notes": [], "params": { "flowRate": 35.0, @@ -4690,7 +4658,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ef6736559fde071db453f5eab377a125", + "key": "909c08dccafd36971e0152dd6e1a8139", "notes": [], "params": { "addressableAreaName": "movableTrashA3", @@ -4719,7 +4687,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "57ecb3ed1ba19f712a64f34d0098c991", + "key": "d100078485070fc9ffbd5402abc866cc", "notes": [], "params": { "flowRate": 57.0, @@ -4734,7 +4702,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ff5d401da9025c5e29c5687c101a5e3d", + "key": "fd14cf1ab3d29a1beb839f773714c75c", "notes": [], "params": { "message": "Current volume in pipette: 0" @@ -4748,7 +4716,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d4d7653c4ef95313ee313641835096ad", + "key": "6d4749de29e5b16690b4c24357519c71", "notes": [], "params": { "pipetteId": "UUID" @@ -4762,7 +4730,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "572506e8a901de4c31b05824435605e3", + "key": "785e9be5b17c72f142d39f03297bc799", "notes": [], "params": { "labwareId": "UUID", @@ -4794,7 +4762,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "99ff896a8dd377c6b88d73e413dd83fb", + "key": "7ccc6abf8a3db11ce7e6acd5aad7c371", "notes": [], "params": { "message": "Is there liquid in the reservoir? True" @@ -4808,7 +4776,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f3ad90410318c85bdafc440398099b1c", + "key": "b3a1a14a2952fffaa3ffec6b16057ee7", "notes": [], "params": { "addressableAreaName": "movableTrashA3", @@ -4837,7 +4805,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "5f601c702191a47b8e0e0d99ae514a34", + "key": "f3cca7482c4018c4ef6df79c1803b756", "notes": [], "params": { "pipetteId": "UUID" @@ -4851,7 +4819,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "3d627373932d2d82fdee646567e0aa8e", + "key": "c6c070d903d15619cb5558c1ca1c2686", "notes": [], "params": { "labwareId": "UUID", @@ -4884,7 +4852,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "286f5eaff085f0888fa20b1f7e6ea0d8", + "key": "98193cec066e166983e2f35c505411f3", "notes": [], "params": { "message": "We expect an error on the next line" @@ -4898,7 +4866,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "f0ce6617868dd419408be36fa2c9b687", + "key": "9805906fd76d9e4ea5b48c4dd4a47f11", "notes": [], "params": { "labwareId": "UUID", @@ -4930,7 +4898,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d184edc87ae8067624e33f43a08fe0c3", + "key": "945ed7582aa88ad9af48034e185e78cb", "notes": [], "params": { "flowRate": 35.0, @@ -4964,7 +4932,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "7e96f475215267b1f53e6431009b68f9", + "key": "cda1a90c5d9583258d101cde416ac69c", "notes": [], "params": { "addressableAreaName": "movableTrashA3", @@ -4993,7 +4961,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "36e0b46690493b64dea41f3d6c27e266", + "key": "3c43bc864ede9c53854dc16d03e83237", "notes": [], "params": { "pipetteId": "UUID" @@ -5007,7 +4975,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "2c58bd55bfad83d78f2859e636ee2723", + "key": "3412243e76c37f838b113e7eb6b592ac", "notes": [], "params": { "labwareId": "UUID", @@ -5040,7 +5008,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "c713a0160a4176161ba486b32b07d0dd", + "key": "67e7abea27e463d130e20a1b519ccb68", "notes": [], "params": { "message": "Reservoir in D3 is to have NO liquid" @@ -5054,7 +5022,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "ecd85454102ce7575176fc1430b9854f", + "key": "8b1fcd8c6726c9cbe49ad45391015980", "notes": [], "params": { "labwareId": "UUID", @@ -5086,7 +5054,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "1bae2c05e983ffa93cb1e081d438f8ef", + "key": "ecce1348844aa390a8de623d60b09b4c", "notes": [], "params": { "labwareId": "UUID", @@ -5118,7 +5086,7 @@ "completedAt": "TIMESTAMP", "createdAt": "TIMESTAMP", "id": "UUID", - "key": "d249c3b29b22c37a6412d69a4c83b5c7", + "key": "86cd2f1c02989e5f6a8cdc3e02d98255", "notes": [], "params": { "message": "Is there liquid in the reservoir? True"