From f54fedcec0fa1aba06484d8c4c85d4b553b47058 Mon Sep 17 00:00:00 2001 From: Andy Sigler Date: Wed, 13 Sep 2023 13:50:42 -0400 Subject: [PATCH] feat(hardware-testing): Adds hacky low-volume feature; Updates accuracy functions (#13542) --- .../hardware_testing/gravimetric/__main__.py | 11 +- .../hardware_testing/gravimetric/config.py | 1 + .../hardware_testing/gravimetric/execute.py | 3 + .../hardware_testing/gravimetric/helpers.py | 6 +- .../gravimetric/increments.py | 536 ++++++++++-------- .../gravimetric/liquid_class/pipetting.py | 33 +- .../hardware_testing/gravimetric/trial.py | 3 + .../liquid/eight_channel/p50/default/3_5.json | 104 ++-- .../p50/lowVolumeDefault/3_5.json | 104 ++-- .../single_channel/p1000/default/3_5.json | 136 ++--- .../single_channel/p50/default/3_5.json | 96 ++-- .../p50/lowVolumeDefault/3_5.json | 96 ++-- 12 files changed, 585 insertions(+), 544 deletions(-) diff --git a/hardware-testing/hardware_testing/gravimetric/__main__.py b/hardware-testing/hardware_testing/gravimetric/__main__.py index 9b2fab3fade..3e435e8098d 100644 --- a/hardware-testing/hardware_testing/gravimetric/__main__.py +++ b/hardware-testing/hardware_testing/gravimetric/__main__.py @@ -43,7 +43,6 @@ from .tips import get_tips from hardware_testing.drivers import asair_sensor from opentrons.protocol_api import InstrumentContext -from opentrons.hardware_control.types import OT3Mount # FIXME: bump to v2.15 to utilize protocol engine API_LEVEL = "2.13" @@ -213,6 +212,7 @@ def build_run_args(cls, args: argparse.Namespace) -> "RunArgs": kind, False, # set extra to false so we always do the normal tests first args.channels, + mode=args.mode, # NOTE: only needed for increment test ) if len(vls) > 0: volumes.append( @@ -334,6 +334,7 @@ def build_gravimetric_cfg( jog: bool, same_tip: bool, ignore_fail: bool, + mode: str, run_args: RunArgs, ) -> GravimetricConfig: """Build.""" @@ -361,6 +362,7 @@ def build_gravimetric_cfg( jog=jog, same_tip=same_tip, ignore_fail=ignore_fail, + mode=mode, ) @@ -379,6 +381,7 @@ def build_photometric_cfg( pipette_channels: int, photoplate_column_offset: int, dye_well_column_offset: int, + mode: str, run_args: RunArgs, ) -> PhotometricConfig: """Run.""" @@ -408,6 +411,7 @@ def build_photometric_cfg( ignore_fail=ignore_fail, photoplate_column_offset=photoplate_column_offset, dye_well_column_offset=dye_well_column_offset, + mode=mode, ) @@ -434,6 +438,7 @@ def _main( args.channels, args.photoplate_col_offset, args.dye_well_col_offset, + args.mode, run_args, ) union_cfg = cfg_pm @@ -453,6 +458,7 @@ def _main( args.jog, args.same_tip, args.ignore_fail, + args.mode, run_args, ) @@ -513,6 +519,9 @@ def _main( parser.add_argument("--ignore-fail", action="store_true") parser.add_argument("--photoplate-col-offset", type=int, default=1) parser.add_argument("--dye-well-col-offset", type=int, default=1) + parser.add_argument( + "--mode", type=str, choices=["", "default", "lowVolumeDefault"], default="" + ) args = parser.parse_args() run_args = RunArgs.build_run_args(args) if not run_args.ctx.is_simulating(): diff --git a/hardware-testing/hardware_testing/gravimetric/config.py b/hardware-testing/hardware_testing/gravimetric/config.py index bbe1ec71929..c7108cc4e84 100644 --- a/hardware-testing/hardware_testing/gravimetric/config.py +++ b/hardware-testing/hardware_testing/gravimetric/config.py @@ -35,6 +35,7 @@ class VolumetricConfig: jog: bool same_tip: bool ignore_fail: bool + mode: str @dataclass diff --git a/hardware-testing/hardware_testing/gravimetric/execute.py b/hardware-testing/hardware_testing/gravimetric/execute.py index 08720154828..4a41b668516 100644 --- a/hardware-testing/hardware_testing/gravimetric/execute.py +++ b/hardware-testing/hardware_testing/gravimetric/execute.py @@ -319,6 +319,7 @@ def _record_measurement_and_store(m_type: MeasurementType) -> MeasurementData: trial.liquid_tracker, callbacks=pipetting_callbacks, blank=trial.blank, + mode="", ) else: # center channel over well @@ -350,6 +351,7 @@ def _record_measurement_and_store(m_type: MeasurementType) -> MeasurementData: trial.liquid_tracker, callbacks=pipetting_callbacks, blank=trial.blank, + mode="", ) trial.ctx._core.get_hardware().retract(mnt) # retract to top of gantry @@ -370,6 +372,7 @@ def _record_measurement_and_store(m_type: MeasurementType) -> MeasurementData: trial.liquid_tracker, callbacks=pipetting_callbacks, blank=trial.blank, + mode="", ) trial.ctx._core.get_hardware().retract(mnt) # retract to top of gantry _take_photos(trial, "dispense") diff --git a/hardware-testing/hardware_testing/gravimetric/helpers.py b/hardware-testing/hardware_testing/gravimetric/helpers.py index 1fb2242de46..6ed62ff262f 100644 --- a/hardware-testing/hardware_testing/gravimetric/helpers.py +++ b/hardware-testing/hardware_testing/gravimetric/helpers.py @@ -296,14 +296,13 @@ def _get_volumes( kind: config.ConfigType, extra: bool, channels: int, + mode: str = "", ) -> List[float]: if increment: - print("if") test_volumes = get_volume_increments( - pipette_channels, pipette_volume, tip_volume + pipette_channels, pipette_volume, tip_volume, mode=mode ) elif user_volumes and not ctx.is_simulating(): - print("elif") _inp = input( f'Enter desired volumes for tip{tip_volume}, comma separated (eg: "10,100,1000") :' ) @@ -311,7 +310,6 @@ def _get_volumes( float(vol_str) for vol_str in _inp.strip().split(",") if vol_str ] else: - print("else") test_volumes = get_test_volumes( kind, channels, pipette_volume, tip_volume, extra ) diff --git a/hardware-testing/hardware_testing/gravimetric/increments.py b/hardware-testing/hardware_testing/gravimetric/increments.py index cbe7d299b8b..5bf6b8efd3b 100644 --- a/hardware-testing/hardware_testing/gravimetric/increments.py +++ b/hardware-testing/hardware_testing/gravimetric/increments.py @@ -4,260 +4,330 @@ INCREMENTS = { 1: { 50: { - 50: [ - 1.100, - 1.200, - 1.370, - 1.700, - 2.040, - 2.660, - 3.470, - 3.960, - 4.350, - 4.800, - 5.160, - 5.890, - 6.730, - 8.200, - 10.020, - 11.100, - 14.910, - 28.940, - 53.500, - 56.160, - ] + 50: { + "default": [ + 1.100, + 1.200, + 1.370, + 1.700, + 2.040, + 2.660, + 3.470, + 3.960, + 4.350, + 4.800, + 5.160, + 5.890, + 6.730, + 8.200, + 10.020, + 11.100, + 14.910, + 28.940, + 53.500, + 56.160, + ], + "lowVolumeDefault": [ + 1.100, + 1.200, + 1.370, + 1.700, + 2.040, + 2.660, + 3.470, + 3.960, + 4.350, + 4.800, + 5.160, + 5.890, + 6.730, + 8.200, + 10.020, + 11.100, + 14.910, + 28.940, + 48.27, + ], + } }, 1000: { - 50: [ - 2.530, - 2.700, - 3.000, - 3.600, - 4.040, - 4.550, - 5.110, - 5.500, - 5.750, - 6.000, - 6.460, - 7.270, - 8.170, - 11.000, - 12.900, - 16.510, - 26.400, - 33.380, - 53.360, - 60.000, - ], - 200: [ - 3.250, - 3.600, - 4.400, - 6.220, - 7.310, - 8.600, - 11.890, - 13.990, - 22.750, - 36.990, - 56.000, - 97.830, - 159.090, - 187.080, - 220.000, - ], - 1000: [ - 3.000, - 4.000, - 5.000, - 7.270, - 12.800, - 15.370, - 18.530, - 56.950, - 99.840, - 120.380, - 254.480, - 369.990, - 446.130, - 648.650, - 1030.000, - 1137.160, - ], + 50: { + "default": [ + 2.530, + 2.700, + 3.000, + 3.600, + 4.040, + 4.550, + 5.110, + 5.500, + 5.750, + 6.000, + 6.460, + 7.270, + 8.170, + 11.000, + 12.900, + 16.510, + 26.400, + 33.380, + 53.360, + 60.000, + ], + }, + 200: { + "default": [ + 3.250, + 3.600, + 4.400, + 6.220, + 7.310, + 8.600, + 11.890, + 13.990, + 22.750, + 36.990, + 56.000, + 97.830, + 159.090, + 187.080, + 220.000, + ], + }, + 1000: { + "default": [ + 3.000, + 4.000, + 5.000, + 7.270, + 12.800, + 15.370, + 18.530, + 56.950, + 99.840, + 120.380, + 254.480, + 369.990, + 446.130, + 648.650, + 1030.000, + 1137.160, + ], + }, }, }, 8: { 50: { # FIXME: need to update based on PVT data - 50: [ - 0.80, - 1.00, - 1.25, - 1.57, - 1.96, - 2.45, - 3.06, - 3.30, - 3.60, - 3.83, - 4.00, - 4.30, - 4.60, - 4.79, - 5.30, - 5.99, - 7.49, - 9.37, - 11.72, - 18.34, - 22.93, - 28.68, - 35.88, - 44.87, - 56.12, - ] + 50: { + "default": [ + 0.80, + 1.00, + 1.25, + 1.57, + 1.96, + 2.45, + 3.06, + 3.30, + 3.60, + 3.83, + 4.00, + 4.30, + 4.60, + 4.79, + 5.30, + 5.99, + 7.49, + 9.37, + 11.72, + 18.34, + 22.93, + 28.68, + 35.88, + 44.87, + 56.12, + ], + "lowVolumeDefault": [ + 0.80, + 1.00, + 1.25, + 1.57, + 1.96, + 2.45, + 3.06, + 3.30, + 3.60, + 3.83, + 4.00, + 4.30, + 4.60, + 4.79, + 5.30, + 5.99, + 7.49, + 9.37, + 11.72, + 18.34, + 22.93, + 28.68, + 35.88, + 48.27, + ], + } }, 1000: { # FIXME: need to update based on PVT data - 50: [ - 1.00, - 1.24, - 1.54, - 1.91, - 2.37, - 2.94, - 3.64, - 3.90, - 4.20, - 4.52, - 4.80, - 5.10, - 5.61, - 5.90, - 6.20, - 6.95, - 8.63, - 10.70, - 13.28, - 16.47, - 20.43, - 25.34, - 31.43, - 38.99, - 48.37, - 60.00, - ], - 200: [ - 1.50, - 1.85, - 2.27, - 2.80, - 3.44, - 4.24, - 5.22, - 6.43, - 7.91, - 9.74, - 11.99, - 14.76, - 18.17, - 22.36, - 27.53, - 33.89, - 41.72, - 51.35, - 63.22, - 77.82, - 95.80, - 117.93, - 145.18, - 178.71, - 220.00, - ], - 1000: [ - 2.00, - 2.61, - 3.39, - 4.42, - 5.76, - 7.50, - 9.77, - 12.72, - 16.57, - 21.58, - 28.11, - 36.61, - 47.69, - 62.11, - 80.91, - 105.38, - 137.26, - 178.78, - 232.87, - 303.31, - 395.07, - 514.58, - 670.25, - 873.00, - 1137.10, - ], + 50: { + "default": [ + 1.00, + 1.24, + 1.54, + 1.91, + 2.37, + 2.94, + 3.64, + 3.90, + 4.20, + 4.52, + 4.80, + 5.10, + 5.61, + 5.90, + 6.20, + 6.95, + 8.63, + 10.70, + 13.28, + 16.47, + 20.43, + 25.34, + 31.43, + 38.99, + 48.37, + 60.00, + ], + }, + 200: { + "default": [ + 1.50, + 1.85, + 2.27, + 2.80, + 3.44, + 4.24, + 5.22, + 6.43, + 7.91, + 9.74, + 11.99, + 14.76, + 18.17, + 22.36, + 27.53, + 33.89, + 41.72, + 51.35, + 63.22, + 77.82, + 95.80, + 117.93, + 145.18, + 178.71, + 220.00, + ], + }, + 1000: { + "default": [ + 2.00, + 2.61, + 3.39, + 4.42, + 5.76, + 7.50, + 9.77, + 12.72, + 16.57, + 21.58, + 28.11, + 36.61, + 47.69, + 62.11, + 80.91, + 105.38, + 137.26, + 178.78, + 232.87, + 303.31, + 395.07, + 514.58, + 670.25, + 873.00, + 1137.10, + ], + }, }, }, 96: { 1000: { # FIXME: need to update based on DVT data - 50: [ - 2.000, - 3.000, - 4.000, - 5.000, - 6.000, - 7.000, - 8.000, - 9.000, - 10.000, - 15.000, - 25.000, - 40.000, - 60.000, - ], - 200: [ - 2.000, - 3.000, - 4.000, - 5.000, - 6.000, - 7.000, - 8.000, - 9.000, - 10.000, - 50.000, - 100.000, - 220.000, - ], - 1000: [ - 2.000, - 3.000, - 4.000, - 5.000, - 6.000, - 7.000, - 8.000, - 9.000, - 10.000, - 50.000, - 200.000, - 1137.10, - ], + 50: { + "default": [ + 2.000, + 3.000, + 4.000, + 5.000, + 6.000, + 7.000, + 8.000, + 9.000, + 10.000, + 15.000, + 25.000, + 40.000, + 60.000, + ], + }, + 200: { + "default": [ + 2.000, + 3.000, + 4.000, + 5.000, + 6.000, + 7.000, + 8.000, + 9.000, + 10.000, + 50.000, + 100.000, + 220.000, + ], + }, + 1000: { + "default": [ + 2.000, + 3.000, + 4.000, + 5.000, + 6.000, + 7.000, + 8.000, + 9.000, + 10.000, + 50.000, + 200.000, + 1137.10, + ], + }, } }, } def get_volume_increments( - channels: int, pipette_volume: int, tip_volume: int + channels: int, pipette_volume: int, tip_volume: int, mode: str = "" ) -> List[float]: """Get volume increments.""" try: - return INCREMENTS[channels][pipette_volume][tip_volume] + mode = mode if mode else "default" + return INCREMENTS[channels][pipette_volume][tip_volume][mode] except KeyError: raise ValueError( f"unexpected channel-pipette-tip combo: {channels}ch P{pipette_volume} w/ T{tip_volume}" diff --git a/hardware-testing/hardware_testing/gravimetric/liquid_class/pipetting.py b/hardware-testing/hardware_testing/gravimetric/liquid_class/pipetting.py index 90e05a905da..953a45fa81f 100644 --- a/hardware-testing/hardware_testing/gravimetric/liquid_class/pipetting.py +++ b/hardware-testing/hardware_testing/gravimetric/liquid_class/pipetting.py @@ -171,6 +171,7 @@ def _pipette_with_liquid_settings( # noqa: C901 blank: bool = True, added_blow_out: bool = True, touch_tip: bool = False, + mode: str = "", ) -> None: """Run a pipette given some Pipetting Liquid Settings.""" # FIXME: stop using hwapi, and get those functions into core software @@ -179,30 +180,36 @@ def _pipette_with_liquid_settings( # noqa: C901 hw_pipette = hw_api.hardware_pipettes[hw_mount.to_mount()] _check_aspirate_dispense_args(mix, aspirate, dispense) + def _get_max_blow_out_ul() -> float: + # NOTE: calculated using blow-out distance (mm) and the nominal ul-per-mm + blow_out_ul_per_mm = hw_pipette.config.shaft_ul_per_mm + bottom = hw_pipette.plunger_positions.bottom + blow_out = hw_pipette.plunger_positions.blow_out + return (blow_out - bottom) * blow_out_ul_per_mm + def _dispense_with_added_blow_out() -> None: # dispense all liquid, plus some air by calling `pipette.blow_out(location, volume)` # FIXME: this is a hack, until there's an equivalent `pipette.blow_out(location, volume)` hw_api = ctx._core.get_hardware() hw_mount = OT3Mount.LEFT if pipette.mount == "left" else OT3Mount.RIGHT - hw_api.blow_out(hw_mount, liquid_class.dispense.blow_out_submerged) + vol = min(liquid_class.dispense.blow_out_submerged, _get_max_blow_out_ul()) + hw_api.blow_out(hw_mount, vol) def _blow_out_remaining_air() -> None: # FIXME: using the HW-API to specify that we want to blow-out the full # available blow-out volume - # NOTE: calculated using blow-out distance (mm) and the nominal ul-per-mm - blow_out_ul_per_mm = hw_pipette.config.shaft_ul_per_mm - bottom = hw_pipette.plunger_positions.bottom - blow_out = hw_pipette.plunger_positions.blow_out - max_blow_out_ul = (blow_out - bottom) * blow_out_ul_per_mm - hw_api.blow_out(hw_mount, max_blow_out_ul) + hw_api.blow_out(hw_mount, _get_max_blow_out_ul()) def _set_plunger_bottom() -> None: # FIXME: this should be deleted immediately once low-volume mode is working old_positions = hw_pipette.plunger_positions - if (aspirate and aspirate < 5) or (dispense and dispense < 5): - old_positions.bottom = 61.5 + poses = {"default": 71.5, "lowVolumeDefault": 61.5} + if mode: + old_positions.bottom = poses[mode] + elif (aspirate and aspirate < 5) or (dispense and dispense < 5): + old_positions.bottom = poses["lowVolumeDefault"] else: - old_positions.bottom = 71.5 + old_positions.bottom = poses["default"] hw_pipette._set_plunger_positions(old_positions) # ASPIRATE/DISPENSE SEQUENCE HAS THREE PHASES: @@ -341,6 +348,7 @@ def mix_with_liquid_class( callbacks: PipettingCallbacks, blank: bool = False, touch_tip: bool = False, + mode: str = "", ) -> None: """Mix with liquid class.""" liquid_class = get_liquid_class( @@ -358,6 +366,7 @@ def mix_with_liquid_class( mix=mix_volume, blank=blank, touch_tip=touch_tip, + mode=mode, ) @@ -373,6 +382,7 @@ def aspirate_with_liquid_class( callbacks: PipettingCallbacks, blank: bool = False, touch_tip: bool = False, + mode: str = "", ) -> None: """Aspirate with liquid class.""" liquid_class = get_liquid_class( @@ -390,6 +400,7 @@ def aspirate_with_liquid_class( aspirate=aspirate_volume, blank=blank, touch_tip=touch_tip, + mode=mode, ) @@ -406,6 +417,7 @@ def dispense_with_liquid_class( blank: bool = False, added_blow_out: bool = True, touch_tip: bool = False, + mode: str = "", ) -> None: """Dispense with liquid class.""" liquid_class = get_liquid_class( @@ -424,4 +436,5 @@ def dispense_with_liquid_class( blank=blank, added_blow_out=added_blow_out, touch_tip=touch_tip, + mode=mode, ) diff --git a/hardware-testing/hardware_testing/gravimetric/trial.py b/hardware-testing/hardware_testing/gravimetric/trial.py index a78c1c21155..1497353242a 100644 --- a/hardware-testing/hardware_testing/gravimetric/trial.py +++ b/hardware-testing/hardware_testing/gravimetric/trial.py @@ -44,6 +44,7 @@ class GravimetricTrial(VolumetricTrial): stable: bool cfg: config.GravimetricConfig scale_delay: int = DELAY_FOR_MEASUREMENT + mode: str = "" @dataclass @@ -120,6 +121,7 @@ def build_gravimetric_trials( acceptable_d=None, cfg=cfg, env_sensor=env_sensor, + mode=cfg.mode, ) ) else: @@ -170,6 +172,7 @@ def build_gravimetric_trials( acceptable_d=d, cfg=cfg, env_sensor=env_sensor, + mode=cfg.mode, ) ) return trial_list diff --git a/shared-data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json b/shared-data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json index c1080cf67b2..8741ae674fc 100644 --- a/shared-data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json +++ b/shared-data/pipette/definitions/2/liquid/eight_channel/p50/default/3_5.json @@ -20,68 +20,60 @@ "aspirate": { "default": { "1": [ - [0.6464, 0.4817, 0.0427], - [1.0889, 0.2539, 0.1591], - [1.5136, 0.1624, 0.2587], - [1.9108, 0.1042, 0.3467], - [2.2941, 0.0719, 0.4085], - [2.9978, 0.037, 0.4886], - [3.7731, 0.0378, 0.4863], - [4.7575, 0.0516, 0.4342], - [5.5024, 0.011, 0.6275], - [6.2686, 0.0114, 0.6253], - [7.005, 0.0054, 0.6625], - [8.5207, 0.0063, 0.6563], - [10.0034, 0.003, 0.6844], - [11.5075, 0.0031, 0.6833], - [13.0327, 0.0032, 0.6829], - [14.5356, 0.0018, 0.7003], - [17.5447, 0.0014, 0.7063], - [20.5576, 0.0011, 0.7126], - [23.5624, 0.0007, 0.7197], - [26.5785, 0.0007, 0.721], - [29.593, 0.0005, 0.7248], - [32.6109, 0.0004, 0.7268], - [35.6384, 0.0004, 0.727], - [38.6439, 0.0002, 0.7343], - [41.6815, 0.0004, 0.7284], - [44.6895, 0.0002, 0.7372], - [47.6926, 0.0001, 0.7393], - [51.4567, 0.0001, 0.7382] + [0.375, 0.6521, 0.05], + [0.67, 0.4286, 0.1338], + [0.9867, 0.2293, 0.2673], + [1.3683, 0.1434, 0.3521], + [1.8383, 0.0872, 0.4289], + [2.4133, 0.0524, 0.4931], + [2.625, 0.0252, 0.5587], + [2.8667, 0.0027, 0.6176], + [2.9917, -0.0954, 0.8989], + [3.12, -0.0068, 0.6339], + [3.4133, 0.0369, 0.4973], + [3.7417, 0.0469, 0.4634], + [3.9667, 0.0513, 0.4467], + [4.555, 0.0418, 0.4846], + [5.23, 0.0159, 0.6025], + [6.6483, 0.008, 0.6437], + [8.425, 0.0051, 0.6633], + [10.665, 0.0038, 0.6742], + [17.0017, 0.0021, 0.6922], + [21.3983, 0.0011, 0.7093], + [26.9283, 0.0008, 0.7155], + [33.8483, 0.0005, 0.7238], + [42.5067, 0.0004, 0.7288], + [53.2317, 0.0001, 0.7403] ] } }, "dispense": { "default": { "1": [ - [0.6464, 0.4817, 0.0427], - [1.0889, 0.2539, 0.1591], - [1.5136, 0.1624, 0.2587], - [1.9108, 0.1042, 0.3467], - [2.2941, 0.0719, 0.4085], - [2.9978, 0.037, 0.4886], - [3.7731, 0.0378, 0.4863], - [4.7575, 0.0516, 0.4342], - [5.5024, 0.011, 0.6275], - [6.2686, 0.0114, 0.6253], - [7.005, 0.0054, 0.6625], - [8.5207, 0.0063, 0.6563], - [10.0034, 0.003, 0.6844], - [11.5075, 0.0031, 0.6833], - [13.0327, 0.0032, 0.6829], - [14.5356, 0.0018, 0.7003], - [17.5447, 0.0014, 0.7063], - [20.5576, 0.0011, 0.7126], - [23.5624, 0.0007, 0.7197], - [26.5785, 0.0007, 0.721], - [29.593, 0.0005, 0.7248], - [32.6109, 0.0004, 0.7268], - [35.6384, 0.0004, 0.727], - [38.6439, 0.0002, 0.7343], - [41.6815, 0.0004, 0.7284], - [44.6895, 0.0002, 0.7372], - [47.6926, 0.0001, 0.7393], - [51.4567, 0.0001, 0.7382] + [0.375, 0.6521, 0.05], + [0.67, 0.4286, 0.1338], + [0.9867, 0.2293, 0.2673], + [1.3683, 0.1434, 0.3521], + [1.8383, 0.0872, 0.4289], + [2.4133, 0.0524, 0.4931], + [2.625, 0.0252, 0.5587], + [2.8667, 0.0027, 0.6176], + [2.9917, -0.0954, 0.8989], + [3.12, -0.0068, 0.6339], + [3.4133, 0.0369, 0.4973], + [3.7417, 0.0469, 0.4634], + [3.9667, 0.0513, 0.4467], + [4.555, 0.0418, 0.4846], + [5.23, 0.0159, 0.6025], + [6.6483, 0.008, 0.6437], + [8.425, 0.0051, 0.6633], + [10.665, 0.0038, 0.6742], + [17.0017, 0.0021, 0.6922], + [21.3983, 0.0011, 0.7093], + [26.9283, 0.0008, 0.7155], + [33.8483, 0.0005, 0.7238], + [42.5067, 0.0004, 0.7288], + [53.2317, 0.0001, 0.7403] ] } }, diff --git a/shared-data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json b/shared-data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json index a88a92a92ff..45f34d24dc1 100644 --- a/shared-data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json +++ b/shared-data/pipette/definitions/2/liquid/eight_channel/p50/lowVolumeDefault/3_5.json @@ -20,68 +20,60 @@ "aspirate": { "default": { "1": [ - [0.6464, 0.4817, 0.0427], - [1.0889, 0.2539, 0.1591], - [1.5136, 0.1624, 0.2587], - [1.9108, 0.1042, 0.3467], - [2.2941, 0.0719, 0.4085], - [2.9978, 0.037, 0.4886], - [3.7731, 0.0378, 0.4863], - [4.7575, 0.0516, 0.4342], - [5.5024, 0.011, 0.6275], - [6.2686, 0.0114, 0.6253], - [7.005, 0.0054, 0.6625], - [8.5207, 0.0063, 0.6563], - [10.0034, 0.003, 0.6844], - [11.5075, 0.0031, 0.6833], - [13.0327, 0.0032, 0.6829], - [14.5356, 0.0018, 0.7003], - [17.5447, 0.0014, 0.7063], - [20.5576, 0.0011, 0.7126], - [23.5624, 0.0007, 0.7197], - [26.5785, 0.0007, 0.721], - [29.593, 0.0005, 0.7248], - [32.6109, 0.0004, 0.7268], - [35.6384, 0.0004, 0.727], - [38.6439, 0.0002, 0.7343], - [41.6815, 0.0004, 0.7284], - [44.6895, 0.0002, 0.7372], - [47.6926, 0.0001, 0.7393], - [51.4567, 0.0001, 0.7382] + [0.375, 0.6521, 0.05], + [0.67, 0.4286, 0.1338], + [0.9867, 0.2293, 0.2673], + [1.3683, 0.1434, 0.3521], + [1.8383, 0.0872, 0.4289], + [2.4133, 0.0524, 0.4931], + [2.625, 0.0252, 0.5587], + [2.8667, 0.0027, 0.6176], + [2.9917, -0.0954, 0.8989], + [3.12, -0.0068, 0.6339], + [3.4133, 0.0369, 0.4973], + [3.7417, 0.0469, 0.4634], + [3.9667, 0.0513, 0.4467], + [4.555, 0.0418, 0.4846], + [5.23, 0.0159, 0.6025], + [6.6483, 0.008, 0.6437], + [8.425, 0.0051, 0.6633], + [10.665, 0.0038, 0.6742], + [17.0017, 0.0021, 0.6922], + [21.3983, 0.0011, 0.7093], + [26.9283, 0.0008, 0.7155], + [33.8483, 0.0005, 0.7238], + [42.5067, 0.0004, 0.7288], + [53.2317, 0.0001, 0.7403] ] } }, "dispense": { "default": { "1": [ - [0.6464, 0.4817, 0.0427], - [1.0889, 0.2539, 0.1591], - [1.5136, 0.1624, 0.2587], - [1.9108, 0.1042, 0.3467], - [2.2941, 0.0719, 0.4085], - [2.9978, 0.037, 0.4886], - [3.7731, 0.0378, 0.4863], - [4.7575, 0.0516, 0.4342], - [5.5024, 0.011, 0.6275], - [6.2686, 0.0114, 0.6253], - [7.005, 0.0054, 0.6625], - [8.5207, 0.0063, 0.6563], - [10.0034, 0.003, 0.6844], - [11.5075, 0.0031, 0.6833], - [13.0327, 0.0032, 0.6829], - [14.5356, 0.0018, 0.7003], - [17.5447, 0.0014, 0.7063], - [20.5576, 0.0011, 0.7126], - [23.5624, 0.0007, 0.7197], - [26.5785, 0.0007, 0.721], - [29.593, 0.0005, 0.7248], - [32.6109, 0.0004, 0.7268], - [35.6384, 0.0004, 0.727], - [38.6439, 0.0002, 0.7343], - [41.6815, 0.0004, 0.7284], - [44.6895, 0.0002, 0.7372], - [47.6926, 0.0001, 0.7393], - [51.4567, 0.0001, 0.7382] + [0.375, 0.6521, 0.05], + [0.67, 0.4286, 0.1338], + [0.9867, 0.2293, 0.2673], + [1.3683, 0.1434, 0.3521], + [1.8383, 0.0872, 0.4289], + [2.4133, 0.0524, 0.4931], + [2.625, 0.0252, 0.5587], + [2.8667, 0.0027, 0.6176], + [2.9917, -0.0954, 0.8989], + [3.12, -0.0068, 0.6339], + [3.4133, 0.0369, 0.4973], + [3.7417, 0.0469, 0.4634], + [3.9667, 0.0513, 0.4467], + [4.555, 0.0418, 0.4846], + [5.23, 0.0159, 0.6025], + [6.6483, 0.008, 0.6437], + [8.425, 0.0051, 0.6633], + [10.665, 0.0038, 0.6742], + [17.0017, 0.0021, 0.6922], + [21.3983, 0.0011, 0.7093], + [26.9283, 0.0008, 0.7155], + [33.8483, 0.0005, 0.7238], + [42.5067, 0.0004, 0.7288], + [53.2317, 0.0001, 0.7403] ] } }, diff --git a/shared-data/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json b/shared-data/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json index 0077411c3f6..643375133c9 100644 --- a/shared-data/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json +++ b/shared-data/pipette/definitions/2/liquid/single_channel/p1000/default/3_5.json @@ -26,50 +26,50 @@ "aspirate": { "default": { "1": [ - [0.598667, 5.492916, 0.238012], - [1.008667, 4.441331, 0.867561], - [1.703333, 3.134903, 2.185311], - [2.148, 2.093612, 3.958978], - [2.630667, 1.531735, 5.16589], - [2.968667, 0.130993, 8.850773], - [3.040667, -6.20796, 27.669014], - [3.212, 0.534702, 7.166826], - [3.542, 1.528965, 3.973251], - [4.394, 1.677278, 3.447926], - [5.366, 0.947649, 6.653918], - [6.161333, 0.32074, 10.01791], - [8.794667, 0.274041, 10.305637], - [10.542667, 0.161462, 11.295736], - [13.850667, 0.104161, 11.899836], - [22.955333, 0.053443, 12.602318], - [29.402, 0.027894, 13.188802], - [47.971333, 0.015576, 13.550976], - [54.092, 0.006549, 13.984019] + [0.7033, 4.9393, 0.669], + [1.0911, 4.233, 1.1657], + [1.7256, 2.8983, 2.6221], + [2.1344, 1.9062, 4.334], + [2.57, 1.3331, 5.5573], + [2.9178, 0.2816, 8.2595], + [3.0222, -3.2737, 18.6333], + [3.2233, 0.8766, 6.09], + [3.5033, 1.324, 4.648], + [4.4567, 1.7683, 3.0913], + [5.3878, 0.8747, 7.0738], + [6.1956, 0.3393, 9.9586], + [8.7911, 0.2504, 10.5095], + [10.5322, 0.1577, 11.3246], + [13.8389, 0.1047, 11.8827], + [23.01, 0.0579, 12.5301], + [29.4811, 0.0285, 13.2057], + [48.0456, 0.0147, 13.612], + [54.06, 0.0016, 14.2446] ] } }, "dispense": { "default": { "1": [ - [0.598667, 5.492916, 0.238012], - [1.008667, 4.441331, 0.867561], - [1.703333, 3.134903, 2.185311], - [2.148, 2.093612, 3.958978], - [2.630667, 1.531735, 5.16589], - [2.968667, 0.130993, 8.850773], - [3.040667, -6.20796, 27.669014], - [3.212, 0.534702, 7.166826], - [3.542, 1.528965, 3.973251], - [4.394, 1.677278, 3.447926], - [5.366, 0.947649, 6.653918], - [6.161333, 0.32074, 10.01791], - [8.794667, 0.274041, 10.305637], - [10.542667, 0.161462, 11.295736], - [13.850667, 0.104161, 11.899836], - [22.955333, 0.053443, 12.602318], - [29.402, 0.027894, 13.188802], - [47.971333, 0.015576, 13.550976], - [54.092, 0.006549, 13.984019] + [0.7033, 4.9393, 0.669], + [1.0911, 4.233, 1.1657], + [1.7256, 2.8983, 2.6221], + [2.1344, 1.9062, 4.334], + [2.57, 1.3331, 5.5573], + [2.9178, 0.2816, 8.2595], + [3.0222, -3.2737, 18.6333], + [3.2233, 0.8766, 6.09], + [3.5033, 1.324, 4.648], + [4.4567, 1.7683, 3.0913], + [5.3878, 0.8747, 7.0738], + [6.1956, 0.3393, 9.9586], + [8.7911, 0.2504, 10.5095], + [10.5322, 0.1577, 11.3246], + [13.8389, 0.1047, 11.8827], + [23.01, 0.0579, 12.5301], + [29.4811, 0.0285, 13.2057], + [48.0456, 0.0147, 13.612], + [54.06, 0.0016, 14.2446] ] } }, @@ -194,42 +194,42 @@ "aspirate": { "default": { "1": [ - [1.915833, 1.927128, 3.925446], - [2.815833, 1.488084, 4.766582], - [4.740833, 0.734841, 6.887589], - [9.56, 0.312748, 8.88866], - [11.899167, 0.185659, 10.103631], - [14.8525, 0.147322, 10.559816], - [51.128333, 0.042193, 12.121236], - [92.410833, 0.010715, 13.730653], - [112.169167, 0.004993, 14.259441], - [243.099167, 0.002853, 14.499515], - [355.853333, 0.000919, 14.969688], - [430.2725, 0.000569, 15.094064], - [627.886667, 0.000284, 15.216604], - [999.469167, 0.000101, 15.331563], - [1103.450833, 0.0, 15.433145] + [2.1588, 1.8801, 4.5248], + [3.125, 1.4042, 5.552], + [5.0288, 0.5573, 8.1985], + [9.83, 0.2526, 9.7309], + [12.1563, 0.1568, 10.6724], + [15.0438, 0.1154, 11.176], + [51.2713, 0.0388, 12.3281], + [92.4825, 0.01, 13.8035], + [112.2463, 0.0049, 14.2764], + [242.9288, 0.0027, 14.5268], + [355.5763, 0.0009, 14.9617], + [429.8313, 0.0005, 15.1002], + [627.3463, 0.0003, 15.1955], + [998.4438, 0.0001, 15.3227], + [1102.5675, 0.0, 15.3839] ] } }, "dispense": { "default": { "1": [ - [1.915833, 1.927128, 3.925446], - [2.815833, 1.488084, 4.766582], - [4.740833, 0.734841, 6.887589], - [9.56, 0.312748, 8.88866], - [11.899167, 0.185659, 10.103631], - [14.8525, 0.147322, 10.559816], - [51.128333, 0.042193, 12.121236], - [92.410833, 0.010715, 13.730653], - [112.169167, 0.004993, 14.259441], - [243.099167, 0.002853, 14.499515], - [355.853333, 0.000919, 14.969688], - [430.2725, 0.000569, 15.094064], - [627.886667, 0.000284, 15.216604], - [999.469167, 0.000101, 15.331563], - [1103.450833, 0.0, 15.433145] + [2.1588, 1.8801, 4.5248], + [3.125, 1.4042, 5.552], + [5.0288, 0.5573, 8.1985], + [9.83, 0.2526, 9.7309], + [12.1563, 0.1568, 10.6724], + [15.0438, 0.1154, 11.176], + [51.2713, 0.0388, 12.3281], + [92.4825, 0.01, 13.8035], + [112.2463, 0.0049, 14.2764], + [242.9288, 0.0027, 14.5268], + [355.5763, 0.0009, 14.9617], + [429.8313, 0.0005, 15.1002], + [627.3463, 0.0003, 15.1955], + [998.4438, 0.0001, 15.3227], + [1102.5675, 0.0, 15.3839] ] } }, diff --git a/shared-data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json b/shared-data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json index c2b6a5564bb..241a220e3c6 100644 --- a/shared-data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json +++ b/shared-data/pipette/definitions/2/liquid/single_channel/p50/default/3_5.json @@ -20,70 +20,50 @@ "aspirate": { "default": { "1": [ - [0.45, 0.4702, 0.0464], - [0.6717, 0.3617, 0.0952], - [0.9133, 0.259, 0.1642], - [1.1783, 0.1997, 0.2184], - [1.46, 0.1366, 0.2927], - [1.8183, 0.1249, 0.3098], - [2.1783, 0.0719, 0.4061], - [2.615, 0.0666, 0.4176], - [3.015, 0.0152, 0.552], - [3.4433, 0.0008, 0.5956], - [4.3033, 0.0659, 0.3713], - [5.0933, 0.0306, 0.5234], - [5.915, 0.0135, 0.6102], - [6.8233, 0.0083, 0.6414], - [7.85, 0.0051, 0.6631], - [9.005, 0.0025, 0.6838], - [10.3517, 0.0036, 0.6735], - [11.9, 0.0032, 0.6775], - [13.6617, 0.0023, 0.6886], - [15.6383, 0.001, 0.7058], - [17.95, 0.0015, 0.6976], - [20.58, 0.0012, 0.7033], - [23.5483, 0.0005, 0.7183], - [26.9983, 0.0008, 0.7105], - [30.88, 0.0003, 0.7233], - [35.3167, 0.0003, 0.725], - [40.4283, 0.0004, 0.7224], - [46.255, 0.0003, 0.7271], - [52.8383, 0.0, 0.7369] + [0.462, 0.5646, 0.0415], + [0.648, 0.3716, 0.1307], + [1.032, 0.2742, 0.1938], + [1.37, 0.1499, 0.3221], + [2.014, 0.1044, 0.3845], + [2.772, 0.0432, 0.5076], + [3.05, -0.0809, 0.8517], + [3.4, 0.0256, 0.5268], + [3.962, 0.0612, 0.4057], + [4.438, 0.0572, 0.4217], + [5.164, 0.018, 0.5955], + [5.966, 0.0095, 0.6393], + [7.38, 0.0075, 0.6514], + [9.128, 0.0049, 0.6705], + [10.16, 0.0033, 0.6854], + [13.812, 0.0024, 0.6948], + [27.204, 0.0008, 0.7165], + [50.614, 0.0002, 0.7328], + [53.046, -0.0005, 0.7676] ] } }, "dispense": { "default": { "1": [ - [0.45, 0.4702, 0.0464], - [0.6717, 0.3617, 0.0952], - [0.9133, 0.259, 0.1642], - [1.1783, 0.1997, 0.2184], - [1.46, 0.1366, 0.2927], - [1.8183, 0.1249, 0.3098], - [2.1783, 0.0719, 0.4061], - [2.615, 0.0666, 0.4176], - [3.015, 0.0152, 0.552], - [3.4433, 0.0008, 0.5956], - [4.3033, 0.0659, 0.3713], - [5.0933, 0.0306, 0.5234], - [5.915, 0.0135, 0.6102], - [6.8233, 0.0083, 0.6414], - [7.85, 0.0051, 0.6631], - [9.005, 0.0025, 0.6838], - [10.3517, 0.0036, 0.6735], - [11.9, 0.0032, 0.6775], - [13.6617, 0.0023, 0.6886], - [15.6383, 0.001, 0.7058], - [17.95, 0.0015, 0.6976], - [20.58, 0.0012, 0.7033], - [23.5483, 0.0005, 0.7183], - [26.9983, 0.0008, 0.7105], - [30.88, 0.0003, 0.7233], - [35.3167, 0.0003, 0.725], - [40.4283, 0.0004, 0.7224], - [46.255, 0.0003, 0.7271], - [52.8383, 0.0, 0.7369] + [0.462, 0.5646, 0.0415], + [0.648, 0.3716, 0.1307], + [1.032, 0.2742, 0.1938], + [1.37, 0.1499, 0.3221], + [2.014, 0.1044, 0.3845], + [2.772, 0.0432, 0.5076], + [3.05, -0.0809, 0.8517], + [3.4, 0.0256, 0.5268], + [3.962, 0.0612, 0.4057], + [4.438, 0.0572, 0.4217], + [5.164, 0.018, 0.5955], + [5.966, 0.0095, 0.6393], + [7.38, 0.0075, 0.6514], + [9.128, 0.0049, 0.6705], + [10.16, 0.0033, 0.6854], + [13.812, 0.0024, 0.6948], + [27.204, 0.0008, 0.7165], + [50.614, 0.0002, 0.7328], + [53.046, -0.0005, 0.7676] ] } }, diff --git a/shared-data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json b/shared-data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json index 5352442665a..1311616a580 100644 --- a/shared-data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json +++ b/shared-data/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_5.json @@ -20,70 +20,50 @@ "aspirate": { "default": { "1": [ - [0.45, 0.4702, 0.0464], - [0.6717, 0.3617, 0.0952], - [0.9133, 0.259, 0.1642], - [1.1783, 0.1997, 0.2184], - [1.46, 0.1366, 0.2927], - [1.8183, 0.1249, 0.3098], - [2.1783, 0.0719, 0.4061], - [2.615, 0.0666, 0.4176], - [3.015, 0.0152, 0.552], - [3.4433, 0.0008, 0.5956], - [4.3033, 0.0659, 0.3713], - [5.0933, 0.0306, 0.5234], - [5.915, 0.0135, 0.6102], - [6.8233, 0.0083, 0.6414], - [7.85, 0.0051, 0.6631], - [9.005, 0.0025, 0.6838], - [10.3517, 0.0036, 0.6735], - [11.9, 0.0032, 0.6775], - [13.6617, 0.0023, 0.6886], - [15.6383, 0.001, 0.7058], - [17.95, 0.0015, 0.6976], - [20.58, 0.0012, 0.7033], - [23.5483, 0.0005, 0.7183], - [26.9983, 0.0008, 0.7105], - [30.88, 0.0003, 0.7233], - [35.3167, 0.0003, 0.725], - [40.4283, 0.0004, 0.7224], - [46.255, 0.0003, 0.7271], - [52.8383, 0.0, 0.7369] + [0.462, 0.5646, 0.0415], + [0.648, 0.3716, 0.1307], + [1.032, 0.2742, 0.1938], + [1.37, 0.1499, 0.3221], + [2.014, 0.1044, 0.3845], + [2.772, 0.0432, 0.5076], + [3.05, -0.0809, 0.8517], + [3.4, 0.0256, 0.5268], + [3.962, 0.0612, 0.4057], + [4.438, 0.0572, 0.4217], + [5.164, 0.018, 0.5955], + [5.966, 0.0095, 0.6393], + [7.38, 0.0075, 0.6514], + [9.128, 0.0049, 0.6705], + [10.16, 0.0033, 0.6854], + [13.812, 0.0024, 0.6948], + [27.204, 0.0008, 0.7165], + [50.614, 0.0002, 0.7328], + [53.046, -0.0005, 0.7676] ] } }, "dispense": { "default": { "1": [ - [0.45, 0.4702, 0.0464], - [0.6717, 0.3617, 0.0952], - [0.9133, 0.259, 0.1642], - [1.1783, 0.1997, 0.2184], - [1.46, 0.1366, 0.2927], - [1.8183, 0.1249, 0.3098], - [2.1783, 0.0719, 0.4061], - [2.615, 0.0666, 0.4176], - [3.015, 0.0152, 0.552], - [3.4433, 0.0008, 0.5956], - [4.3033, 0.0659, 0.3713], - [5.0933, 0.0306, 0.5234], - [5.915, 0.0135, 0.6102], - [6.8233, 0.0083, 0.6414], - [7.85, 0.0051, 0.6631], - [9.005, 0.0025, 0.6838], - [10.3517, 0.0036, 0.6735], - [11.9, 0.0032, 0.6775], - [13.6617, 0.0023, 0.6886], - [15.6383, 0.001, 0.7058], - [17.95, 0.0015, 0.6976], - [20.58, 0.0012, 0.7033], - [23.5483, 0.0005, 0.7183], - [26.9983, 0.0008, 0.7105], - [30.88, 0.0003, 0.7233], - [35.3167, 0.0003, 0.725], - [40.4283, 0.0004, 0.7224], - [46.255, 0.0003, 0.7271], - [52.8383, 0.0, 0.7369] + [0.462, 0.5646, 0.0415], + [0.648, 0.3716, 0.1307], + [1.032, 0.2742, 0.1938], + [1.37, 0.1499, 0.3221], + [2.014, 0.1044, 0.3845], + [2.772, 0.0432, 0.5076], + [3.05, -0.0809, 0.8517], + [3.4, 0.0256, 0.5268], + [3.962, 0.0612, 0.4057], + [4.438, 0.0572, 0.4217], + [5.164, 0.018, 0.5955], + [5.966, 0.0095, 0.6393], + [7.38, 0.0075, 0.6514], + [9.128, 0.0049, 0.6705], + [10.16, 0.0033, 0.6854], + [13.812, 0.0024, 0.6948], + [27.204, 0.0008, 0.7165], + [50.614, 0.0002, 0.7328], + [53.046, -0.0005, 0.7676] ] } },