From 09b2e015d087023c67f02dd33ab206fc13a47050 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Fri, 3 May 2024 16:59:59 -0400 Subject: [PATCH 01/29] pipette configuration values adjusted by nozzle map first pass --- .../instruments/ot3/pipette.py | 62 +++++- .../general/ninety_six_channel/p1000/3_6.json | 201 ++++++++++++++---- .../pipette/load_data.py | 15 ++ .../pipette/pipette_definition.py | 54 +++-- 4 files changed, 260 insertions(+), 72 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 7d72058d1ce..1881e6ec9c9 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -96,6 +96,11 @@ def __init__( pipette_channels=config.channels, pipette_version=config.version, ) + self._valid_nozzle_maps = load_pipette_data.load_valid_nozzle_maps( + self._pipette_model.pipette_type, + self._pipette_model.pipette_channels, + self._pipette_model.pipette_version, + ) self._nozzle_offset = self._config.nozzle_offset self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) @@ -667,22 +672,69 @@ def get_pick_up_configuration_for_tip_count( ): if not config: continue - + + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + approved_map = map_key + if approved_map is None: + raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") + if isinstance(config, PressFitPickUpTipConfiguration) and all( [ - config.speed_by_tip_count.get(count), - config.distance_by_tip_count.get(count), - config.current_by_tip_count.get(count), + config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].speed, + config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].distance, + config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current, ] ): return config - elif config.current_by_tip_count.get(count) is not None: + elif config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current is not None: return config raise CommandPreconditionViolated( message=f"No pick up tip configuration for {count} tips", ) + #TODO: Link up current speed and distance references from the pipette handler to these new functions that return relevant data + + def get_pick_up_speed_by_configuration( + self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + approved_map = map_key + if approved_map is None: + raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") + + return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].speed + + def get_pick_up_distance_by_configuration( + self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + approved_map = map_key + if approved_map is None: + raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") + + return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].distance + + def get_pick_up_current_by_configuration( + self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + approved_map = map_key + if approved_map is None: + raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") + + return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current + + + def _reload_and_check_skip( new_config: PipetteConfigurations, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index c59dfce42ab..e38dedc42d1 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -3,62 +3,171 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "RowA": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12"], + "RowH": ["H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + } + }, + "H1": { + "1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + } + }, + "A12": { + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + } + }, + "H12": { + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + } + }, + "Column1": { + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + } + }, + "Column12": { + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + } + } } }, "camAction": { - "speed": 5.5, - "distance": 10.0, "prep_move_distance": 8.25, "prep_move_speed": 10.0, "connectTiprackDistanceMM": 7.0, - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlap": 10.5 + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlap": 10.5 + } + } } } }, diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index 4dc6b200574..be20172764d 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -10,6 +10,7 @@ from .pipette_definition import ( PipetteConfigurations, PipetteLiquidPropertiesDefinition, + ValidNozzleMaps, ) from .model_constants import MOUNT_CONFIG_LOOKUP_TABLE, _MAP_KEY_TO_V2 from .types import ( @@ -259,3 +260,17 @@ def load_definition( "mount_configurations": mount_configs, } ) + +def load_valid_nozzle_maps( + model: PipetteModelType, + channels: PipetteChannelType, + version: PipetteVersionType, +) -> ValidNozzleMaps: + if ( + version.major not in PipetteModelMajorVersion + or version.minor not in PipetteModelMinorVersion + ): + raise KeyError("Pipette version not found.") + + #TODO: Parse in data from the calid nozzle maps section of the pipette definition + return Dict["test", ["test1", "test2"]] diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index a7b43663884..2fd97545bf4 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -158,6 +158,31 @@ class PlungerHomingConfigurations(BaseModel): description="The speed to move the plunger axis for homing.", ) +class ValidNozzleMaps(BaseModel): + maps: Dict[str, List[str]] = Field( + ..., + description="Dictionary of predetermined nozzle maps for partial tip configurations.", + ) + +class PressAndCamConfigurationValues(BaseModel): + speed: float = Field( + ..., + description="The speed to move the Z axis for each force pickup of a given partial tip configuration for a given tip type.", + ) + distance: float = Field( + ..., + description="The starting distance to begin a pick up tip from, based on partial tip configuration and tip type.", + ) + current: float = Field( + ..., + description="The current used by a given partial tip configuration by tip type.", + ) + tip_overlap: float = Field( + ..., + description="The tip overlap of a given partial tip configuration.", + alias="tipOverlap", + ) + class PressFitPickUpTipConfiguration(BaseModel): presses: int = Field( @@ -168,41 +193,28 @@ class PressFitPickUpTipConfiguration(BaseModel): ..., description="The increment to move the pipette down on each force tip pickup press", ) - distance_by_tip_count: Dict[int, float] = Field( - ..., - description="The starting distance to begin a pick up tip from, based on number of tips being picked up", - alias="distanceByTipCount", - ) - speed_by_tip_count: Dict[int, float] = Field( - ..., - description="The speed to move the Z axis for each force pickup, based on number of tips being picked up", - alias="speedByTipCount", - ) - current_by_tip_count: Dict[int, float] = Field( + configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( ..., - description="A current dictionary look-up by partial tip configuration.", - alias="currentByTipCount", + description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", + alias="configurationByNozzleMap", ) - class CamActionPickUpTipConfiguration(BaseModel): - distance: float = Field(..., description="How far to move the cams once engaged") - speed: float = Field(..., description="How fast to move the cams when engaged") prep_move_distance: float = Field( ..., description="How far to move the cams to engage the rack" ) prep_move_speed: float = Field( ..., description="How fast to move the cams when moving to the rack" ) - current_by_tip_count: Dict[int, float] = Field( - ..., - description="A current dictionary look-up by partial tip configuration.", - alias="currentByTipCount", - ) connect_tiprack_distance_mm: float = Field( description="The distance to move the head down to connect with the tiprack before clamping.", alias="connectTiprackDistanceMM", ) + configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( + ..., + description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", + alias="configurationByNozzleMap", + ) class PlungerEjectDropTipConfiguration(BaseModel): From af38b1225fa32857c236e5fa5eddb070ebcbfa54 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 6 May 2024 16:19:09 -0400 Subject: [PATCH 02/29] engine updates to support nested map and tip type configurations and generic run with 96 channel --- .../instruments/ot2/pipette.py | 66 +++++++++++++ .../instruments/ot2/pipette_handler.py | 25 ++--- .../instruments/ot3/pipette.py | 95 +++++++++++++------ .../instruments/ot3/pipette_handler.py | 25 +++-- .../pipette/load_data.py | 5 +- .../pipette/pipette_definition.py | 12 +-- 6 files changed, 171 insertions(+), 57 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index f8a9d48da60..aa90d086ad8 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -17,6 +17,7 @@ PipetteModelVersionType, PipetteNameType, PipetteLiquidPropertiesDefinition, + PressFitPickUpTipConfiguration, ) from opentrons_shared_data.pipette import ( load_data as load_pipette_data, @@ -112,6 +113,11 @@ def __init__( pipette_channels=config.channels, pipette_version=config.version, ) + self._valid_nozzle_maps = load_pipette_data.load_valid_nozzle_maps( + self._pipette_model.pipette_type, + self._pipette_model.pipette_channels, + self._pipette_model.pipette_version, + ) self._nozzle_offset = self._config.nozzle_offset self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) @@ -520,6 +526,66 @@ def remove_tip(self) -> None: def has_tip(self) -> bool: return self._has_tip + def get_pick_up_speed_by_configuration( + self, + config: PressFitPickUpTipConfiguration, + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): + approved_map = map_key + if approved_map is None: + raise ValueError( + "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].speed + + def get_pick_up_distance_by_configuration( + self, + config: PressFitPickUpTipConfiguration, + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): + approved_map = map_key + if approved_map is None: + raise ValueError( + "Pick up tip distance request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].distance + + def get_pick_up_current_by_configuration( + self, + config: PressFitPickUpTipConfiguration, + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): + approved_map = map_key + if approved_map is None: + raise ValueError( + "Pick up tip current request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].current + # Cache max is chosen somewhat arbitrarily. With a float is input we don't # want this to unbounded. @functools.lru_cache(maxsize=100) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py index 35b38a1732a..2f098bc9df0 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py @@ -772,7 +772,7 @@ def plan_check_pick_up_tip( # type: ignore[no-untyped-def] if instrument.has_tip: raise UnexpectedTipAttachError("pick_up_tip", instrument.name, mount.name) self._ihp_log.debug(f"Picking up tip on {mount.name}") - tip_count = instrument.nozzle_manager.current_configuration.tip_count + if presses is None or presses < 0: checked_presses = instrument.pick_up_configurations.press_fit.presses else: @@ -783,11 +783,12 @@ def plan_check_pick_up_tip( # type: ignore[no-untyped-def] else: check_incr = increment - pick_up_speed = instrument.pick_up_configurations.press_fit.speed_by_tip_count[ - tip_count - ] - pick_up_distance = ( - instrument.pick_up_configurations.press_fit.distance_by_tip_count[tip_count] + pick_up_speed = instrument.get_pick_up_speed_by_configuration( + instrument.pick_up_configurations.press_fit + ) + + pick_up_distance = instrument.get_pick_up_distance_by_configuration( + instrument.pick_up_configurations.press_fit ) def build_presses() -> Iterator[Tuple[float, float]]: @@ -817,9 +818,9 @@ def add_tip_to_instr() -> None: current={ Axis.by_mount( mount - ): instrument.pick_up_configurations.press_fit.current_by_tip_count[ - tip_count - ] + ): instrument.get_pick_up_current_by_configuration( + instrument.pick_up_configurations.press_fit + ) }, speed=pick_up_speed, relative_down=top_types.Point(0, 0, press_dist), @@ -846,9 +847,9 @@ def add_tip_to_instr() -> None: current={ Axis.by_mount( mount - ): instrument.pick_up_configurations.press_fit.current_by_tip_count[ - instrument.nozzle_manager.current_configuration.tip_count - ] + ): instrument.get_pick_up_current_by_configuration( + instrument.pick_up_configurations.press_fit + ) }, speed=pick_up_speed, relative_down=top_types.Point(0, 0, press_dist), diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 1881e6ec9c9..1e669fe3967 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -100,7 +100,7 @@ def __init__( self._pipette_model.pipette_type, self._pipette_model.pipette_channels, self._pipette_model.pipette_version, - ) + ) self._nozzle_offset = self._config.nozzle_offset self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) @@ -672,69 +672,106 @@ def get_pick_up_configuration_for_tip_count( ): if not config: continue - + approved_map = None for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): approved_map = map_key - if approved_map is None: - raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") + if approved_map is None: + raise ValueError( + "Nozzle Configuration does not match any approved map layout for the current pipette." + ) + if isinstance(config, PressFitPickUpTipConfiguration) and all( [ - config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].speed, - config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].distance, - config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current, + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].speed, + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].distance, + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].current, ] ): return config - elif config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current is not None: + elif ( + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].current + is not None + ): return config raise CommandPreconditionViolated( message=f"No pick up tip configuration for {count} tips", ) - #TODO: Link up current speed and distance references from the pipette handler to these new functions that return relevant data - def get_pick_up_speed_by_configuration( - self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + self, + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: approved_map = None for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): approved_map = map_key if approved_map is None: - raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") - - return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].speed - + raise ValueError( + "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].speed + def get_pick_up_distance_by_configuration( - self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + self, + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: approved_map = None for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): approved_map = map_key if approved_map is None: - raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") - - return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].distance - + raise ValueError( + "Pick up tip distance request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].distance + def get_pick_up_current_by_configuration( - self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration] + self, + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: approved_map = None for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == self._nozzle_manager.current_configuration.map_store.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): approved_map = map_key if approved_map is None: - raise ValueError("Nozzle Configuration does not match any approved map layout for the current pipette.") - - return config.configuration_by_nozzle_map[approved_map][self._active_tip_setting_name.name].current + raise ValueError( + "Pick up tip current request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].current - def _reload_and_check_skip( new_config: PipetteConfigurations, diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py index 1dc40a4caa0..601a8cf7ea0 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py @@ -755,11 +755,17 @@ def plan_ht_pick_up_tip(self, tip_count: int) -> TipActionSpec: tip_motor_moves = self._build_tip_motor_moves( prep_move_dist=pick_up_config.prep_move_distance, - clamp_move_dist=pick_up_config.distance, + clamp_move_dist=instrument.get_pick_up_distance_by_configuration( + pick_up_config + ), prep_move_speed=pick_up_config.prep_move_speed, - clamp_move_speed=pick_up_config.speed, + clamp_move_speed=instrument.get_pick_up_speed_by_configuration( + pick_up_config + ), plunger_current=instrument.plunger_motor_current.run, - tip_motor_current=pick_up_config.current_by_tip_count[tip_count], + tip_motor_current=instrument.get_pick_up_current_by_configuration( + pick_up_config + ), ) return TipActionSpec( @@ -797,7 +803,7 @@ def plan_lt_pick_up_tip( else: check_incr = increment - pick_up_speed = pick_up_config.speed_by_tip_count[tip_count] + pick_up_speed = instrument.get_pick_up_speed_by_configuration(pick_up_config) def build_presses() -> List[TipActionMoveSpec]: # Press the nozzle into the tip number of times, @@ -806,7 +812,8 @@ def build_presses() -> List[TipActionMoveSpec]: for i in range(checked_presses): # move nozzle down into the tip press_dist = ( - -1.0 * pick_up_config.distance_by_tip_count[tip_count] + -1.0 + * instrument.get_pick_up_distance_by_configuration(pick_up_config) + -1.0 * check_incr * i ) press_moves.append( @@ -814,9 +821,11 @@ def build_presses() -> List[TipActionMoveSpec]: distance=press_dist, speed=pick_up_speed, currents={ - Axis.by_mount(mount): pick_up_config.current_by_tip_count[ - tip_count - ] + Axis.by_mount( + mount + ): instrument.get_pick_up_current_by_configuration( + pick_up_config + ) }, ) ) diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index be20172764d..6a75e680942 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -272,5 +272,6 @@ def load_valid_nozzle_maps( ): raise KeyError("Pipette version not found.") - #TODO: Parse in data from the calid nozzle maps section of the pipette definition - return Dict["test", ["test1", "test2"]] + physical_dict = _physical(channels, model, version) + + return ValidNozzleMaps.parse_obj(physical_dict["validNozzleMaps"]) \ No newline at end of file diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index 2fd97545bf4..41644d354d1 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -167,19 +167,19 @@ class ValidNozzleMaps(BaseModel): class PressAndCamConfigurationValues(BaseModel): speed: float = Field( ..., - description="The speed to move the Z axis for each force pickup of a given partial tip configuration for a given tip type.", + description="The speed to move the Z axis for each force pickup of a given tip configuration for a given tip type.", ) distance: float = Field( ..., - description="The starting distance to begin a pick up tip from, based on partial tip configuration and tip type.", + description="The starting distance to begin a pick up tip from, based on tip configuration and tip type.", ) current: float = Field( ..., - description="The current used by a given partial tip configuration by tip type.", + description="The current used by a given tip configuration by tip type.", ) tip_overlap: float = Field( ..., - description="The tip overlap of a given partial tip configuration.", + description="The tip overlap of a given tip configuration.", alias="tipOverlap", ) @@ -196,7 +196,7 @@ class PressFitPickUpTipConfiguration(BaseModel): configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( ..., description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", - alias="configurationByNozzleMap", + alias="configurationsByNozzleMap", ) class CamActionPickUpTipConfiguration(BaseModel): @@ -213,7 +213,7 @@ class CamActionPickUpTipConfiguration(BaseModel): configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( ..., description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", - alias="configurationByNozzleMap", + alias="configurationsByNozzleMap", ) From cd11ee0d39a98cf55d7fd98625b4cd01425b6e90 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 8 May 2024 16:27:51 -0400 Subject: [PATCH 03/29] tip overlap conversion to source from physical definition tree --- .../instruments/ot2/pipette.py | 20 +++ .../instruments/ot3/pipette.py | 115 ++++++++++-------- .../resources/pipette_data_provider.py | 47 ++++++- .../protocol_engine/state/pipettes.py | 37 ++++-- .../protocols/api_support/instrument.py | 9 +- .../general/ninety_six_channel/p1000/3_6.json | 76 ++++++++++++ 6 files changed, 240 insertions(+), 64 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index aa90d086ad8..0fd00e35223 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -585,6 +585,26 @@ def get_pick_up_current_by_configuration( return config.configuration_by_nozzle_map[approved_map][ pip_types.PipetteTipType(self._liquid_class.max_volume).name ].current + + def get_nominal_tip_overlap_by_configuration( + self, + config: PressFitPickUpTipConfiguration, + ) -> float: + approved_map = None + for map_key in self._valid_nozzle_maps.maps.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): + approved_map = map_key + if approved_map is None: + raise ValueError( + "Nominal tip overlap request error. Nozzle Configuration does not match any approved map layout for the current pipette." + ) + + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].tip_overlap # Cache max is chosen somewhat arbitrarily. With a float is input we don't # want this to unbounded. diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 1e669fe3967..98e3c62add7 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -138,7 +138,8 @@ def __init__( ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap_lookup = self._liquid_class.tip_overlap_dictionary + + self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() if use_old_aspiration_functions: self._pipetting_function_version = PIPETTING_FUNCTION_FALLBACK_VERSION @@ -166,8 +167,8 @@ def backlash_distance(self) -> float: return self._backlash_distance @property - def tip_overlap(self) -> Dict[str, float]: - return self._tip_overlap_lookup + def tip_overlap(self) -> float: + return self._tip_overlap @property def nozzle_offset(self) -> Point: @@ -259,7 +260,7 @@ def reset_state(self) -> None: ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap_lookup = self.liquid_class.tip_overlap_dictionary + self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) ) @@ -660,9 +661,20 @@ def set_tip_type(self, tip_type: pip_types.PipetteTipType) -> None: self._flow_acceleration = self._active_tip_settings.default_flow_acceleration self._fallback_tip_length = self._active_tip_settings.default_tip_length - self._tip_overlap_lookup = self.liquid_class.tip_overlap_dictionary + self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() self._working_volume = min(tip_type.value, self.liquid_class.max_volume) + def _get_matching_approved_nozzle_map(self) -> str: + for map_key in self._valid_nozzle_maps.maps.keys(): + if ( + self._valid_nozzle_maps.maps[map_key] + == list(self._nozzle_manager.current_configuration.map_store.keys()) + ): + return map_key + raise ValueError( + "Nozzle Configuration does not match any approved map layout for the current pipette." + ) + def get_pick_up_configuration_for_tip_count( self, count: int ) -> Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration]: @@ -672,19 +684,7 @@ def get_pick_up_configuration_for_tip_count( ): if not config: continue - - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - - if approved_map is None: - raise ValueError( - "Nozzle Configuration does not match any approved map layout for the current pipette." - ) + approved_map = self._get_matching_approved_nozzle_map() if isinstance(config, PressFitPickUpTipConfiguration) and all( [ @@ -728,49 +728,66 @@ def get_pick_up_speed_by_configuration( "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." ) - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].speed + try: + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].speed + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.speed + raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") def get_pick_up_distance_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip distance request error. Nozzle Configuration does not match any approved map layout for the current pipette." - ) + approved_map = self._get_matching_approved_nozzle_map() - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].distance + try: + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].distance + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.distance + raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") def get_pick_up_current_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip current request error. Nozzle Configuration does not match any approved map layout for the current pipette." - ) + approved_map = self._get_matching_approved_nozzle_map() - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].current + try: + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].current + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.current + raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") + + def get_nominal_tip_overlap_by_configuration(self) -> float: + for config in ( + self._config.pick_up_tip_configurations.press_fit, + self._config.pick_up_tip_configurations.cam_action, + ): + if not config: + continue + approved_map = self._get_matching_approved_nozzle_map() + + try: + return config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].tip_overlap + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.tip_overlap + raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") def _reload_and_check_skip( diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index d2a674516ff..d16bc46b987 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -36,7 +36,7 @@ class LoadedStaticPipetteData: tip_configuration_lookup_table: Dict[ float, pipette_definition.SupportedTipsDefinition ] - nominal_tip_overlap: Dict[str, float] + nominal_tip_overlap: float nozzle_map: NozzleMap back_left_corner_offset: Point front_right_corner_offset: Point @@ -150,8 +150,48 @@ def _get_virtual_pipette_static_config_by_model( tip_configuration = config.liquid_properties[liquid_class].supported_tips[ tip_type ] + valid_nozzle_maps = load_pipette_data.load_valid_nozzle_maps( + pipette_model.pipette_type, + pipette_model.pipette_channels, + pipette_model.pipette_version, + ) nozzle_manager = NozzleConfigurationManager.build_from_config(config) + + tip_overlap_for_tip_type = None + for configuration in ( + config.pick_up_tip_configurations.press_fit, + config.pick_up_tip_configurations.cam_action, + ): + if not config: + continue + + approved_map = None + for map_key in valid_nozzle_maps.maps.keys(): + if ( + valid_nozzle_maps.maps[map_key] + == list(nozzle_manager.current_configuration.map_store.keys()) + ): + approved_map = map_key + if approved_map is None: + raise ValueError( + "Virtual Static Nozzle Configuration does not match any approved map layout for the current pipette." + ) + try: + tip_overlap_for_tip_type = configuration.configuration_by_nozzle_map[approved_map][ + tip_type.name + ].tip_overlap + break + except: + default = configuration.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + tip_overlap_for_tip_type = default.tip_overlap + break + if tip_overlap_for_tip_type is None: + raise ValueError( + "Virtual Static Nozzle Configuration does not have a valid pick up tip configuration." + ) + pip_back_left = config.pipette_bounding_box_offsets.back_left_corner pip_front_right = config.pipette_bounding_box_offsets.front_right_corner return LoadedStaticPipetteData( @@ -173,9 +213,7 @@ def _get_virtual_pipette_static_config_by_model( default_aspirate=tip_configuration.default_aspirate_flowrate.values_by_api_level, default_dispense=tip_configuration.default_dispense_flowrate.values_by_api_level, ), - nominal_tip_overlap=config.liquid_properties[ - liquid_class - ].tip_overlap_dictionary, + nominal_tip_overlap=tip_overlap_for_tip_type, nozzle_map=nozzle_manager.current_configuration, back_left_corner_offset=Point( pip_back_left[0], pip_back_left[1], pip_back_left[2] @@ -214,6 +252,7 @@ def get_pipette_static_config(pipette_dict: PipetteDict) -> LoadedStaticPipetteD k.value: v for k, v in pipette_dict["supported_tips"].items() }, nominal_tip_overlap=pipette_dict["tip_overlap"], + # TODO(mc, 2023-02-28): these two values are not present in PipetteDict # https://opentrons.atlassian.net/browse/RCORE-655 home_position=0, diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index 6803d19272b..f3519d5feb6 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -106,7 +106,7 @@ class StaticPipetteConfig: tip_configuration_lookup_table: Dict[ float, pipette_definition.SupportedTipsDefinition ] - nominal_tip_overlap: Dict[str, float] + nominal_tip_overlap: float home_position: float nozzle_offset_z: float pipette_bounding_box_offsets: PipetteBoundingBoxOffsets @@ -651,12 +651,35 @@ def get_flow_rates(self, pipette_id: str) -> FlowRates: def get_nominal_tip_overlap(self, pipette_id: str, labware_uri: str) -> float: """Get the nominal tip overlap for a given labware from config.""" - tip_overlaps_by_uri = self.get_config(pipette_id).nominal_tip_overlap - - try: - return tip_overlaps_by_uri[labware_uri] - except KeyError: - return tip_overlaps_by_uri.get("default", 0) + nominal_tip_overlap = self.get_config(pipette_id).nominal_tip_overlap + return nominal_tip_overlap + + #OKAY LOTS OF NOTES: + # first we will be calling self.get_nominal_tip_overlap_by_configuration(tip_type_uri???) from here + #in that we will resolve to a float + #the float will return there + #IF the active tip does not match the one resolved from the labware uri then we will return "default" + #if nothing matches at all (keyerror) we will return the default + + #translate the uri here into a tip type + + #look up labware definitions_by_uri + #then use that to find tip volume + #then look up the tip types and find a type that matches that volume + + #new notes: + #maybe instead since this is only used in the geometry view we can just remove the labware uri references + #instead we can pass down tip type from here + #or we can infer it at the bottom like we do the others + + #near as I can tell there would be minimal harm in that plan then removing references to labware uri ^ + + #get_definition_by_uri() + + # try: + # return tip_overlaps_by_uri[labware_uri] + # except KeyError: + # return tip_overlaps_by_uri.get("default", 0) def get_z_axis(self, pipette_id: str) -> MotorAxis: """Get the MotorAxis representing this pipette's Z stage.""" diff --git a/api/src/opentrons/protocols/api_support/instrument.py b/api/src/opentrons/protocols/api_support/instrument.py index d6d9613b1cf..5a1e0a4f4ea 100644 --- a/api/src/opentrons/protocols/api_support/instrument.py +++ b/api/src/opentrons/protocols/api_support/instrument.py @@ -64,10 +64,11 @@ def tip_length_for( pipette["pipette_id"], tip_rack_definition ).tip_length except TipLengthCalNotFound: - tip_overlap = pipette["tip_overlap"].get( - uri_from_definition(tip_rack_definition), - pipette["tip_overlap"]["default"], - ) + # tip_overlap = pipette["tip_overlap"].get( + # uri_from_definition(tip_rack_definition), + # pipette["tip_overlap"]["default"], + # ) + tip_overlap = pipette["tip_overlap"] tip_length = tip_rack_definition["parameters"]["tipLength"] return tip_length - tip_overlap diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index e38dedc42d1..11e55b0fe00 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -3,6 +3,40 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "unvalidatedNozzleConfigurationValues":{ + "speedByTipCount": { + "4": 10.0, + "6": 10.0, + "8": 10.0, + "12": 10.0, + "16": 10.0, + "24": 10.0 + }, + "distanceByTipCount": { + "4": 13.0, + "6": 13.0, + "8": 13.0, + "12": 13.0, + "16": 13.0, + "24": 13.0 + }, + "currentByTipCount": { + "4": 0.35, + "6": 0.45, + "8": 0.55, + "12": 0.19, + "16": 0.25, + "24": 0.38 + }, + "tipOverlapByTipCount": { + "4": 10.5, + "6": 10.5, + "8": 10.5, + "12": 10.5, + "16": 10.5, + "24": 10.5 + } + }, "validNozzleMaps": { "maps": { "A1": ["A1"], @@ -22,6 +56,12 @@ "increment": 0.0, "configurationsByNozzleMap": { "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.5 + }, "t1000": { "speed": 10.0, "distance": 13.0, @@ -42,6 +82,12 @@ } }, "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, "1000": { "speed": 10.0, "distance": 13.0, @@ -62,6 +108,12 @@ } }, "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, "t1000": { "speed": 10.0, "distance": 13.0, @@ -82,6 +134,12 @@ } }, "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, "t1000": { "speed": 10.0, "distance": 13.0, @@ -102,6 +160,12 @@ } }, "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, "t1000": { "speed": 10.0, "distance": 13.0, @@ -123,6 +187,12 @@ }, "Column12": { "t1000": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlap": 10.5 + }, "speed": 10.0, "distance": 13.0, "current": 0.55, @@ -149,6 +219,12 @@ "connectTiprackDistanceMM": 7.0, "configurationsByNozzleMap": { "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlap": 10.5 + }, "t1000": { "speed": 5.5, "distance": 10.0, From 6004a9a4a2305b1dc4d7043f22e6b34c0706c71f Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 13 May 2024 15:23:44 -0400 Subject: [PATCH 04/29] tip overlap by nozzle configuration engine infrastructure --- .../opentrons/hardware_control/dev_types.py | 2 +- .../instruments/ot2/pipette.py | 116 ++++++++++-------- .../instruments/ot3/pipette.py | 61 +++++---- .../resources/pipette_data_provider.py | 34 ++--- .../protocol_engine/state/geometry.py | 5 +- .../protocol_engine/state/pipettes.py | 29 +---- .../protocols/api_support/instrument.py | 4 - .../robot/calibration/check/user_flow.py | 4 +- .../robot/calibration/deck/user_flow.py | 2 +- .../calibration/pipette_offset/user_flow.py | 2 +- .../robot/calibration/tip_length/user_flow.py | 3 +- .../pipette/load_data.py | 1 - 12 files changed, 127 insertions(+), 136 deletions(-) diff --git a/api/src/opentrons/hardware_control/dev_types.py b/api/src/opentrons/hardware_control/dev_types.py index 6eb459fef0f..c2547bb05df 100644 --- a/api/src/opentrons/hardware_control/dev_types.py +++ b/api/src/opentrons/hardware_control/dev_types.py @@ -83,7 +83,7 @@ class PipetteDict(InstrumentDict): current_volume: float tip_length: float working_volume: float - tip_overlap: Dict[str, float] + tip_overlap: float available_volume: float return_tip_height: float default_aspirate_flow_rates: Dict[str, float] diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 0fd00e35223..168091dbf18 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -154,7 +154,7 @@ def __init__( self._active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap_lookup = self._liquid_class.tip_overlap_dictionary + self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() if use_old_aspiration_functions: self._pipetting_function_version = PIPETTING_FUNCTION_FALLBACK_VERSION @@ -222,8 +222,8 @@ def pipette_offset(self) -> PipetteOffsetByPipetteMount: return self._pipette_offset @property - def tip_overlap(self) -> Dict[str, float]: - return self._tip_overlap_lookup + def tip_overlap(self) -> float: + return self._tip_overlap @property def channels(self) -> pip_types.PipetteChannelType: @@ -296,7 +296,8 @@ def reset_state(self) -> None: self.active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap_lookup = self.liquid_class.tip_overlap_dictionary + self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) ) @@ -526,15 +527,24 @@ def remove_tip(self) -> None: def has_tip(self) -> bool: return self._has_tip + def _get_matching_approved_nozzle_map(self) -> str: + for map_key in self._valid_nozzle_maps.maps.keys(): + if self._valid_nozzle_maps.maps[map_key] == list( + self._nozzle_manager.current_configuration.map_store.keys() + ): + return map_key + raise ValueError( + "Nozzle Configuration does not match any approved map layout for the current pipette." + ) + def get_pick_up_speed_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: approved_map = None for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) + if self._valid_nozzle_maps.maps[map_key] == list( + self._nozzle_manager.current_configuration.map_store.keys() ): approved_map = map_key if approved_map is None: @@ -550,61 +560,65 @@ def get_pick_up_distance_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip distance request error. Nozzle Configuration does not match any approved map layout for the current pipette." + approved_map = self._get_matching_approved_nozzle_map() + + try: + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].distance + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.distance + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." ) - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].distance - def get_pick_up_current_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip current request error. Nozzle Configuration does not match any approved map layout for the current pipette." + approved_map = self._get_matching_approved_nozzle_map() + + try: + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].current + except: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.current + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." ) - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].current - def get_nominal_tip_overlap_by_configuration( self, - config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Nominal tip overlap request error. Nozzle Configuration does not match any approved map layout for the current pipette." - ) - - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].tip_overlap + for config in ( + self._config.pick_up_tip_configurations.press_fit, + self._config.pick_up_tip_configurations.cam_action, + ): + if not config: + continue + approved_map = self._get_matching_approved_nozzle_map() + + try: + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].tip_overlap + except: + default = config.configuration_by_nozzle_map[approved_map].get( + "default" + ) + if default is not None: + return default.tip_overlap + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) + raise CommandPreconditionViolated( + message=f"No valid pick-up tip configuration found.", + ) # Cache max is chosen somewhat arbitrarily. With a float is input we don't # want this to unbounded. diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 98e3c62add7..8a458985a0c 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -138,7 +138,6 @@ def __init__( ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() if use_old_aspiration_functions: @@ -666,15 +665,14 @@ def set_tip_type(self, tip_type: pip_types.PipetteTipType) -> None: def _get_matching_approved_nozzle_map(self) -> str: for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) + if self._valid_nozzle_maps.maps[map_key] == list( + self._nozzle_manager.current_configuration.map_store.keys() ): return map_key raise ValueError( "Nozzle Configuration does not match any approved map layout for the current pipette." ) - + def get_pick_up_configuration_for_tip_count( self, count: int ) -> Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration]: @@ -716,17 +714,7 @@ def get_pick_up_speed_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if ( - self._valid_nozzle_maps.maps[map_key] - == list(self._nozzle_manager.current_configuration.map_store.keys()) - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." - ) + approved_map = self._get_matching_approved_nozzle_map() try: return config.configuration_by_nozzle_map[approved_map][ @@ -736,7 +724,9 @@ def get_pick_up_speed_by_configuration( default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.speed - raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) def get_pick_up_distance_by_configuration( self, @@ -749,10 +739,14 @@ def get_pick_up_distance_by_configuration( self._active_tip_setting_name.name ].distance except: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[approved_map].get( + "default" + ) if default is not None: return default.distance - raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) def get_pick_up_current_by_configuration( self, @@ -765,11 +759,15 @@ def get_pick_up_current_by_configuration( self._active_tip_setting_name.name ].current except: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[approved_map].get( + "default" + ) if default is not None: return default.current - raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") - + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) + def get_nominal_tip_overlap_by_configuration(self) -> float: for config in ( self._config.pick_up_tip_configurations.press_fit, @@ -784,10 +782,21 @@ def get_nominal_tip_overlap_by_configuration(self) -> float: self._active_tip_setting_name.name ].tip_overlap except: - default = config.configuration_by_nozzle_map[approved_map].get("default") - if default is not None: - return default.tip_overlap - raise KeyError(f"Default tip type configuration values do not exist for Nozzle Map {approved_map}.") + try: + default = config.configuration_by_nozzle_map[approved_map].get( + "default" + ) + if default is not None: + return default.tip_overlap + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) + except: + # No valid key found for the approved nozzle map under this configuration - try the next + continue + raise CommandPreconditionViolated( + message=f"No valid pick-up tip configuration found.", + ) def _reload_and_check_skip( diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index d16bc46b987..f24ea0878cf 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -155,7 +155,6 @@ def _get_virtual_pipette_static_config_by_model( pipette_model.pipette_channels, pipette_model.pipette_version, ) - nozzle_manager = NozzleConfigurationManager.build_from_config(config) tip_overlap_for_tip_type = None @@ -168,25 +167,33 @@ def _get_virtual_pipette_static_config_by_model( approved_map = None for map_key in valid_nozzle_maps.maps.keys(): - if ( - valid_nozzle_maps.maps[map_key] - == list(nozzle_manager.current_configuration.map_store.keys()) + if valid_nozzle_maps.maps[map_key] == list( + nozzle_manager.current_configuration.map_store.keys() ): approved_map = map_key if approved_map is None: raise ValueError( "Virtual Static Nozzle Configuration does not match any approved map layout for the current pipette." ) - try: - tip_overlap_for_tip_type = configuration.configuration_by_nozzle_map[approved_map][ - tip_type.name - ].tip_overlap - break - except: - default = configuration.configuration_by_nozzle_map[approved_map].get("default") - if default is not None: - tip_overlap_for_tip_type = default.tip_overlap + + if configuration is not None: + try: + tip_overlap_for_tip_type = ( + configuration.configuration_by_nozzle_map[approved_map][ + tip_type.name + ].tip_overlap + ) break + except: + try: + default = configuration.configuration_by_nozzle_map[ + approved_map + ].get("default") + if default is not None: + tip_overlap_for_tip_type = default.tip_overlap + break + except: + tip_overlap_for_tip_type = None if tip_overlap_for_tip_type is None: raise ValueError( "Virtual Static Nozzle Configuration does not have a valid pick up tip configuration." @@ -252,7 +259,6 @@ def get_pipette_static_config(pipette_dict: PipetteDict) -> LoadedStaticPipetteD k.value: v for k, v in pipette_dict["supported_tips"].items() }, nominal_tip_overlap=pipette_dict["tip_overlap"], - # TODO(mc, 2023-02-28): these two values are not present in PipetteDict # https://opentrons.atlassian.net/browse/RCORE-655 home_position=0, diff --git a/api/src/opentrons/protocol_engine/state/geometry.py b/api/src/opentrons/protocol_engine/state/geometry.py index 112d7d60ef4..164d5ae80c7 100644 --- a/api/src/opentrons/protocol_engine/state/geometry.py +++ b/api/src/opentrons/protocol_engine/state/geometry.py @@ -457,10 +457,7 @@ def get_nominal_effective_tip_length( tip overlaps with the pipette nozzle. This does not take calibrated tip lengths into account. """ - labware_uri = self._labware.get_definition_uri(labware_id) - nominal_overlap = self._pipettes.get_nominal_tip_overlap( - pipette_id=pipette_id, labware_uri=labware_uri - ) + nominal_overlap = self._pipettes.get_nominal_tip_overlap(pipette_id=pipette_id) return self._labware.get_tip_length( labware_id=labware_id, overlap=nominal_overlap diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index f3519d5feb6..99ac1fc7d49 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -649,38 +649,11 @@ def get_flow_rates(self, pipette_id: str) -> FlowRates: f"Pipette {pipette_id} not found; unable to get pipette flow rates." ) from e - def get_nominal_tip_overlap(self, pipette_id: str, labware_uri: str) -> float: + def get_nominal_tip_overlap(self, pipette_id: str) -> float: """Get the nominal tip overlap for a given labware from config.""" nominal_tip_overlap = self.get_config(pipette_id).nominal_tip_overlap return nominal_tip_overlap - #OKAY LOTS OF NOTES: - # first we will be calling self.get_nominal_tip_overlap_by_configuration(tip_type_uri???) from here - #in that we will resolve to a float - #the float will return there - #IF the active tip does not match the one resolved from the labware uri then we will return "default" - #if nothing matches at all (keyerror) we will return the default - - #translate the uri here into a tip type - - #look up labware definitions_by_uri - #then use that to find tip volume - #then look up the tip types and find a type that matches that volume - - #new notes: - #maybe instead since this is only used in the geometry view we can just remove the labware uri references - #instead we can pass down tip type from here - #or we can infer it at the bottom like we do the others - - #near as I can tell there would be minimal harm in that plan then removing references to labware uri ^ - - #get_definition_by_uri() - - # try: - # return tip_overlaps_by_uri[labware_uri] - # except KeyError: - # return tip_overlaps_by_uri.get("default", 0) - def get_z_axis(self, pipette_id: str) -> MotorAxis: """Get the MotorAxis representing this pipette's Z stage.""" mount = self.get(pipette_id).mount diff --git a/api/src/opentrons/protocols/api_support/instrument.py b/api/src/opentrons/protocols/api_support/instrument.py index 5a1e0a4f4ea..4bb93ed546b 100644 --- a/api/src/opentrons/protocols/api_support/instrument.py +++ b/api/src/opentrons/protocols/api_support/instrument.py @@ -64,10 +64,6 @@ def tip_length_for( pipette["pipette_id"], tip_rack_definition ).tip_length except TipLengthCalNotFound: - # tip_overlap = pipette["tip_overlap"].get( - # uri_from_definition(tip_rack_definition), - # pipette["tip_overlap"]["default"], - # ) tip_overlap = pipette["tip_overlap"] tip_length = tip_rack_definition["parameters"]["tipLength"] return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/check/user_flow.py b/robot-server/robot_server/robot/calibration/check/user_flow.py index 1366c0054ed..1b5b39a70c2 100644 --- a/robot-server/robot_server/robot/calibration/check/user_flow.py +++ b/robot-server/robot_server/robot/calibration/check/user_flow.py @@ -851,9 +851,7 @@ def _get_tip_length(self) -> float: self.active_tiprack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self.hw_pipette.tip_overlap.get( - self.active_tiprack.uri, self.hw_pipette.tip_overlap["default"] - ) + tip_overlap = self.hw_pipette.tip_overlap tip_length = self.active_tiprack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/deck/user_flow.py b/robot-server/robot_server/robot/calibration/deck/user_flow.py index 55ed1351f84..469d0b5c577 100644 --- a/robot-server/robot_server/robot/calibration/deck/user_flow.py +++ b/robot-server/robot_server/robot/calibration/deck/user_flow.py @@ -365,7 +365,7 @@ def _get_tip_length(self) -> float: self._tip_rack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) + tip_overlap = self._hw_pipette.tip_overlap tip_length = self._tip_rack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py index 695e8428634..b9eb210c334 100644 --- a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py +++ b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py @@ -328,7 +328,7 @@ def _get_stored_pipette_offset_cal( def _get_tip_length(self) -> float: stored_tip_length_cal = self._get_stored_tip_length_cal() if stored_tip_length_cal is None or self._should_perform_tip_length: - tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) + tip_overlap = self._hw_pipette.tip_overlap tip_length = self._tip_rack.tip_length return tip_length - tip_overlap else: diff --git a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py index fec0fa42639..8e9bee66c55 100644 --- a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py +++ b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py @@ -200,8 +200,7 @@ async def save_offset(self): def _get_default_tip_length(self) -> float: tiprack: labware.Labware = self._deck[TIP_RACK_SLOT] # type: ignore full_length = tiprack.tip_length - overlap_dict: Dict[str, float] = self._hw_pipette.tip_overlap - overlap = overlap_dict.get(tiprack.uri, 0) + overlap = self._hw_pipette.tip_overlap return full_length - overlap @property diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index 6a75e680942..ad7124bd59b 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -273,5 +273,4 @@ def load_valid_nozzle_maps( raise KeyError("Pipette version not found.") physical_dict = _physical(channels, model, version) - return ValidNozzleMaps.parse_obj(physical_dict["validNozzleMaps"]) \ No newline at end of file From 350ebd002b977fcbbec87bd60f0033792aca44f4 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Fri, 17 May 2024 16:46:54 -0400 Subject: [PATCH 05/29] tip overlap by dict fix for v3_6 p1000 and engine updates to reflect arch change --- .../opentrons/hardware_control/dev_types.py | 2 +- .../instruments/ot2/pipette.py | 60 +++--- .../instruments/ot3/pipette.py | 42 +++-- .../resources/pipette_data_provider.py | 24 +-- .../protocol_engine/state/geometry.py | 5 +- .../protocol_engine/state/pipettes.py | 12 +- .../protocols/api_support/instrument.py | 5 +- .../general/ninety_six_channel/p1000/3_6.json | 177 +++++++++++------- .../2/general/single_channel/p1000/1_0.json | 28 ++- .../2/general/single_channel/p1000/1_3.json | 28 ++- .../2/general/single_channel/p1000/1_4.json | 28 ++- .../2/general/single_channel/p1000/1_5.json | 28 ++- .../2/general/single_channel/p1000/2_0.json | 28 ++- .../2/general/single_channel/p1000/2_1.json | 28 ++- .../2/general/single_channel/p1000/2_2.json | 28 ++- .../2/general/single_channel/p1000/3_0.json | 28 ++- .../2/general/single_channel/p1000/3_3.json | 28 ++- .../2/general/single_channel/p1000/3_4.json | 28 ++- .../2/general/single_channel/p1000/3_5.json | 28 ++- .../2/general/single_channel/p1000/3_6.json | 28 ++- .../2/general/single_channel/p300/1_0.json | 28 ++- .../2/general/single_channel/p300/1_3.json | 28 ++- .../2/general/single_channel/p300/1_4.json | 28 ++- .../2/general/single_channel/p300/1_5.json | 28 ++- .../2/general/single_channel/p300/2_0.json | 22 ++- .../2/general/single_channel/p300/2_1.json | 22 ++- .../2/general/single_channel/p50/1_0.json | 28 ++- .../2/general/single_channel/p50/1_3.json | 28 ++- .../2/general/single_channel/p50/1_4.json | 28 ++- .../2/general/single_channel/p50/1_5.json | 28 ++- .../schemas/2/pipettePropertiesSchema.json | 36 +++- .../pipette/pipette_definition.py | 6 +- 32 files changed, 657 insertions(+), 316 deletions(-) diff --git a/api/src/opentrons/hardware_control/dev_types.py b/api/src/opentrons/hardware_control/dev_types.py index c2547bb05df..6eb459fef0f 100644 --- a/api/src/opentrons/hardware_control/dev_types.py +++ b/api/src/opentrons/hardware_control/dev_types.py @@ -83,7 +83,7 @@ class PipetteDict(InstrumentDict): current_volume: float tip_length: float working_volume: float - tip_overlap: float + tip_overlap: Dict[str, float] available_volume: float return_tip_height: float default_aspirate_flow_rates: Dict[str, float] diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 168091dbf18..52522257387 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -154,7 +154,9 @@ def __init__( self._active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._tip_overlap_dictionary = ( + self.get_nominal_tip_overlap_dictionary_by_configuration() + ) if use_old_aspiration_functions: self._pipetting_function_version = PIPETTING_FUNCTION_FALLBACK_VERSION @@ -222,8 +224,8 @@ def pipette_offset(self) -> PipetteOffsetByPipetteMount: return self._pipette_offset @property - def tip_overlap(self) -> float: - return self._tip_overlap + def tip_overlap(self) -> Dict[str, float]: + return self._tip_overlap_dictionary @property def channels(self) -> pip_types.PipetteChannelType: @@ -296,7 +298,9 @@ def reset_state(self) -> None: self.active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._tip_overlap_dictionary = ( + self.get_nominal_tip_overlap_dictionary_by_configuration() + ) self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) @@ -552,9 +556,17 @@ def get_pick_up_speed_by_configuration( "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." ) - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].speed + try: + return config.configuration_by_nozzle_map[approved_map][ + pip_types.PipetteTipType(self._liquid_class.max_volume).name + ].speed + except KeyError: + default = config.configuration_by_nozzle_map[approved_map].get("default") + if default is not None: + return default.speed + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) def get_pick_up_distance_by_configuration( self, @@ -566,7 +578,7 @@ def get_pick_up_distance_by_configuration( return config.configuration_by_nozzle_map[approved_map][ pip_types.PipetteTipType(self._liquid_class.max_volume).name ].distance - except: + except KeyError: default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.distance @@ -584,7 +596,7 @@ def get_pick_up_current_by_configuration( return config.configuration_by_nozzle_map[approved_map][ pip_types.PipetteTipType(self._liquid_class.max_volume).name ].current - except: + except KeyError: default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.current @@ -592,9 +604,9 @@ def get_pick_up_current_by_configuration( f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." ) - def get_nominal_tip_overlap_by_configuration( + def get_nominal_tip_overlap_dictionary_by_configuration( self, - ) -> float: + ) -> Dict[str, float]: for config in ( self._config.pick_up_tip_configurations.press_fit, self._config.pick_up_tip_configurations.cam_action, @@ -606,18 +618,22 @@ def get_nominal_tip_overlap_by_configuration( try: return config.configuration_by_nozzle_map[approved_map][ pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].tip_overlap - except: - default = config.configuration_by_nozzle_map[approved_map].get( - "default" - ) - if default is not None: - return default.tip_overlap - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." - ) + ].tip_overlap_dictionary + except KeyError: + try: + default = config.configuration_by_nozzle_map[approved_map].get( + "default" + ) + if default is not None: + return default.tip_overlap_dictionary + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + ) + except KeyError: + # No valid key found for the approved nozzle map under this configuration - try the next + continue raise CommandPreconditionViolated( - message=f"No valid pick-up tip configuration found.", + message="No valid tip overlap dictionary identified.", ) # Cache max is chosen somewhat arbitrarily. With a float is input we don't diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 8a458985a0c..d0e0d520536 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -138,7 +138,9 @@ def __init__( ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._tip_overlap_dictionary = ( + self.get_nominal_tip_overlap_dictionary_by_configuration() + ) if use_old_aspiration_functions: self._pipetting_function_version = PIPETTING_FUNCTION_FALLBACK_VERSION @@ -166,8 +168,8 @@ def backlash_distance(self) -> float: return self._backlash_distance @property - def tip_overlap(self) -> float: - return self._tip_overlap + def tip_overlap(self) -> Dict[str, float]: + return self._tip_overlap_dictionary @property def nozzle_offset(self) -> Point: @@ -259,7 +261,9 @@ def reset_state(self) -> None: ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._tip_overlap_dictionary = ( + self.get_nominal_tip_overlap_dictionary_by_configuration() + ) self._nozzle_manager = ( nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) ) @@ -660,7 +664,9 @@ def set_tip_type(self, tip_type: pip_types.PipetteTipType) -> None: self._flow_acceleration = self._active_tip_settings.default_flow_acceleration self._fallback_tip_length = self._active_tip_settings.default_tip_length - self._tip_overlap = self.get_nominal_tip_overlap_by_configuration() + self._tip_overlap_dictionary = ( + self.get_nominal_tip_overlap_dictionary_by_configuration() + ) self._working_volume = min(tip_type.value, self.liquid_class.max_volume) def _get_matching_approved_nozzle_map(self) -> str: @@ -720,7 +726,7 @@ def get_pick_up_speed_by_configuration( return config.configuration_by_nozzle_map[approved_map][ self._active_tip_setting_name.name ].speed - except: + except KeyError: default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.speed @@ -738,10 +744,8 @@ def get_pick_up_distance_by_configuration( return config.configuration_by_nozzle_map[approved_map][ self._active_tip_setting_name.name ].distance - except: - default = config.configuration_by_nozzle_map[approved_map].get( - "default" - ) + except KeyError: + default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.distance raise KeyError( @@ -758,17 +762,15 @@ def get_pick_up_current_by_configuration( return config.configuration_by_nozzle_map[approved_map][ self._active_tip_setting_name.name ].current - except: - default = config.configuration_by_nozzle_map[approved_map].get( - "default" - ) + except KeyError: + default = config.configuration_by_nozzle_map[approved_map].get("default") if default is not None: return default.current raise KeyError( f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." ) - def get_nominal_tip_overlap_by_configuration(self) -> float: + def get_nominal_tip_overlap_dictionary_by_configuration(self) -> Dict[str, float]: for config in ( self._config.pick_up_tip_configurations.press_fit, self._config.pick_up_tip_configurations.cam_action, @@ -780,22 +782,22 @@ def get_nominal_tip_overlap_by_configuration(self) -> float: try: return config.configuration_by_nozzle_map[approved_map][ self._active_tip_setting_name.name - ].tip_overlap - except: + ].tip_overlap_dictionary + except KeyError: try: default = config.configuration_by_nozzle_map[approved_map].get( "default" ) if default is not None: - return default.tip_overlap + return default.tip_overlap_dictionary raise KeyError( f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." ) - except: + except KeyError: # No valid key found for the approved nozzle map under this configuration - try the next continue raise CommandPreconditionViolated( - message=f"No valid pick-up tip configuration found.", + message="No valid tip overlap dictionary identified.", ) diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index f24ea0878cf..6b322e2144e 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -36,7 +36,7 @@ class LoadedStaticPipetteData: tip_configuration_lookup_table: Dict[ float, pipette_definition.SupportedTipsDefinition ] - nominal_tip_overlap: float + nominal_tip_overlap: Dict[str, float] nozzle_map: NozzleMap back_left_corner_offset: Point front_right_corner_offset: Point @@ -127,7 +127,7 @@ def _get_virtual_pipette_full_config_by_model_string( pipette_model.pipette_version, ) - def _get_virtual_pipette_static_config_by_model( + def _get_virtual_pipette_static_config_by_model( # noqa: C901 self, pipette_model: pipette_definition.PipetteModelVersionType, pipette_id: str ) -> LoadedStaticPipetteData: if pipette_id not in self._liquid_class_by_id: @@ -157,7 +157,7 @@ def _get_virtual_pipette_static_config_by_model( ) nozzle_manager = NozzleConfigurationManager.build_from_config(config) - tip_overlap_for_tip_type = None + tip_overlap_dict_for_tip_type = None for configuration in ( config.pick_up_tip_configurations.press_fit, config.pick_up_tip_configurations.cam_action, @@ -178,23 +178,25 @@ def _get_virtual_pipette_static_config_by_model( if configuration is not None: try: - tip_overlap_for_tip_type = ( + tip_overlap_dict_for_tip_type = ( configuration.configuration_by_nozzle_map[approved_map][ tip_type.name - ].tip_overlap + ].tip_overlap_dictionary ) break - except: + except KeyError: try: default = configuration.configuration_by_nozzle_map[ approved_map ].get("default") if default is not None: - tip_overlap_for_tip_type = default.tip_overlap + tip_overlap_dict_for_tip_type = ( + default.tip_overlap_dictionary + ) break - except: - tip_overlap_for_tip_type = None - if tip_overlap_for_tip_type is None: + except KeyError: + tip_overlap_dict_for_tip_type = None + if tip_overlap_dict_for_tip_type is None: raise ValueError( "Virtual Static Nozzle Configuration does not have a valid pick up tip configuration." ) @@ -220,7 +222,7 @@ def _get_virtual_pipette_static_config_by_model( default_aspirate=tip_configuration.default_aspirate_flowrate.values_by_api_level, default_dispense=tip_configuration.default_dispense_flowrate.values_by_api_level, ), - nominal_tip_overlap=tip_overlap_for_tip_type, + nominal_tip_overlap=tip_overlap_dict_for_tip_type, nozzle_map=nozzle_manager.current_configuration, back_left_corner_offset=Point( pip_back_left[0], pip_back_left[1], pip_back_left[2] diff --git a/api/src/opentrons/protocol_engine/state/geometry.py b/api/src/opentrons/protocol_engine/state/geometry.py index 164d5ae80c7..112d7d60ef4 100644 --- a/api/src/opentrons/protocol_engine/state/geometry.py +++ b/api/src/opentrons/protocol_engine/state/geometry.py @@ -457,7 +457,10 @@ def get_nominal_effective_tip_length( tip overlaps with the pipette nozzle. This does not take calibrated tip lengths into account. """ - nominal_overlap = self._pipettes.get_nominal_tip_overlap(pipette_id=pipette_id) + labware_uri = self._labware.get_definition_uri(labware_id) + nominal_overlap = self._pipettes.get_nominal_tip_overlap( + pipette_id=pipette_id, labware_uri=labware_uri + ) return self._labware.get_tip_length( labware_id=labware_id, overlap=nominal_overlap diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index 99ac1fc7d49..6803d19272b 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -106,7 +106,7 @@ class StaticPipetteConfig: tip_configuration_lookup_table: Dict[ float, pipette_definition.SupportedTipsDefinition ] - nominal_tip_overlap: float + nominal_tip_overlap: Dict[str, float] home_position: float nozzle_offset_z: float pipette_bounding_box_offsets: PipetteBoundingBoxOffsets @@ -649,10 +649,14 @@ def get_flow_rates(self, pipette_id: str) -> FlowRates: f"Pipette {pipette_id} not found; unable to get pipette flow rates." ) from e - def get_nominal_tip_overlap(self, pipette_id: str) -> float: + def get_nominal_tip_overlap(self, pipette_id: str, labware_uri: str) -> float: """Get the nominal tip overlap for a given labware from config.""" - nominal_tip_overlap = self.get_config(pipette_id).nominal_tip_overlap - return nominal_tip_overlap + tip_overlaps_by_uri = self.get_config(pipette_id).nominal_tip_overlap + + try: + return tip_overlaps_by_uri[labware_uri] + except KeyError: + return tip_overlaps_by_uri.get("default", 0) def get_z_axis(self, pipette_id: str) -> MotorAxis: """Get the MotorAxis representing this pipette's Z stage.""" diff --git a/api/src/opentrons/protocols/api_support/instrument.py b/api/src/opentrons/protocols/api_support/instrument.py index 4bb93ed546b..d6d9613b1cf 100644 --- a/api/src/opentrons/protocols/api_support/instrument.py +++ b/api/src/opentrons/protocols/api_support/instrument.py @@ -64,7 +64,10 @@ def tip_length_for( pipette["pipette_id"], tip_rack_definition ).tip_length except TipLengthCalNotFound: - tip_overlap = pipette["tip_overlap"] + tip_overlap = pipette["tip_overlap"].get( + uri_from_definition(tip_rack_definition), + pipette["tip_overlap"]["default"], + ) tip_length = tip_rack_definition["parameters"]["tipLength"] return tip_length - tip_overlap diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index 11e55b0fe00..fca493659a5 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -3,40 +3,6 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", - "unvalidatedNozzleConfigurationValues":{ - "speedByTipCount": { - "4": 10.0, - "6": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0 - }, - "distanceByTipCount": { - "4": 13.0, - "6": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0 - }, - "currentByTipCount": { - "4": 0.35, - "6": 0.45, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38 - }, - "tipOverlapByTipCount": { - "4": 10.5, - "6": 10.5, - "8": 10.5, - "12": 10.5, - "16": 10.5, - "24": 10.5 - } - }, "validNozzleMaps": { "maps": { "A1": ["A1"], @@ -60,25 +26,36 @@ "speed": 10.0, "distance": 13.0, "current": 0.15, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "t1000": { "speed": 10.0, "distance": 13.0, "current": 0.15, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } }, "H1": { @@ -86,25 +63,36 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "1000": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } }, "A12": { @@ -112,25 +100,36 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "t1000": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } }, "H12": { @@ -138,25 +137,36 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "t1000": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } }, "Column1": { @@ -164,51 +174,73 @@ "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "t1000": { "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } }, "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5 + } + }, "t1000": { - "default": { - "speed": 10.0, - "distance": 13.0, - "current": 0.55, - "tipOverlap": 10.5 - }, "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 10.0, "distance": 13.0, "current": 0.55, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } } @@ -223,25 +255,36 @@ "speed": 5.5, "distance": 10.0, "current": 1.5, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5 + } }, "t1000": { "speed": 5.5, "distance": 10.0, "current": 1.5, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } }, "t200": { "speed": 5.5, "distance": 10.0, "current": 1.5, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } }, "t50": { "speed": 5.5, "distance": 10.0, "current": 1.5, - "tipOverlap": 10.5 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json index 8aba92f689d..8b69bb352dc 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN1", "model": "p1000", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 15.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json index d19e92fb573..50eab52e799 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN1", "model": "p1000", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 15.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json index d19e92fb573..50eab52e799 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN1", "model": "p1000", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 15.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 15.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json index 191ba9a0830..3dba137be5c 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN1", "model": "p1000", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 15.0 - }, - "currentByTipCount": { - "1": 0.15 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 15.0, + "current": 0.15, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 15.0, + "current": 0.15, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json index 59faa2e3a4f..741abc8c372 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN2", "model": "p1000", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 17.0 - }, - "currentByTipCount": { - "1": 0.17 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json index e9ac4ffda3d..a20eb827e16 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN2", "model": "p1000", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 17.0 - }, - "currentByTipCount": { - "1": 0.17 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json index e9ac4ffda3d..a20eb827e16 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json @@ -3,18 +3,30 @@ "displayName": "P1000 Single-Channel GEN2", "model": "p1000", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 17.0 - }, - "currentByTipCount": { - "1": 0.17 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 10.0, + "distance": 17.0, + "current": 0.17, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json index c84add80ed8..162707e6d65 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json @@ -3,18 +3,30 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 5.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.15 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.05 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json index c84add80ed8..162707e6d65 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json @@ -3,18 +3,30 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 5.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.15 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlap": 10.05 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json index 327d01afec9..2190ff6b2e1 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json @@ -3,18 +3,30 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.05 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json index 327d01afec9..2190ff6b2e1 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json @@ -3,18 +3,30 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.05 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json index 327d01afec9..2190ff6b2e1 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json @@ -3,18 +3,30 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.5 + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlap": 10.05 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json index 4952f0b706f..604bc8d3df9 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json @@ -3,18 +3,30 @@ "displayName": "P300 Single-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json index 84fd3b53724..a98c6ecb851 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json @@ -3,18 +3,30 @@ "displayName": "P300 Single-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json index 5e5b2c85cc7..cdedd2bd777 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json @@ -3,18 +3,30 @@ "displayName": "P300 Single-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json index 5e5b2c85cc7..cdedd2bd777 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json @@ -3,18 +3,30 @@ "displayName": "P300 Single-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json index 5c042350b12..45af54451bb 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json @@ -3,18 +3,24 @@ "displayName": "P300 Single-Channel GEN2", "model": "p300", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 17.0 - }, - "currentByTipCount": { - "1": 0.125 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 17.0, + "current": 0.125, + "tipOverlap": 8.2 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json index b0d4cea5f02..09c79e49caf 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json @@ -3,18 +3,24 @@ "displayName": "P300 Single-Channel GEN2", "model": "p300", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 17.0 - }, - "currentByTipCount": { - "1": 0.125 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 17.0, + "current": 0.125, + "tipOverlap": 8.2 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json index 31e26001f3c..6b7c11cffe7 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json @@ -3,18 +3,30 @@ "displayName": "P50 Single-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json index e1f2446ca35..3893bb2e700 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json @@ -3,18 +3,30 @@ "displayName": "P50 Single-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json index 155caa41adf..03f1352525f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json @@ -3,18 +3,30 @@ "displayName": "P50 Single-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json index 155caa41adf..03f1352525f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json @@ -3,18 +3,30 @@ "displayName": "P50 Single-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 7.47 + }, + "t200": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlap": 6.1 + } + } } } }, diff --git a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json index d7b0a55a86f..972893211d7 100644 --- a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json +++ b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json @@ -62,6 +62,17 @@ "patternProperties": { "\\d+": { "$ref": "#/definitions/currentRange" } } + }, + "configurationValues": { + + }, + "configurationsByNozzleMap": { + "type": "array", + "description": "Configurations for a given cam action or press fit regarding speed, distance, current and tip overlap.", + "items": { + "type": "configurationValues", + + } } }, "description": "Version-level pipette specifications, which may vary across different versions of the same pipette", @@ -190,22 +201,27 @@ "type": "object", "required": [ "presses", - "speedByTipCount", "increment", - "distanceByTipCount", - "currentByTipCount" + "configurationsByNozzleMap" + // NOW HERE WE INJECT THE NEW ARCH + // "speedByTipCount", + // "increment", + // "distanceByTipCount", + // "currentByTipCount" ], "additionalProperties": false, "properties": { "presses": { "$ref": "#/definitions/positiveNumber" }, - "speedByTipCount": { "$ref": "#/definitions/speedByTipCount" }, + //"speedByTipCount": { "$ref": "#/definitions/speedByTipCount" }, "increment": { "$ref": "#/definitions/positiveNumber" }, - "distanceByTipCount": { - "$ref": "#/definitions/distanceByTipCount" - }, - "currentByTipCount": { - "$ref": "#/definitions/currentByTipCount" - } + "configurationsByNozzleMap": { "$ref": "#/definitions/configurationsByNozzleMap"} + // ^make that configuration real + // "distanceByTipCount": { + // "$ref": "#/definitions/distanceByTipCount" + // }, + // "currentByTipCount": { + // "$ref": "#/definitions/currentByTipCount" + // } } } } diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index 41644d354d1..1c107bb6e1f 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -177,10 +177,10 @@ class PressAndCamConfigurationValues(BaseModel): ..., description="The current used by a given tip configuration by tip type.", ) - tip_overlap: float = Field( + tip_overlap_dictionary: Dict[str, float] = Field( ..., - description="The tip overlap of a given tip configuration.", - alias="tipOverlap", + description="The default tip overlap associated with this tip type by configuration.", + alias="tipOverlaps", ) From 45d2899e74c41a6eca07620d2acf5d87444a1cd1 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 20 May 2024 16:33:02 -0400 Subject: [PATCH 06/29] single channel definition updates --- .../2/general/single_channel/p10/1_0.json | 28 ++++++++++++----- .../2/general/single_channel/p10/1_3.json | 28 ++++++++++++----- .../2/general/single_channel/p10/1_4.json | 28 ++++++++++++----- .../2/general/single_channel/p10/1_5.json | 28 ++++++++++++----- .../2/general/single_channel/p1000/1_0.json | 14 ++++----- .../2/general/single_channel/p1000/1_3.json | 14 ++++----- .../2/general/single_channel/p1000/1_4.json | 14 ++++----- .../2/general/single_channel/p1000/1_5.json | 14 ++++----- .../2/general/single_channel/p1000/2_0.json | 13 ++++---- .../2/general/single_channel/p1000/2_1.json | 13 ++++---- .../2/general/single_channel/p1000/2_2.json | 13 ++++---- .../2/general/single_channel/p1000/3_0.json | 16 +++++----- .../2/general/single_channel/p1000/3_3.json | 16 +++++----- .../2/general/single_channel/p1000/3_4.json | 16 +++++----- .../2/general/single_channel/p1000/3_5.json | 16 +++++----- .../2/general/single_channel/p1000/3_6.json | 16 +++++----- .../2/general/single_channel/p20/2_0.json | 30 ++++++++++++++----- .../2/general/single_channel/p20/2_1.json | 30 ++++++++++++++----- .../2/general/single_channel/p20/2_2.json | 30 ++++++++++++++----- .../2/general/single_channel/p300/1_0.json | 13 ++++---- .../2/general/single_channel/p300/1_3.json | 13 ++++---- .../2/general/single_channel/p300/1_4.json | 13 ++++---- .../2/general/single_channel/p300/1_5.json | 13 ++++---- .../2/general/single_channel/p300/2_0.json | 6 +++- .../2/general/single_channel/p300/2_1.json | 6 +++- .../2/general/single_channel/p50/1_0.json | 13 ++++---- .../2/general/single_channel/p50/1_3.json | 13 ++++---- .../2/general/single_channel/p50/1_4.json | 13 ++++---- .../2/general/single_channel/p50/1_5.json | 13 ++++---- .../2/general/single_channel/p50/3_0.json | 26 +++++++++++----- .../2/general/single_channel/p50/3_3.json | 26 +++++++++++----- .../2/general/single_channel/p50/3_4.json | 26 +++++++++++----- .../2/general/single_channel/p50/3_5.json | 26 +++++++++++----- .../2/general/single_channel/p50/3_6.json | 26 +++++++++++----- 34 files changed, 385 insertions(+), 238 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json index 3471d7b9c8f..05bdae3387b 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json @@ -3,18 +3,30 @@ "displayName": "P10 Single-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json index 5d9190cd85f..702dfb9eddc 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json @@ -3,18 +3,30 @@ "displayName": "P10 Single-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json index 3d88e354b13..abd67aa79ea 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json @@ -3,18 +3,30 @@ "displayName": "P10 Single-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json index 3d88e354b13..abd67aa79ea 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json @@ -3,18 +3,30 @@ "displayName": "P10 Single-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json index 8b69bb352dc..defe73ac6f8 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json @@ -18,13 +18,13 @@ "speed": 30.0, "distance": 15.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 15.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json index 50eab52e799..5fb16c1c162 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json @@ -18,13 +18,13 @@ "speed": 30.0, "distance": 15.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 15.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json index 50eab52e799..5fb16c1c162 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json @@ -18,13 +18,13 @@ "speed": 30.0, "distance": 15.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 15.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json index 3dba137be5c..184d55801f1 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json @@ -18,13 +18,13 @@ "speed": 30.0, "distance": 15.0, "current": 0.15, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 15.0, - "current": 0.15, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json index 741abc8c372..cb2eb33f8de 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json @@ -18,13 +18,12 @@ "speed": 10.0, "distance": 17.0, "current": 0.17, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 10.0, - "distance": 17.0, - "current": 0.17, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json index a20eb827e16..9bd0a96b1ff 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json @@ -18,13 +18,12 @@ "speed": 10.0, "distance": 17.0, "current": 0.17, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 10.0, - "distance": 17.0, - "current": 0.17, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json index a20eb827e16..9bd0a96b1ff 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json @@ -18,13 +18,12 @@ "speed": 10.0, "distance": 17.0, "current": 0.17, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 10.0, - "distance": 17.0, - "current": 0.17, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json index 162707e6d65..4a7ea8b72aa 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json @@ -18,13 +18,15 @@ "speed": 5.0, "distance": 13.0, "current": 0.15, - "tipOverlap": 10.5 - }, - "t50": { - "speed": 5.0, - "distance": 13.0, - "current": 0.15, - "tipOverlap": 10.05 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json index 162707e6d65..4a7ea8b72aa 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json @@ -18,13 +18,15 @@ "speed": 5.0, "distance": 13.0, "current": 0.15, - "tipOverlap": 10.5 - }, - "t50": { - "speed": 5.0, - "distance": 13.0, - "current": 0.15, - "tipOverlap": 10.05 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json index 2190ff6b2e1..117771b2f26 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json @@ -18,13 +18,15 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 - }, - "t50": { - "speed": 10.0, - "distance": 13.0, - "current": 0.2, - "tipOverlap": 10.05 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json index 2190ff6b2e1..117771b2f26 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json @@ -18,13 +18,15 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 - }, - "t50": { - "speed": 10.0, - "distance": 13.0, - "current": 0.2, - "tipOverlap": 10.05 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json index 2190ff6b2e1..117771b2f26 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json @@ -18,13 +18,15 @@ "speed": 10.0, "distance": 13.0, "current": 0.2, - "tipOverlap": 10.5 - }, - "t50": { - "speed": 10.0, - "distance": 13.0, - "current": 0.2, - "tipOverlap": 10.05 + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json index 5b848afe0f5..c44392e18e1 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json @@ -3,18 +3,32 @@ "displayName": "P20 Single-Channel GEN2", "model": "p20", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 14.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 14.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json index 58f82399948..99ca05dc2f4 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json @@ -3,18 +3,32 @@ "displayName": "P20 Single-Channel GEN2", "model": "p20", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 14.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 14.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json index 58f82399948..99ca05dc2f4 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json @@ -3,18 +3,32 @@ "displayName": "P20 Single-Channel GEN2", "model": "p20", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 14.0 - }, - "currentByTipCount": { - "1": 0.1 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 14.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json index 604bc8d3df9..03cb867e1c8 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json index a98c6ecb851..86dcb14204f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json index cdedd2bd777..a0017dc3849 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json index cdedd2bd777..a0017dc3849 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json index 45af54451bb..de4c9b00b9c 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json @@ -18,7 +18,11 @@ "speed": 10.0, "distance": 17.0, "current": 0.125, - "tipOverlap": 8.2 + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json index 09c79e49caf..018e9011697 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json @@ -18,7 +18,11 @@ "speed": 10.0, "distance": 17.0, "current": 0.125, - "tipOverlap": 8.2 + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json index 6b7c11cffe7..ef287ebfd95 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json index 3893bb2e700..ca26ec4f82d 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json index 03f1352525f..c5179fbecd2 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json index 03f1352525f..c5179fbecd2 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json @@ -18,13 +18,12 @@ "speed": 30.0, "distance": 10.0, "current": 0.1, - "tipOverlap": 7.47 - }, - "t200": { - "speed": 30.0, - "distance": 10.0, - "current": 0.1, - "tipOverlap": 6.1 + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json index 1c9d02e7e0f..da5b05606f5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json @@ -3,18 +3,28 @@ "displayName": "Flex 1-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 5.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.15 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json index 1641adea42d..da5b05606f5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json @@ -3,18 +3,28 @@ "displayName": "Flex 1-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 5 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.15 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 5.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json index 1f29cbf71f1..6ad15d9c7ee 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json @@ -3,18 +3,28 @@ "displayName": "Flex 1-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json index 1f29cbf71f1..6ad15d9c7ee 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json @@ -3,18 +3,28 @@ "displayName": "Flex 1-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json index 1f29cbf71f1..6ad15d9c7ee 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json @@ -3,18 +3,28 @@ "displayName": "Flex 1-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, From d2d8b47e6aed57a87207f2f5419f34c0c5a3abf3 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 20 May 2024 17:39:25 -0400 Subject: [PATCH 07/29] ninety six channel definition updates --- .../general/ninety_six_channel/p1000/1_0.json | 380 ++++++++++++++--- .../general/ninety_six_channel/p1000/3_0.json | 380 ++++++++++++++--- .../general/ninety_six_channel/p1000/3_3.json | 380 ++++++++++++++--- .../general/ninety_six_channel/p1000/3_4.json | 381 +++++++++++++++--- .../general/ninety_six_channel/p1000/3_5.json | 380 ++++++++++++++--- .../general/ninety_six_channel/p1000/3_6.json | 37 +- 6 files changed, 1703 insertions(+), 235 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json index acbeb0d5eb8..3462a52544a 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json @@ -3,61 +3,351 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } }, "camAction": { "prep_move_distance": 9.0, "prep_move_speed": 10.0, - "speed": 5.5, - "distance": 10.0, "connectTiprackDistanceMM": 7.0, - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json index 439061fbf9e..7a58a432b2b 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json @@ -3,61 +3,351 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } }, "camAction": { - "speed": 5.5, - "distance": 10.0, "prep_move_distance": 9.0, "prep_move_speed": 10.0, "connectTiprackDistanceMM": 7.0, - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json index ce9eb5ec8db..78636490693 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json @@ -3,61 +3,351 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } }, "camAction": { - "speed": 5.5, - "distance": 10.0, "prep_move_distance": 9.0, "prep_move_speed": 10.0, "connectTiprackDistanceMM": 7.0, - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json index 10193ab1c72..e0700e859f8 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json @@ -3,62 +3,351 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } }, "camAction": { - "speed": 5.5, - "distance": 10.0, "prep_move_distance": 9.0, "prep_move_speed": 10.0, "connectTiprackDistanceMM": 7.0, - - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json index d68a15a0df1..e5313d6d442 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json @@ -3,61 +3,351 @@ "displayName": "Flex 96-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, "increment": 0.0, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0, - "12": 10.0, - "16": 10.0, - "24": 10.0, - "48": 10.0 - }, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0, - "12": 13.0, - "16": 13.0, - "24": 13.0, - "48": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.25, - "3": 0.3, - "4": 0.35, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - "12": 0.19, - "16": 0.25, - "24": 0.38, - "48": 0.75 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "A12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "H12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + }, + "Column12": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } }, "camAction": { - "speed": 5.5, - "distance": 10.0, "prep_move_distance": 8.25, "prep_move_speed": 10.0, "connectTiprackDistanceMM": 7.0, - "currentByTipCount": { - "96": 1.5 + "configurationsByNozzleMap": { + "Full": { + "default": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + }, + "t1000": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } + }, + "t200": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } + }, + "t50": { + "speed": 5.5, + "distance": 10.0, + "current": 1.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index fca493659a5..3048c29541c 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -11,8 +11,6 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "RowA": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12"], - "RowH": ["H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"], "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] } }, @@ -27,7 +25,10 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { @@ -64,7 +65,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "1000": { @@ -101,7 +105,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { @@ -138,7 +145,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { @@ -175,7 +185,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { @@ -212,7 +225,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { @@ -256,7 +272,10 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5 + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } }, "t1000": { From cf13f9ba245fc0eb8df8247bc0584e9cc8a57ce7 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 21 May 2024 10:43:05 -0400 Subject: [PATCH 08/29] eight channel v 1 0 upgrade --- .../2/general/eight_channel/p10/1_0.json | 154 ++++++++++++++---- 1 file changed, 125 insertions(+), 29 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json index 8c24542c6c0..1101a88f6bb 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json @@ -3,39 +3,135 @@ "displayName": "P10 8-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.1, - "3": 0.15, - "4": 0.2, - "5": 0.25, - "6": 0.3, - "7": 0.35, - "8": 0.4 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.2, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.25, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.35, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.4, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, From 4364c0853302f22663a5b5a5db78578d764e9eac Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 22 May 2024 15:20:03 -0400 Subject: [PATCH 09/29] eight channel pipette definition updates --- .../2/general/eight_channel/p10/1_3.json | 154 +++++++++++++--- .../2/general/eight_channel/p10/1_4.json | 154 +++++++++++++--- .../2/general/eight_channel/p10/1_5.json | 154 +++++++++++++--- .../2/general/eight_channel/p10/1_6.json | 154 +++++++++++++--- .../2/general/eight_channel/p1000/1_0.json | 146 ++++++++++++--- .../2/general/eight_channel/p1000/3_0.json | 170 +++++++++++++++--- .../2/general/eight_channel/p1000/3_3.json | 170 +++++++++++++++--- .../2/general/eight_channel/p1000/3_4.json | 170 +++++++++++++++--- .../2/general/eight_channel/p1000/3_5.json | 170 +++++++++++++++--- .../2/general/eight_channel/p20/2_0.json | 170 +++++++++++++++--- .../2/general/eight_channel/p20/2_1.json | 170 +++++++++++++++--- .../2/general/eight_channel/p300/1_0.json | 146 ++++++++++++--- .../2/general/eight_channel/p300/1_3.json | 146 ++++++++++++--- .../2/general/eight_channel/p300/1_4.json | 146 ++++++++++++--- .../2/general/eight_channel/p300/1_5.json | 146 ++++++++++++--- .../2/general/eight_channel/p300/2_0.json | 138 +++++++++++--- .../2/general/eight_channel/p300/2_1.json | 138 +++++++++++--- .../2/general/eight_channel/p50/1_0.json | 146 ++++++++++++--- .../2/general/eight_channel/p50/1_3.json | 146 ++++++++++++--- .../2/general/eight_channel/p50/1_4.json | 146 ++++++++++++--- .../2/general/eight_channel/p50/1_5.json | 146 ++++++++++++--- .../2/general/eight_channel/p50/3_0.json | 138 +++++++++++--- .../2/general/eight_channel/p50/3_3.json | 138 +++++++++++--- .../2/general/eight_channel/p50/3_4.json | 138 +++++++++++--- .../2/general/eight_channel/p50/3_5.json | 138 +++++++++++--- 25 files changed, 3053 insertions(+), 725 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json index 6f0fa466c48..1879ddd706b 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json @@ -3,39 +3,135 @@ "displayName": "P10 8-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.1, - "3": 0.15, - "4": 0.2, - "5": 0.25, - "6": 0.3, - "7": 0.35, - "8": 0.4 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.2, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.25, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.35, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.4, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json index 012aa496e1a..f8fc8ffa27a 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json @@ -3,39 +3,135 @@ "displayName": "P10 8-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.1, - "3": 0.15, - "4": 0.2, - "5": 0.25, - "6": 0.3, - "7": 0.35, - "8": 0.4 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.2, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.25, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.35, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.4, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json index 1bffbaa9c99..14c013d583f 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json @@ -3,39 +3,135 @@ "displayName": "P10 8-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 3.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.14, - "3": 0.21, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.14, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.21, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.28, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.34, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.41, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.48, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.55, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json index 1bffbaa9c99..14c013d583f 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json @@ -3,39 +3,135 @@ "displayName": "P10 8-Channel GEN1", "model": "p10", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 3.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.14, - "3": 0.21, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.14, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.21, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.28, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.34, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.41, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.48, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.55, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json index 64a5635a9ba..2e074336252 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json @@ -3,39 +3,127 @@ "displayName": "Flex 8-Channel 1000 uL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.15, - "2": 0.13, - "3": 0.19, - "4": 0.25, - "5": 0.31, - "6": 0.38, - "7": 0.44, - "8": 0.5 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.13, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.19, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.25, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.31, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.38, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.44, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json index 7370f0c95e6..ba4f2a8f3a4 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json @@ -3,39 +3,151 @@ "displayName": "Flex 8-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.15, - "2": 0.13, - "3": 0.19, - "4": 0.25, - "5": 0.31, - "6": 0.38, - "7": 0.44, - "8": 0.5 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.13, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.19, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.25, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.31, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.38, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.44, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json index 7370f0c95e6..ba4f2a8f3a4 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json @@ -3,39 +3,151 @@ "displayName": "Flex 8-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.15, - "2": 0.13, - "3": 0.19, - "4": 0.25, - "5": 0.31, - "6": 0.38, - "7": 0.44, - "8": 0.5 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.13, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.19, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.25, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.31, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.38, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.44, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json index 1ff8e5e541d..60d3e949771 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json @@ -3,39 +3,151 @@ "displayName": "Flex 8-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.14, - "3": 0.21, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.14, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.21, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.28, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.34, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.41, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.48, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json index 1ff8e5e541d..60d3e949771 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json @@ -3,39 +3,151 @@ "displayName": "Flex 8-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.14, - "3": 0.21, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.14, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.21, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.28, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.34, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.41, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.48, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json index c5de4c3dfea..ca6347fc984 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json @@ -3,39 +3,151 @@ "displayName": "P20 8-Channel GEN2", "model": "p20", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 11.0, - "2": 11.0, - "3": 11.0, - "4": 11.0, - "5": 11.0, - "6": 11.0, - "7": 11.0, - "8": 11.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.28, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.15, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.23, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.28, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.38, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.45, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.53, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.6, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json index c5de4c3dfea..e08d4a3934e 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json @@ -3,39 +3,151 @@ "displayName": "P20 8-Channel GEN2", "model": "p20", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 11.0, - "2": 11.0, - "3": 11.0, - "4": 11.0, - "5": 11.0, - "6": 11.0, - "7": 11.0, - "8": 11.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.28, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.15, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.23, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.28, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.38, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.45, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.53, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.6, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json index 62a07594ceb..783c3a103e2 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json @@ -3,39 +3,127 @@ "displayName": "P300 8-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json index 8cd85d92367..8e2b9a8a1e6 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json @@ -3,39 +3,127 @@ "displayName": "P300 8-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json index 8cd85d92367..a57db1685a5 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json @@ -3,39 +3,127 @@ "displayName": "P300 8-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json index f399118fa50..94b1afe4e6d 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json @@ -3,39 +3,127 @@ "displayName": "P300 8-Channel GEN1", "model": "p300", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 3.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.23, - "3": 0.34, - "4": 0.45, - "5": 0.56, - "6": 0.68, - "7": 0.79, - "8": 0.9 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.34, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.56, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.68, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.79, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.9, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json index 9d1a4a28cfe..3c8eba5c8c5 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json @@ -3,39 +3,119 @@ "displayName": "P300 8-Channel GEN2", "model": "p300", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 11.0, - "2": 11.0, - "3": 11.0, - "4": 11.0, - "5": 11.0, - "6": 11.0, - "7": 11.0, - "8": 11.0 - }, - "currentByTipCount": { - "1": 0.13, - "2": 0.2, - "3": 0.3, - "4": 0.4, - "5": 0.5, - "6": 0.6, - "7": 0.7, - "8": 0.8 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.13, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.2, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.3, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.4, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.5, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.6, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.7, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.8, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json index 9d1a4a28cfe..1a5846c2055 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json @@ -3,39 +3,119 @@ "displayName": "P300 8-Channel GEN2", "model": "p300", "displayCategory": "GEN2", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "presses": 1, "increment": 0.0, - "distanceByTipCount": { - "1": 11.0, - "2": 11.0, - "3": 11.0, - "4": 11.0, - "5": 11.0, - "6": 11.0, - "7": 11.0, - "8": 11.0 - }, - "currentByTipCount": { - "1": 0.13, - "2": 0.2, - "3": 0.3, - "4": 0.4, - "5": 0.5, - "6": 0.6, - "7": 0.7, - "8": 0.8 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.13, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.2, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.3, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.4, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.5, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.6, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.7, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.8, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json index 648e4a44f96..aa6c4684a9e 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json @@ -3,39 +3,127 @@ "displayName": "P50 8-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json index 7177ddbcb4b..4d1f7c36d41 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json @@ -3,39 +3,127 @@ "displayName": "P50 8-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json index 9197b2c57b6..54eb6956221 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json @@ -3,39 +3,127 @@ "displayName": "P50 8-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 1.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.15, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.23, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.38, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.45, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.53, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json index a1107144e8e..e88a61acc4e 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json @@ -3,39 +3,127 @@ "displayName": "P50 8-Channel GEN1", "model": "p50", "displayCategory": "GEN1", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { - "speedByTipCount": { - "1": 30.0, - "2": 30.0, - "3": 30.0, - "4": 30.0, - "5": 30.0, - "6": 30.0, - "7": 30.0, - "8": 30.0 - }, "presses": 3, "increment": 3.0, - "distanceByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, - "currentByTipCount": { - "1": 0.1, - "2": 0.2, - "3": 0.3, - "4": 0.4, - "5": 0.5, - "6": 0.6, - "7": 0.7, - "8": 0.8 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toB1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.2, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toC1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.3, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toD1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.4, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toE1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.5, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toF1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.6, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "A1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.7, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "Full": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.8, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json index 0d3d4d8d5a3..1e23efec6ce 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json @@ -3,39 +3,119 @@ "displayName": "Flex 8-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.15, - "2": 0.13, - "3": 0.19, - "4": 0.25, - "5": 0.31, - "6": 0.38, - "7": 0.44, - "8": 0.5 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.13, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.19, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.25, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.31, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.38, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.44, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json index 0d3d4d8d5a3..1e23efec6ce 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json @@ -3,39 +3,119 @@ "displayName": "Flex 8-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.15, - "2": 0.13, - "3": 0.19, - "4": 0.25, - "5": 0.31, - "6": 0.38, - "7": 0.44, - "8": 0.5 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.13, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.19, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.25, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.31, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.38, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.44, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json index 5cba86df8c3..a4758f34514 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json @@ -3,39 +3,119 @@ "displayName": "Flex 8-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.14, - "3": 0.2, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.14, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.28, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.34, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.41, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.48, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + } } } }, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json index 5cba86df8c3..a4758f34514 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json @@ -3,39 +3,119 @@ "displayName": "Flex 8-Channel 50 μL", "model": "p50", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "A1": ["A1"], + "A1toB1": ["A1", "B1"], + "A1toC1": ["A1", "B1", "C1"], + "A1toD1": ["A1", "B1", "C1", "D1"], + "A1toE1": ["A1", "B1", "C1", "D1", "E1"], + "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], + "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0, - "2": 10.0, - "3": 10.0, - "4": 10.0, - "5": 10.0, - "6": 10.0, - "7": 10.0, - "8": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0, - "2": 13.0, - "3": 13.0, - "4": 13.0, - "5": 13.0, - "6": 13.0, - "7": 13.0, - "8": 13.0 - }, - "currentByTipCount": { - "1": 0.2, - "2": 0.14, - "3": 0.2, - "4": 0.28, - "5": 0.34, - "6": 0.41, - "7": 0.48, - "8": 0.55 + "configurationsByNozzleMap": { + "A1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.14, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.28, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.34, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.41, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "A1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.48, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + } } } }, From 82478212cf2185446625079d21013ddeb8bb6d55 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 22 May 2024 17:51:01 -0400 Subject: [PATCH 10/29] test run with 8ch p50 and format fixes and error catching for configuration identification --- .../instruments/ot3/pipette.py | 66 +++++++++---- .../robot/calibration/check/user_flow.py | 4 +- .../robot/calibration/deck/user_flow.py | 2 +- .../calibration/pipette_offset/user_flow.py | 2 +- .../robot/calibration/tip_length/user_flow.py | 3 +- .../general/ninety_six_channel/p1000/1_0.json | 99 ++++++++++++++++++- .../general/ninety_six_channel/p1000/3_0.json | 99 ++++++++++++++++++- .../general/ninety_six_channel/p1000/3_3.json | 99 ++++++++++++++++++- .../general/ninety_six_channel/p1000/3_4.json | 99 ++++++++++++++++++- .../general/ninety_six_channel/p1000/3_5.json | 99 ++++++++++++++++++- .../general/ninety_six_channel/p1000/3_6.json | 99 ++++++++++++++++++- .../schemas/2/pipettePropertiesSchema.json | 36 ++----- .../pipette/load_data.py | 5 +- .../pipette/pipette_definition.py | 11 ++- .../pipette/scripts/build_json_script.py | 6 +- 15 files changed, 664 insertions(+), 65 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index d0e0d520536..070e856636c 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -689,28 +689,54 @@ def get_pick_up_configuration_for_tip_count( if not config: continue approved_map = self._get_matching_approved_nozzle_map() - - if isinstance(config, PressFitPickUpTipConfiguration) and all( - [ - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].speed, - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].distance, + try: + if isinstance(config, PressFitPickUpTipConfiguration) and all( + [ + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].speed, + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].distance, + config.configuration_by_nozzle_map[approved_map][ + self._active_tip_setting_name.name + ].current, + ] + ): + return config + elif ( config.configuration_by_nozzle_map[approved_map][ self._active_tip_setting_name.name - ].current, - ] - ): - return config - elif ( - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].current - is not None - ): - return config + ].current + is not None + ): + return config + except KeyError: + try: + if isinstance(config, PressFitPickUpTipConfiguration) and all( + [ + config.configuration_by_nozzle_map[approved_map] + .get("default") + .speed, + config.configuration_by_nozzle_map[approved_map] + .get("default") + .distance, + config.configuration_by_nozzle_map[approved_map] + .get("default") + .current, + ] + ): + return config + elif ( + config.configuration_by_nozzle_map[approved_map] + .get("default") + .current + is not None + ): + return config + except KeyError: + # No valid key found for the approved nozzle map under this configuration - try the next + continue raise CommandPreconditionViolated( message=f"No pick up tip configuration for {count} tips", diff --git a/robot-server/robot_server/robot/calibration/check/user_flow.py b/robot-server/robot_server/robot/calibration/check/user_flow.py index 1b5b39a70c2..1366c0054ed 100644 --- a/robot-server/robot_server/robot/calibration/check/user_flow.py +++ b/robot-server/robot_server/robot/calibration/check/user_flow.py @@ -851,7 +851,9 @@ def _get_tip_length(self) -> float: self.active_tiprack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self.hw_pipette.tip_overlap + tip_overlap = self.hw_pipette.tip_overlap.get( + self.active_tiprack.uri, self.hw_pipette.tip_overlap["default"] + ) tip_length = self.active_tiprack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/deck/user_flow.py b/robot-server/robot_server/robot/calibration/deck/user_flow.py index 469d0b5c577..55ed1351f84 100644 --- a/robot-server/robot_server/robot/calibration/deck/user_flow.py +++ b/robot-server/robot_server/robot/calibration/deck/user_flow.py @@ -365,7 +365,7 @@ def _get_tip_length(self) -> float: self._tip_rack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self._hw_pipette.tip_overlap + tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) tip_length = self._tip_rack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py index b9eb210c334..695e8428634 100644 --- a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py +++ b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py @@ -328,7 +328,7 @@ def _get_stored_pipette_offset_cal( def _get_tip_length(self) -> float: stored_tip_length_cal = self._get_stored_tip_length_cal() if stored_tip_length_cal is None or self._should_perform_tip_length: - tip_overlap = self._hw_pipette.tip_overlap + tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) tip_length = self._tip_rack.tip_length return tip_length - tip_overlap else: diff --git a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py index 8e9bee66c55..fec0fa42639 100644 --- a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py +++ b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py @@ -200,7 +200,8 @@ async def save_offset(self): def _get_default_tip_length(self) -> float: tiprack: labware.Labware = self._deck[TIP_RACK_SLOT] # type: ignore full_length = tiprack.tip_length - overlap = self._hw_pipette.tip_overlap + overlap_dict: Dict[str, float] = self._hw_pipette.tip_overlap + overlap = overlap_dict.get(tiprack.uri, 0) return full_length - overlap @property diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json index 3462a52544a..14cd980eec0 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json index 7a58a432b2b..a32ffa61703 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json index 78636490693..eb31305faf8 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json index e0700e859f8..0d9f9635cb0 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json index e5313d6d442..4375db649d4 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index 3048c29541c..05937cb14a4 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -11,7 +11,104 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "Full": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9", "G10", "G11", "G12", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"] + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json index 972893211d7..d7b0a55a86f 100644 --- a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json +++ b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json @@ -62,17 +62,6 @@ "patternProperties": { "\\d+": { "$ref": "#/definitions/currentRange" } } - }, - "configurationValues": { - - }, - "configurationsByNozzleMap": { - "type": "array", - "description": "Configurations for a given cam action or press fit regarding speed, distance, current and tip overlap.", - "items": { - "type": "configurationValues", - - } } }, "description": "Version-level pipette specifications, which may vary across different versions of the same pipette", @@ -201,27 +190,22 @@ "type": "object", "required": [ "presses", + "speedByTipCount", "increment", - "configurationsByNozzleMap" - // NOW HERE WE INJECT THE NEW ARCH - // "speedByTipCount", - // "increment", - // "distanceByTipCount", - // "currentByTipCount" + "distanceByTipCount", + "currentByTipCount" ], "additionalProperties": false, "properties": { "presses": { "$ref": "#/definitions/positiveNumber" }, - //"speedByTipCount": { "$ref": "#/definitions/speedByTipCount" }, + "speedByTipCount": { "$ref": "#/definitions/speedByTipCount" }, "increment": { "$ref": "#/definitions/positiveNumber" }, - "configurationsByNozzleMap": { "$ref": "#/definitions/configurationsByNozzleMap"} - // ^make that configuration real - // "distanceByTipCount": { - // "$ref": "#/definitions/distanceByTipCount" - // }, - // "currentByTipCount": { - // "$ref": "#/definitions/currentByTipCount" - // } + "distanceByTipCount": { + "$ref": "#/definitions/distanceByTipCount" + }, + "currentByTipCount": { + "$ref": "#/definitions/currentByTipCount" + } } } } diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index ad7124bd59b..7e0a13de3b7 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -261,6 +261,7 @@ def load_definition( } ) + def load_valid_nozzle_maps( model: PipetteModelType, channels: PipetteChannelType, @@ -271,6 +272,6 @@ def load_valid_nozzle_maps( or version.minor not in PipetteModelMinorVersion ): raise KeyError("Pipette version not found.") - + physical_dict = _physical(channels, model, version) - return ValidNozzleMaps.parse_obj(physical_dict["validNozzleMaps"]) \ No newline at end of file + return ValidNozzleMaps.parse_obj(physical_dict["validNozzleMaps"]) diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index 1c107bb6e1f..9c6de3db57e 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -158,12 +158,14 @@ class PlungerHomingConfigurations(BaseModel): description="The speed to move the plunger axis for homing.", ) + class ValidNozzleMaps(BaseModel): maps: Dict[str, List[str]] = Field( ..., description="Dictionary of predetermined nozzle maps for partial tip configurations.", ) + class PressAndCamConfigurationValues(BaseModel): speed: float = Field( ..., @@ -193,12 +195,15 @@ class PressFitPickUpTipConfiguration(BaseModel): ..., description="The increment to move the pipette down on each force tip pickup press", ) - configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( + configuration_by_nozzle_map: Dict[ + str, Dict[str, PressAndCamConfigurationValues] + ] = Field( ..., description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", alias="configurationsByNozzleMap", ) + class CamActionPickUpTipConfiguration(BaseModel): prep_move_distance: float = Field( ..., description="How far to move the cams to engage the rack" @@ -210,7 +215,9 @@ class CamActionPickUpTipConfiguration(BaseModel): description="The distance to move the head down to connect with the tiprack before clamping.", alias="connectTiprackDistanceMM", ) - configuration_by_nozzle_map: Dict[str, Dict[str, PressAndCamConfigurationValues]]= Field( + configuration_by_nozzle_map: Dict[ + str, Dict[str, PressAndCamConfigurationValues] + ] = Field( ..., description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", alias="configurationsByNozzleMap", diff --git a/shared-data/python/opentrons_shared_data/pipette/scripts/build_json_script.py b/shared-data/python/opentrons_shared_data/pipette/scripts/build_json_script.py index e9d0122ac17..594e7738aea 100644 --- a/shared-data/python/opentrons_shared_data/pipette/scripts/build_json_script.py +++ b/shared-data/python/opentrons_shared_data/pipette/scripts/build_json_script.py @@ -65,11 +65,7 @@ def _build_pickup_tip_data( ) return PickUpTipConfigurations( pressFit=PressFitPickUpTipConfiguration( - speedByTipCount={}, - presses=presses, - increment=increment, - distanceByTipCount={}, - currentByTipCount={}, + presses=presses, increment=increment, configurationsByNozzleMap={} ) ) From 939995fd13f62c7bb6c277a97eff4400141f5919 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Fri, 24 May 2024 15:48:39 -0400 Subject: [PATCH 11/29] relocate valid map key to nozzle map --- .../instruments/ot2/pipette.py | 82 +++++----- .../instruments/ot3/pipette.py | 144 +++++++----------- .../instruments/ot3/pipette_handler.py | 4 +- .../hardware_control/nozzle_manager.py | 27 +++- .../resources/pipette_data_provider.py | 23 ++- .../hardware_control/test_pipette_handler.py | 4 +- 6 files changed, 134 insertions(+), 150 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 52522257387..990dcd8579b 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -120,7 +120,9 @@ def __init__( ) self._nozzle_offset = self._config.nozzle_offset self._nozzle_manager = ( - nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) + nozzle_manager.NozzleConfigurationManager.build_from_config( + self._config, self._valid_nozzle_maps + ) ) self._current_volume = 0.0 self._working_volume = float(self._liquid_class.max_volume) @@ -303,7 +305,9 @@ def reset_state(self) -> None: ) self._nozzle_manager = ( - nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) + nozzle_manager.NozzleConfigurationManager.build_from_config( + self._config, self._valid_nozzle_maps + ) ) def reset_pipette_offset(self, mount: Mount, to_default: bool) -> None: @@ -531,77 +535,58 @@ def remove_tip(self) -> None: def has_tip(self) -> bool: return self._has_tip - def _get_matching_approved_nozzle_map(self) -> str: - for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == list( - self._nozzle_manager.current_configuration.map_store.keys() - ): - return map_key - raise ValueError( - "Nozzle Configuration does not match any approved map layout for the current pipette." - ) - def get_pick_up_speed_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = None - for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == list( - self._nozzle_manager.current_configuration.map_store.keys() - ): - approved_map = map_key - if approved_map is None: - raise ValueError( - "Pick up tip speed request error. Nozzle Configuration does not match any approved map layout for the current pipette." - ) - try: - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].speed + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].speed except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.speed raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_pick_up_distance_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = self._get_matching_approved_nozzle_map() - try: - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].distance + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].distance except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.distance raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_pick_up_current_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - approved_map = self._get_matching_approved_nozzle_map() - try: - return config.configuration_by_nozzle_map[approved_map][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].current + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].current except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.current raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_nominal_tip_overlap_dictionary_by_configuration( @@ -613,21 +598,22 @@ def get_nominal_tip_overlap_dictionary_by_configuration( ): if not config: continue - approved_map = self._get_matching_approved_nozzle_map() try: - return config.configuration_by_nozzle_map[approved_map][ + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][ pip_types.PipetteTipType(self._liquid_class.max_volume).name ].tip_overlap_dictionary except KeyError: try: - default = config.configuration_by_nozzle_map[approved_map].get( - "default" - ) + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.tip_overlap_dictionary raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) except KeyError: # No valid key found for the approved nozzle map under this configuration - try the next diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 070e856636c..bffbb29c864 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -103,7 +103,9 @@ def __init__( ) self._nozzle_offset = self._config.nozzle_offset self._nozzle_manager = ( - nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) + nozzle_manager.NozzleConfigurationManager.build_from_config( + self._config, self._valid_nozzle_maps + ) ) self._current_volume = 0.0 self._working_volume = float(self._liquid_class.max_volume) @@ -265,7 +267,9 @@ def reset_state(self) -> None: self.get_nominal_tip_overlap_dictionary_by_configuration() ) self._nozzle_manager = ( - nozzle_manager.NozzleConfigurationManager.build_from_config(self._config) + nozzle_manager.NozzleConfigurationManager.build_from_config( + self._config, self._valid_nozzle_maps + ) ) def reset_pipette_offset(self, mount: OT3Mount, to_default: bool) -> None: @@ -669,18 +673,8 @@ def set_tip_type(self, tip_type: pip_types.PipetteTipType) -> None: ) self._working_volume = min(tip_type.value, self.liquid_class.max_volume) - def _get_matching_approved_nozzle_map(self) -> str: - for map_key in self._valid_nozzle_maps.maps.keys(): - if self._valid_nozzle_maps.maps[map_key] == list( - self._nozzle_manager.current_configuration.map_store.keys() - ): - return map_key - raise ValueError( - "Nozzle Configuration does not match any approved map layout for the current pipette." - ) - - def get_pick_up_configuration_for_tip_count( - self, count: int + def get_pick_up_configuration( # noqa: C901 + self, ) -> Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration]: for config in ( self._config.pick_up_tip_configurations.press_fit, @@ -688,112 +682,91 @@ def get_pick_up_configuration_for_tip_count( ): if not config: continue - approved_map = self._get_matching_approved_nozzle_map() + config_values = None try: + config_values = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][self._active_tip_setting_name.name] + except KeyError: + try: + config_values = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") + if config_values is None: + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." + ) + except KeyError: + # No valid key found for the approved nozzle map under this configuration - try the next + continue + if config_values is not None: if isinstance(config, PressFitPickUpTipConfiguration) and all( [ - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].speed, - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].distance, - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].current, + config_values.speed, + config_values.distance, + config_values.current, ] ): return config - elif ( - config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].current - is not None - ): + elif config_values.current is not None: return config - except KeyError: - try: - if isinstance(config, PressFitPickUpTipConfiguration) and all( - [ - config.configuration_by_nozzle_map[approved_map] - .get("default") - .speed, - config.configuration_by_nozzle_map[approved_map] - .get("default") - .distance, - config.configuration_by_nozzle_map[approved_map] - .get("default") - .current, - ] - ): - return config - elif ( - config.configuration_by_nozzle_map[approved_map] - .get("default") - .current - is not None - ): - return config - except KeyError: - # No valid key found for the approved nozzle map under this configuration - try the next - continue raise CommandPreconditionViolated( - message=f"No pick up tip configuration for {count} tips", + message="No valid pick up tip configuration values found in instrument definition.", ) def get_pick_up_speed_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = self._get_matching_approved_nozzle_map() - try: - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].speed + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][self._active_tip_setting_name.name].speed except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.speed raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_pick_up_distance_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = self._get_matching_approved_nozzle_map() - try: - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].distance + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][self._active_tip_setting_name.name].distance except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.distance raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_pick_up_current_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - approved_map = self._get_matching_approved_nozzle_map() - try: - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].current + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][self._active_tip_setting_name.name].current except KeyError: - default = config.configuration_by_nozzle_map[approved_map].get("default") + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.current raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) def get_nominal_tip_overlap_dictionary_by_configuration(self) -> Dict[str, float]: @@ -803,21 +776,20 @@ def get_nominal_tip_overlap_dictionary_by_configuration(self) -> Dict[str, float ): if not config: continue - approved_map = self._get_matching_approved_nozzle_map() try: - return config.configuration_by_nozzle_map[approved_map][ - self._active_tip_setting_name.name - ].tip_overlap_dictionary + return config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ][self._active_tip_setting_name.name].tip_overlap_dictionary except KeyError: try: - default = config.configuration_by_nozzle_map[approved_map].get( - "default" - ) + default = config.configuration_by_nozzle_map[ + self._nozzle_manager.current_configuration.valid_map_key + ].get("default") if default is not None: return default.tip_overlap_dictionary raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {approved_map}." + f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." ) except KeyError: # No valid key found for the approved nozzle map under this configuration - try the next diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py index 601a8cf7ea0..8133eb081c9 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py @@ -747,7 +747,7 @@ def plan_ht_pick_up_tip(self, tip_count: int) -> TipActionSpec: raise UnexpectedTipAttachError("pick_up_tip", instrument.name, mount.name) self._ihp_log.debug(f"Picking up tip on {mount.name}") - pick_up_config = instrument.get_pick_up_configuration_for_tip_count(tip_count) + pick_up_config = instrument.get_pick_up_configuration() if not isinstance(pick_up_config, CamActionPickUpTipConfiguration): raise CommandPreconditionViolated( f"Low-throughput pick up tip got wrong config for {instrument.name} on {mount.name}" @@ -788,7 +788,7 @@ def plan_lt_pick_up_tip( raise UnexpectedTipAttachError("pick_up_tip", instrument.name, mount.name) self._ihp_log.debug(f"Picking up tip on {mount.name}") - pick_up_config = instrument.get_pick_up_configuration_for_tip_count(tip_count) + pick_up_config = instrument.get_pick_up_configuration() if not isinstance(pick_up_config, PressFitPickUpTipConfiguration): raise CommandPreconditionViolated( f"Low-throughput pick up tip got wrong config for {instrument.name} on {mount.name}" diff --git a/api/src/opentrons/hardware_control/nozzle_manager.py b/api/src/opentrons/hardware_control/nozzle_manager.py index a25e5e57319..edea61165ec 100644 --- a/api/src/opentrons/hardware_control/nozzle_manager.py +++ b/api/src/opentrons/hardware_control/nozzle_manager.py @@ -9,6 +9,7 @@ from opentrons_shared_data.pipette.pipette_definition import ( PipetteGeometryDefinition, PipetteRowDefinition, + ValidNozzleMaps, ) from opentrons_shared_data.errors import ErrorCodes, GeneralError, PythonException @@ -98,6 +99,8 @@ class NozzleMap: # evaluate them to generate serdes code so please only use ordered dicts here map_store: Dict[str, Point] #: A map of all of the nozzles active in this configuration + valid_map_key: str + #: A key indicating which valid nozzle map from the pipette definition represents this configuration rows: Dict[str, List[str]] #: A map of all the rows active in this configuration columns: Dict[str, List[str]] @@ -222,6 +225,7 @@ def build( starting_nozzle: str, back_left_nozzle: str, front_right_nozzle: str, + valid_nozzle_maps: ValidNozzleMaps, ) -> "NozzleMap": try: back_left_row_index, back_left_column_index = _row_col_indices_for_nozzle( @@ -280,9 +284,20 @@ def build( f"Partial Nozzle Layouts may not be configured to contain more than {MAXIMUM_NOZZLE_COUNT} channels." ) + validated_map_key = None + for map_key in valid_nozzle_maps.maps.keys(): + if valid_nozzle_maps.maps[map_key] == list(map_store.keys()): + validated_map_key = map_key + break + if validated_map_key is None: + raise IncompatibleNozzleConfiguration( + "Attempted Nozzle Configuration does not match any approved map layout for the current pipette." + ) + return cls( starting_nozzle=starting_nozzle, map_store=map_store, + valid_map_key=validated_map_key, rows=rows, full_instrument_map_store=physical_nozzles, full_instrument_rows=physical_rows, @@ -313,15 +328,17 @@ def __init__( class NozzleConfigurationManager: def __init__( - self, - nozzle_map: NozzleMap, + self, nozzle_map: NozzleMap, valid_nozzle_maps: ValidNozzleMaps ) -> None: self._physical_nozzle_map = nozzle_map self._current_nozzle_configuration = nozzle_map + self._valid_nozzle_maps = valid_nozzle_maps @classmethod def build_from_config( - cls, pipette_geometry: PipetteGeometryDefinition + cls, + pipette_geometry: PipetteGeometryDefinition, + valid_nozzle_maps: ValidNozzleMaps, ) -> "NozzleConfigurationManager": sorted_nozzle_map = OrderedDict( ( @@ -346,8 +363,9 @@ def build_from_config( starting_nozzle=back_left, back_left_nozzle=back_left, front_right_nozzle=front_right, + valid_nozzle_maps=valid_nozzle_maps, ) - return cls(starting_nozzle_config) + return cls(starting_nozzle_config, valid_nozzle_maps) @property def starting_nozzle_offset(self) -> Point: @@ -380,6 +398,7 @@ def update_nozzle_configuration( starting_nozzle=starting_nozzle or back_left_nozzle, back_left_nozzle=back_left_nozzle, front_right_nozzle=front_right_nozzle, + valid_nozzle_maps=self._valid_nozzle_maps, ) def get_tip_count(self) -> int: diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index 6b322e2144e..b237cdc412e 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -10,7 +10,6 @@ pipette_definition, ) - from opentrons.hardware_control.dev_types import PipetteDict from opentrons.hardware_control.nozzle_manager import ( NozzleConfigurationManager, @@ -63,7 +62,15 @@ def configure_virtual_pipette_nozzle_layout( config = self._get_virtual_pipette_full_config_by_model_string( pipette_model_string ) - new_nozzle_manager = NozzleConfigurationManager.build_from_config(config) + + valid_nozzle_maps = load_pipette_data.load_valid_nozzle_maps( + config.pipette_type, + config.channels, + config.version, + ) + new_nozzle_manager = NozzleConfigurationManager.build_from_config( + config, valid_nozzle_maps + ) if back_left_nozzle and front_right_nozzle: new_nozzle_manager.update_nozzle_configuration( back_left_nozzle, front_right_nozzle, starting_nozzle @@ -155,7 +162,9 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 pipette_model.pipette_channels, pipette_model.pipette_version, ) - nozzle_manager = NozzleConfigurationManager.build_from_config(config) + nozzle_manager = NozzleConfigurationManager.build_from_config( + config, valid_nozzle_maps + ) tip_overlap_dict_for_tip_type = None for configuration in ( @@ -179,15 +188,15 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 if configuration is not None: try: tip_overlap_dict_for_tip_type = ( - configuration.configuration_by_nozzle_map[approved_map][ - tip_type.name - ].tip_overlap_dictionary + configuration.configuration_by_nozzle_map[ + nozzle_manager.current_configuration.valid_map_key + ][tip_type.name].tip_overlap_dictionary ) break except KeyError: try: default = configuration.configuration_by_nozzle_map[ - approved_map + nozzle_manager.current_configuration.valid_map_key ].get("default") if default is not None: tip_overlap_dict_for_tip_type = ( diff --git a/api/tests/opentrons/hardware_control/test_pipette_handler.py b/api/tests/opentrons/hardware_control/test_pipette_handler.py index 1134a09b807..7080b14ef06 100644 --- a/api/tests/opentrons/hardware_control/test_pipette_handler.py +++ b/api/tests/opentrons/hardware_control/test_pipette_handler.py @@ -160,9 +160,7 @@ def test_plan_check_pick_up_tip_with_presses_argument_ot3( increment = 1 decoy.when(mock_pipette_ot3.has_tip).then_return(False) - decoy.when( - mock_pipette_ot3.get_pick_up_configuration_for_tip_count(channels) - ).then_return( + decoy.when(mock_pipette_ot3.get_pick_up_configuration()).then_return( CamActionPickUpTipConfiguration( distance=10, speed=5.5, From a21f59246a3484fbec8c6dc23dacb2757fa7525a Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 28 May 2024 17:42:24 -0400 Subject: [PATCH 12/29] linting fixes test corrections and remove impossible nozzle configuration tests --- .../hardware_control/nozzle_manager.py | 2 +- .../instruments/test_nozzle_manager.py | 437 ++++++++++++------ .../hardware_control/test_pipette_handler.py | 24 +- .../protocol_api/test_instrument_context.py | 2 + .../commands/test_configure_nozzle_layout.py | 8 + .../protocol_engine/pipette_fixtures.py | 21 + .../state/test_pipette_view.py | 24 + .../protocol_engine/state/test_tip_state.py | 75 +++ .../general/ninety_six_channel/p1000/3_6.json | 28 ++ 9 files changed, 481 insertions(+), 140 deletions(-) diff --git a/api/src/opentrons/hardware_control/nozzle_manager.py b/api/src/opentrons/hardware_control/nozzle_manager.py index edea61165ec..bf42476f7ee 100644 --- a/api/src/opentrons/hardware_control/nozzle_manager.py +++ b/api/src/opentrons/hardware_control/nozzle_manager.py @@ -217,7 +217,7 @@ def tip_count(self) -> int: return len(self.map_store) @classmethod - def build( + def build( # noqa: C901 cls, physical_nozzles: "OrderedDict[str, Point]", physical_rows: "OrderedDict[str, List[str]]", diff --git a/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py b/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py index bd521a6e8a2..430d2f63686 100644 --- a/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py +++ b/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py @@ -11,7 +11,240 @@ PipetteChannelType, PipetteVersionType, ) -from opentrons_shared_data.pipette.pipette_definition import PipetteConfigurations +from opentrons_shared_data.pipette.pipette_definition import ( + PipetteConfigurations, + ValidNozzleMaps, +) +from tests.opentrons.protocol_engine.pipette_fixtures import ( + NINETY_SIX_ROWS, + NINETY_SIX_COLS, + EIGHT_CHANNEL_COLS, +) + +# Ninety six channel valid nozzle maps +NINETY_SIX_FULL: Dict[str, List[str]] = { + "Full": sum( + [ + NINETY_SIX_ROWS["A"], + NINETY_SIX_ROWS["B"], + NINETY_SIX_ROWS["C"], + NINETY_SIX_ROWS["D"], + NINETY_SIX_ROWS["E"], + NINETY_SIX_ROWS["F"], + NINETY_SIX_ROWS["G"], + NINETY_SIX_ROWS["H"], + ], + [], + ) +} +NINETY_SIX_COL_1: Dict[str, List[str]] = {"Column1": NINETY_SIX_COLS["1"]} +NINETY_SIX_COL_12: Dict[str, List[str]] = {"Column12": NINETY_SIX_COLS["12"]} +NINETY_SIX_ROW_A: Dict[str, List[str]] = {"RowA": NINETY_SIX_ROWS["A"]} +NINETY_SIX_ROW_H: Dict[str, List[str]] = {"RowH": NINETY_SIX_ROWS["H"]} + +A1_D6: Dict[str, List[str]] = { + "A1_D6": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + ] +} +E7_H12: Dict[str, List[str]] = { + "E7_H12": [ + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12", + ] +} +E1_H6: Dict[str, List[str]] = { + "E1_H6": [ + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + ] +} +A1_B12: Dict[str, List[str]] = { + "A1_B12": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + ] +} +G1_H12: Dict[str, List[str]] = { + "G1_H12": [ + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12", + ] +} +A1_H3: Dict[str, List[str]] = { + "A1_H3": [ + "A1", + "A2", + "A3", + "B1", + "B2", + "B3", + "C1", + "C2", + "C3", + "D1", + "D2", + "D3", + "E1", + "E2", + "E3", + "F1", + "F2", + "F3", + "G1", + "G2", + "G3", + "H1", + "H2", + "H3", + ] +} +A10_H12: Dict[str, List[str]] = { + "A10_H12": [ + "A10", + "A11", + "A12", + "B10", + "B11", + "B12", + "C10", + "C11", + "C12", + "D10", + "D11", + "D12", + "E10", + "E11", + "E12", + "F10", + "F11", + "F12", + "G10", + "G11", + "G12", + "H10", + "H11", + "H12", + ] +} + +# Eight channel valid nozzle maps +EIGHT_CHANNEL_FULL: Dict[str, List[str]] = {"Full": EIGHT_CHANNEL_COLS["1"]} +A1_D1: Dict[str, List[str]] = {"A1_D1": ["A1", "B1", "C1", "D1"]} +E1_H1: Dict[str, List[str]] = {"E1_H1": ["E1", "F1", "G1", "H1"]} +A1: Dict[str, List[str]] = {"A1": ["A1"]} +H1: Dict[str, List[str]] = {"H1": ["H1"]} @pytest.mark.parametrize( @@ -30,7 +263,9 @@ def test_single_pipettes_always_full( config = load_definition( pipette_details[0], PipetteChannelType.SINGLE_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, ValidNozzleMaps(maps=A1) + ) assert ( subject.current_configuration.configuration == nozzle_manager.NozzleConfigurationType.FULL @@ -65,7 +300,9 @@ def test_single_pipette_map_entries( config = load_definition( pipette_details[0], PipetteChannelType.SINGLE_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, ValidNozzleMaps(maps=A1) + ) def test_map_entries(nozzlemap: nozzle_manager.NozzleMap) -> None: assert nozzlemap.back_left == "A1" @@ -100,7 +337,9 @@ def test_single_pipette_map_geometry( config = load_definition( pipette_details[0], PipetteChannelType.SINGLE_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, ValidNozzleMaps(maps=A1) + ) def test_map_geometry(nozzlemap: nozzle_manager.NozzleMap) -> None: assert nozzlemap.xy_center_offset == Point(*config.nozzle_map["A1"]) @@ -131,7 +370,10 @@ def test_multi_config_identification( config = load_definition( pipette_details[0], PipetteChannelType.EIGHT_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps(maps=EIGHT_CHANNEL_FULL | A1_D1 | A1 | H1), + ) assert ( subject.current_configuration.configuration @@ -177,15 +419,6 @@ def test_multi_config_identification( == nozzle_manager.NozzleConfigurationType.SINGLE ) - subject.update_nozzle_configuration("C1", "F1", "C1") - assert ( - cast( - nozzle_manager.NozzleConfigurationType, - subject.current_configuration.configuration, - ) - == nozzle_manager.NozzleConfigurationType.COLUMN - ) - subject.reset_to_default_configuration() assert ( subject.current_configuration.configuration @@ -209,7 +442,10 @@ def test_multi_config_map_entries( config = load_definition( pipette_details[0], PipetteChannelType.EIGHT_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps(maps=EIGHT_CHANNEL_FULL | A1_D1 | A1 | H1), + ) def test_map_entries( nozzlemap: nozzle_manager.NozzleMap, nozzles: List[str] @@ -238,8 +474,6 @@ def test_map_entries( test_map_entries(subject.current_configuration, ["A1"]) subject.update_nozzle_configuration("H1", "H1", "H1") test_map_entries(subject.current_configuration, ["H1"]) - subject.update_nozzle_configuration("C1", "F1", "C1") - test_map_entries(subject.current_configuration, ["C1", "D1", "E1", "F1"]) def assert_offset_in_center_of( @@ -274,7 +508,10 @@ def test_multi_config_geometry( config = load_definition( pipette_details[0], PipetteChannelType.EIGHT_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps(maps=EIGHT_CHANNEL_FULL | A1_D1 | E1_H1 | A1 | H1), + ) def test_map_geometry( nozzlemap: nozzle_manager.NozzleMap, @@ -302,12 +539,6 @@ def test_map_geometry( subject.update_nozzle_configuration("A1", "A1", "A1") test_map_geometry(subject.current_configuration, "A1", "A1", "A1", "A1") - subject.update_nozzle_configuration("D1", "D1", "D1") - test_map_geometry(subject.current_configuration, "D1", "D1", "D1", "D1") - - subject.update_nozzle_configuration("C1", "G1", "C1") - test_map_geometry(subject.current_configuration, "G1", "C1", "E1", "E1") - subject.update_nozzle_configuration("E1", "H1", "E1") test_map_geometry( subject.current_configuration, "H1", "E1", ("E1", "H1"), ("E1", "H1") @@ -328,7 +559,23 @@ def test_96_config_identification( config = load_definition( pipette_details[0], PipetteChannelType.NINETY_SIX_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps( + maps=NINETY_SIX_FULL + | NINETY_SIX_COL_1 + | NINETY_SIX_COL_12 + | NINETY_SIX_ROW_A + | NINETY_SIX_ROW_H + | A1_D6 + | E7_H12 + | E1_H6 + | A1_B12 + | G1_H12 + | A1_H3 + | A10_H12 + ), + ) assert ( subject.current_configuration.configuration @@ -355,14 +602,6 @@ def test_96_config_identification( ) == nozzle_manager.NozzleConfigurationType.COLUMN ) - subject.update_nozzle_configuration("A8", "H8") - assert ( - cast( - nozzle_manager.NozzleConfigurationType, - subject.current_configuration.configuration, - ) - == nozzle_manager.NozzleConfigurationType.COLUMN - ) subject.update_nozzle_configuration("A1", "A12") assert ( @@ -380,14 +619,6 @@ def test_96_config_identification( ) == nozzle_manager.NozzleConfigurationType.ROW ) - subject.update_nozzle_configuration("D1", "D12") - assert ( - cast( - nozzle_manager.NozzleConfigurationType, - subject.current_configuration.configuration, - ) - == nozzle_manager.NozzleConfigurationType.ROW - ) subject.update_nozzle_configuration("E1", "H6") assert ( @@ -406,14 +637,6 @@ def test_96_config_identification( == nozzle_manager.NozzleConfigurationType.SUBRECT ) - subject.update_nozzle_configuration("C4", "F9") - assert ( - cast( - nozzle_manager.NozzleConfigurationType, - subject.current_configuration.configuration, - ) - == nozzle_manager.NozzleConfigurationType.SUBRECT - ) subject.update_nozzle_configuration("A1", "B12") assert ( cast( @@ -457,7 +680,23 @@ def test_96_config_map_entries( config = load_definition( pipette_details[0], PipetteChannelType.NINETY_SIX_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps( + maps=NINETY_SIX_FULL + | NINETY_SIX_COL_1 + | NINETY_SIX_COL_12 + | NINETY_SIX_ROW_A + | NINETY_SIX_ROW_H + | A1_D6 + | E7_H12 + | E1_H6 + | A1_B12 + | G1_H12 + | A1_H3 + | A10_H12 + ), + ) def test_map_entries( nozzlemap: nozzle_manager.NozzleMap, @@ -641,21 +880,6 @@ def _nozzles() -> Iterator[str]: {"12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"]}, ) - subject.update_nozzle_configuration("A8", "H8") - test_map_entries( - subject.current_configuration, - { - "A": ["A8"], - "B": ["B8"], - "C": ["C8"], - "D": ["D8"], - "E": ["E8"], - "F": ["F8"], - "G": ["G8"], - "H": ["H8"], - }, - {"8": ["A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8"]}, - ) subject.update_nozzle_configuration("A1", "A12") test_map_entries( @@ -726,40 +950,7 @@ def _nozzles() -> Iterator[str]: "12": ["H12"], }, ) - subject.update_nozzle_configuration("D1", "D12") - test_map_entries( - subject.current_configuration, - { - "D": [ - "D1", - "D2", - "D3", - "D4", - "D5", - "D6", - "D7", - "D8", - "D9", - "D10", - "D11", - "D12", - ] - }, - { - "1": ["D1"], - "2": ["D2"], - "3": ["D3"], - "4": ["D4"], - "5": ["D5"], - "6": ["D6"], - "7": ["D7"], - "8": ["D8"], - "9": ["D9"], - "10": ["D10"], - "11": ["D11"], - "12": ["D12"], - }, - ) + subject.update_nozzle_configuration("A1", "D6") test_map_entries( @@ -780,24 +971,6 @@ def _nozzles() -> Iterator[str]: }, ) - subject.update_nozzle_configuration("A7", "D12") - test_map_entries( - subject.current_configuration, - { - "A": ["A7", "A8", "A9", "A10", "A11", "A12"], - "B": ["B7", "B8", "B9", "B10", "B11", "B12"], - "C": ["C7", "C8", "C9", "C10", "C11", "C12"], - "D": ["D7", "D8", "D9", "D10", "D11", "D12"], - }, - { - "7": ["A7", "B7", "C7", "D7"], - "8": ["A8", "B8", "C8", "D8"], - "9": ["A9", "B9", "C9", "D9"], - "10": ["A10", "B10", "C10", "D10"], - "11": ["A11", "B11", "C11", "D11"], - "12": ["A12", "B12", "C12", "D12"], - }, - ) subject.update_nozzle_configuration("E1", "H6") test_map_entries( @@ -837,13 +1010,6 @@ def _nozzles() -> Iterator[str]: }, ) - subject.update_nozzle_configuration("C4", "D5") - test_map_entries( - subject.current_configuration, - {"C": ["C4", "C5"], "D": ["D4", "D5"]}, - {"4": ["C4", "D4"], "5": ["C5", "D5"]}, - ) - @pytest.mark.parametrize( "pipette_details", [(PipetteModelType.p1000, PipetteVersionType(major=3, minor=5))] @@ -854,7 +1020,23 @@ def test_96_config_geometry( config = load_definition( pipette_details[0], PipetteChannelType.NINETY_SIX_CHANNEL, pipette_details[1] ) - subject = nozzle_manager.NozzleConfigurationManager.build_from_config(config) + subject = nozzle_manager.NozzleConfigurationManager.build_from_config( + config, + ValidNozzleMaps( + maps=NINETY_SIX_FULL + | NINETY_SIX_COL_1 + | NINETY_SIX_COL_12 + | NINETY_SIX_ROW_A + | NINETY_SIX_ROW_H + | A1_D6 + | E7_H12 + | E1_H6 + | A1_B12 + | G1_H12 + | A1_H3 + | A10_H12 + ), + ) def test_map_geometry( config: PipetteConfigurations, @@ -912,8 +1094,3 @@ def test_map_geometry( test_map_geometry( config, subject.current_configuration, "E7", "H7", ("E7", "H12"), ("E7", "H7") ) - - subject.update_nozzle_configuration("C4", "D5") - test_map_geometry( - config, subject.current_configuration, "C4", "D4", ("C4", "D5"), ("C4", "D4") - ) diff --git a/api/tests/opentrons/hardware_control/test_pipette_handler.py b/api/tests/opentrons/hardware_control/test_pipette_handler.py index 7080b14ef06..cb339620522 100644 --- a/api/tests/opentrons/hardware_control/test_pipette_handler.py +++ b/api/tests/opentrons/hardware_control/test_pipette_handler.py @@ -19,6 +19,7 @@ from opentrons_shared_data.pipette.pipette_definition import ( PressFitPickUpTipConfiguration, CamActionPickUpTipConfiguration, + PressAndCamConfigurationValues, ) @@ -115,15 +116,21 @@ def test_plan_check_pick_up_tip_with_presses_argument( expected_array_length ) decoy.when( - mock_pipette.pick_up_configurations.press_fit.distance_by_tip_count + mock_pipette.get_pick_up_distance_by_configuration( + mock_pipette.pick_up_configurations.press_fit + ) ).then_return({1: 5}) decoy.when(mock_pipette.pick_up_configurations.press_fit.increment).then_return(0) decoy.when( - mock_pipette.pick_up_configurations.press_fit.speed_by_tip_count + mock_pipette.get_pick_up_speed_by_configuration( + mock_pipette.pick_up_configurations.press_fit + ) ).then_return({1: 10}) decoy.when(mock_pipette.config.end_tip_action_retract_distance_mm).then_return(0) decoy.when( - mock_pipette.pick_up_configurations.press_fit.current_by_tip_count + mock_pipette.get_pick_up_current_by_configuration( + mock_pipette.pick_up_configurations.press_fit + ) ).then_return({1: 1.0}) decoy.when(mock_pipette.nozzle_manager.current_configuration.tip_count).then_return( 1 @@ -158,24 +165,23 @@ def test_plan_check_pick_up_tip_with_presses_argument_ot3( mount = OT3Mount.LEFT presses = presses_input increment = 1 + pac_values = PressAndCamConfigurationValues( + speed=5.5, distance=10, current=1.0, tipOverlaps={"default": 1.0} + ) decoy.when(mock_pipette_ot3.has_tip).then_return(False) decoy.when(mock_pipette_ot3.get_pick_up_configuration()).then_return( CamActionPickUpTipConfiguration( - distance=10, - speed=5.5, prep_move_distance=19.0, prep_move_speed=10, - currentByTipCount={96: 1.0}, + configurationsByNozzleMap={"Full": {"default": pac_values}}, connectTiprackDistanceMM=8, ) if channels == 96 else PressFitPickUpTipConfiguration( presses=2, increment=increment, - distanceByTipCount={channels: 10}, - speedByTipCount={channels: 5.5}, - currentByTipCount={channels: 1.0}, + configurationsByNozzleMap={"Full": {"default": pac_values}}, ) ) decoy.when(mock_pipette_ot3.plunger_motor_current.run).then_return(1) diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index d0e18f6fda9..43fbd62e09d 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -34,6 +34,7 @@ from opentrons.hardware_control.nozzle_manager import NozzleMap from opentrons.protocol_api.disposal_locations import TrashBin, WasteChute from opentrons.protocol_api._nozzle_layout import NozzleLayout +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from opentrons.types import Location, Mount, Point from opentrons_shared_data.errors.exceptions import ( @@ -515,6 +516,7 @@ def test_blow_out_raises_no_location( starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A1", + valid_nozzle_maps=ValidNozzleMaps(maps={"Full": ["A1"]}), ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_configure_nozzle_layout.py b/api/tests/opentrons/protocol_engine/commands/test_configure_nozzle_layout.py index 23cdddd98be..4afcdaf4109 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_configure_nozzle_layout.py +++ b/api/tests/opentrons/protocol_engine/commands/test_configure_nozzle_layout.py @@ -25,6 +25,7 @@ QuadrantNozzleLayoutConfiguration, SingleNozzleLayoutConfiguration, ) +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from ..pipette_fixtures import ( NINETY_SIX_MAP, NINETY_SIX_COLS, @@ -44,6 +45,7 @@ starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A1", + valid_nozzle_maps=ValidNozzleMaps(maps={"A1": ["A1"]}), ), {"primary_nozzle": "A1"}, ], @@ -56,6 +58,9 @@ starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H1", + valid_nozzle_maps=ValidNozzleMaps( + maps={"Column1": NINETY_SIX_COLS["1"]} + ), ), {"primary_nozzle": "A1", "front_right_nozzle": "H1"}, ], @@ -70,6 +75,9 @@ starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="E1", + valid_nozzle_maps=ValidNozzleMaps( + maps={"A1_E1": ["A1", "B1", "C1", "D1", "E1"]} + ), ), {"primary_nozzle": "A1", "front_right_nozzle": "E1"}, ], diff --git a/api/tests/opentrons/protocol_engine/pipette_fixtures.py b/api/tests/opentrons/protocol_engine/pipette_fixtures.py index 70937beeb9f..146a0cb12d1 100644 --- a/api/tests/opentrons/protocol_engine/pipette_fixtures.py +++ b/api/tests/opentrons/protocol_engine/pipette_fixtures.py @@ -1,10 +1,12 @@ """Nozzle Map data to use in tests.""" +from typing import Dict, List from collections import OrderedDict from opentrons.types import Point from opentrons.hardware_control.nozzle_manager import NozzleMap from opentrons_shared_data.pipette.dev_types import PipetteNameType +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps NINETY_SIX_ROWS = OrderedDict( @@ -325,6 +327,7 @@ def get_default_nozzle_map(pipette_type: PipetteNameType) -> NozzleMap: """Get default nozzle map for a given pipette type.""" if "multi" in pipette_type.value: + multi_full: Dict[str, List[str]] = {"Full": EIGHT_CHANNEL_COLS["1"]} return NozzleMap.build( physical_nozzles=EIGHT_CHANNEL_MAP, physical_rows=EIGHT_CHANNEL_ROWS, @@ -332,8 +335,23 @@ def get_default_nozzle_map(pipette_type: PipetteNameType) -> NozzleMap: starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H1", + valid_nozzle_maps=ValidNozzleMaps(maps=multi_full), ) elif "96" in pipette_type.value: + all_nozzles = sum( + [ + NINETY_SIX_ROWS["A"], + NINETY_SIX_ROWS["B"], + NINETY_SIX_ROWS["C"], + NINETY_SIX_ROWS["D"], + NINETY_SIX_ROWS["E"], + NINETY_SIX_ROWS["F"], + NINETY_SIX_ROWS["G"], + NINETY_SIX_ROWS["H"], + ], + [], + ) + ninety_six_full: Dict[str, List[str]] = {"Full": all_nozzles} return NozzleMap.build( physical_nozzles=NINETY_SIX_MAP, physical_rows=NINETY_SIX_ROWS, @@ -341,8 +359,10 @@ def get_default_nozzle_map(pipette_type: PipetteNameType) -> NozzleMap: starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H12", + valid_nozzle_maps=ValidNozzleMaps(maps=ninety_six_full), ) else: + single_full: Dict[str, List[str]] = {"Full": ["A1"]} return NozzleMap.build( physical_nozzles=OrderedDict({"A1": Point(0, 0, 0)}), physical_rows=OrderedDict({"A": ["A1"]}), @@ -350,4 +370,5 @@ def get_default_nozzle_map(pipette_type: PipetteNameType) -> NozzleMap: starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A1", + valid_nozzle_maps=ValidNozzleMaps(maps=single_full), ) diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py index 96c7905dcd4..8c27360ebad 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py @@ -6,6 +6,7 @@ from opentrons_shared_data.pipette.dev_types import PipetteNameType from opentrons_shared_data.pipette import pipette_definition +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from opentrons.config.defaults_ot2 import Z_RETRACT_DISTANCE from opentrons.types import MountType, Mount as HwMount, Point @@ -562,6 +563,7 @@ def test_nozzle_configuration_getters() -> None: starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A1", + valid_nozzle_maps=ValidNozzleMaps(maps={"A1": ["A1"]}), ) subject = get_pipette_view(nozzle_layout_by_id={"pipette-id": nozzle_map}) assert subject.get_nozzle_layout_type("pipette-id") == NozzleConfigurationType.FULL @@ -592,6 +594,7 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H1", + valid_nozzle_maps=ValidNozzleMaps(maps={"Full": EIGHT_CHANNEL_COLS["1"]}), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( @@ -617,6 +620,7 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="H1", back_left_nozzle="H1", front_right_nozzle="H1", + valid_nozzle_maps=ValidNozzleMaps(maps={"H1": ["H1"]}), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( @@ -642,6 +646,23 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H12", + valid_nozzle_maps=ValidNozzleMaps( + maps={ + "Full": sum( + [ + NINETY_SIX_ROWS["A"], + NINETY_SIX_ROWS["B"], + NINETY_SIX_ROWS["C"], + NINETY_SIX_ROWS["D"], + NINETY_SIX_ROWS["E"], + NINETY_SIX_ROWS["F"], + NINETY_SIX_ROWS["G"], + NINETY_SIX_ROWS["H"], + ], + [], + ) + } + ), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( @@ -667,6 +688,7 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H1", + valid_nozzle_maps=ValidNozzleMaps(maps={"Column1": NINETY_SIX_COLS["1"]}), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( @@ -690,6 +712,7 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="A12", back_left_nozzle="A12", front_right_nozzle="H12", + valid_nozzle_maps=ValidNozzleMaps(maps={"Column12": NINETY_SIX_COLS["12"]}), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( @@ -713,6 +736,7 @@ class _PipetteSpecs(NamedTuple): starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A12", + valid_nozzle_maps=ValidNozzleMaps(maps={"RowA": NINETY_SIX_ROWS["A"]}), ), destination_position=Point(100, 200, 300), nozzle_bounds_result=( diff --git a/api/tests/opentrons/protocol_engine/state/test_tip_state.py b/api/tests/opentrons/protocol_engine/state/test_tip_state.py index 51f78c4904d..f5edd8471dd 100644 --- a/api/tests/opentrons/protocol_engine/state/test_tip_state.py +++ b/api/tests/opentrons/protocol_engine/state/test_tip_state.py @@ -10,6 +10,7 @@ Parameters as LabwareParameters, ) from opentrons_shared_data.pipette import pipette_definition +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from opentrons.hardware_control.nozzle_manager import NozzleMap from opentrons.protocol_engine import actions, commands @@ -860,6 +861,7 @@ def test_drop_tip( starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="A1", + valid_nozzle_maps=ValidNozzleMaps(maps={"A1": ["A1"]}), ), 1, ), @@ -871,6 +873,23 @@ def test_drop_tip( starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="H12", + valid_nozzle_maps=ValidNozzleMaps( + maps={ + "Full": sum( + [ + NINETY_SIX_ROWS["A"], + NINETY_SIX_ROWS["B"], + NINETY_SIX_ROWS["C"], + NINETY_SIX_ROWS["D"], + NINETY_SIX_ROWS["E"], + NINETY_SIX_ROWS["F"], + NINETY_SIX_ROWS["G"], + NINETY_SIX_ROWS["H"], + ], + [], + ) + } + ), ), 96, ), @@ -882,6 +901,9 @@ def test_drop_tip( starting_nozzle="A1", back_left_nozzle="A1", front_right_nozzle="E1", + valid_nozzle_maps=ValidNozzleMaps( + maps={"A1_E1": ["A1", "B1", "C1", "D1", "E1"]} + ), ), 5, ), @@ -1005,6 +1027,11 @@ def test_next_tip_uses_active_channels( starting_nozzle="A12", back_left_nozzle="A12", front_right_nozzle="H12", + valid_nozzle_maps=ValidNozzleMaps( + maps={ + "A12_H12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] + } + ), ), ) subject.handle_action( @@ -1111,6 +1138,54 @@ def _reconfigure_nozzle_layout(start: str, back_l: str, front_r: str) -> NozzleM starting_nozzle=start, back_left_nozzle=back_l, front_right_nozzle=front_r, + valid_nozzle_maps=ValidNozzleMaps( + maps={ + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "A1_H3": [ + "A1", + "A2", + "A3", + "B1", + "B2", + "B3", + "C1", + "C2", + "C3", + "D1", + "D2", + "D3", + "E1", + "E2", + "E3", + "F1", + "F2", + "F3", + "G1", + "G2", + "G3", + "H1", + "H2", + "H3", + ], + "A1_F2": [ + "A1", + "A2", + "B1", + "B2", + "C1", + "C2", + "D1", + "D2", + "E1", + "E2", + "F1", + "F2", + ], + } + ), ), ) subject.handle_action( diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index 05937cb14a4..d7637ff9dcc 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -11,6 +11,8 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], + "RowA": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12"], + "RowH": ["H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"], "Full": [ "A1", "A2", @@ -355,6 +357,32 @@ "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 } } + }, + "RowA": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } + } + }, + "RowH": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } + } } } }, From 88f4f6614eafe9f415c552a986256c207f532045 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 29 May 2024 12:49:54 -0400 Subject: [PATCH 13/29] pipette handler test corrections --- .../instruments/test_nozzle_manager.py | 3 --- .../hardware_control/test_pipette_handler.py | 21 ++++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py b/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py index 430d2f63686..5030bec31fe 100644 --- a/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py +++ b/api/tests/opentrons/hardware_control/instruments/test_nozzle_manager.py @@ -880,7 +880,6 @@ def _nozzles() -> Iterator[str]: {"12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"]}, ) - subject.update_nozzle_configuration("A1", "A12") test_map_entries( subject.current_configuration, @@ -951,7 +950,6 @@ def _nozzles() -> Iterator[str]: }, ) - subject.update_nozzle_configuration("A1", "D6") test_map_entries( subject.current_configuration, @@ -971,7 +969,6 @@ def _nozzles() -> Iterator[str]: }, ) - subject.update_nozzle_configuration("E1", "H6") test_map_entries( subject.current_configuration, diff --git a/api/tests/opentrons/hardware_control/test_pipette_handler.py b/api/tests/opentrons/hardware_control/test_pipette_handler.py index cb339620522..588b7e377e4 100644 --- a/api/tests/opentrons/hardware_control/test_pipette_handler.py +++ b/api/tests/opentrons/hardware_control/test_pipette_handler.py @@ -119,19 +119,19 @@ def test_plan_check_pick_up_tip_with_presses_argument( mock_pipette.get_pick_up_distance_by_configuration( mock_pipette.pick_up_configurations.press_fit ) - ).then_return({1: 5}) + ).then_return(5) decoy.when(mock_pipette.pick_up_configurations.press_fit.increment).then_return(0) decoy.when( mock_pipette.get_pick_up_speed_by_configuration( mock_pipette.pick_up_configurations.press_fit ) - ).then_return({1: 10}) + ).then_return(10) decoy.when(mock_pipette.config.end_tip_action_retract_distance_mm).then_return(0) decoy.when( mock_pipette.get_pick_up_current_by_configuration( mock_pipette.pick_up_configurations.press_fit ) - ).then_return({1: 1.0}) + ).then_return(1.0) decoy.when(mock_pipette.nozzle_manager.current_configuration.tip_count).then_return( 1 ) @@ -184,6 +184,21 @@ def test_plan_check_pick_up_tip_with_presses_argument_ot3( configurationsByNozzleMap={"Full": {"default": pac_values}}, ) ) + decoy.when( + mock_pipette_ot3.get_pick_up_distance_by_configuration( + mock_pipette_ot3.get_pick_up_configuration() + ) + ).then_return(10) + decoy.when( + mock_pipette_ot3.get_pick_up_speed_by_configuration( + mock_pipette_ot3.get_pick_up_configuration() + ) + ).then_return(5.5) + decoy.when( + mock_pipette_ot3.get_pick_up_current_by_configuration( + mock_pipette_ot3.get_pick_up_configuration() + ) + ).then_return(1.0) decoy.when(mock_pipette_ot3.plunger_motor_current.run).then_return(1) decoy.when(mock_pipette_ot3.config.quirks).then_return([]) decoy.when(mock_pipette_ot3.channels).then_return(channels) From 6e390b498cc2673a621024790557735bd96f401c Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 3 Jun 2024 15:29:18 -0400 Subject: [PATCH 14/29] mutable configurations updates --- .../general/ninety_six_channel/p1000/3_6.json | 30 ++++++++++++++-- .../pipette/model_constants.py | 18 ++++++---- .../pipette/mutable_configurations.py | 34 +++++++++++-------- .../pipette/test_mutable_configurations.py | 24 +++++++++---- .../tests/pipette/test_validate_schema.py | 27 ++++++++++----- 5 files changed, 96 insertions(+), 37 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index d7637ff9dcc..008e5cfa9ef 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -11,8 +11,34 @@ "H12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], - "RowA": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12"], - "RowH": ["H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12"], + "RowA": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12" + ], + "RowH": [ + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12" + ], "Full": [ "A1", "A2", diff --git a/shared-data/python/opentrons_shared_data/pipette/model_constants.py b/shared-data/python/opentrons_shared_data/pipette/model_constants.py index 1b4199635d5..7d34e0e5f6a 100644 --- a/shared-data/python/opentrons_shared_data/pipette/model_constants.py +++ b/shared-data/python/opentrons_shared_data/pipette/model_constants.py @@ -63,22 +63,28 @@ "pickUpCurrent": [ "pickUpTipConfigurations", "pressFit", - "currentByTipCount", - "##EACHTIP##", + "configurationsByNozzleMap", + "##EACHNOZZLEMAP##", + "##EACHTIPTYPE##", + "current", ], "pickUpDistance": [ "pickUpTipConfigurations", "pressFit", - "distanceByTipCount", - "##EACHTIP##", + "configurationsByNozzleMap", + "##EACHNOZZLEMAP##", + "##EACHTIPTYPE##", + "distance", ], "pickUpIncrement": ["pickUpTipConfigurations", "pressFit", "increment"], "pickUpPresses": ["pickUpTipConfigurations", "pressFit", "presses"], "pickUpSpeed": [ "pickUpTipConfigurations", "pressFit", - "speedByTipCount", - "##EACHTIP##", + "configurationsByNozzleMap", + "##EACHNOZZLEMAP##", + "##EACHTIPTYPE##", + "speed", ], "plungerCurrent": ["plungerMotorConfigurations", "run"], "dropTipCurrent": ["dropTipConfigurations", "plungerEject", "current"], diff --git a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py index 0653181e996..89132008a86 100644 --- a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py +++ b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py @@ -52,18 +52,17 @@ def _do_edit_non_quirk( thiskey = LiquidClasses[thiskey] if len(keypath) > 1: restkeys = keypath[1:] - if thiskey == "##EACHTIP##": + if thiskey == "##EACHNOZZLEMAP##": + for key in existing.keys(): + _do_edit_non_quirk(new_value, existing[key], restkeys) + elif thiskey == "##EACHTIPTYPE##": for key in existing.keys(): _do_edit_non_quirk(new_value, existing[key], restkeys) else: _do_edit_non_quirk(new_value, existing[thiskey], restkeys) else: # This was the last key - if thiskey == "##EACHTIP##": - for key in existing.keys(): - existing[key] = new_value.value - else: - existing[thiskey] = new_value.value + existing[thiskey] = new_value.value new_names = _MAP_KEY_TO_V2[mutable_config_key] _do_edit_non_quirk(new_mutable_value, base_dict, new_names) @@ -155,10 +154,12 @@ def _list_all_mutable_configs( return default_configurations -def _get_default_value_for(config: Dict[str, Any], keypath: List[str]) -> Any: +def _get_default_value_for( # noqa: C901 + config: Dict[str, Any], keypath: List[str] +) -> Any: def _do_get_default_value_for( - remaining_config: Dict[Any, Any], keypath: List[str] - ) -> Any: + remaining_config: Dict[Any, Any], keypath: List[Any] + ) -> None: first: Any = keypath[0] if first in [lc.name for lc in LiquidClasses]: first = LiquidClasses[first] @@ -168,6 +169,14 @@ def _do_get_default_value_for( tip_list = list(remaining_config.keys()) tip_list.sort(key=lambda o: o.value if isinstance(o, Enum) else o) return _do_get_default_value_for(remaining_config[tip_list[-1]], rest) + elif first == "##EACHNOZZLEMAP##": + map_list = list(remaining_config.keys()) + map_list.sort(key=lambda o: o.value if isinstance(o, Enum) else o) + return _do_get_default_value_for(remaining_config[map_list[-1]], rest) + elif first == "##EACHTIPTYPE##": + for key in remaining_config.keys(): + if key == "default": + return _do_get_default_value_for(remaining_config[key], rest) else: return _do_get_default_value_for(remaining_config[first], rest) else: @@ -175,12 +184,7 @@ def _do_get_default_value_for( tip_list = list(remaining_config.keys()) tip_list.sort(key=lambda o: o.value if isinstance(o, Enum) else o) return remaining_config[tip_list[-1]] - elif first == "currentByTipCount": - # return the value for the most tips at a time - cbt = remaining_config[first] - return cbt[next(reversed(sorted(cbt.keys())))] - else: - return remaining_config[first] + return remaining_config[first] return _do_get_default_value_for(config, keypath) diff --git a/shared-data/python/tests/pipette/test_mutable_configurations.py b/shared-data/python/tests/pipette/test_mutable_configurations.py index ff5de00c3c1..db851a15042 100644 --- a/shared-data/python/tests/pipette/test_mutable_configurations.py +++ b/shared-data/python/tests/pipette/test_mutable_configurations.py @@ -81,9 +81,14 @@ def test_load_old_overrides_regression( override_configuration_path, "P20SV222021040709", ) - assert configs.pick_up_tip_configurations.press_fit.current_by_tip_count == { - 1: 0.15 - } + assert ( + configs.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map[ + list( + configs.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map.keys() + )[0] + ]["default"].current + == 0.15 + ) def test_list_mutable_configs_unknown_pipette_id( @@ -269,9 +274,16 @@ def test_load_with_overrides( if serial_number == TEST_SERIAL_NUMBER: dict_loaded_configs = loaded_base_configurations.dict(by_alias=True) - dict_loaded_configs["pickUpTipConfigurations"]["pressFit"][ - "speedByTipCount" - ] = {1: 5.0, 2: 5.0, 3: 5.0, 4: 5.0, 5: 5.0, 6: 5.0, 7: 5.0, 8: 5.0} + for map_key in dict_loaded_configs["pickUpTipConfigurations"]["pressFit"][ + "configurationsByNozzleMap" + ]: + for tip_key in dict_loaded_configs["pickUpTipConfigurations"]["pressFit"][ + "configurationsByNozzleMap" + ][map_key]: + dict_loaded_configs["pickUpTipConfigurations"]["pressFit"][ + "configurationsByNozzleMap" + ][map_key][tip_key]["speed"] = 5.0 + updated_configurations_dict = updated_configurations.dict(by_alias=True) assert set(dict_loaded_configs.pop("quirks")) == set( updated_configurations_dict.pop("quirks") diff --git a/shared-data/python/tests/pipette/test_validate_schema.py b/shared-data/python/tests/pipette/test_validate_schema.py index a7f6c6d0e06..b887105468b 100644 --- a/shared-data/python/tests/pipette/test_validate_schema.py +++ b/shared-data/python/tests/pipette/test_validate_schema.py @@ -2,7 +2,10 @@ from opentrons_shared_data import get_shared_data_root from opentrons_shared_data.pipette.pipette_definition import PipetteConfigurations -from opentrons_shared_data.pipette.load_data import load_definition +from opentrons_shared_data.pipette.load_data import ( + load_definition, + load_valid_nozzle_maps, +) from opentrons_shared_data.pipette.pipette_load_name_conversions import ( convert_pipette_model, ) @@ -37,8 +40,8 @@ def test_check_all_models_are_valid() -> None: assert isinstance(loaded_model, PipetteConfigurations) -def test_pick_up_configs_tip_count_keys() -> None: - """Verify that speed, distance & current of pickUpTipConfigurations have same tip count keys.""" +def test_pick_up_configs_configuration_by_nozzle_map_keys() -> None: + """Verify that for every nozzle map the pickUpTipConfigurations have a valid configuration set.""" paths_to_validate = ( get_shared_data_root() / "pipette" / "definitions" / "2" / "general" ) @@ -62,9 +65,17 @@ def test_pick_up_configs_tip_count_keys() -> None: model_version.pipette_channels, model_version.pipette_version, ) - pick_up_tip_configs = loaded_model.pick_up_tip_configurations.press_fit - assert ( - pick_up_tip_configs.distance_by_tip_count.keys() - == pick_up_tip_configs.speed_by_tip_count.keys() - == pick_up_tip_configs.current_by_tip_count.keys() + valid_nozzle_maps = load_valid_nozzle_maps( + model_version.pipette_type, + model_version.pipette_channels, + model_version.pipette_version, + ) + + pipette_maps = list( + loaded_model.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map.keys() ) + if loaded_model.pick_up_tip_configurations.cam_action is not None: + pipette_maps += list( + loaded_model.pick_up_tip_configurations.cam_action.configuration_by_nozzle_map.keys() + ) + assert pipette_maps == list(valid_nozzle_maps.maps.keys()) From 2e0370036f075acfe8e7ee85d388a636fc8d3924 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 3 Jun 2024 16:50:13 -0400 Subject: [PATCH 15/29] front to back bias for 8ch and single ch map naming convention --- .../2/general/eight_channel/p10/1_0.json | 43 ++++++++++++------ .../2/general/eight_channel/p10/1_3.json | 43 ++++++++++++------ .../2/general/eight_channel/p10/1_4.json | 43 ++++++++++++------ .../2/general/eight_channel/p10/1_5.json | 43 ++++++++++++------ .../2/general/eight_channel/p10/1_6.json | 43 ++++++++++++------ .../2/general/eight_channel/p1000/1_0.json | 42 +++++++++++------ .../2/general/eight_channel/p1000/3_0.json | 45 +++++++++++++------ .../2/general/eight_channel/p1000/3_3.json | 45 +++++++++++++------ .../2/general/eight_channel/p1000/3_4.json | 45 +++++++++++++------ .../2/general/eight_channel/p1000/3_5.json | 45 +++++++++++++------ .../2/general/eight_channel/p20/2_0.json | 45 +++++++++++++------ .../2/general/eight_channel/p20/2_1.json | 45 +++++++++++++------ .../2/general/eight_channel/p300/1_0.json | 42 +++++++++++------ .../2/general/eight_channel/p300/1_3.json | 42 +++++++++++------ .../2/general/eight_channel/p300/1_4.json | 42 +++++++++++------ .../2/general/eight_channel/p300/1_5.json | 42 +++++++++++------ .../2/general/eight_channel/p300/2_0.json | 41 +++++++++++------ .../2/general/eight_channel/p300/2_1.json | 41 +++++++++++------ .../2/general/eight_channel/p50/1_0.json | 42 +++++++++++------ .../2/general/eight_channel/p50/1_3.json | 42 +++++++++++------ .../2/general/eight_channel/p50/1_4.json | 42 +++++++++++------ .../2/general/eight_channel/p50/1_5.json | 42 +++++++++++------ .../2/general/eight_channel/p50/3_0.json | 41 +++++++++++------ .../2/general/eight_channel/p50/3_3.json | 41 +++++++++++------ .../2/general/eight_channel/p50/3_4.json | 41 +++++++++++------ .../2/general/eight_channel/p50/3_5.json | 41 +++++++++++------ .../general/ninety_six_channel/p1000/1_0.json | 16 +++---- .../general/ninety_six_channel/p1000/3_0.json | 16 +++---- .../general/ninety_six_channel/p1000/3_3.json | 16 +++---- .../general/ninety_six_channel/p1000/3_4.json | 16 +++---- .../general/ninety_six_channel/p1000/3_5.json | 16 +++---- .../general/ninety_six_channel/p1000/3_6.json | 16 +++---- .../2/general/single_channel/p10/1_0.json | 4 +- .../2/general/single_channel/p10/1_3.json | 2 +- .../2/general/single_channel/p10/1_4.json | 2 +- .../2/general/single_channel/p10/1_5.json | 2 +- .../2/general/single_channel/p1000/1_0.json | 2 +- .../2/general/single_channel/p1000/1_3.json | 2 +- .../2/general/single_channel/p1000/1_4.json | 2 +- .../2/general/single_channel/p1000/1_5.json | 2 +- .../2/general/single_channel/p1000/2_0.json | 2 +- .../2/general/single_channel/p1000/2_1.json | 2 +- .../2/general/single_channel/p1000/2_2.json | 2 +- .../2/general/single_channel/p1000/3_0.json | 2 +- .../2/general/single_channel/p1000/3_3.json | 2 +- .../2/general/single_channel/p1000/3_4.json | 2 +- .../2/general/single_channel/p1000/3_5.json | 2 +- .../2/general/single_channel/p1000/3_6.json | 2 +- .../2/general/single_channel/p20/2_0.json | 2 +- .../2/general/single_channel/p20/2_1.json | 2 +- .../2/general/single_channel/p20/2_2.json | 2 +- .../2/general/single_channel/p300/1_0.json | 2 +- .../2/general/single_channel/p300/1_3.json | 2 +- .../2/general/single_channel/p300/1_4.json | 2 +- .../2/general/single_channel/p300/1_5.json | 2 +- .../2/general/single_channel/p300/2_0.json | 2 +- .../2/general/single_channel/p300/2_1.json | 2 +- .../2/general/single_channel/p50/1_0.json | 2 +- .../2/general/single_channel/p50/1_3.json | 2 +- .../2/general/single_channel/p50/1_4.json | 2 +- .../2/general/single_channel/p50/1_5.json | 2 +- .../2/general/single_channel/p50/3_0.json | 2 +- .../2/general/single_channel/p50/3_3.json | 2 +- .../2/general/single_channel/p50/3_4.json | 2 +- .../2/general/single_channel/p50/3_5.json | 2 +- .../2/general/single_channel/p50/3_6.json | 2 +- 66 files changed, 828 insertions(+), 447 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json index 1101a88f6bb..a317e0dd24b 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -34,7 +35,7 @@ } } }, - "A1toB1": { + "SingleH1": { "default": { "speed": 30.0, "distance": 10.0, @@ -48,7 +49,21 @@ } } }, - "A1toC1": { + "H1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -62,7 +77,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -76,7 +91,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -90,7 +105,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -104,7 +119,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json index 1879ddd706b..45c5b1469cf 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -34,7 +35,7 @@ } } }, - "A1toB1": { + "SingleH1": { "default": { "speed": 30.0, "distance": 10.0, @@ -48,7 +49,21 @@ } } }, - "A1toC1": { + "H1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -62,7 +77,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -76,7 +91,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -90,7 +105,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -104,7 +119,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json index f8fc8ffa27a..a6bd7161cd3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -34,7 +35,7 @@ } } }, - "A1toB1": { + "SingleH1": { "default": { "speed": 30.0, "distance": 10.0, @@ -48,7 +49,21 @@ } } }, - "A1toC1": { + "H1toG1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -62,7 +77,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -76,7 +91,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -90,7 +105,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -104,7 +119,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json index 14c013d583f..fbfffa39d57 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 3.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -34,7 +35,21 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -48,7 +63,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -62,7 +77,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -76,7 +91,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -90,7 +105,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -104,7 +119,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json index 14c013d583f..fbfffa39d57 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 3.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -34,7 +35,21 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -48,7 +63,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -62,7 +77,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -76,7 +91,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -90,7 +105,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -104,7 +119,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json index 2e074336252..559d4c0f239 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json index ba4f2a8f3a4..a1d58ca6fc3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json index ba4f2a8f3a4..a1d58ca6fc3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json index 60d3e949771..80bc08973c7 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json index 60d3e949771..80bc08973c7 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json index ca6347fc984..fbdf4806602 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json @@ -5,13 +5,14 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 11.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 11.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 11.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 11.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 11.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 11.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 11.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json index e08d4a3934e..d19feb8db84 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json @@ -5,13 +5,14 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 11.0, @@ -36,7 +37,23 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.1, + "tipOverlaps": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 11.0, @@ -52,7 +69,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 11.0, @@ -68,7 +85,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 11.0, @@ -84,7 +101,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 11.0, @@ -100,7 +117,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 11.0, @@ -116,7 +133,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 11.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json index 783c3a103e2..c23b4db1ec1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json index 8e2b9a8a1e6..bd840ebe3fd 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json index a57db1685a5..85d8ce7165c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json index 94b1afe4e6d..39c80ff9552 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 3.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json index 3c8eba5c8c5..b862b1fcf38 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json @@ -5,13 +5,14 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 11.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.13, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 11.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 11.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 11.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 11.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 11.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 11.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json index 1a5846c2055..7d0e5ae92dd 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json @@ -5,13 +5,14 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 11.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.13, + "tipOverlaps": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 11.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 11.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 11.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 11.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 11.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 11.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json index aa6c4684a9e..895a01b8040 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json index 4d1f7c36d41..f9c82e32cf1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json index 54eb6956221..71784e82b59 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json index e88a61acc4e..fdf542a2de9 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json @@ -5,13 +5,14 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 3, "increment": 3.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, @@ -33,7 +34,20 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 30.0, + "distance": 10.0, + "current": 0.1, + "tipOverlaps": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } + } + }, + "H1toG1": { "default": { "speed": 30.0, "distance": 10.0, @@ -46,7 +60,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 30.0, "distance": 10.0, @@ -59,7 +73,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 30.0, "distance": 10.0, @@ -72,7 +86,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 30.0, "distance": 10.0, @@ -85,7 +99,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 30.0, "distance": 10.0, @@ -98,7 +112,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json index 1e23efec6ce..00c7030ace1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json index 1e23efec6ce..00c7030ace1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.15, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json index a4758f34514..85eac28a4a3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json index a4758f34514..85eac28a4a3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json @@ -5,13 +5,14 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "A1toB1": ["A1", "B1"], - "A1toC1": ["A1", "B1", "C1"], - "A1toD1": ["A1", "B1", "C1", "D1"], - "A1toE1": ["A1", "B1", "C1", "D1", "E1"], - "A1toF1": ["A1", "B1", "C1", "D1", "E1", "F1"], - "A1toG1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] } }, @@ -20,7 +21,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -32,7 +33,19 @@ } } }, - "A1toB1": { + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } + } + }, + "H1toG1": { "default": { "speed": 10.0, "distance": 13.0, @@ -44,7 +57,7 @@ } } }, - "A1toC1": { + "H1toF1": { "default": { "speed": 10.0, "distance": 13.0, @@ -56,7 +69,7 @@ } } }, - "A1toD1": { + "H1toE1": { "default": { "speed": 10.0, "distance": 13.0, @@ -68,7 +81,7 @@ } } }, - "A1toE1": { + "H1toD1": { "default": { "speed": 10.0, "distance": 13.0, @@ -80,7 +93,7 @@ } } }, - "A1toF1": { + "H1toC1": { "default": { "speed": 10.0, "distance": 13.0, @@ -92,7 +105,7 @@ } } }, - "A1toG1": { + "H1toB1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json index 14cd980eec0..dea78f14310 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "Full": [ @@ -116,7 +116,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -162,7 +162,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -208,7 +208,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -254,7 +254,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json index a32ffa61703..deaa099e85c 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "Full": [ @@ -116,7 +116,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -162,7 +162,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -208,7 +208,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -254,7 +254,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json index eb31305faf8..d0c9ddb3903 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "Full": [ @@ -116,7 +116,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -162,7 +162,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -208,7 +208,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -254,7 +254,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json index 0d9f9635cb0..21ece1542be 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "Full": [ @@ -116,7 +116,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -162,7 +162,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -208,7 +208,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -254,7 +254,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json index 4375db649d4..d4943dbc7fc 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "Full": [ @@ -116,7 +116,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -162,7 +162,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -208,7 +208,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -254,7 +254,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index 008e5cfa9ef..7fc6458620c 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -5,10 +5,10 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"], - "H1": ["H1"], - "A12": ["A12"], - "H12": ["H12"], + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "SingleA12": ["A12"], + "SingleH12": ["H12"], "Column1": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], "Column12": ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"], "RowA": [ @@ -144,7 +144,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, @@ -184,7 +184,7 @@ } } }, - "H1": { + "SingleH1": { "default": { "speed": 10.0, "distance": 13.0, @@ -224,7 +224,7 @@ } } }, - "A12": { + "SingleA12": { "default": { "speed": 10.0, "distance": 13.0, @@ -264,7 +264,7 @@ } } }, - "H12": { + "SingleH12": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json index 05bdae3387b..c1b86be6d53 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json index 702dfb9eddc..be688cf432f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json index abd67aa79ea..4cc85358c26 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json index abd67aa79ea..4cc85358c26 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json index defe73ac6f8..baea8af526a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 15.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json index 5fb16c1c162..dcbcb206b20 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 15.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json index 5fb16c1c162..dcbcb206b20 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 15.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json index 184d55801f1..686dfd06b5f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 15.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json index cb2eb33f8de..67c9c2a53df 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 17.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json index 9bd0a96b1ff..8a6e6cc6a3a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 17.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json index 9bd0a96b1ff..8a6e6cc6a3a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 17.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json index 4a7ea8b72aa..ab4ad82ae05 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 5.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json index 4a7ea8b72aa..ab4ad82ae05 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 5.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json index 117771b2f26..b81f04ea00a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json index 117771b2f26..b81f04ea00a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json index 117771b2f26..b81f04ea00a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json index c44392e18e1..bceb3dd3344 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 14.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json index 99ca05dc2f4..77675847259 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 14.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json index 99ca05dc2f4..77675847259 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 14.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json index 03cb867e1c8..f79cb0394d7 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json index 86dcb14204f..69f67bf3152 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json index a0017dc3849..6c056dfa278 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json index a0017dc3849..6c056dfa278 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json index de4c9b00b9c..668aa75d342 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 17.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json index 018e9011697..597767c98e6 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 17.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json index ef287ebfd95..8f40d0ecd50 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json index ca26ec4f82d..f6e01925e9e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json index c5179fbecd2..4bae8668b88 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json index c5179fbecd2..4bae8668b88 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json @@ -13,7 +13,7 @@ "presses": 3, "increment": 1.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 30.0, "distance": 10.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json index da5b05606f5..036c65b9501 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 5.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json index da5b05606f5..036c65b9501 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 5.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json index 6ad15d9c7ee..579d4d6b84e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json index 6ad15d9c7ee..579d4d6b84e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json index 6ad15d9c7ee..579d4d6b84e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json @@ -13,7 +13,7 @@ "presses": 1, "increment": 0.0, "configurationsByNozzleMap": { - "A1": { + "SingleA1": { "default": { "speed": 10.0, "distance": 13.0, From 2e19184af224ca0246fc1d50f6115628b350353e Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 3 Jun 2024 17:02:17 -0400 Subject: [PATCH 16/29] single channel SingleA1 map naming --- .../pipette/definitions/2/general/single_channel/p10/1_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p10/1_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p10/1_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/1_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/1_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/1_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/1_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/2_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/2_1.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/2_2.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/3_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/3_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/3_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/3_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p1000/3_6.json | 2 +- .../pipette/definitions/2/general/single_channel/p20/2_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p20/2_1.json | 2 +- .../pipette/definitions/2/general/single_channel/p20/2_2.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/1_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/1_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/1_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/1_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/2_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p300/2_1.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/1_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/1_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/1_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/1_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/3_0.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/3_3.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/3_4.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/3_5.json | 2 +- .../pipette/definitions/2/general/single_channel/p50/3_6.json | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json index be688cf432f..1b78e8b343e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json index 4cc85358c26..6220631dd83 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json index 4cc85358c26..6220631dd83 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json index baea8af526a..0f557dae026 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json index dcbcb206b20..a21c4253188 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json index dcbcb206b20..a21c4253188 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json index 686dfd06b5f..46a3d1fa2d6 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json index 67c9c2a53df..311c1be29ad 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json index 8a6e6cc6a3a..54bd4d16c06 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json index 8a6e6cc6a3a..54bd4d16c06 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json index ab4ad82ae05..cb8158b1a52 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json index ab4ad82ae05..cb8158b1a52 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json index b81f04ea00a..ad103835fa5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json index b81f04ea00a..ad103835fa5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json index b81f04ea00a..ad103835fa5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json index bceb3dd3344..f5c4a531a53 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json index 77675847259..b3e2eb87f52 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json index 77675847259..b3e2eb87f52 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json index f79cb0394d7..17134afdd7c 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json index 69f67bf3152..8711e5bdd20 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json index 6c056dfa278..058b821d1df 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json index 6c056dfa278..058b821d1df 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json index 668aa75d342..87fe4ae931a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json index 597767c98e6..cf2a14cbe2b 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json @@ -5,7 +5,7 @@ "displayCategory": "GEN2", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json index 8f40d0ecd50..ef0f41b2c31 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json index f6e01925e9e..7bc6d0445a3 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json index 4bae8668b88..913b854b509 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json index 4bae8668b88..913b854b509 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json @@ -5,7 +5,7 @@ "displayCategory": "GEN1", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json index 036c65b9501..a06761cbbb3 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json index 036c65b9501..a06761cbbb3 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json index 579d4d6b84e..79efef1198a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json index 579d4d6b84e..79efef1198a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json index 579d4d6b84e..79efef1198a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json @@ -5,7 +5,7 @@ "displayCategory": "FLEX", "validNozzleMaps": { "maps": { - "A1": ["A1"] + "SingleA1": ["A1"] } }, "pickUpTipConfigurations": { From 1505f116e50989463fe19e6140b5b729176ca2e1 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 3 Jun 2024 18:06:21 -0400 Subject: [PATCH 17/29] tip overlap versioning definition migration --- .../2/general/eight_channel/p10/1_0.json | 108 ++++--- .../2/general/eight_channel/p10/1_3.json | 108 ++++--- .../2/general/eight_channel/p10/1_4.json | 108 ++++--- .../2/general/eight_channel/p10/1_5.json | 108 ++++--- .../2/general/eight_channel/p10/1_6.json | 108 ++++--- .../2/general/eight_channel/p1000/1_0.json | 90 +++--- .../2/general/eight_channel/p1000/3_0.json | 144 +++++---- .../2/general/eight_channel/p1000/3_3.json | 144 +++++---- .../2/general/eight_channel/p1000/3_4.json | 144 +++++---- .../2/general/eight_channel/p1000/3_5.json | 144 +++++---- .../2/general/eight_channel/p20/2_0.json | 144 +++++---- .../2/general/eight_channel/p20/2_1.json | 144 +++++---- .../2/general/eight_channel/p300/1_0.json | 90 +++--- .../2/general/eight_channel/p300/1_3.json | 90 +++--- .../2/general/eight_channel/p300/1_4.json | 90 +++--- .../2/general/eight_channel/p300/1_5.json | 90 +++--- .../2/general/eight_channel/p300/2_0.json | 72 +++-- .../2/general/eight_channel/p300/2_1.json | 72 +++-- .../2/general/eight_channel/p50/1_0.json | 90 +++--- .../2/general/eight_channel/p50/1_3.json | 90 +++--- .../2/general/eight_channel/p50/1_4.json | 90 +++--- .../2/general/eight_channel/p50/1_5.json | 90 +++--- .../2/general/eight_channel/p50/3_0.json | 72 +++-- .../2/general/eight_channel/p50/3_3.json | 72 +++-- .../2/general/eight_channel/p50/3_4.json | 72 +++-- .../2/general/eight_channel/p50/3_5.json | 72 +++-- .../general/ninety_six_channel/p1000/1_0.json | 280 +++++++++++------- .../general/ninety_six_channel/p1000/3_0.json | 280 +++++++++++------- .../general/ninety_six_channel/p1000/3_3.json | 280 +++++++++++------- .../general/ninety_six_channel/p1000/3_4.json | 280 +++++++++++------- .../general/ninety_six_channel/p1000/3_5.json | 280 +++++++++++------- .../general/ninety_six_channel/p1000/3_6.json | 212 ++++++++----- .../2/general/single_channel/p10/1_0.json | 12 +- .../2/general/single_channel/p10/1_3.json | 12 +- .../2/general/single_channel/p10/1_4.json | 12 +- .../2/general/single_channel/p10/1_5.json | 12 +- .../2/general/single_channel/p1000/1_0.json | 12 +- .../2/general/single_channel/p1000/1_3.json | 12 +- .../2/general/single_channel/p1000/1_4.json | 12 +- .../2/general/single_channel/p1000/1_5.json | 12 +- .../2/general/single_channel/p1000/2_0.json | 10 +- .../2/general/single_channel/p1000/2_1.json | 10 +- .../2/general/single_channel/p1000/2_2.json | 10 +- .../2/general/single_channel/p1000/3_0.json | 16 +- .../2/general/single_channel/p1000/3_3.json | 16 +- .../2/general/single_channel/p1000/3_4.json | 16 +- .../2/general/single_channel/p1000/3_5.json | 16 +- .../2/general/single_channel/p1000/3_6.json | 16 +- .../2/general/single_channel/p20/2_0.json | 16 +- .../2/general/single_channel/p20/2_1.json | 16 +- .../2/general/single_channel/p20/2_2.json | 16 +- .../2/general/single_channel/p300/1_0.json | 10 +- .../2/general/single_channel/p300/1_3.json | 10 +- .../2/general/single_channel/p300/1_4.json | 10 +- .../2/general/single_channel/p300/1_5.json | 10 +- .../2/general/single_channel/p300/2_0.json | 8 +- .../2/general/single_channel/p300/2_1.json | 8 +- .../2/general/single_channel/p50/1_0.json | 10 +- .../2/general/single_channel/p50/1_3.json | 10 +- .../2/general/single_channel/p50/1_4.json | 10 +- .../2/general/single_channel/p50/1_5.json | 10 +- .../2/general/single_channel/p50/3_0.json | 8 +- .../2/general/single_channel/p50/3_3.json | 8 +- .../2/general/single_channel/p50/3_4.json | 8 +- .../2/general/single_channel/p50/3_5.json | 8 +- .../2/general/single_channel/p50/3_6.json | 8 +- 66 files changed, 2762 insertions(+), 1886 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json index a317e0dd24b..67beda30ecd 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_0.json @@ -27,11 +27,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -41,11 +43,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -55,11 +59,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -69,11 +75,13 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -83,11 +91,13 @@ "distance": 10.0, "current": 0.2, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -97,11 +107,13 @@ "distance": 10.0, "current": 0.25, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -111,11 +123,13 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -125,11 +139,13 @@ "distance": 10.0, "current": 0.35, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -139,11 +155,13 @@ "distance": 10.0, "current": 0.4, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json index 45c5b1469cf..b647f5a4c8f 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_3.json @@ -27,11 +27,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -41,11 +43,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -55,11 +59,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -69,11 +75,13 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -83,11 +91,13 @@ "distance": 10.0, "current": 0.2, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -97,11 +107,13 @@ "distance": 10.0, "current": 0.25, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -111,11 +123,13 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -125,11 +139,13 @@ "distance": 10.0, "current": 0.35, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -139,11 +155,13 @@ "distance": 10.0, "current": 0.4, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json index a6bd7161cd3..a8cb1b2c5a7 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_4.json @@ -27,11 +27,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -41,11 +43,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -55,11 +59,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -69,11 +75,13 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -83,11 +91,13 @@ "distance": 10.0, "current": 0.2, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -97,11 +107,13 @@ "distance": 10.0, "current": 0.25, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -111,11 +123,13 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -125,11 +139,13 @@ "distance": 10.0, "current": 0.35, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -139,11 +155,13 @@ "distance": 10.0, "current": 0.4, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json index fbfffa39d57..7e3c95b51b0 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_5.json @@ -27,11 +27,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -41,11 +43,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -55,11 +59,13 @@ "distance": 10.0, "current": 0.14, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -69,11 +75,13 @@ "distance": 10.0, "current": 0.21, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -83,11 +91,13 @@ "distance": 10.0, "current": 0.28, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -97,11 +107,13 @@ "distance": 10.0, "current": 0.34, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -111,11 +123,13 @@ "distance": 10.0, "current": 0.41, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -125,11 +139,13 @@ "distance": 10.0, "current": 0.48, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -139,11 +155,13 @@ "distance": 10.0, "current": 0.55, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json index fbfffa39d57..7e3c95b51b0 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p10/1_6.json @@ -27,11 +27,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -41,11 +43,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -55,11 +59,13 @@ "distance": 10.0, "current": 0.14, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -69,11 +75,13 @@ "distance": 10.0, "current": 0.21, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -83,11 +91,13 @@ "distance": 10.0, "current": 0.28, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -97,11 +107,13 @@ "distance": 10.0, "current": 0.34, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -111,11 +123,13 @@ "distance": 10.0, "current": 0.41, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -125,11 +139,13 @@ "distance": 10.0, "current": 0.48, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } }, @@ -139,11 +155,13 @@ "distance": 10.0, "current": 0.55, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json index 559d4c0f239..c0315a48914 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/1_0.json @@ -27,10 +27,12 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -40,10 +42,12 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -53,10 +57,12 @@ "distance": 13.0, "current": 0.13, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -66,10 +72,12 @@ "distance": 13.0, "current": 0.19, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -79,10 +87,12 @@ "distance": 13.0, "current": 0.25, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -92,10 +102,12 @@ "distance": 13.0, "current": 0.31, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -105,10 +117,12 @@ "distance": 13.0, "current": 0.38, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -118,10 +132,12 @@ "distance": 13.0, "current": 0.44, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } }, @@ -131,10 +147,12 @@ "distance": 13.0, "current": 0.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json index a1d58ca6fc3..62033d0444c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_0.json @@ -27,13 +27,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -43,13 +45,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -59,13 +63,15 @@ "distance": 13.0, "current": 0.13, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -75,13 +81,15 @@ "distance": 13.0, "current": 0.19, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -91,13 +99,15 @@ "distance": 13.0, "current": 0.25, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -107,13 +117,15 @@ "distance": 13.0, "current": 0.31, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -123,13 +135,15 @@ "distance": 13.0, "current": 0.38, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -139,13 +153,15 @@ "distance": 13.0, "current": 0.44, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -155,13 +171,15 @@ "distance": 13.0, "current": 0.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json index a1d58ca6fc3..62033d0444c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_3.json @@ -27,13 +27,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -43,13 +45,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -59,13 +63,15 @@ "distance": 13.0, "current": 0.13, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -75,13 +81,15 @@ "distance": 13.0, "current": 0.19, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -91,13 +99,15 @@ "distance": 13.0, "current": 0.25, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -107,13 +117,15 @@ "distance": 13.0, "current": 0.31, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -123,13 +135,15 @@ "distance": 13.0, "current": 0.38, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -139,13 +153,15 @@ "distance": 13.0, "current": 0.44, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -155,13 +171,15 @@ "distance": 13.0, "current": 0.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json index 80bc08973c7..7d985e34e2c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_4.json @@ -27,13 +27,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -43,13 +45,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -59,13 +63,15 @@ "distance": 13.0, "current": 0.14, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -75,13 +81,15 @@ "distance": 13.0, "current": 0.21, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -91,13 +99,15 @@ "distance": 13.0, "current": 0.28, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -107,13 +117,15 @@ "distance": 13.0, "current": 0.34, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -123,13 +135,15 @@ "distance": 13.0, "current": 0.41, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -139,13 +153,15 @@ "distance": 13.0, "current": 0.48, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -155,13 +171,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json index 80bc08973c7..7d985e34e2c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p1000/3_5.json @@ -27,13 +27,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -43,13 +45,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -59,13 +63,15 @@ "distance": 13.0, "current": 0.14, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -75,13 +81,15 @@ "distance": 13.0, "current": 0.21, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -91,13 +99,15 @@ "distance": 13.0, "current": 0.28, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -107,13 +117,15 @@ "distance": 13.0, "current": 0.34, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -123,13 +135,15 @@ "distance": 13.0, "current": 0.41, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -139,13 +153,15 @@ "distance": 13.0, "current": 0.48, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } }, @@ -155,13 +171,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json index fbdf4806602..e30013a862e 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_0.json @@ -27,13 +27,15 @@ "distance": 11.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -43,13 +45,15 @@ "distance": 11.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -59,13 +63,15 @@ "distance": 11.0, "current": 0.15, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -75,13 +81,15 @@ "distance": 11.0, "current": 0.23, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -91,13 +99,15 @@ "distance": 11.0, "current": 0.28, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -107,13 +117,15 @@ "distance": 11.0, "current": 0.38, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -123,13 +135,15 @@ "distance": 11.0, "current": 0.45, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -139,13 +153,15 @@ "distance": 11.0, "current": 0.53, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } }, @@ -155,13 +171,15 @@ "distance": 11.0, "current": 0.6, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json index d19feb8db84..8e887440424 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p20/2_1.json @@ -27,13 +27,15 @@ "distance": 11.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -43,13 +45,15 @@ "distance": 11.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -59,13 +63,15 @@ "distance": 11.0, "current": 0.15, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -75,13 +81,15 @@ "distance": 11.0, "current": 0.23, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -91,13 +99,15 @@ "distance": 11.0, "current": 0.28, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -107,13 +117,15 @@ "distance": 11.0, "current": 0.38, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -123,13 +135,15 @@ "distance": 11.0, "current": 0.45, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -139,13 +153,15 @@ "distance": 11.0, "current": 0.53, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } }, @@ -155,13 +171,15 @@ "distance": 11.0, "current": 0.6, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json index c23b4db1ec1..1b0697c27a3 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_0.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json index bd840ebe3fd..5d9b1fbb4eb 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_3.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json index 85d8ce7165c..70929033f6c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_4.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json index 39c80ff9552..ab55292911a 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/1_5.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.34, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.56, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.68, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.79, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.9, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json index b862b1fcf38..7c50400b26c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_0.json @@ -27,9 +27,11 @@ "distance": 11.0, "current": 0.13, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -39,9 +41,11 @@ "distance": 11.0, "current": 0.13, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -51,9 +55,11 @@ "distance": 11.0, "current": 0.2, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -63,9 +69,11 @@ "distance": 11.0, "current": 0.3, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -75,9 +83,11 @@ "distance": 11.0, "current": 0.4, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -87,9 +97,11 @@ "distance": 11.0, "current": 0.5, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -99,9 +111,11 @@ "distance": 11.0, "current": 0.6, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -111,9 +125,11 @@ "distance": 11.0, "current": 0.7, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } }, @@ -123,9 +139,11 @@ "distance": 11.0, "current": 0.8, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json index 7d0e5ae92dd..8f48ffd5c6f 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p300/2_1.json @@ -27,9 +27,11 @@ "distance": 11.0, "current": 0.13, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -39,9 +41,11 @@ "distance": 11.0, "current": 0.13, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -51,9 +55,11 @@ "distance": 11.0, "current": 0.2, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -63,9 +69,11 @@ "distance": 11.0, "current": 0.3, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -75,9 +83,11 @@ "distance": 11.0, "current": 0.4, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -87,9 +97,11 @@ "distance": 11.0, "current": 0.5, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -99,9 +111,11 @@ "distance": 11.0, "current": 0.6, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -111,9 +125,11 @@ "distance": 11.0, "current": 0.7, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } }, @@ -123,9 +139,11 @@ "distance": 11.0, "current": 0.8, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json index 895a01b8040..67992bb6ade 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_0.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json index f9c82e32cf1..6da05c29e6c 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_3.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json index 71784e82b59..32b199e2ccb 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_4.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.15, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.23, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.38, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.45, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.53, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json index fdf542a2de9..d75bbe30154 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/1_5.json @@ -27,10 +27,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -40,10 +42,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -53,10 +57,12 @@ "distance": 10.0, "current": 0.2, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -66,10 +72,12 @@ "distance": 10.0, "current": 0.3, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -79,10 +87,12 @@ "distance": 10.0, "current": 0.4, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -92,10 +102,12 @@ "distance": 10.0, "current": 0.5, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -105,10 +117,12 @@ "distance": 10.0, "current": 0.6, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -118,10 +132,12 @@ "distance": 10.0, "current": 0.7, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } }, @@ -131,10 +147,12 @@ "distance": 10.0, "current": 0.8, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json index 00c7030ace1..514677f27f1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_0.json @@ -27,9 +27,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -39,9 +41,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -51,9 +55,11 @@ "distance": 13.0, "current": 0.13, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -63,9 +69,11 @@ "distance": 13.0, "current": 0.19, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -75,9 +83,11 @@ "distance": 13.0, "current": 0.25, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -87,9 +97,11 @@ "distance": 13.0, "current": 0.31, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -99,9 +111,11 @@ "distance": 13.0, "current": 0.38, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -111,9 +125,11 @@ "distance": 13.0, "current": 0.44, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -123,9 +139,11 @@ "distance": 13.0, "current": 0.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json index 00c7030ace1..514677f27f1 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_3.json @@ -27,9 +27,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -39,9 +41,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -51,9 +55,11 @@ "distance": 13.0, "current": 0.13, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -63,9 +69,11 @@ "distance": 13.0, "current": 0.19, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -75,9 +83,11 @@ "distance": 13.0, "current": 0.25, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -87,9 +97,11 @@ "distance": 13.0, "current": 0.31, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -99,9 +111,11 @@ "distance": 13.0, "current": 0.38, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -111,9 +125,11 @@ "distance": 13.0, "current": 0.44, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -123,9 +139,11 @@ "distance": 13.0, "current": 0.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json index 85eac28a4a3..3f0b0020c03 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_4.json @@ -27,9 +27,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -39,9 +41,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -51,9 +55,11 @@ "distance": 13.0, "current": 0.14, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -63,9 +69,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -75,9 +83,11 @@ "distance": 13.0, "current": 0.28, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -87,9 +97,11 @@ "distance": 13.0, "current": 0.34, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -99,9 +111,11 @@ "distance": 13.0, "current": 0.41, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -111,9 +125,11 @@ "distance": 13.0, "current": 0.48, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -123,9 +139,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } } diff --git a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json index 85eac28a4a3..3f0b0020c03 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/eight_channel/p50/3_5.json @@ -27,9 +27,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -39,9 +41,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -51,9 +55,11 @@ "distance": 13.0, "current": 0.14, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -63,9 +69,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -75,9 +83,11 @@ "distance": 13.0, "current": 0.28, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -87,9 +97,11 @@ "distance": 13.0, "current": 0.34, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -99,9 +111,11 @@ "distance": 13.0, "current": 0.41, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -111,9 +125,11 @@ "distance": 13.0, "current": 0.48, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } }, @@ -123,9 +139,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json index dea78f14310..4e4ad89ca3f 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/1_0.json @@ -122,13 +122,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -136,9 +138,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -146,9 +150,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -156,9 +162,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -168,13 +176,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -182,9 +192,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -192,9 +204,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -202,9 +216,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -214,13 +230,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -228,9 +246,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -238,9 +258,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -248,9 +270,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -260,13 +284,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -274,9 +300,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -284,9 +312,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -294,9 +324,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -306,13 +338,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -320,9 +354,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,9 +366,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -340,9 +378,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -352,13 +392,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -366,9 +408,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -376,9 +420,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -386,9 +432,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } @@ -405,13 +453,15 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -419,9 +469,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -429,9 +481,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -439,9 +493,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json index deaa099e85c..2b0faca936d 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_0.json @@ -122,13 +122,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -136,9 +138,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -146,9 +150,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -156,9 +162,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -168,13 +176,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -182,9 +192,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -192,9 +204,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -202,9 +216,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -214,13 +230,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -228,9 +246,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -238,9 +258,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -248,9 +270,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -260,13 +284,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -274,9 +300,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -284,9 +312,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -294,9 +324,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -306,13 +338,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -320,9 +354,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,9 +366,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -340,9 +378,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -352,13 +392,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -366,9 +408,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -376,9 +420,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -386,9 +432,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } @@ -405,13 +453,15 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -419,9 +469,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -429,9 +481,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -439,9 +493,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json index d0c9ddb3903..853da180a1b 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_3.json @@ -122,13 +122,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -136,9 +138,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -146,9 +150,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -156,9 +162,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -168,13 +176,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -182,9 +192,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -192,9 +204,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -202,9 +216,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -214,13 +230,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -228,9 +246,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -238,9 +258,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -248,9 +270,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -260,13 +284,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -274,9 +300,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -284,9 +312,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -294,9 +324,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -306,13 +338,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -320,9 +354,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,9 +366,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -340,9 +378,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -352,13 +392,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -366,9 +408,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -376,9 +420,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -386,9 +432,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } @@ -405,13 +453,15 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -419,9 +469,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -429,9 +481,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -439,9 +493,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json index 21ece1542be..84e2492dfb4 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_4.json @@ -122,13 +122,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -136,9 +138,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -146,9 +150,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -156,9 +162,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -168,13 +176,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -182,9 +192,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -192,9 +204,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -202,9 +216,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -214,13 +230,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -228,9 +246,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -238,9 +258,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -248,9 +270,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -260,13 +284,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -274,9 +300,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -284,9 +312,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -294,9 +324,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -306,13 +338,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -320,9 +354,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,9 +366,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -340,9 +378,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -352,13 +392,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -366,9 +408,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -376,9 +420,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -386,9 +432,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } @@ -405,13 +453,15 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -419,9 +469,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -429,9 +481,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -439,9 +493,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json index d4943dbc7fc..515db5e61f8 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_5.json @@ -122,13 +122,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -136,9 +138,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -146,9 +150,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -156,9 +162,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -168,13 +176,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -182,9 +192,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -192,9 +204,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -202,9 +216,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -214,13 +230,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -228,9 +246,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -238,9 +258,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -248,9 +270,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -260,13 +284,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -274,9 +300,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -284,9 +312,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -294,9 +324,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -306,13 +338,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -320,9 +354,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,9 +366,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -340,9 +378,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } }, @@ -352,13 +392,15 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -366,9 +408,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -376,9 +420,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -386,9 +432,11 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } @@ -405,13 +453,15 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } }, "t1000": { @@ -419,9 +469,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -429,9 +481,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5 + } } }, "t50": { @@ -439,9 +493,11 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index 7fc6458620c..ec0c15fcc89 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -150,10 +150,12 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { @@ -161,8 +163,10 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -170,8 +174,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -179,8 +185,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -190,10 +198,12 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "1000": { @@ -201,8 +211,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -210,8 +222,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -219,8 +233,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -230,8 +246,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + }, "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 } @@ -241,8 +259,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -250,8 +270,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -259,8 +281,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -270,10 +294,12 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { @@ -281,8 +307,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -290,8 +318,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -299,8 +329,10 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -310,10 +342,12 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { @@ -321,8 +355,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -330,8 +366,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -339,8 +377,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -350,10 +390,12 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { @@ -361,8 +403,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -370,8 +414,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -379,8 +425,10 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } }, @@ -390,10 +438,12 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } } }, @@ -403,10 +453,12 @@ "distance": 13.0, "current": 0.55, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } } } @@ -423,10 +475,12 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { @@ -434,8 +488,10 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5 + } } }, "t200": { @@ -443,8 +499,10 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t50": { @@ -452,8 +510,10 @@ "distance": 10.0, "current": 1.5, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json index c1b86be6d53..acd8a0f0797 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_0.json @@ -19,11 +19,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json index 1b78e8b343e..c76c2d9f960 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_3.json @@ -19,11 +19,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json index 6220631dd83..c05ffed3e00 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_4.json @@ -19,11 +19,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json index 6220631dd83..c05ffed3e00 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p10/1_5.json @@ -19,11 +19,13 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 3.29, - "opentrons/opentrons_96_tiprack_10ul/1": 3.29, - "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, - "opentrons/geb_96_tiprack_10ul/1": 6.2, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + "v0": { + "default": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json index 0f557dae026..9e2b50ac1fd 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_0.json @@ -19,11 +19,13 @@ "distance": 15.0, "current": 0.1, "tipOverlaps": { - "default": 7.95, - "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, - "opentrons/geb_96_tiprack_1000ul/1": 11.2, - "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + "v0": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json index a21c4253188..24fdde39708 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_3.json @@ -19,11 +19,13 @@ "distance": 15.0, "current": 0.1, "tipOverlaps": { - "default": 7.95, - "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, - "opentrons/geb_96_tiprack_1000ul/1": 11.2, - "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + "v0": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json index a21c4253188..24fdde39708 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_4.json @@ -19,11 +19,13 @@ "distance": 15.0, "current": 0.1, "tipOverlaps": { - "default": 7.95, - "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, - "opentrons/geb_96_tiprack_1000ul/1": 11.2, - "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + "v0": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json index 46a3d1fa2d6..4ef67c2495a 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/1_5.json @@ -19,11 +19,13 @@ "distance": 15.0, "current": 0.15, "tipOverlaps": { - "default": 7.95, - "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, - "opentrons/geb_96_tiprack_1000ul/1": 11.2, - "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + "v0": { + "default": 7.95, + "opentrons/opentrons_96_tiprack_1000ul/1": 7.95, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 7.95, + "opentrons/geb_96_tiprack_1000ul/1": 11.2, + "opentrons/eppendorf_96_tiprack_1000ul_eptips/1": 0.0 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json index 311c1be29ad..4fbf18e4dd8 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_0.json @@ -19,10 +19,12 @@ "distance": 17.0, "current": 0.17, "tipOverlaps": { - "default": 9.7, - "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, - "opentrons/geb_96_tiprack_1000ul/1": 9.5 + "v0": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json index 54bd4d16c06..100324e7556 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_1.json @@ -19,10 +19,12 @@ "distance": 17.0, "current": 0.17, "tipOverlaps": { - "default": 9.7, - "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, - "opentrons/geb_96_tiprack_1000ul/1": 9.5 + "v0": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json index 54bd4d16c06..100324e7556 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/2_2.json @@ -19,10 +19,12 @@ "distance": 17.0, "current": 0.17, "tipOverlaps": { - "default": 9.7, - "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, - "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, - "opentrons/geb_96_tiprack_1000ul/1": 9.5 + "v0": { + "default": 9.7, + "opentrons/opentrons_96_tiprack_1000ul/1": 11.5, + "opentrons/opentrons_96_filtertiprack_1000ul/1": 11.5, + "opentrons/geb_96_tiprack_1000ul/1": 9.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json index cb8158b1a52..6877ce9e12e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_0.json @@ -19,13 +19,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json index cb8158b1a52..6877ce9e12e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_3.json @@ -19,13 +19,15 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json index ad103835fa5..50d5a0193e5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_4.json @@ -19,13 +19,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json index ad103835fa5..50d5a0193e5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_5.json @@ -19,13 +19,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json index ad103835fa5..50d5a0193e5 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_6.json @@ -19,13 +19,15 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json index f5c4a531a53..46473f554ec 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_0.json @@ -19,13 +19,15 @@ "distance": 14.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json index b3e2eb87f52..8763b5ddb67 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_1.json @@ -19,13 +19,15 @@ "distance": 14.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json index b3e2eb87f52..8763b5ddb67 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p20/2_2.json @@ -19,13 +19,15 @@ "distance": 14.0, "current": 0.1, "tipOverlaps": { - "default": 8.25, - "opentrons/opentrons_96_tiprack_10ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, - "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, - "opentrons/geb_96_tiprack_10ul/1": 8.3, - "opentrons/opentrons_96_tiprack_20ul/1": 8.25, - "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + "v0": { + "default": 8.25, + "opentrons/opentrons_96_tiprack_10ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_10ul/1": 8.25, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 8.4, + "opentrons/geb_96_tiprack_10ul/1": 8.3, + "opentrons/opentrons_96_tiprack_20ul/1": 8.25, + "opentrons/opentrons_96_filtertiprack_20ul/1": 8.25 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json index 17134afdd7c..9594b29f0dc 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_0.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json index 8711e5bdd20..548f3a7cda3 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_3.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json index 058b821d1df..c35b608330e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_4.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json index 058b821d1df..c35b608330e 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/1_5.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json index 87fe4ae931a..8c1ebd11a3b 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_0.json @@ -19,9 +19,11 @@ "distance": 17.0, "current": 0.125, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json index cf2a14cbe2b..4cc21702514 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p300/2_1.json @@ -19,9 +19,11 @@ "distance": 17.0, "current": 0.125, "tipOverlaps": { - "default": 8.2, - "opentrons/opentrons_96_tiprack_300ul/1": 8.2, - "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + "v0": { + "default": 8.2, + "opentrons/opentrons_96_tiprack_300ul/1": 8.2, + "opentrons/opentrons_96_filtertiprack_200ul/1": 8.2 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json index ef0f41b2c31..1d58019d609 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_0.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json index 7bc6d0445a3..a5e72e2513f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_3.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json index 913b854b509..0a1bab0a3c7 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_4.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json index 913b854b509..0a1bab0a3c7 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/1_5.json @@ -19,10 +19,12 @@ "distance": 10.0, "current": 0.1, "tipOverlaps": { - "default": 7.47, - "opentrons/opentrons_96_tiprack_300ul/1": 7.47, - "opentrons/tipone_96_tiprack_200ul/1": 6.1, - "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + "v0": { + "default": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json index a06761cbbb3..a2912a2a628 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_0.json @@ -19,9 +19,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json index a06761cbbb3..a2912a2a628 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_3.json @@ -19,9 +19,11 @@ "distance": 13.0, "current": 0.15, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json index 79efef1198a..c31466cdf07 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_4.json @@ -19,9 +19,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json index 79efef1198a..c31466cdf07 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_5.json @@ -19,9 +19,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } diff --git a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json index 79efef1198a..c31466cdf07 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p50/3_6.json @@ -19,9 +19,11 @@ "distance": 13.0, "current": 0.2, "tipOverlaps": { - "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, - "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5 + } } } } From 9a3d2d630430763196e9639928674f92348f3132 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 4 Jun 2024 15:31:11 -0400 Subject: [PATCH 18/29] consolidate pipette config value logic and addition of tip overlap versioning --- .../instruments/ot2/pipette.py | 104 +++++----------- .../instruments/ot3/pipette.py | 107 ++++++---------- api/src/opentrons/hardware_control/util.py | 115 +++++++++++++++++- .../resources/pipette_data_provider.py | 4 +- .../hardware_control/test_pipette_handler.py | 2 +- .../resources/test_pipette_data_provider.py | 8 +- .../protocol_engine/state/test_tip_state.py | 21 ++++ .../general/ninety_six_channel/p1000/3_6.json | 8 +- .../pipette/pipette_definition.py | 4 +- 9 files changed, 214 insertions(+), 159 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 990dcd8579b..2c65a080667 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -59,6 +59,12 @@ ) from opentrons.hardware_control.dev_types import InstrumentHardwareConfigs +from opentrons.hardware_control.util import ( + pick_up_speed_by_configuration, + pick_up_distance_by_configuration, + pick_up_current_by_configuration, + nominal_tip_overlap_dictionary_by_configuration, +) RECONFIG_KEYS = {"quirks"} @@ -156,7 +162,7 @@ def __init__( self._active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap_dictionary = ( + self._versioned_tip_overlap_dictionary = ( self.get_nominal_tip_overlap_dictionary_by_configuration() ) @@ -226,8 +232,8 @@ def pipette_offset(self) -> PipetteOffsetByPipetteMount: return self._pipette_offset @property - def tip_overlap(self) -> Dict[str, float]: - return self._tip_overlap_dictionary + def tip_overlap(self) -> Dict[str, Dict[str, float]]: + return self._versioned_tip_overlap_dictionary @property def channels(self) -> pip_types.PipetteChannelType: @@ -300,7 +306,7 @@ def reset_state(self) -> None: self.active_tip_settings.default_blowout_flowrate.default ) - self._tip_overlap_dictionary = ( + self._versioned_tip_overlap_dictionary = ( self.get_nominal_tip_overlap_dictionary_by_configuration() ) @@ -539,87 +545,39 @@ def get_pick_up_speed_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].speed - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.speed - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) + return pick_up_speed_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + pip_types.PipetteTipType(self._liquid_class.max_volume), + ) def get_pick_up_distance_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].distance - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.distance - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) + return pick_up_distance_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + pip_types.PipetteTipType(self._liquid_class.max_volume), + ) def get_pick_up_current_by_configuration( self, config: PressFitPickUpTipConfiguration, ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][pip_types.PipetteTipType(self._liquid_class.max_volume).name].current - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.current - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) + return pick_up_current_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + pip_types.PipetteTipType(self._liquid_class.max_volume), + ) def get_nominal_tip_overlap_dictionary_by_configuration( self, - ) -> Dict[str, float]: - for config in ( - self._config.pick_up_tip_configurations.press_fit, - self._config.pick_up_tip_configurations.cam_action, - ): - if not config: - continue - - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][ - pip_types.PipetteTipType(self._liquid_class.max_volume).name - ].tip_overlap_dictionary - except KeyError: - try: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.tip_overlap_dictionary - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) - except KeyError: - # No valid key found for the approved nozzle map under this configuration - try the next - continue - raise CommandPreconditionViolated( - message="No valid tip overlap dictionary identified.", + ) -> Dict[str, Dict[str, float]]: + return nominal_tip_overlap_dictionary_by_configuration( + self._config, + self._nozzle_manager.current_configuration.valid_map_key, + pip_types.PipetteTipType(self._liquid_class.max_volume), ) # Cache max is chosen somewhat arbitrarily. With a float is input we don't @@ -673,7 +631,7 @@ def as_dict(self) -> "Pipette.DictType": "default_dispense_flow_rates": self.dispense_flow_rates_lookup, "tip_length": self.current_tip_length, "return_tip_height": self.active_tip_settings.default_return_tip_height, - "tip_overlap": self.tip_overlap, + "tip_overlap": self.tip_overlap["v0"], "back_compat_names": self._config.pipette_backcompat_names, "supported_tips": self.liquid_class.supported_tips, } diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index bffbb29c864..986dd88130b 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -49,6 +49,13 @@ from opentrons.hardware_control.errors import InvalidCriticalPoint from opentrons.hardware_control import nozzle_manager +from opentrons.hardware_control.util import ( + pick_up_speed_by_configuration, + pick_up_distance_by_configuration, + pick_up_current_by_configuration, + nominal_tip_overlap_dictionary_by_configuration, +) + mod_log = logging.getLogger(__name__) @@ -140,7 +147,7 @@ def __init__( ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap_dictionary = ( + self._versioned_tip_overlap_dictionary = ( self.get_nominal_tip_overlap_dictionary_by_configuration() ) @@ -170,8 +177,8 @@ def backlash_distance(self) -> float: return self._backlash_distance @property - def tip_overlap(self) -> Dict[str, float]: - return self._tip_overlap_dictionary + def tip_overlap(self) -> Dict[str, Dict[str, float]]: + return self._versioned_tip_overlap_dictionary @property def nozzle_offset(self) -> Point: @@ -263,7 +270,7 @@ def reset_state(self) -> None: ) self._flow_acceleration = self._active_tip_settings.default_flow_acceleration - self._tip_overlap_dictionary = ( + self._versioned_tip_overlap_dictionary = ( self.get_nominal_tip_overlap_dictionary_by_configuration() ) self._nozzle_manager = ( @@ -573,7 +580,7 @@ def as_dict(self) -> "Pipette.DictType": "default_flow_acceleration": self.active_tip_settings.default_flow_acceleration, "tip_length": self.current_tip_length, "return_tip_height": self.active_tip_settings.default_return_tip_height, - "tip_overlap": self.tip_overlap, + "tip_overlap": self.tip_overlap["v0"], "back_compat_names": self._config.pipette_backcompat_names, "supported_tips": self.liquid_class.supported_tips, } @@ -668,7 +675,7 @@ def set_tip_type(self, tip_type: pip_types.PipetteTipType) -> None: self._flow_acceleration = self._active_tip_settings.default_flow_acceleration self._fallback_tip_length = self._active_tip_settings.default_tip_length - self._tip_overlap_dictionary = ( + self._versioned_tip_overlap_dictionary = ( self.get_nominal_tip_overlap_dictionary_by_configuration() ) self._working_volume = min(tip_type.value, self.liquid_class.max_volume) @@ -719,83 +726,39 @@ def get_pick_up_speed_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][self._active_tip_setting_name.name].speed - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.speed - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) + return pick_up_speed_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + self._active_tip_setting_name, + ) def get_pick_up_distance_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][self._active_tip_setting_name.name].distance - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.distance - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) + return pick_up_distance_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + self._active_tip_setting_name, + ) def get_pick_up_current_by_configuration( self, config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], ) -> float: - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][self._active_tip_setting_name.name].current - except KeyError: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.current - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) - - def get_nominal_tip_overlap_dictionary_by_configuration(self) -> Dict[str, float]: - for config in ( - self._config.pick_up_tip_configurations.press_fit, - self._config.pick_up_tip_configurations.cam_action, - ): - if not config: - continue + return pick_up_current_by_configuration( + config, + self._nozzle_manager.current_configuration.valid_map_key, + self._active_tip_setting_name, + ) - try: - return config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ][self._active_tip_setting_name.name].tip_overlap_dictionary - except KeyError: - try: - default = config.configuration_by_nozzle_map[ - self._nozzle_manager.current_configuration.valid_map_key - ].get("default") - if default is not None: - return default.tip_overlap_dictionary - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {self._nozzle_manager.current_configuration.valid_map_key}." - ) - except KeyError: - # No valid key found for the approved nozzle map under this configuration - try the next - continue - raise CommandPreconditionViolated( - message="No valid tip overlap dictionary identified.", + def get_nominal_tip_overlap_dictionary_by_configuration( + self, + ) -> Dict[str, Dict[str, float]]: + return nominal_tip_overlap_dictionary_by_configuration( + self._config, + self._nozzle_manager.current_configuration.valid_map_key, + self._active_tip_setting_name, ) diff --git a/api/src/opentrons/hardware_control/util.py b/api/src/opentrons/hardware_control/util.py index a7965853212..8c0be9472b1 100644 --- a/api/src/opentrons/hardware_control/util.py +++ b/api/src/opentrons/hardware_control/util.py @@ -2,11 +2,18 @@ import asyncio import logging from enum import Enum -from typing import Dict, Any, Optional, List, Mapping, Tuple, TypeVar +from typing import Dict, Any, Optional, List, Mapping, Tuple, TypeVar, Union from .types import CriticalPoint, MotionChecks, Axis from .errors import OutOfBoundsMove from opentrons.types import Point +from opentrons_shared_data.pipette.types import PipetteTipType +from opentrons_shared_data.pipette.pipette_definition import ( + PipetteConfigurations, + PressFitPickUpTipConfiguration, + CamActionPickUpTipConfiguration, + PressAndCamConfigurationValues, +) mod_log = logging.getLogger(__name__) @@ -115,3 +122,109 @@ def ot2_axis_to_string(axis: Axis) -> str: return axis_str_map[axis] except KeyError: return axis.name + + +def _get_press_and_cam_configuration_values( + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], + valid_map_key: str, + active_tip_type: PipetteTipType, +) -> PressAndCamConfigurationValues: + try: + return config.configuration_by_nozzle_map[valid_map_key][active_tip_type.name] + except KeyError: + default = config.configuration_by_nozzle_map[valid_map_key].get("default") + if default is not None: + return default + raise KeyError( + f"Default tip type configuration values do not exist for Nozzle Map {valid_map_key}." + ) + + +def pick_up_speed_by_configuration( + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], + valid_map_key: str, + active_tip_type: PipetteTipType, +) -> float: + """ + Returns the pick up Speed for a given configuration of a given pipette. + + Parameters: + config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for speed. + valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + active_tip_type: The PipetteTipType to be attached to the pipette. + """ + configuration_values = _get_press_and_cam_configuration_values( + config, valid_map_key, active_tip_type + ) + return configuration_values.speed + + +def pick_up_distance_by_configuration( + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], + valid_map_key: str, + active_tip_type: PipetteTipType, +) -> float: + """ + Returns the pick up Distance for a given configuration of a given pipette. + + Parameters: + config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for distance. + valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + active_tip_type: The PipetteTipType to be attached to the pipette. + """ + configuration_values = _get_press_and_cam_configuration_values( + config, valid_map_key, active_tip_type + ) + return configuration_values.distance + + +def pick_up_current_by_configuration( + config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], + valid_map_key: str, + active_tip_type: PipetteTipType, +) -> float: + """ + Returns the pick up Current for a given configuration of a given pipette. + + Parameters: + config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for current. + valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + active_tip_type: The PipetteTipType to be attached to the pipette. + """ + configuration_values = _get_press_and_cam_configuration_values( + config, valid_map_key, active_tip_type + ) + return configuration_values.current + + +def nominal_tip_overlap_dictionary_by_configuration( + configurations: PipetteConfigurations, + valid_map_key: str, + active_tip_type: PipetteTipType, +) -> Dict[str, Dict[str, float]]: + """ + Returns the pick up speed for a given configuration of a given pipette. + + Parameters: + configurations: The PipetterConfigurations of the pipette the tips will be attached to. + valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + active_tip_type: The PipetteTipType to be attached to the pipette. + """ + for config in ( + configurations.pick_up_tip_configurations.press_fit, + configurations.pick_up_tip_configurations.cam_action, + ): + if not config: + continue + + try: + configuration_values = _get_press_and_cam_configuration_values( + config, valid_map_key, active_tip_type + ) + return configuration_values.versioned_tip_overlap_dictionary + + except KeyError: + # No valid key found for the approved nozzle map under this configuration - try the next + continue + # CASEY TODO TBD new error + raise ValueError("No valid tip overlap dictionary identified.") diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index b237cdc412e..7cc284f9693 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -190,7 +190,7 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 tip_overlap_dict_for_tip_type = ( configuration.configuration_by_nozzle_map[ nozzle_manager.current_configuration.valid_map_key - ][tip_type.name].tip_overlap_dictionary + ][tip_type.name].versioned_tip_overlap_dictionary["v0"] ) break except KeyError: @@ -200,7 +200,7 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 ].get("default") if default is not None: tip_overlap_dict_for_tip_type = ( - default.tip_overlap_dictionary + default.versioned_tip_overlap_dictionary["v0"] ) break except KeyError: diff --git a/api/tests/opentrons/hardware_control/test_pipette_handler.py b/api/tests/opentrons/hardware_control/test_pipette_handler.py index 588b7e377e4..b6e776a0778 100644 --- a/api/tests/opentrons/hardware_control/test_pipette_handler.py +++ b/api/tests/opentrons/hardware_control/test_pipette_handler.py @@ -166,7 +166,7 @@ def test_plan_check_pick_up_tip_with_presses_argument_ot3( presses = presses_input increment = 1 pac_values = PressAndCamConfigurationValues( - speed=5.5, distance=10, current=1.0, tipOverlaps={"default": 1.0} + speed=5.5, distance=10, current=1.0, tipOverlaps={"v0": {"default": 1.0}} ) decoy.when(mock_pipette_ot3.has_tip).then_return(False) diff --git a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py index 049441da52a..37fc0635c3f 100644 --- a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py +++ b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py @@ -147,13 +147,13 @@ def test_load_virtual_pipette_nozzle_layout( ) -> None: """It should return a NozzleMap object.""" subject_instance.configure_virtual_pipette_nozzle_layout( - "my-pipette", "p300_multi_v2.1", "A1", "E1", "A1" + "my-pipette", "p300_multi_v2.1", "D1", "H1", "H1" ) result = subject_instance.get_nozzle_layout_for_pipette("my-pipette") assert result.configuration.value == "COLUMN" - assert result.starting_nozzle == "A1" - assert result.front_right == "E1" - assert result.back_left == "A1" + assert result.starting_nozzle == "H1" + assert result.front_right == "H1" + assert result.back_left == "D1" subject_instance.configure_virtual_pipette_nozzle_layout( "my-pipette", "p300_multi_v2.1" diff --git a/api/tests/opentrons/protocol_engine/state/test_tip_state.py b/api/tests/opentrons/protocol_engine/state/test_tip_state.py index c13a4ddf723..dfd693822c3 100644 --- a/api/tests/opentrons/protocol_engine/state/test_tip_state.py +++ b/api/tests/opentrons/protocol_engine/state/test_tip_state.py @@ -1403,6 +1403,27 @@ def _reconfigure_nozzle_layout(start: str, back_l: str, front_r: str) -> NozzleM starting_nozzle=start, back_left_nozzle=back_l, front_right_nozzle=front_r, + valid_nozzle_maps=ValidNozzleMaps( + maps={ + "A1": ["A1"], + "H1": ["H1"], + "A12": ["A12"], + "H12": ["H12"], + "Full": sum( + [ + NINETY_SIX_ROWS["A"], + NINETY_SIX_ROWS["B"], + NINETY_SIX_ROWS["C"], + NINETY_SIX_ROWS["D"], + NINETY_SIX_ROWS["E"], + NINETY_SIX_ROWS["F"], + NINETY_SIX_ROWS["G"], + NINETY_SIX_ROWS["H"], + ], + [], + ), + } + ), ), ) subject.handle_action( diff --git a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json index ec0c15fcc89..273e3ef82a5 100644 --- a/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json +++ b/shared-data/pipette/definitions/2/general/ninety_six_channel/p1000/3_6.json @@ -248,10 +248,10 @@ "tipOverlaps": { "v0": { "default": 10.5, - "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5 - }, - "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, - "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5 + } } }, "t1000": { diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index 9c6de3db57e..41aca1107a8 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -179,9 +179,9 @@ class PressAndCamConfigurationValues(BaseModel): ..., description="The current used by a given tip configuration by tip type.", ) - tip_overlap_dictionary: Dict[str, float] = Field( + versioned_tip_overlap_dictionary: Dict[str, Dict[str, float]] = Field( ..., - description="The default tip overlap associated with this tip type by configuration.", + description="Versioned default tip overlap dictionaries associated with this tip type by configuration.", alias="tipOverlaps", ) From 8f4040b2cf2bbbc399349ae45926f6a163dd8e2f Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 4 Jun 2024 17:09:24 -0400 Subject: [PATCH 19/29] addition of MissingConfigurationData error code and robot server fixes --- api/src/opentrons/hardware_control/util.py | 12 ++++++------ .../robot/calibration/check/user_flow.py | 4 ++-- .../robot/calibration/deck/user_flow.py | 2 +- .../calibration/pipette_offset/user_flow.py | 2 +- .../robot/calibration/tip_length/user_flow.py | 3 ++- shared-data/errors/definitions/1/errors.json | 4 ++++ .../opentrons_shared_data/errors/codes.py | 1 + .../opentrons_shared_data/errors/exceptions.py | 18 ++++++++++++++++++ 8 files changed, 35 insertions(+), 11 deletions(-) diff --git a/api/src/opentrons/hardware_control/util.py b/api/src/opentrons/hardware_control/util.py index 8c0be9472b1..0d47ac4b966 100644 --- a/api/src/opentrons/hardware_control/util.py +++ b/api/src/opentrons/hardware_control/util.py @@ -6,6 +6,7 @@ from .types import CriticalPoint, MotionChecks, Axis from .errors import OutOfBoundsMove +from opentrons_shared_data.errors.exceptions import MissingConfigurationData from opentrons.types import Point from opentrons_shared_data.pipette.types import PipetteTipType from opentrons_shared_data.pipette.pipette_definition import ( @@ -135,8 +136,8 @@ def _get_press_and_cam_configuration_values( default = config.configuration_by_nozzle_map[valid_map_key].get("default") if default is not None: return default - raise KeyError( - f"Default tip type configuration values do not exist for Nozzle Map {valid_map_key}." + raise MissingConfigurationData( + message=f"Default tip type configuration values do not exist for Nozzle Map {valid_map_key}." ) @@ -216,15 +217,14 @@ def nominal_tip_overlap_dictionary_by_configuration( ): if not config: continue - try: configuration_values = _get_press_and_cam_configuration_values( config, valid_map_key, active_tip_type ) return configuration_values.versioned_tip_overlap_dictionary - except KeyError: # No valid key found for the approved nozzle map under this configuration - try the next continue - # CASEY TODO TBD new error - raise ValueError("No valid tip overlap dictionary identified.") + raise MissingConfigurationData( + message=f"No valid tip overlap dictionaries identified for map {valid_map_key} using tip type {active_tip_type}." + ) diff --git a/robot-server/robot_server/robot/calibration/check/user_flow.py b/robot-server/robot_server/robot/calibration/check/user_flow.py index 1366c0054ed..bdd343b8c7c 100644 --- a/robot-server/robot_server/robot/calibration/check/user_flow.py +++ b/robot-server/robot_server/robot/calibration/check/user_flow.py @@ -851,8 +851,8 @@ def _get_tip_length(self) -> float: self.active_tiprack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self.hw_pipette.tip_overlap.get( - self.active_tiprack.uri, self.hw_pipette.tip_overlap["default"] + tip_overlap = self.hw_pipette.tip_overlap["v0"].get( + self.active_tiprack.uri, self.hw_pipette.tip_overlap["v0"]["default"] ) tip_length = self.active_tiprack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/deck/user_flow.py b/robot-server/robot_server/robot/calibration/deck/user_flow.py index 55ed1351f84..a857e593820 100644 --- a/robot-server/robot_server/robot/calibration/deck/user_flow.py +++ b/robot-server/robot_server/robot/calibration/deck/user_flow.py @@ -365,7 +365,7 @@ def _get_tip_length(self) -> float: self._tip_rack._core.get_definition(), ).tipLength except cal_types.TipLengthCalNotFound: - tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) + tip_overlap = self._hw_pipette.tip_overlap["v0"].get(self._tip_rack.uri, 0) tip_length = self._tip_rack.tip_length return tip_length - tip_overlap diff --git a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py index 695e8428634..c68255ce2f3 100644 --- a/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py +++ b/robot-server/robot_server/robot/calibration/pipette_offset/user_flow.py @@ -328,7 +328,7 @@ def _get_stored_pipette_offset_cal( def _get_tip_length(self) -> float: stored_tip_length_cal = self._get_stored_tip_length_cal() if stored_tip_length_cal is None or self._should_perform_tip_length: - tip_overlap = self._hw_pipette.tip_overlap.get(self._tip_rack.uri, 0) + tip_overlap = self._hw_pipette.tip_overlap["v0"].get(self._tip_rack.uri, 0) tip_length = self._tip_rack.tip_length return tip_length - tip_overlap else: diff --git a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py index fec0fa42639..a51f5f5412e 100644 --- a/robot-server/robot_server/robot/calibration/tip_length/user_flow.py +++ b/robot-server/robot_server/robot/calibration/tip_length/user_flow.py @@ -200,7 +200,8 @@ async def save_offset(self): def _get_default_tip_length(self) -> float: tiprack: labware.Labware = self._deck[TIP_RACK_SLOT] # type: ignore full_length = tiprack.tip_length - overlap_dict: Dict[str, float] = self._hw_pipette.tip_overlap + # add the versioned stuff here + overlap_dict: Dict[str, float] = self._hw_pipette.tip_overlap["v0"] overlap = overlap_dict.get(tiprack.uri, 0) return full_length - overlap diff --git a/shared-data/errors/definitions/1/errors.json b/shared-data/errors/definitions/1/errors.json index d711e4667e8..71cfb1ed764 100644 --- a/shared-data/errors/definitions/1/errors.json +++ b/shared-data/errors/definitions/1/errors.json @@ -237,6 +237,10 @@ "4008": { "detail": "Invalid stored data", "category": "generalError" + }, + "4009": { + "detail": "Missing configuration data", + "category": "generalError" } } } diff --git a/shared-data/python/opentrons_shared_data/errors/codes.py b/shared-data/python/opentrons_shared_data/errors/codes.py index e386cba455e..59a6a6e3697 100644 --- a/shared-data/python/opentrons_shared_data/errors/codes.py +++ b/shared-data/python/opentrons_shared_data/errors/codes.py @@ -89,6 +89,7 @@ class ErrorCodes(Enum): INVALID_PROTOCOL_DATA = _code_from_dict_entry("4006") API_MISCONFIGURATION = _code_from_dict_entry("4007") INVALID_STORED_DATA = _code_from_dict_entry("4008") + MISSING_CONFIGURATION_DATA = _code_from_dict_entry("4009") @classmethod @lru_cache(25) diff --git a/shared-data/python/opentrons_shared_data/errors/exceptions.py b/shared-data/python/opentrons_shared_data/errors/exceptions.py index 499fcf3ac2d..da2baf275ba 100644 --- a/shared-data/python/opentrons_shared_data/errors/exceptions.py +++ b/shared-data/python/opentrons_shared_data/errors/exceptions.py @@ -989,3 +989,21 @@ def __init__( ) -> None: """Build an InvalidStoredData.""" super().__init__(ErrorCodes.INVALID_STORED_DATA, message, detail, wrapping) + + +class MissingConfigurationData(GeneralError): + """An error indicating that provided configurationd ata is missing or invalid. + + This will usually be because a pipette configuration does not match the ones provided by the pipette definition. + """ + + def __init__( + self, + message: Optional[str] = None, + detail: Optional[Dict[str, str]] = None, + wrapping: Optional[Sequence[EnumeratedError]] = None, + ) -> None: + """Build an MissingConfigurationData.""" + super().__init__( + ErrorCodes.MISSING_CONFIGURATION_DATA, message, detail, wrapping + ) From 8ca77733c3dc01e6189dd885d70350ca6b6e48be Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 5 Jun 2024 15:31:54 -0400 Subject: [PATCH 20/29] typescript type updates and schema definition updates --- shared-data/js/__tests__/pipettes.test.ts | 7 +- shared-data/js/types.ts | 17 +++- .../schemas/2/pipettePropertiesSchema.json | 82 +++++++++++-------- .../pipette/mutable_configurations.py | 1 - 4 files changed, 65 insertions(+), 42 deletions(-) diff --git a/shared-data/js/__tests__/pipettes.test.ts b/shared-data/js/__tests__/pipettes.test.ts index 6fcc519f2d3..8bf1ca8d445 100644 --- a/shared-data/js/__tests__/pipettes.test.ts +++ b/shared-data/js/__tests__/pipettes.test.ts @@ -108,13 +108,14 @@ describe('pipette data accessors', () => { nozzleMap: expect.anything(), pathTo3D: 'pipette/definitions/2/geometry/single_channel/p1000/placeholder.gltf', + validNozzleMaps: { + maps: expect.anything(), + }, pickUpTipConfigurations: { pressFit: { - speedByTipCount: expect.anything(), presses: 1, increment: 0, - distanceByTipCount: expect.anything(), - currentByTipCount: expect.anything(), + configurationsByNozzleMap: expect.anything(), }, }, partialTipConfigurations: { diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index 5eab9ebaa08..d80f07688b0 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -400,17 +400,28 @@ export interface FlowRateSpec { max: number } +interface pressAndCamConfigurationValues { + speed: number + distance: number + current: number + tipOverlaps: Record> +} export interface PipetteV2GeneralSpecs { displayName: string model: string displayCategory: PipetteDisplayCategory + validNozzleMaps: { + maps: { [nozzleMapKey: string]: string[] } + } pickUpTipConfigurations: { pressFit: { - speedByTipCount: Record presses: number increment: number - distanceByTipCount: Record - currentByTipCount: Record + configurationsByNozzleMap: { + [nozzleMapKey: string]: { + [tipType: string]: pressAndCamConfigurationValues + } + } } } dropTipConfigurations: { diff --git a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json index d7b0a55a86f..05ae975522b 100644 --- a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json +++ b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json @@ -45,22 +45,36 @@ "type": "number", "enum": [1, 2, 3, 4, 5, 6, 7, 8, 12, 96, 384] }, - "distanceByTipCount": { + "configurationsByNozzleMap": { "type": "object", - "patternProperties": { - "\\d+": { "$ref": "#/definitions/distanceRange" } - } - }, - "speedByTipCount": { - "type": "object", - "patternProperties": { - "\\d+": { "$ref": "#/definitions/speedRange" } - } - }, - "currentByTipCount": { - "type": "object", - "patternProperties": { - "\\d+": { "$ref": "#/definitions/currentRange" } + "description": "Validated nozzle map key by which configurations are differentiated.", + "items": { + "type": "object", + "description": "Tip types by which each set of configration values are differentiated.", + "required": ["default"], + "items": { + "speed": { "$ref": "#/definitions/speedRange" }, + "distance": { "$ref": "#/definitions/distanceRange" }, + "current": { "$ref": "#/definitions/currentRange" }, + "tipOverlaps": { + "type": "object", + "description": "Map by version of tip overlap values with defaults", + "required": ["v0"], + "patternProperties": { + "^v\\d+$": { + "type": "object", + "description": "Map of tip overlap values with defaults", + "required": ["default"], + "$comment": "Other keys in here should be labware URIs", + "properties": { + "default": { "type": "number" } + }, + "additionalProperties": { "type": "number" } + } + }, + "additionalProperties": false + } + } } } }, @@ -179,6 +193,18 @@ "run": { "$ref": "#/definitions/currentRange" } } }, + "validNozzleMaps": { + "maps": { + "description": "The Opentrons validated map configurations for this pipette.", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "pickUpTipConfigurations": { "description": "Object containing configurations for picking up tips common to all partial configurations", "anyOf": [ @@ -188,23 +214,13 @@ "properties": { "pressFit": { "type": "object", - "required": [ - "presses", - "speedByTipCount", - "increment", - "distanceByTipCount", - "currentByTipCount" - ], + "required": ["presses", "increment", "configurationsByNozzleMap"], "additionalProperties": false, "properties": { "presses": { "$ref": "#/definitions/positiveNumber" }, - "speedByTipCount": { "$ref": "#/definitions/speedByTipCount" }, "increment": { "$ref": "#/definitions/positiveNumber" }, - "distanceByTipCount": { - "$ref": "#/definitions/distanceByTipCount" - }, - "currentByTipCount": { - "$ref": "#/definitions/currentByTipCount" + "configurationsByNozzleMap": { + "$ref": "#/definitions/configurationsByNozzleMap" } } } @@ -219,9 +235,7 @@ "required": [ "prep_move_distance", "prep_move_speed", - "speed", - "distance", - "currentByTipCount" + "configurationsByNozzleMap" ], "additionalProperties": false, "properties": { @@ -229,10 +243,8 @@ "$ref": "#/definitions/positiveNumber" }, "prep_move_speed": { "$ref": "#/definitions/positiveNumber" }, - "speed": { "$ref": "#/definitions/positiveNumber" }, - "distance": { "$ref": "#/definitions/positiveNumber" }, - "currentByTipCount": { - "$ref": "#/definitions/currentByTipCount" + "configurationsByNozzleMap": { + "$ref": "#/definitions/configurationsByNozzleMap" }, "connectTiprackDistanceMM": { "$ref": "#/definitions/positiveNumber" diff --git a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py index 89132008a86..53882dd8f11 100644 --- a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py +++ b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py @@ -171,7 +171,6 @@ def _do_get_default_value_for( return _do_get_default_value_for(remaining_config[tip_list[-1]], rest) elif first == "##EACHNOZZLEMAP##": map_list = list(remaining_config.keys()) - map_list.sort(key=lambda o: o.value if isinstance(o, Enum) else o) return _do_get_default_value_for(remaining_config[map_list[-1]], rest) elif first == "##EACHTIPTYPE##": for key in remaining_config.keys(): From 9e23a591c173becfd22edbbdd97362be6f42e7e4 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 5 Jun 2024 15:48:51 -0400 Subject: [PATCH 21/29] hardware testing updates to utilize configurations by nozzle map --- .../opentrons_api/helpers_ot3.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hardware-testing/hardware_testing/opentrons_api/helpers_ot3.py b/hardware-testing/hardware_testing/opentrons_api/helpers_ot3.py index d1ff8f91d53..3b7d2fbb086 100644 --- a/hardware-testing/hardware_testing/opentrons_api/helpers_ot3.py +++ b/hardware-testing/hardware_testing/opentrons_api/helpers_ot3.py @@ -556,9 +556,11 @@ async def update_pick_up_current( """Update pick-up-tip current.""" pipette = _get_pipette_from_mount(api, mount) config_model = pipette.pick_up_configurations.press_fit - config_model.current_by_tip_count = { - k: current for k in config_model.current_by_tip_count.keys() - } + for map_key in config_model.configuration_by_nozzle_map.keys(): + for tip_type in config_model.configuration_by_nozzle_map[map_key].keys(): + config_model.configuration_by_nozzle_map[map_key][ + tip_type + ].current = current pipette.pick_up_configurations.press_fit = config_model @@ -568,9 +570,11 @@ async def update_pick_up_distance( """Update pick-up-tip distance.""" pipette = _get_pipette_from_mount(api, mount) config_model = pipette.pick_up_configurations.press_fit - config_model.distance_by_tip_count = { - k: distance for k in config_model.distance_by_tip_count.keys() - } + for map_key in config_model.configuration_by_nozzle_map.keys(): + for tip_type in config_model.configuration_by_nozzle_map[map_key].keys(): + config_model.configuration_by_nozzle_map[map_key][ + tip_type + ].distance = distance pipette.pick_up_configurations.press_fit = config_model From 36aef874afc478f15154f9b756bf0be92779c952 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 5 Jun 2024 16:16:18 -0400 Subject: [PATCH 22/29] step generation updates --- .../fixtureGeneration.test.ts.snap | 1081 +++++++++++++++-- 1 file changed, 961 insertions(+), 120 deletions(-) diff --git a/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap b/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap index 57b519dba68..1c1d9d85f27 100644 --- a/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap +++ b/step-generation/src/__tests__/__snapshots__/fixtureGeneration.test.ts.snap @@ -10455,60 +10455,395 @@ exports[`snapshot tests > makeContext 1`] = ` "pathTo3D": "pipette/definitions/2/geometry/ninety_six_channel/p1000/placeholder.gltf", "pickUpTipConfigurations": { "camAction": { - "connectTiprackDistanceMM": 7, - "currentByTipCount": { - "96": 1.5, + "configurationsByNozzleMap": { + "Full": { + "default": { + "current": 1.5, + "distance": 10, + "speed": 5.5, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 1.5, + "distance": 10, + "speed": 5.5, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 1.5, + "distance": 10, + "speed": 5.5, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 1.5, + "distance": 10, + "speed": 5.5, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, }, - "distance": 10, + "connectTiprackDistanceMM": 7, "prep_move_distance": 9, "prep_move_speed": 10, - "speed": 5.5, }, "pressFit": { - "currentByTipCount": { - "1": 0.2, - "12": 0.19, - "16": 0.25, - "2": 0.25, - "24": 0.38, - "3": 0.3, - "4": 0.35, - "48": 0.75, - "5": 0.4, - "6": 0.45, - "7": 0.5, - "8": 0.55, - }, - "distanceByTipCount": { - "1": 13, - "12": 13, - "16": 13, - "2": 13, - "24": 13, - "3": 13, - "4": 13, - "48": 13, - "5": 13, - "6": 13, - "7": 13, - "8": 13, + "configurationsByNozzleMap": { + "Column1": { + "default": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, + "Column12": { + "default": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.55, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, + "SingleA1": { + "default": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, + "SingleA12": { + "default": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, + "SingleH1": { + "default": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, + "SingleH12": { + "default": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + "t1000": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.5, + }, + }, + }, + "t200": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.5, + }, + }, + }, + "t50": { + "current": 0.2, + "distance": 13, + "speed": 10, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.5, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.5, + }, + }, + }, + }, }, "increment": 0, "presses": 1, - "speedByTipCount": { - "1": 10, - "12": 10, - "16": 10, - "2": 10, - "24": 10, - "3": 10, - "4": 10, - "48": 10, - "5": 10, - "6": 10, - "7": 10, - "8": 10, - }, }, }, "pipetteBoundingBoxOffsets": { @@ -10543,6 +10878,140 @@ exports[`snapshot tests > makeContext 1`] = ` "shaftDiameter": 9, "shaftULperMM": 63.617, "tipPresenceCheckDistanceMM": 8, + "validNozzleMaps": { + "maps": { + "Column1": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "Column12": [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12", + ], + "Full": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9", + "A10", + "A11", + "A12", + "B1", + "B2", + "B3", + "B4", + "B5", + "B6", + "B7", + "B8", + "B9", + "B10", + "B11", + "B12", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C9", + "C10", + "C11", + "C12", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6", + "D7", + "D8", + "D9", + "D10", + "D11", + "D12", + "E1", + "E2", + "E3", + "E4", + "E5", + "E6", + "E7", + "E8", + "E9", + "E10", + "E11", + "E12", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "G1", + "G2", + "G3", + "G4", + "G5", + "G6", + "G7", + "G8", + "G9", + "G10", + "G11", + "G12", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "H7", + "H8", + "H9", + "H10", + "H11", + "H12", + ], + "SingleA1": [ + "A1", + ], + "SingleA12": [ + "A12", + ], + "SingleH1": [ + "H1", + ], + "SingleH12": [ + "H12", + ], + }, + }, }, "tiprackDefURI": [ "fixture/fixture_flex_96_tiprack_1000ul/1", @@ -11946,38 +12415,154 @@ exports[`snapshot tests > makeContext 1`] = ` "pathTo3D": "pipette/definitions/2/geometry/eight_channel/p10/placeholder.gltf", "pickUpTipConfigurations": { "pressFit": { - "currentByTipCount": { - "1": 0.1, - "2": 0.1, - "3": 0.15, - "4": 0.2, - "5": 0.25, - "6": 0.3, - "7": 0.35, - "8": 0.4, - }, - "distanceByTipCount": { - "1": 10, - "2": 10, - "3": 10, - "4": 10, - "5": 10, - "6": 10, - "7": 10, - "8": 10, + "configurationsByNozzleMap": { + "Full": { + "default": { + "current": 0.4, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toB1": { + "default": { + "current": 0.35, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toC1": { + "default": { + "current": 0.3, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toD1": { + "default": { + "current": 0.25, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toE1": { + "default": { + "current": 0.2, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toF1": { + "default": { + "current": 0.15, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "H1toG1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "SingleA1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, + "SingleH1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, }, "increment": 1, "presses": 3, - "speedByTipCount": { - "1": 30, - "2": 30, - "3": 30, - "4": 30, - "5": 30, - "6": 30, - "7": 30, - "8": 30, - }, }, }, "pipetteBoundingBoxOffsets": { @@ -12013,6 +12598,65 @@ exports[`snapshot tests > makeContext 1`] = ` ], "shaftDiameter": 1, "shaftULperMM": 0.785, + "validNozzleMaps": { + "maps": { + "Full": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toB1": [ + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toC1": [ + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toD1": [ + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toE1": [ + "E1", + "F1", + "G1", + "H1", + ], + "H1toF1": [ + "F1", + "G1", + "H1", + ], + "H1toG1": [ + "G1", + "H1", + ], + "SingleA1": [ + "A1", + ], + "SingleH1": [ + "H1", + ], + }, + }, }, "tiprackDefURI": [ "fixture/fixture_tiprack_10_ul/1", @@ -13322,17 +13966,26 @@ exports[`snapshot tests > makeContext 1`] = ` "pathTo3D": "pipette/definitions/2/geometry/single_channel/p10/placeholder.gltf", "pickUpTipConfigurations": { "pressFit": { - "currentByTipCount": { - "1": 0.1, - }, - "distanceByTipCount": { - "1": 10, + "configurationsByNozzleMap": { + "SingleA1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 3.29, + "opentrons/eppendorf_96_tiprack_10ul_eptips/1": 1, + "opentrons/geb_96_tiprack_10ul/1": 6.2, + "opentrons/opentrons_96_filtertiprack_10ul/1": 3.29, + "opentrons/opentrons_96_tiprack_10ul/1": 3.29, + }, + }, + }, + }, }, "increment": 1, "presses": 3, - "speedByTipCount": { - "1": 30, - }, }, }, "pipetteBoundingBoxOffsets": { @@ -13368,6 +14021,13 @@ exports[`snapshot tests > makeContext 1`] = ` ], "shaftDiameter": 1, "shaftULperMM": 0.785, + "validNozzleMaps": { + "maps": { + "SingleA1": [ + "A1", + ], + }, + }, }, "tiprackDefURI": [ "fixture/fixture_tiprack_10_ul/1", @@ -14768,38 +15428,145 @@ exports[`snapshot tests > makeContext 1`] = ` "pathTo3D": "pipette/definitions/2/geometry/eight_channel/p300/placeholder.gltf", "pickUpTipConfigurations": { "pressFit": { - "currentByTipCount": { - "1": 0.1, - "2": 0.15, - "3": 0.23, - "4": 0.3, - "5": 0.38, - "6": 0.45, - "7": 0.53, - "8": 0.6, - }, - "distanceByTipCount": { - "1": 10, - "2": 10, - "3": 10, - "4": 10, - "5": 10, - "6": 10, - "7": 10, - "8": 10, + "configurationsByNozzleMap": { + "Full": { + "default": { + "current": 0.6, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toB1": { + "default": { + "current": 0.53, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toC1": { + "default": { + "current": 0.45, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toD1": { + "default": { + "current": 0.38, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toE1": { + "default": { + "current": 0.3, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toF1": { + "default": { + "current": 0.23, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "H1toG1": { + "default": { + "current": 0.15, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "SingleA1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, + "SingleH1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, }, "increment": 1, "presses": 3, - "speedByTipCount": { - "1": 30, - "2": 30, - "3": 30, - "4": 30, - "5": 30, - "6": 30, - "7": 30, - "8": 30, - }, }, }, "pipetteBoundingBoxOffsets": { @@ -14835,6 +15602,65 @@ exports[`snapshot tests > makeContext 1`] = ` ], "shaftDiameter": 5, "shaftULperMM": 19.635, + "validNozzleMaps": { + "maps": { + "Full": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toB1": [ + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toC1": [ + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toD1": [ + "D1", + "E1", + "F1", + "G1", + "H1", + ], + "H1toE1": [ + "E1", + "F1", + "G1", + "H1", + ], + "H1toF1": [ + "F1", + "G1", + "H1", + ], + "H1toG1": [ + "G1", + "H1", + ], + "SingleA1": [ + "A1", + ], + "SingleH1": [ + "H1", + ], + }, + }, }, "tiprackDefURI": [ "fixture/fixture_tiprack_300_ul/1", @@ -16244,17 +17070,25 @@ exports[`snapshot tests > makeContext 1`] = ` "pathTo3D": "pipette/definitions/2/geometry/single_channel/p300/placeholder.gltf", "pickUpTipConfigurations": { "pressFit": { - "currentByTipCount": { - "1": 0.1, - }, - "distanceByTipCount": { - "1": 10, + "configurationsByNozzleMap": { + "SingleA1": { + "default": { + "current": 0.1, + "distance": 10, + "speed": 30, + "tipOverlaps": { + "v0": { + "default": 7.47, + "opentrons/opentrons_96_filtertiprack_200ul/1": 7.47, + "opentrons/opentrons_96_tiprack_300ul/1": 7.47, + "opentrons/tipone_96_tiprack_200ul/1": 6.1, + }, + }, + }, + }, }, "increment": 1, "presses": 3, - "speedByTipCount": { - "1": 30, - }, }, }, "pipetteBoundingBoxOffsets": { @@ -16290,6 +17124,13 @@ exports[`snapshot tests > makeContext 1`] = ` ], "shaftDiameter": 5, "shaftULperMM": 19.635, + "validNozzleMaps": { + "maps": { + "SingleA1": [ + "A1", + ], + }, + }, }, "tiprackDefURI": [ "fixture/fixture_tiprack_300_ul/1", From 49e296714bed217ed6f99b3932a8fd3151fed8af Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 5 Jun 2024 16:44:12 -0400 Subject: [PATCH 23/29] js pipette test data --- shared-data/js/__tests__/pipettes.test.ts | 25 +++++++++++++++++++++-- shared-data/js/types.ts | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/shared-data/js/__tests__/pipettes.test.ts b/shared-data/js/__tests__/pipettes.test.ts index 8bf1ca8d445..bc34e6afcc8 100644 --- a/shared-data/js/__tests__/pipettes.test.ts +++ b/shared-data/js/__tests__/pipettes.test.ts @@ -109,13 +109,34 @@ describe('pipette data accessors', () => { pathTo3D: 'pipette/definitions/2/geometry/single_channel/p1000/placeholder.gltf', validNozzleMaps: { - maps: expect.anything(), + maps: { + SingleA1: ['A1'], + }, }, pickUpTipConfigurations: { pressFit: { presses: 1, increment: 0, - configurationsByNozzleMap: expect.anything(), + configurationsByNozzleMap: { + SingleA1: { + default: { + speed: 10, + distance: 13, + current: 0.2, + tipOverlaps: { + v0: { + default: 10.5, + 'opentrons/opentrons_flex_96_tiprack_1000ul/1': 10.5, + 'opentrons/opentrons_flex_96_tiprack_200ul/1': 10.5, + 'opentrons/opentrons_flex_96_tiprack_50ul/1': 10.5, + 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1': 10.5, + 'opentrons/opentrons_flex_96_filtertiprack_200ul/1': 10.5, + 'opentrons/opentrons_flex_96_filtertiprack_50ul/1': 10.5, + }, + }, + }, + }, + }, }, }, partialTipConfigurations: { diff --git a/shared-data/js/types.ts b/shared-data/js/types.ts index d80f07688b0..1fc029862c8 100644 --- a/shared-data/js/types.ts +++ b/shared-data/js/types.ts @@ -404,7 +404,7 @@ interface pressAndCamConfigurationValues { speed: number distance: number current: number - tipOverlaps: Record> + tipOverlaps: { [version: string]: { [labwareURI: string]: number } } } export interface PipetteV2GeneralSpecs { displayName: string From 397c4acb972f5880c41ac10f4dd146da9188ea70 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Fri, 7 Jun 2024 15:38:26 -0400 Subject: [PATCH 24/29] error formatting fix --- shared-data/python/opentrons_shared_data/errors/exceptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-data/python/opentrons_shared_data/errors/exceptions.py b/shared-data/python/opentrons_shared_data/errors/exceptions.py index da2baf275ba..144bb963285 100644 --- a/shared-data/python/opentrons_shared_data/errors/exceptions.py +++ b/shared-data/python/opentrons_shared_data/errors/exceptions.py @@ -992,7 +992,7 @@ def __init__( class MissingConfigurationData(GeneralError): - """An error indicating that provided configurationd ata is missing or invalid. + """An error indicating that provided configuration data is missing or invalid. This will usually be because a pipette configuration does not match the ones provided by the pipette definition. """ From 6ff32cc7755265542fbdffe66007315e873f906e Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 10 Jun 2024 11:23:13 -0400 Subject: [PATCH 25/29] single channel p1000 3_7 schema migration --- .../2/general/single_channel/p1000/3_7.json | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_7.json b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_7.json index 327d01afec9..b1d202e897f 100644 --- a/shared-data/pipette/definitions/2/general/single_channel/p1000/3_7.json +++ b/shared-data/pipette/definitions/2/general/single_channel/p1000/3_7.json @@ -3,18 +3,34 @@ "displayName": "Flex 1-Channel 1000 μL", "model": "p1000", "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "SingleA1": ["A1"] + } + }, "pickUpTipConfigurations": { "pressFit": { "presses": 1, - "speedByTipCount": { - "1": 10.0 - }, "increment": 0.0, - "distanceByTipCount": { - "1": 13.0 - }, - "currentByTipCount": { - "1": 0.2 + "configurationsByNozzleMap": { + "SingleA1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.65, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.76, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.09, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.65, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.76, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.09 + } + } + } + } } } }, From 4ee4853499d6359e8d0c30c12d2237c0efbaee24 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Mon, 10 Jun 2024 13:56:59 -0400 Subject: [PATCH 26/29] js test updates for single channel p1000 pipette v3_7 --- shared-data/js/__tests__/pipettes.test.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/shared-data/js/__tests__/pipettes.test.ts b/shared-data/js/__tests__/pipettes.test.ts index 798da4bb967..4b045ee48a4 100644 --- a/shared-data/js/__tests__/pipettes.test.ts +++ b/shared-data/js/__tests__/pipettes.test.ts @@ -126,12 +126,12 @@ describe('pipette data accessors', () => { tipOverlaps: { v0: { default: 10.5, - 'opentrons/opentrons_flex_96_tiprack_1000ul/1': 10.5, - 'opentrons/opentrons_flex_96_tiprack_200ul/1': 10.5, - 'opentrons/opentrons_flex_96_tiprack_50ul/1': 10.5, - 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1': 10.5, - 'opentrons/opentrons_flex_96_filtertiprack_200ul/1': 10.5, - 'opentrons/opentrons_flex_96_filtertiprack_50ul/1': 10.5, + 'opentrons/opentrons_flex_96_tiprack_1000ul/1': 9.65, + 'opentrons/opentrons_flex_96_tiprack_200ul/1': 9.76, + 'opentrons/opentrons_flex_96_tiprack_50ul/1': 10.09, + 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1': 9.65, + 'opentrons/opentrons_flex_96_filtertiprack_200ul/1': 9.76, + 'opentrons/opentrons_flex_96_filtertiprack_50ul/1': 10.09, }, }, }, From 4bda97077779e0494adeefe38e7d7406f6208090 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 11 Jun 2024 11:53:18 -0400 Subject: [PATCH 27/29] schema clarifications and unit test for map consistency --- .../instruments/ot2/pipette.py | 4 +- api/src/opentrons/hardware_control/util.py | 38 ++++++++------- .../schemas/2/pipettePropertiesSchema.json | 4 +- .../pipette/pipette_definition.py | 2 +- .../tests/pipette/test_validate_schema.py | 48 +++++++++++++++++++ 5 files changed, 75 insertions(+), 21 deletions(-) diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 2c65a080667..436cf121e7a 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -631,7 +631,9 @@ def as_dict(self) -> "Pipette.DictType": "default_dispense_flow_rates": self.dispense_flow_rates_lookup, "tip_length": self.current_tip_length, "return_tip_height": self.active_tip_settings.default_return_tip_height, - "tip_overlap": self.tip_overlap["v0"], + "tip_overlap": self.tip_overlap[ + "v0" + ], # TODO(cb, 2024-06-11): hard coded to "v0" - when versioned tip overlaps are fully integrated this must change "back_compat_names": self._config.pipette_backcompat_names, "supported_tips": self.liquid_class.supported_tips, } diff --git a/api/src/opentrons/hardware_control/util.py b/api/src/opentrons/hardware_control/util.py index 0d47ac4b966..4eb5d004a1f 100644 --- a/api/src/opentrons/hardware_control/util.py +++ b/api/src/opentrons/hardware_control/util.py @@ -127,23 +127,27 @@ def ot2_axis_to_string(axis: Axis) -> str: def _get_press_and_cam_configuration_values( config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], - valid_map_key: str, + valid_nozzle_map_key: str, active_tip_type: PipetteTipType, ) -> PressAndCamConfigurationValues: try: - return config.configuration_by_nozzle_map[valid_map_key][active_tip_type.name] + return config.configuration_by_nozzle_map[valid_nozzle_map_key][ + active_tip_type.name + ] except KeyError: - default = config.configuration_by_nozzle_map[valid_map_key].get("default") + default = config.configuration_by_nozzle_map[valid_nozzle_map_key].get( + "default" + ) if default is not None: return default raise MissingConfigurationData( - message=f"Default tip type configuration values do not exist for Nozzle Map {valid_map_key}." + message=f"Default tip type configuration values do not exist for Nozzle Map {valid_nozzle_map_key}." ) def pick_up_speed_by_configuration( config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], - valid_map_key: str, + valid_nozzle_map_key: str, active_tip_type: PipetteTipType, ) -> float: """ @@ -151,18 +155,18 @@ def pick_up_speed_by_configuration( Parameters: config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for speed. - valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + valid_nozzle_map_key: The string key representing the current pre-validated map of nozzles the pipette has been configured to use. active_tip_type: The PipetteTipType to be attached to the pipette. """ configuration_values = _get_press_and_cam_configuration_values( - config, valid_map_key, active_tip_type + config, valid_nozzle_map_key, active_tip_type ) return configuration_values.speed def pick_up_distance_by_configuration( config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], - valid_map_key: str, + valid_nozzle_map_key: str, active_tip_type: PipetteTipType, ) -> float: """ @@ -170,18 +174,18 @@ def pick_up_distance_by_configuration( Parameters: config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for distance. - valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + valid_nozzle_map_key: The string key representing the current pre-validated map of nozzles the pipette has been configured to use. active_tip_type: The PipetteTipType to be attached to the pipette. """ configuration_values = _get_press_and_cam_configuration_values( - config, valid_map_key, active_tip_type + config, valid_nozzle_map_key, active_tip_type ) return configuration_values.distance def pick_up_current_by_configuration( config: Union[CamActionPickUpTipConfiguration, PressFitPickUpTipConfiguration], - valid_map_key: str, + valid_nozzle_map_key: str, active_tip_type: PipetteTipType, ) -> float: """ @@ -189,18 +193,18 @@ def pick_up_current_by_configuration( Parameters: config: A PressFitPickUpTipConfiguration or a CamActionPickUpTipConfiguration (96ch Only) containing values for current. - valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + valid_nozzle_map_key: The string key representing the current pre-validated map of nozzles the pipette has been configured to use. active_tip_type: The PipetteTipType to be attached to the pipette. """ configuration_values = _get_press_and_cam_configuration_values( - config, valid_map_key, active_tip_type + config, valid_nozzle_map_key, active_tip_type ) return configuration_values.current def nominal_tip_overlap_dictionary_by_configuration( configurations: PipetteConfigurations, - valid_map_key: str, + valid_nozzle_map_key: str, active_tip_type: PipetteTipType, ) -> Dict[str, Dict[str, float]]: """ @@ -208,7 +212,7 @@ def nominal_tip_overlap_dictionary_by_configuration( Parameters: configurations: The PipetterConfigurations of the pipette the tips will be attached to. - valid_map_key: The string key representing the current pre-validated map the pipette has been configured to use. + valid_nozzle_map_key: The string key representing the current pre-validated map of nozzles the pipette has been configured to use. active_tip_type: The PipetteTipType to be attached to the pipette. """ for config in ( @@ -219,12 +223,12 @@ def nominal_tip_overlap_dictionary_by_configuration( continue try: configuration_values = _get_press_and_cam_configuration_values( - config, valid_map_key, active_tip_type + config, valid_nozzle_map_key, active_tip_type ) return configuration_values.versioned_tip_overlap_dictionary except KeyError: # No valid key found for the approved nozzle map under this configuration - try the next continue raise MissingConfigurationData( - message=f"No valid tip overlap dictionaries identified for map {valid_map_key} using tip type {active_tip_type}." + message=f"No valid tip overlap dictionaries identified for map {valid_nozzle_map_key} using tip type {active_tip_type}." ) diff --git a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json index 05ae975522b..0610b3dbaaf 100644 --- a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json +++ b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json @@ -47,7 +47,7 @@ }, "configurationsByNozzleMap": { "type": "object", - "description": "Validated nozzle map key by which configurations are differentiated.", + "description": "Pipette configurations keyed by validated sets of nozzle layouts. Maps must be ordered form smallest to largest regarding nozzle count.", "items": { "type": "object", "description": "Tip types by which each set of configration values are differentiated.", @@ -58,7 +58,7 @@ "current": { "$ref": "#/definitions/currentRange" }, "tipOverlaps": { "type": "object", - "description": "Map by version of tip overlap values with defaults", + "description": "Set of versioned tip overlap values with version 0 acting as the default", "required": ["v0"], "patternProperties": { "^v\\d+$": { diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py index 41aca1107a8..95aa35f8b4a 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_definition.py @@ -199,7 +199,7 @@ class PressFitPickUpTipConfiguration(BaseModel): str, Dict[str, PressAndCamConfigurationValues] ] = Field( ..., - description="The speed, distance, current and overlap configurations for a given partial tip configuration by tip type.", + description="The speed, distance, current and tip overlap configurations for a given pipette configuration. Double dictionary is keyed by Valid Nozzle Map Key and Tip Type.", alias="configurationsByNozzleMap", ) diff --git a/shared-data/python/tests/pipette/test_validate_schema.py b/shared-data/python/tests/pipette/test_validate_schema.py index b887105468b..3a851003c36 100644 --- a/shared-data/python/tests/pipette/test_validate_schema.py +++ b/shared-data/python/tests/pipette/test_validate_schema.py @@ -79,3 +79,51 @@ def test_pick_up_configs_configuration_by_nozzle_map_keys() -> None: loaded_model.pick_up_tip_configurations.cam_action.configuration_by_nozzle_map.keys() ) assert pipette_maps == list(valid_nozzle_maps.maps.keys()) + + +def test_pick_up_configs_configuration_ordered_from_smallest_to_largest() -> None: + """Verify that ValidNozzleMaps and PickUpTipConfigurations are ordered from smallest nozzle configuration to largest, ensuring mutable config compliancy.""" + paths_to_validate = ( + get_shared_data_root() / "pipette" / "definitions" / "2" / "general" + ) + _channel_model_str = { + "single_channel": "single", + "ninety_six_channel": "96", + "eight_channel": "multi", + } + assert os.listdir(paths_to_validate), "You have a path wrong" + for channel_dir in os.listdir(paths_to_validate): + for model_dir in os.listdir(paths_to_validate / channel_dir): + for version_file in os.listdir(paths_to_validate / channel_dir / model_dir): + version_list = version_file.split(".json")[0].split("_") + built_model: PipetteModel = PipetteModel( + f"{model_dir}_{_channel_model_str[channel_dir]}_v{version_list[0]}.{version_list[1]}" + ) + + model_version = convert_pipette_model(built_model) + loaded_model = load_definition( + model_version.pipette_type, + model_version.pipette_channels, + model_version.pipette_version, + ) + valid_nozzle_maps = load_valid_nozzle_maps( + model_version.pipette_type, + model_version.pipette_channels, + model_version.pipette_version, + ) + + map_keys = list(valid_nozzle_maps.maps.keys()) + for key in map_keys: + for i in range(map_keys.index(key)): + assert len(valid_nozzle_maps.maps[map_keys[i]]) <= len( + valid_nozzle_maps.maps[key] + ) + + pipette_maps = list( + loaded_model.pick_up_tip_configurations.press_fit.configuration_by_nozzle_map.keys() + ) + for key in pipette_maps: + for i in range(pipette_maps.index(key)): + assert len(valid_nozzle_maps.maps[pipette_maps[i]]) <= len( + valid_nozzle_maps.maps[key] + ) From 6702599288e5ee0dbcb953a52657c21e688fbe43 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 11 Jun 2024 12:14:03 -0400 Subject: [PATCH 28/29] typo correction --- shared-data/pipette/schemas/2/pipettePropertiesSchema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json index 0610b3dbaaf..f6e5fe02220 100644 --- a/shared-data/pipette/schemas/2/pipettePropertiesSchema.json +++ b/shared-data/pipette/schemas/2/pipettePropertiesSchema.json @@ -47,7 +47,7 @@ }, "configurationsByNozzleMap": { "type": "object", - "description": "Pipette configurations keyed by validated sets of nozzle layouts. Maps must be ordered form smallest to largest regarding nozzle count.", + "description": "Pipette configurations keyed by validated sets of nozzle layouts. Maps must be ordered from smallest to largest regarding nozzle count.", "items": { "type": "object", "description": "Tip types by which each set of configration values are differentiated.", From d33c225dd62685ae6922201b3f50eaa118dac817 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Tue, 11 Jun 2024 14:14:17 -0400 Subject: [PATCH 29/29] pipette data provider error update --- .../protocol_engine/resources/pipette_data_provider.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index 7cc284f9693..e29976d3fc4 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -15,6 +15,7 @@ NozzleConfigurationManager, NozzleMap, ) +from opentrons_shared_data.errors.exceptions import MissingConfigurationData from ..types import FlowRates from ...types import Point @@ -181,8 +182,8 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 ): approved_map = map_key if approved_map is None: - raise ValueError( - "Virtual Static Nozzle Configuration does not match any approved map layout for the current pipette." + raise MissingConfigurationData( + message="Virtual Static Nozzle Configuration does not match any approved map layout for the current pipette." ) if configuration is not None: