@opentrons/shared-data 0.1.7-alpha.0 → 0.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.coveragerc +4 -0
- package/.flake8 +31 -0
- package/Config.in +11 -0
- package/LICENSE +202 -0
- package/Makefile +13 -14
- package/Makefile-python.mk +134 -0
- package/buildroot.mk +35 -0
- package/command/index.ts +16 -2
- package/command/schemas/12.json +65 -0
- package/command/schemas/13.json +7039 -0
- package/command/schemas/14.json +7254 -0
- package/command/types/annotation.ts +1 -1
- package/command/types/calibration.ts +7 -6
- package/command/types/gantry.ts +7 -6
- package/command/types/incidental.ts +1 -1
- package/command/types/index.ts +79 -20
- package/command/types/module.ts +98 -11
- package/command/types/pipetting.ts +9 -3
- package/command/types/robot.ts +98 -0
- package/command/types/setup.ts +8 -8
- package/command/types/support.ts +14 -2
- package/command/types/timing.ts +1 -1
- package/command/types/unsafe.ts +63 -1
- package/deck/definitions/5/ot2_short_trash.json +37 -0
- package/deck/definitions/5/ot2_standard.json +37 -0
- package/deck/definitions/5/ot3_standard.json +152 -51
- package/deck/index.ts +3 -6
- package/deck/schemas/5.json +46 -1
- package/errors/definitions/1/errors.json +12 -0
- package/errors/index.ts +2 -1
- package/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
- package/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
- package/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
- package/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
- package/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
- package/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
- package/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
- package/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
- package/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
- package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
- package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
- package/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
- package/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
- package/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
- package/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
- package/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
- package/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
- package/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
- package/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
- package/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
- package/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
- package/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
- package/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
- package/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
- package/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
- package/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
- package/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
- package/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
- package/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
- package/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
- package/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
- package/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
- package/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
- package/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
- package/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
- package/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
- package/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
- package/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
- package/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
- package/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
- package/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
- package/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
- package/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
- package/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
- package/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
- package/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
- package/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
- package/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
- package/labware/fixtures/2/index.ts +4 -4
- package/labware/fixtures/3/fixture_2_plate.json +28 -11
- package/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
- package/labware/fixtures/3/index.ts +4 -0
- package/labware/schemas/2.json +36 -1
- package/labware/schemas/3.json +115 -25
- package/lib/command/index.d.ts +4211 -2095
- package/lib/command/schemas/12.json +65 -0
- package/lib/command/schemas/13.json +7039 -0
- package/lib/command/schemas/14.json +7254 -0
- package/lib/command/types/annotation.d.ts +1 -1
- package/lib/command/types/calibration.d.ts +5 -5
- package/lib/command/types/gantry.d.ts +5 -4
- package/lib/command/types/incidental.d.ts +1 -1
- package/lib/command/types/index.d.ts +60 -14
- package/lib/command/types/module.d.ts +75 -13
- package/lib/command/types/pipetting.d.ts +8 -3
- package/lib/command/types/robot.d.ts +71 -0
- package/lib/command/types/setup.d.ts +5 -5
- package/lib/command/types/support.d.ts +3 -2
- package/lib/command/types/timing.d.ts +1 -1
- package/lib/command/types/unsafe.d.ts +44 -3
- package/lib/deck/definitions/5/ot2_short_trash.json +37 -0
- package/lib/deck/definitions/5/ot2_standard.json +37 -0
- package/lib/deck/definitions/5/ot3_standard.json +152 -51
- package/lib/deck/index.d.ts +3 -3
- package/lib/deck/schemas/5.json +46 -1
- package/lib/errors/definitions/1/errors.json +12 -0
- package/lib/errors/index.d.ts +1 -1
- package/lib/index.mjs +380872 -297265
- package/lib/js/constants.d.ts +45 -17
- package/lib/js/deck/index.d.ts +2 -2
- package/lib/js/fixtures.d.ts +78 -3
- package/lib/js/getLabware.d.ts +3 -3
- package/lib/js/gripper.d.ts +1 -1
- package/lib/js/helpers/__tests__/getMaxPushOutVolume.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/getMmFromBottom.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/getStackedItemsOnStartingDeck.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/labwareSchemaShims.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/liquidClasses.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/pairsFromArray.test.d.ts +1 -0
- package/lib/js/helpers/__tests__/vectorMath.test.d.ts +1 -0
- package/lib/js/helpers/getFixedTrashLabwareDefinition.d.ts +2 -2
- package/lib/js/helpers/getLabwareDefURI.d.ts +3 -0
- package/lib/js/helpers/getLabwareDefinitionsByURIForProtocol.d.ts +6 -0
- package/lib/js/helpers/getLabwareInfoByLiquidId.d.ts +10 -0
- package/lib/js/helpers/getLiquidsByIdForLabware.d.ts +2 -0
- package/lib/js/helpers/getLoadedLabwareDefinitionsByUri.d.ts +2 -2
- package/lib/js/helpers/getMaxPushOutVolume.d.ts +2 -0
- package/lib/js/helpers/getMmFromBottom.d.ts +2 -0
- package/lib/js/helpers/getSimplestFlexDeckConfig.d.ts +1 -1
- package/lib/js/helpers/getStackedItemsOnStartingDeck.d.ts +50 -0
- package/lib/js/helpers/getStandardDeckViewLayerBlockList.d.ts +2 -0
- package/lib/js/helpers/getTipTypeFromTipRackDefinition.d.ts +2 -2
- package/lib/js/helpers/getWellFillFromLabwareId.d.ts +4 -0
- package/lib/js/helpers/getWellNamePerMultiTip.d.ts +3 -3
- package/lib/js/helpers/getWellRangeForLiquidLabwarePair.d.ts +6 -0
- package/lib/js/helpers/getWellTotalVolume.d.ts +2 -2
- package/lib/js/helpers/index.d.ts +25 -14
- package/lib/js/helpers/labwareInference.d.ts +3 -3
- package/lib/js/helpers/liquidClasses.d.ts +10 -0
- package/lib/js/helpers/matrixMath.d.ts +3 -0
- package/lib/js/helpers/pairsFromArray.d.ts +8 -0
- package/lib/js/helpers/parseAddressableArea.d.ts +1 -1
- package/lib/js/helpers/parseProtocolCommands.d.ts +5 -5
- package/lib/js/helpers/positionMath.d.ts +127 -0
- package/lib/js/helpers/validateCustomLabwareHelper.d.ts +2 -2
- package/lib/js/helpers/vectorMath.d.ts +14 -0
- package/lib/js/helpers/wellSets.d.ts +4 -4
- package/lib/js/labware.d.ts +10 -9
- package/lib/js/labwareTools/index.d.ts +1 -1
- package/lib/js/liquidClasses.d.ts +4 -0
- package/lib/js/modules.d.ts +2 -2
- package/lib/js/pipettes.d.ts +3 -2
- package/lib/js/types.d.ts +105 -38
- package/lib/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
- package/lib/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
- package/lib/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
- package/lib/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
- package/lib/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
- package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
- package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
- package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
- package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
- package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
- package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
- package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
- package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
- package/lib/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
- package/lib/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
- package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
- package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
- package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
- package/lib/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
- package/lib/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
- package/lib/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
- package/lib/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
- package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
- package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
- package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
- package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
- package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
- package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
- package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
- package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
- package/lib/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
- package/lib/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
- package/lib/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
- package/lib/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
- package/lib/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
- package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
- package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
- package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
- package/lib/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
- package/lib/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
- package/lib/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
- package/lib/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
- package/lib/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
- package/lib/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
- package/lib/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
- package/lib/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
- package/lib/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
- package/lib/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
- package/lib/labware/fixtures/2/index.d.ts +4 -4
- package/lib/labware/fixtures/3/fixture_2_plate.json +28 -11
- package/lib/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
- package/lib/labware/fixtures/3/index.d.ts +3 -0
- package/lib/labware/schemas/2.json +36 -1
- package/lib/labware/schemas/3.json +115 -25
- package/lib/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
- package/lib/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
- package/lib/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
- package/lib/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
- package/lib/liquid-class/schemas/1.json +40 -48
- package/lib/module/definitions/3/absorbanceReaderV1.json +20 -150
- package/lib/module/definitions/3/flexStackerModuleV1.json +31 -385
- package/lib/module/definitions/3/heaterShakerModuleV1.json +16 -357
- package/lib/module/definitions/3/magneticBlockV1.json +18 -148
- package/lib/module/definitions/3/magneticModuleV1.json +16 -398
- package/lib/module/definitions/3/magneticModuleV2.json +16 -398
- package/lib/module/definitions/3/temperatureModuleV1.json +16 -152
- package/lib/module/definitions/3/temperatureModuleV2.json +16 -152
- package/lib/module/definitions/3/thermocyclerModuleV1.json +16 -1339
- package/lib/module/definitions/3/thermocyclerModuleV2.json +18 -3616
- package/lib/module/schemas/3.json +111 -10
- package/lib/pipette/definitions/1/pipetteModelSpecs.json +336 -0
- package/lib/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
- package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
- package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
- package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
- package/lib/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
- package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
- package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
- package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
- package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
- package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
- package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
- package/lib/pipette/fixtures/name/index.d.ts +1 -1
- package/lib/protocol/fixtures/index.d.ts +2 -2
- package/lib/protocol/index.d.ts +7 -7
- package/lib/protocol/types/schemaV4.d.ts +1 -1
- package/lib/protocol/types/schemaV5.d.ts +1 -1
- package/lib/protocol/types/schemaV5Addendum.d.ts +1 -1
- package/lib/protocol/types/schemaV6/command/gantry.d.ts +4 -4
- package/lib/protocol/types/schemaV6/command/index.d.ts +5 -5
- package/lib/protocol/types/schemaV6/command/module.d.ts +1 -1
- package/lib/protocol/types/schemaV6/command/pipetting.d.ts +1 -1
- package/lib/protocol/types/schemaV6/command/setup.d.ts +1 -1
- package/lib/protocol/types/schemaV6/command/timing.d.ts +1 -1
- package/lib/protocol/types/schemaV6/index.d.ts +2 -2
- package/lib/protocol/types/schemaV7/command/annotation.d.ts +1 -1
- package/lib/protocol/types/schemaV7/command/calibration.d.ts +5 -5
- package/lib/protocol/types/schemaV7/command/gantry.d.ts +4 -4
- package/lib/protocol/types/schemaV7/command/incidental.d.ts +1 -1
- package/lib/protocol/types/schemaV7/command/index.d.ts +7 -7
- package/lib/protocol/types/schemaV7/command/module.d.ts +1 -1
- package/lib/protocol/types/schemaV7/command/pipetting.d.ts +1 -1
- package/lib/protocol/types/schemaV7/command/setup.d.ts +1 -1
- package/lib/protocol/types/schemaV7/command/timing.d.ts +1 -1
- package/lib/protocol/types/schemaV7/index.d.ts +2 -2
- package/lib/protocol/types/schemaV8/index.d.ts +18 -2
- package/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
- package/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
- package/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
- package/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
- package/liquid-class/schemas/1.json +40 -48
- package/module/definitions/3/absorbanceReaderV1.json +20 -150
- package/module/definitions/3/flexStackerModuleV1.json +31 -385
- package/module/definitions/3/heaterShakerModuleV1.json +16 -357
- package/module/definitions/3/magneticBlockV1.json +18 -148
- package/module/definitions/3/magneticModuleV1.json +16 -398
- package/module/definitions/3/magneticModuleV2.json +16 -398
- package/module/definitions/3/temperatureModuleV1.json +16 -152
- package/module/definitions/3/temperatureModuleV2.json +16 -152
- package/module/definitions/3/thermocyclerModuleV1.json +16 -1339
- package/module/definitions/3/thermocyclerModuleV2.json +18 -3616
- package/module/schemas/3.json +111 -10
- package/mypy.ini +22 -0
- package/package.json +1 -1
- package/pipette/definitions/1/pipetteModelSpecs.json +336 -0
- package/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
- package/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
- package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
- package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
- package/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
- package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
- package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
- package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
- package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
- package/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
- package/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
- package/pipette/fixtures/index.ts +12 -12
- package/pipette/fixtures/name/index.ts +1 -0
- package/protocol/fixtures/index.ts +2 -3
- package/protocol/index.ts +9 -8
- package/protocol/types/schemaV4.ts +4 -4
- package/protocol/types/schemaV5.ts +1 -1
- package/protocol/types/schemaV5Addendum.ts +1 -1
- package/protocol/types/schemaV6/command/gantry.ts +4 -4
- package/protocol/types/schemaV6/command/index.ts +6 -6
- package/protocol/types/schemaV6/command/module.ts +1 -1
- package/protocol/types/schemaV6/command/pipetting.ts +2 -1
- package/protocol/types/schemaV6/command/setup.ts +2 -2
- package/protocol/types/schemaV6/command/timing.ts +1 -1
- package/protocol/types/schemaV6/index.ts +3 -3
- package/protocol/types/schemaV7/command/annotation.ts +1 -1
- package/protocol/types/schemaV7/command/calibration.ts +7 -6
- package/protocol/types/schemaV7/command/gantry.ts +5 -5
- package/protocol/types/schemaV7/command/incidental.ts +1 -1
- package/protocol/types/schemaV7/command/index.ts +14 -14
- package/protocol/types/schemaV7/command/module.ts +1 -1
- package/protocol/types/schemaV7/command/pipetting.ts +2 -1
- package/protocol/types/schemaV7/command/setup.ts +2 -2
- package/protocol/types/schemaV7/command/timing.ts +1 -1
- package/protocol/types/schemaV7/index.ts +3 -3
- package/protocol/types/schemaV8/index.ts +32 -4
- package/pyproject.toml +119 -0
- package/pytest.ini +8 -0
- package/python_tests/__init__.py +1 -0
- package/python_tests/command/test_known_schema_ids.py +9 -0
- package/python_tests/conftest.py +108 -0
- package/python_tests/deck/__init__.py +0 -0
- package/python_tests/deck/test_list_names.py +12 -0
- package/python_tests/deck/test_position.py +101 -0
- package/python_tests/deck/test_typechecks.py +23 -0
- package/python_tests/errors/__init__.py +1 -0
- package/python_tests/errors/test_error_completeness.py +19 -0
- package/python_tests/errors/test_exceptions.py +74 -0
- package/python_tests/gripper/__init__.py +0 -0
- package/python_tests/gripper/test_definition.py +30 -0
- package/python_tests/gripper/test_load.py +19 -0
- package/python_tests/labware/__init__.py +13 -0
- package/python_tests/labware/test_typechecks.py +80 -0
- package/python_tests/liquid_classes/__init__.py +0 -0
- package/python_tests/liquid_classes/test_liquid_class_values.py +59 -0
- package/python_tests/liquid_classes/test_load.py +45 -0
- package/python_tests/liquid_classes/test_validations.py +192 -0
- package/python_tests/module/__init__.py +20 -0
- package/python_tests/module/test_load.py +49 -0
- package/python_tests/module/test_typechecks.py +26 -0
- package/python_tests/pipette/__init__.py +0 -0
- package/python_tests/pipette/test_load_data.py +109 -0
- package/python_tests/pipette/test_max_flow_rates_per_volume.py +112 -0
- package/python_tests/pipette/test_mutable_configurations.py +467 -0
- package/python_tests/pipette/test_pipette_definition.py +183 -0
- package/python_tests/pipette/test_pipette_load_name_conversions.py +244 -0
- package/python_tests/pipette/test_typechecks.py +47 -0
- package/python_tests/pipette/test_validate_schema.py +198 -0
- package/python_tests/protocol/__init__.py +7 -0
- package/python_tests/protocol/test_protocol_schema_v6.py +108 -0
- package/python_tests/protocol/test_protocol_schema_v7.py +35 -0
- package/python_tests/protocol/test_protocol_schema_v8.py +17 -0
- package/python_tests/protocol/test_typechecks.py +30 -0
- package/python_tests/robot/__init__.py +0 -0
- package/python_tests/robot/test_typechecks.py +13 -0
- package/lib/js/cypressUtils.d.ts +0 -1
- package/lib/js/helpers/getVectorDifference.d.ts +0 -2
- package/lib/js/helpers/getVectorSum.d.ts +0 -2
- /package/lib/js/{helpers/__tests__/getVectorDifference.test.d.ts → __tests__/fixtures.test.d.ts} +0 -0
- /package/lib/js/helpers/__tests__/{getVectorSum.test.d.ts → getLabwareInfoByLiquidId.test.d.ts} +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** Compute positions of labware stacked upon other labware, modules, deck slots, etc. */
|
|
2
|
+
import type { AddressableArea, DeckDefinition, LabwareDefinition, LabwareDefinition2, ModuleDefinition, Vector3D } from '../types';
|
|
3
|
+
/** Return dimensions of the total labware bounding box in the style of labware schema 2. */
|
|
4
|
+
export declare function getSchema2Dimensions(definition: LabwareDefinition): LabwareDefinition2['dimensions'];
|
|
5
|
+
/**
|
|
6
|
+
* Return a bounding box, in coordinates relative to the labware's origin,
|
|
7
|
+
* that encloses the labware when viewed from the top down.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getLabwareViewBox(definition: LabwareDefinition): {
|
|
10
|
+
/** The minimum x-coord, i.e. the left of the labware. */
|
|
11
|
+
minX: number;
|
|
12
|
+
/** The minimum y-coord, i.e. the front of the labware. */
|
|
13
|
+
minY: number;
|
|
14
|
+
/** The maximum x-coord, i.e. the right of the labware. */
|
|
15
|
+
maxX: number;
|
|
16
|
+
/** The maximum y-coord, i.e. the back of the labware. */
|
|
17
|
+
maxY: number;
|
|
18
|
+
/** The distance between left and right. */
|
|
19
|
+
xDimension: number;
|
|
20
|
+
/** The distance between front and back. */
|
|
21
|
+
yDimension: number;
|
|
22
|
+
};
|
|
23
|
+
/** Logically specifies where a labware is located. */
|
|
24
|
+
export interface ComputeLabwareOriginInput {
|
|
25
|
+
/** The underlying deck. */
|
|
26
|
+
deckDefinition: DeckDefinition;
|
|
27
|
+
/**
|
|
28
|
+
* The underlying slot. If this is a Flex and the labware is on a module, this should
|
|
29
|
+
* be the slot that the module replaces.
|
|
30
|
+
*/
|
|
31
|
+
slotId: string;
|
|
32
|
+
/**
|
|
33
|
+
* The definition of the module underneath the labware, if there is one.
|
|
34
|
+
* This should be specified even if it's only transitively underneath the labware,
|
|
35
|
+
* like slot -> module -> adapter -> labware in question.
|
|
36
|
+
*/
|
|
37
|
+
moduleDefinition: ModuleDefinition | null;
|
|
38
|
+
/** The labware and all the labware underneath it. */
|
|
39
|
+
labwareDefinitionsBottomToTop: LabwareDefinition[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Computes the absolute deck coordinates of a labware.
|
|
43
|
+
* Returns null if there was some internal error.
|
|
44
|
+
*/
|
|
45
|
+
export declare function computeLabwareOrigin(input: ComputeLabwareOriginInput): Vector3D | null;
|
|
46
|
+
/**
|
|
47
|
+
* Return the offset from a deck slot's origin (the slot's front-left, -x, -y)
|
|
48
|
+
* to a labware's origin (varies depending on the labware),
|
|
49
|
+
* supposing the labware is placed in that slot.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getDeckSlotOriginToLabwareOrigin(slotDefinition: AddressableArea, labwareDefinition: LabwareDefinition): Vector3D;
|
|
52
|
+
/**
|
|
53
|
+
* Given a stackup like:
|
|
54
|
+
*
|
|
55
|
+
* deck slot --> module --> labware
|
|
56
|
+
*
|
|
57
|
+
* This computes the offset from the deck slot's origin (its front-left / -x,-y corner)
|
|
58
|
+
* to the labware's origin (varies depending on the labware).
|
|
59
|
+
*
|
|
60
|
+
* This is currently how it works even for Flex modules, even though they are not really
|
|
61
|
+
* "in a slot." The slot in this case is the slot that the module replaces.
|
|
62
|
+
*
|
|
63
|
+
* The API is like this for transitional reasons. Ideally, we would have one function
|
|
64
|
+
* to go slot->module and a second function to go module->labware.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getModuleParentOriginToLabwareOrigin(deckId: string, slotId: string | null, moduleDefinition: ModuleDefinition, labwareDefinition: LabwareDefinition): Vector3D;
|
|
67
|
+
/**
|
|
68
|
+
* Given a labware -> labware stackup, compute the offset from the parent (bottom)
|
|
69
|
+
* labware's origin to the child (top) labware's origin.
|
|
70
|
+
*/
|
|
71
|
+
export declare function getLabwareOriginToLabwareOrigin(parentDefinition: LabwareDefinition, childDefinition: LabwareDefinition): Vector3D;
|
|
72
|
+
/**
|
|
73
|
+
* Given a module, computes the offset from the origin (front-left, -x,-y corner) of the
|
|
74
|
+
* deck slot that the module is in, to the origin (again, front-left, -x,-y corner) of
|
|
75
|
+
* the slot atop that module.
|
|
76
|
+
*
|
|
77
|
+
* On a Flex, modules are not really "in deck slots". There, "the deck slot that the
|
|
78
|
+
* module is in" means "the deck slot that the module replaces."
|
|
79
|
+
*
|
|
80
|
+
* @deprecated We are trying to move away from the idea that modules always have slots
|
|
81
|
+
* atop them and that things should be positioned relative to those slots' -x,-y
|
|
82
|
+
* corners. That idea is especially untrue for things like the Thermocycler and
|
|
83
|
+
* Heater-Shaker. You probably want `getModuleParentOriginToLabwareOrigin()` instead,
|
|
84
|
+
* which is higher-level and can model different ways that a labware can mate with a
|
|
85
|
+
* module. This is exported to support things like UI controls that want to cover
|
|
86
|
+
* a module's "labware area" and whose implementations assume the traditional
|
|
87
|
+
* slot -x,-y corner idea.
|
|
88
|
+
*/
|
|
89
|
+
export declare function getModuleParentOriginToChildSlotOrigin(deckId: string, slotId: string | null, moduleDefinition: ModuleDefinition): Vector3D;
|
|
90
|
+
/**
|
|
91
|
+
* Return the offset from a labware's back-left-bottom (-x, +y, -z) corner to its origin.
|
|
92
|
+
*
|
|
93
|
+
* This is a lower-level helper for the rare cases where we want to position a labware
|
|
94
|
+
* specifically by its back-left corner. Typically, you'll want something higher-level,
|
|
95
|
+
* like `getLabwareViewBox()` or `getDeckSlotOriginToLabwareOrigin()`, instead.
|
|
96
|
+
*/
|
|
97
|
+
export declare function getLabwareBackLeftBottomToOrigin(definition: LabwareDefinition): Vector3D;
|
|
98
|
+
/**
|
|
99
|
+
* Return a definition's cornerOffsetFromSlot in the style of labware schema 2.
|
|
100
|
+
*
|
|
101
|
+
* @deprecated This is probably an inherently wrong interface to attempt, for a couple
|
|
102
|
+
* reasons.
|
|
103
|
+
*
|
|
104
|
+
* FIRST, depending on what the call site does with this, it might expect the return
|
|
105
|
+
* value to be either:
|
|
106
|
+
*
|
|
107
|
+
* - The vector from the (-x, -y) corner of the parent slot to the (-x, -y) corner of
|
|
108
|
+
* the labware
|
|
109
|
+
* - The vector from the (-x, -y) corner of the parent slot to the origin of the
|
|
110
|
+
* labware
|
|
111
|
+
*
|
|
112
|
+
* In labware schema 2, these were the same thing, but not in schema 3.
|
|
113
|
+
*
|
|
114
|
+
* SECOND, in labware schema 2, how a child labware sits on its parent is almost
|
|
115
|
+
* entirely a function of the child's definition. In labware schema 3, it is
|
|
116
|
+
* much more dependent on information only available in the parent. For example, to
|
|
117
|
+
* line up a child's well A1 with a parent's well A1, we need to know where the
|
|
118
|
+
* parent's well A1 is. (Schema 2 just did not attempt to support that).
|
|
119
|
+
*
|
|
120
|
+
* For schema-2 definitions, this will return cornerOffsetFromSlot as-is.
|
|
121
|
+
*
|
|
122
|
+
* For schema-3 definitions, this currently returns the placeholder (12, 34, 56), which
|
|
123
|
+
* is certainly wrong and will cause all manner of visual mayhem, but at least it's
|
|
124
|
+
* wrong in an obvious way and it unblocks importing schema-3 definitions. Solving this
|
|
125
|
+
* properly is call-site-dependent, as described above.
|
|
126
|
+
*/
|
|
127
|
+
export declare function getSchema2CornerOffsetFromSlot(definition: LabwareDefinition): LabwareDefinition2['cornerOffsetFromSlot'];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LabwareDefinition } from '..';
|
|
2
2
|
/**
|
|
3
3
|
* This function is used to help validate that the wells and ordering matches in
|
|
4
4
|
* a custom labware definition in terms of the wellName and the wells length
|
|
@@ -6,4 +6,4 @@ import type { LabwareDefinition2 } from '..';
|
|
|
6
6
|
* @param definition - a labware definition
|
|
7
7
|
* @returns A boolean for if they exist
|
|
8
8
|
*/
|
|
9
|
-
export declare const validateCustomLabwareHelper: (definition
|
|
9
|
+
export declare const validateCustomLabwareHelper: (definition?: LabwareDefinition | null) => boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CoordinateTuple, Vector3D } from '../types';
|
|
2
|
+
export declare const IDENTITY_VECTOR: Vector3D;
|
|
3
|
+
/**
|
|
4
|
+
* Add an arbitrary number of vectors.
|
|
5
|
+
* e.g. `getVectorSum(a, b, c)` is a + b + c.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getVectorSum(first: Vector3D, ...rest: Vector3D[]): Vector3D;
|
|
8
|
+
/**
|
|
9
|
+
* Subtract an arbitrary number of vectors.
|
|
10
|
+
* e.g. `getVectorDifference(a, b, c)` is a - b - c.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getVectorDifference(first: Vector3D, ...rest: Vector3D[]): Vector3D;
|
|
13
|
+
export declare function getVectorInverse(vector: Vector3D): Vector3D;
|
|
14
|
+
export declare function coordinateTupleToVector3D(coordinateTuple: CoordinateTuple): Vector3D;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LabwareDefinition, NozzleLayoutConfig, PipetteV2Specs } from '../types';
|
|
2
2
|
type WellSetByPrimaryWell = string[][];
|
|
3
3
|
export interface NozzleLayoutDetails {
|
|
4
4
|
nozzleConfig: NozzleLayoutConfig;
|
|
5
5
|
activeNozzleCount: number;
|
|
6
6
|
}
|
|
7
7
|
export interface WellSetForMultiChannelParams {
|
|
8
|
-
labwareDef:
|
|
8
|
+
labwareDef: LabwareDefinition;
|
|
9
9
|
wellName: string;
|
|
10
10
|
channels: 8 | 96;
|
|
11
11
|
pipetteNozzleDetails?: NozzleLayoutDetails;
|
|
12
12
|
}
|
|
13
13
|
export interface WellSetHelpers {
|
|
14
|
-
getAllWellSetsForLabware: (labwareDef:
|
|
14
|
+
getAllWellSetsForLabware: (labwareDef: LabwareDefinition) => WellSetByPrimaryWell;
|
|
15
15
|
/** Given a well for a labware, returns the well set it belongs to (or null)
|
|
16
16
|
* for 8-channel and 96-channel access.
|
|
17
17
|
* Ex: C2 for 96-flat => ['A2', 'B2', 'C2', ... 'H2']
|
|
@@ -21,7 +21,7 @@ export interface WellSetHelpers {
|
|
|
21
21
|
* nozzle configuration.
|
|
22
22
|
**/
|
|
23
23
|
getWellSetForMultichannel: (params: WellSetForMultiChannelParams) => string[] | null | undefined;
|
|
24
|
-
canPipetteUseLabware: (pipetteSpec: PipetteV2Specs, labwareDef?:
|
|
24
|
+
canPipetteUseLabware: (pipetteSpec: PipetteV2Specs, labwareDef?: LabwareDefinition, trashName?: string) => boolean;
|
|
25
25
|
}
|
|
26
26
|
export declare const makeWellSetHelpers: () => WellSetHelpers;
|
|
27
27
|
export {};
|
package/lib/js/labware.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import labwareSchemaV2 from '../labware/schemas/2.json';
|
|
2
|
-
import fixture96Plate from '../labware/fixtures/2/fixture_96_plate.json';
|
|
3
1
|
import fixture12Trough from '../labware/fixtures/2/fixture_12_trough.json';
|
|
4
2
|
import fixture24Tuberack from '../labware/fixtures/2/fixture_24_tuberack.json';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
3
|
+
import fixture96Plate from '../labware/fixtures/2/fixture_96_plate.json';
|
|
4
|
+
import fixture384Plate from '../labware/fixtures/2/fixture_384_plate.json';
|
|
5
|
+
import fixtureCalibrationBlock from '../labware/fixtures/2/fixture_calibration_block.json';
|
|
7
6
|
import fixtureTiprack1000ul from '../labware/fixtures/2/fixture_flex_96_tiprack_1000ul.json';
|
|
8
7
|
import fixtureTiprackAdapter from '../labware/fixtures/2/fixture_flex_96_tiprack_adapter.json';
|
|
9
|
-
import
|
|
10
|
-
import
|
|
8
|
+
import fixtureTiprack10ul from '../labware/fixtures/2/fixture_tiprack_10_ul.json';
|
|
9
|
+
import fixtureTiprack300ul from '../labware/fixtures/2/fixture_tiprack_300_ul.json';
|
|
11
10
|
import fixtureTrash from '../labware/fixtures/2/fixture_trash.json';
|
|
12
|
-
import
|
|
11
|
+
import labwareSchemaV2 from '../labware/schemas/2.json';
|
|
12
|
+
import labwareSchemaV3 from '../labware/schemas/3.json';
|
|
13
|
+
import type { LabwareDef2ByDefURI, LabwareDefinition2, LegacyLabwareDefByName } from './types';
|
|
13
14
|
export declare const getAllLabwareDefs: () => Record<string, LabwareDefinition2>;
|
|
14
|
-
export declare function getAllDefinitions(blockList?: string[]):
|
|
15
|
+
export declare function getAllDefinitions(blockList?: string[]): LabwareDef2ByDefURI;
|
|
15
16
|
export declare function getAllLegacyDefinitions(): LegacyLabwareDefByName;
|
|
16
|
-
export { labwareSchemaV2, fixture96Plate, fixture12Trough, fixture24Tuberack, fixtureTiprack10ul, fixtureTiprack300ul, fixtureTiprack1000ul, fixtureTiprackAdapter, fixtureTrash, fixture384Plate, fixtureCalibrationBlock, };
|
|
17
|
+
export { labwareSchemaV2, labwareSchemaV3, fixture96Plate, fixture12Trough, fixture24Tuberack, fixtureTiprack10ul, fixtureTiprack300ul, fixtureTiprack1000ul, fixtureTiprackAdapter, fixtureTrash, fixture384Plate, fixtureCalibrationBlock, };
|
|
17
18
|
export declare const opentrons96PcrAdapterV1: LabwareDefinition2;
|
|
18
19
|
export declare const opentrons1Trash3200MlFixedV1: LabwareDefinition2;
|
|
19
20
|
export declare const opentrons96Tiprack10UlV1Uncasted: LabwareDefinition2;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LabwareBrand as Brand, LabwareDefinition2 as Definition, LabwareDimensions as Dimensions, LabwareWellProperties as InputWell, LabwareOffset, LabwareMetadata as Metadata, ModuleModel, LabwareOffset as Offset, LabwareParameters as Params, LabwareVolumeUnits as VolumeUnits, LabwareWell as Well, LabwareWellGroup as WellGroup } from '../types';
|
|
2
2
|
export declare const DEFAULT_CUSTOM_NAMESPACE = "custom_beta";
|
|
3
3
|
interface Cell {
|
|
4
4
|
row: number;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { LiquidClass } from '.';
|
|
2
|
+
export declare const WATER_LIQUID_CLASS_NAME = "waterV1";
|
|
3
|
+
export declare const NONE_LIQUID_CLASS_NAME = "none";
|
|
4
|
+
export declare const GLYCEROL_LIQUID_CLASS_NAME = "glycerol50V1";
|
|
5
|
+
export declare const ETHANOL_LIQUID_CLASS_NAME = "ethanol80V1";
|
|
2
6
|
export declare const getAllLiquidClassDefs: () => Record<string, LiquidClass>;
|
package/lib/js/modules.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ModuleModel, ModuleModelWithLegacy, ModuleType
|
|
2
|
-
export declare const
|
|
1
|
+
import type { ModuleDefinition, ModuleModel, ModuleModelWithLegacy, ModuleType } from './types';
|
|
2
|
+
export declare const getModuleDef: (moduleModel: ModuleModel) => ModuleDefinition;
|
|
3
3
|
export declare function normalizeModuleModel(legacyModule: ModuleModelWithLegacy): ModuleModel;
|
|
4
4
|
export declare function getModuleType(moduleModel: ModuleModel): ModuleType;
|
|
5
5
|
export declare function getModuleDisplayName(moduleModel: ModuleModel): string;
|
package/lib/js/pipettes.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import pipetteNameSpecs from '../pipette/definitions/1/pipetteNameSpecs.json';
|
|
2
1
|
import pipetteModelSpecs from '../pipette/definitions/1/pipetteModelSpecs.json';
|
|
3
|
-
import
|
|
2
|
+
import pipetteNameSpecs from '../pipette/definitions/1/pipetteNameSpecs.json';
|
|
3
|
+
import type { PipetteModelSpecs, PipetteNameSpecs, PipetteV2Specs } from './types';
|
|
4
4
|
type SortableProps = 'maxVolume' | 'channels';
|
|
5
5
|
export type PipetteName = keyof typeof pipetteNameSpecs;
|
|
6
6
|
export type PipetteModel = keyof typeof pipetteModelSpecs.config;
|
|
@@ -13,3 +13,4 @@ export declare const getIncompatiblePipetteNames: (currentPipette: PipetteName)
|
|
|
13
13
|
export * from '../pipette/fixtures/name';
|
|
14
14
|
export * from '../pipette/fixtures/index';
|
|
15
15
|
export declare const getPipetteSpecsV2: (name?: PipetteName | PipetteModel) => PipetteV2Specs | null;
|
|
16
|
+
export declare const getFlexNameConversion: (pipetteSpec: PipetteV2Specs) => string;
|
package/lib/js/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { LoadedLabwareLocation, RunTimeCommand } from '../command/types';
|
|
2
|
+
import type { CommandAnnotation } from '../commandAnnotation/types';
|
|
3
3
|
import type { AddressableAreaName, CutoutFixtureId, CutoutId } from '../deck';
|
|
4
|
+
import type { ABSORBANCE_READER_TYPE, ABSORBANCE_READER_V1, AddressableAreaNamesWithFakes, AddressableAreaWithFakes, AreaTypeWithFakes, CutoutFixtureIdsWithFakes, EXTENSION, FLEX, FLEX_STACKER_MODULE_TYPE, FLEX_STACKER_MODULE_V1, GEN1, GEN2, GRIPPER_V1, GRIPPER_V1_1, GRIPPER_V1_2, GRIPPER_V1_3, HEATERSHAKER_MODULE_TYPE, HEATERSHAKER_MODULE_V1, LEFT, MAGDECK, MAGNETIC_BLOCK_TYPE, MAGNETIC_BLOCK_V1, MAGNETIC_MODULE_TYPE, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, POSITION_REFERENCE_BOTTOM, POSITION_REFERENCE_CENTER, POSITION_REFERENCE_LIQUID_MENISCUS, POSITION_REFERENCE_TOP, RIGHT, TEMPDECK, TEMPERATURE_MODULE_TYPE, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, THERMOCYCLER, THERMOCYCLER_MODULE_TYPE, THERMOCYCLER_MODULE_V1, THERMOCYCLER_MODULE_V2 } from './constants';
|
|
4
5
|
import type { PipetteName } from './pipettes';
|
|
5
|
-
import type { CommandAnnotation } from '../commandAnnotation/types';
|
|
6
6
|
export type RobotType = 'OT-2 Standard' | 'OT-3 Standard';
|
|
7
7
|
export interface RobotDefinition {
|
|
8
8
|
displayName: string;
|
|
@@ -51,12 +51,16 @@ export interface LabwareDimensions {
|
|
|
51
51
|
yDimension: number;
|
|
52
52
|
zDimension: number;
|
|
53
53
|
}
|
|
54
|
-
export interface
|
|
54
|
+
export interface Vector2D {
|
|
55
|
+
x: number;
|
|
56
|
+
y: number;
|
|
57
|
+
}
|
|
58
|
+
export interface Vector3D {
|
|
55
59
|
x: number;
|
|
56
60
|
y: number;
|
|
57
61
|
z: number;
|
|
58
62
|
}
|
|
59
|
-
export type LabwareOffset =
|
|
63
|
+
export type LabwareOffset = Vector3D;
|
|
60
64
|
export interface LabwareParameters {
|
|
61
65
|
loadName: string;
|
|
62
66
|
format: string;
|
|
@@ -133,9 +137,16 @@ export interface RoundedCuboidSegment {
|
|
|
133
137
|
bottomHeight: number;
|
|
134
138
|
}
|
|
135
139
|
export type WellSegment = CuboidalFrustum | ConicalFrustum | SquaredConeSegment | SphericalSegment | RoundedCuboidSegment;
|
|
140
|
+
export interface HeightVolumePair {
|
|
141
|
+
height: number;
|
|
142
|
+
volume: number;
|
|
143
|
+
}
|
|
136
144
|
export interface InnerWellGeometry {
|
|
137
145
|
sections: WellSegment[];
|
|
138
146
|
}
|
|
147
|
+
export interface UserDefinedVolumes {
|
|
148
|
+
heightToVolumeMap: HeightVolumePair[];
|
|
149
|
+
}
|
|
139
150
|
export type LabwareWellMap = Record<string, LabwareWell>;
|
|
140
151
|
export interface LabwareWellGroupMetadata {
|
|
141
152
|
displayName?: string;
|
|
@@ -147,6 +158,31 @@ export interface LabwareWellGroup {
|
|
|
147
158
|
metadata: LabwareWellGroupMetadata;
|
|
148
159
|
brand?: LabwareBrand;
|
|
149
160
|
}
|
|
161
|
+
export interface AxisAlignedBoundingBox2D {
|
|
162
|
+
backLeft: Vector2D;
|
|
163
|
+
frontRight: Vector2D;
|
|
164
|
+
}
|
|
165
|
+
export interface AxisAlignedBoundingBox3D {
|
|
166
|
+
backLeftBottom: Vector3D;
|
|
167
|
+
frontRightTop: Vector3D;
|
|
168
|
+
}
|
|
169
|
+
export interface Extents {
|
|
170
|
+
total: AxisAlignedBoundingBox3D;
|
|
171
|
+
}
|
|
172
|
+
export interface SlotFootprintAsChildFeature {
|
|
173
|
+
z: number;
|
|
174
|
+
backLeft: Vector2D;
|
|
175
|
+
frontRight: Vector2D;
|
|
176
|
+
}
|
|
177
|
+
export interface SlotFootprintAsParentFeature {
|
|
178
|
+
z: number;
|
|
179
|
+
backLeft: Vector2D;
|
|
180
|
+
frontRight: Vector2D;
|
|
181
|
+
}
|
|
182
|
+
export interface LocatingFeatures {
|
|
183
|
+
slotFootprintAsChild?: SlotFootprintAsChildFeature;
|
|
184
|
+
slotFootprintAsParent?: SlotFootprintAsParentFeature;
|
|
185
|
+
}
|
|
150
186
|
export type LabwareRoles = 'labware' | 'adapter' | 'fixture' | 'maintenance' | 'lid' | 'system';
|
|
151
187
|
export interface LabwareDefinition2 {
|
|
152
188
|
version: number;
|
|
@@ -165,7 +201,7 @@ export interface LabwareDefinition2 {
|
|
|
165
201
|
stackingOffsetWithModule?: Record<string, LabwareOffset>;
|
|
166
202
|
stackLimit?: number;
|
|
167
203
|
compatibleParentLabware?: string[];
|
|
168
|
-
innerLabwareGeometry?: Record<string, InnerWellGeometry> | null;
|
|
204
|
+
innerLabwareGeometry?: Record<string, InnerWellGeometry | UserDefinedVolumes> | null;
|
|
169
205
|
}
|
|
170
206
|
export interface LabwareDefinition3 {
|
|
171
207
|
version: number;
|
|
@@ -173,8 +209,8 @@ export interface LabwareDefinition3 {
|
|
|
173
209
|
schemaVersion: 3;
|
|
174
210
|
namespace: string;
|
|
175
211
|
metadata: LabwareMetadata;
|
|
176
|
-
|
|
177
|
-
|
|
212
|
+
extents: Extents;
|
|
213
|
+
features: LocatingFeatures;
|
|
178
214
|
parameters: LabwareParameters;
|
|
179
215
|
brand: LabwareBrand;
|
|
180
216
|
ordering: string[][];
|
|
@@ -187,7 +223,8 @@ export interface LabwareDefinition3 {
|
|
|
187
223
|
compatibleParentLabware?: string[];
|
|
188
224
|
innerLabwareGeometry?: Record<string, InnerWellGeometry> | null;
|
|
189
225
|
}
|
|
190
|
-
export
|
|
226
|
+
export type LabwareDefinition = LabwareDefinition2 | LabwareDefinition3;
|
|
227
|
+
export interface LabwareDef2ByDefURI {
|
|
191
228
|
[defUri: string]: LabwareDefinition2;
|
|
192
229
|
}
|
|
193
230
|
export interface LegacyLabwareDefByName {
|
|
@@ -229,10 +266,11 @@ export interface DeckCalibrationPoint {
|
|
|
229
266
|
position: CoordinateTuple;
|
|
230
267
|
displayName: string;
|
|
231
268
|
}
|
|
269
|
+
export type CutoutIdToCutoutFixtureId = {
|
|
270
|
+
[cutoutId in CutoutId]?: CutoutFixtureId;
|
|
271
|
+
};
|
|
232
272
|
export type CutoutFixtureGroup = {
|
|
233
|
-
[cutoutId in CutoutId]?:
|
|
234
|
-
[cutoutId in CutoutId]?: CutoutFixtureId;
|
|
235
|
-
}>;
|
|
273
|
+
[cutoutId in CutoutId]?: CutoutIdToCutoutFixtureId[];
|
|
236
274
|
};
|
|
237
275
|
export interface CutoutFixture {
|
|
238
276
|
id: CutoutFixtureId;
|
|
@@ -243,7 +281,12 @@ export interface CutoutFixture {
|
|
|
243
281
|
fixtureGroup: CutoutFixtureGroup;
|
|
244
282
|
height: number;
|
|
245
283
|
}
|
|
246
|
-
|
|
284
|
+
export interface FakeCutoutFixture extends Omit<CutoutFixture, 'id' | 'providesAddressableAreas'> {
|
|
285
|
+
id: CutoutFixtureIdsWithFakes;
|
|
286
|
+
providesAddressableAreas: Record<CutoutId, AddressableAreaNamesWithFakes[] | AddressableAreaName[]>;
|
|
287
|
+
}
|
|
288
|
+
export type CutoutFixtureWithFakes = FakeCutoutFixture | CutoutFixture;
|
|
289
|
+
export type AreaType = 'slot' | 'movableTrash' | 'wasteChute' | 'fixedTrash' | 'stagingSlot' | 'lidDock' | 'thermocycler' | 'heaterShaker' | 'temperatureModule' | 'magneticBlock' | 'absorbanceReader' | 'flexStacker';
|
|
247
290
|
export interface AddressableArea {
|
|
248
291
|
id: AddressableAreaName;
|
|
249
292
|
areaType: AreaType;
|
|
@@ -255,6 +298,10 @@ export interface AddressableArea {
|
|
|
255
298
|
ableToDropTips?: boolean;
|
|
256
299
|
matingSurfaceUnitVector?: UnitVectorTuple;
|
|
257
300
|
}
|
|
301
|
+
export interface FakeAddressableArea extends Omit<AddressableArea, 'id' | 'areaType'> {
|
|
302
|
+
id: AddressableAreaNamesWithFakes;
|
|
303
|
+
areaType: AreaTypeWithFakes;
|
|
304
|
+
}
|
|
258
305
|
export interface DeckMetadata {
|
|
259
306
|
displayName: string;
|
|
260
307
|
tags: string[];
|
|
@@ -276,6 +323,9 @@ export interface DeckLocations {
|
|
|
276
323
|
cutouts: DeckCutout[];
|
|
277
324
|
legacyFixtures: LegacyFixture[];
|
|
278
325
|
}
|
|
326
|
+
export interface DeckLocationsWithFakes extends Omit<DeckLocations, 'addressableAreas' | 'calibrationPoints' | 'legacyFixtures'> {
|
|
327
|
+
addressableAreas: AddressableAreaWithFakes[];
|
|
328
|
+
}
|
|
279
329
|
export interface DeckDefinition {
|
|
280
330
|
otId: string;
|
|
281
331
|
cornerOffsetFromOrigin: CoordinateTuple;
|
|
@@ -285,6 +335,10 @@ export interface DeckDefinition {
|
|
|
285
335
|
metadata: DeckMetadata;
|
|
286
336
|
cutoutFixtures: CutoutFixture[];
|
|
287
337
|
}
|
|
338
|
+
export interface DeckDefinitionWithFakes extends Omit<DeckDefinition, 'locations' | 'cutoutFixtures' | 'otId' | 'cornerOffsetFromOrigin' | 'dimensions' | 'metadata' | 'robot'> {
|
|
339
|
+
locations: DeckLocationsWithFakes;
|
|
340
|
+
cutoutFixtures: CutoutFixtureWithFakes[];
|
|
341
|
+
}
|
|
288
342
|
export interface ModuleDimensions {
|
|
289
343
|
bareOverallHeight: number;
|
|
290
344
|
overLabwareHeight: number;
|
|
@@ -308,20 +362,25 @@ export interface ModuleLayer {
|
|
|
308
362
|
export interface ModuleDefinition {
|
|
309
363
|
moduleType: ModuleType;
|
|
310
364
|
model: ModuleModel;
|
|
311
|
-
labwareOffset:
|
|
365
|
+
labwareOffset: Vector3D;
|
|
312
366
|
dimensions: ModuleDimensions;
|
|
313
|
-
cornerOffsetFromSlot:
|
|
367
|
+
cornerOffsetFromSlot: Vector3D;
|
|
314
368
|
calibrationPoint: ModuleCalibrationPoint;
|
|
315
369
|
displayName: string;
|
|
316
370
|
quirks: string[];
|
|
317
371
|
slotTransforms: SlotTransforms;
|
|
318
372
|
compatibleWith: ModuleModel[];
|
|
319
|
-
twoDimensionalRendering: any;
|
|
320
373
|
}
|
|
321
|
-
|
|
374
|
+
type AffineTransformRow = [number, number, number, number];
|
|
375
|
+
export type AffineTransformMatrix = [
|
|
376
|
+
AffineTransformRow,
|
|
377
|
+
AffineTransformRow,
|
|
378
|
+
AffineTransformRow,
|
|
379
|
+
AffineTransformRow
|
|
380
|
+
];
|
|
322
381
|
export interface SlotTransforms {
|
|
323
|
-
[deckOtId: string]: {
|
|
324
|
-
[slotId: string]: {
|
|
382
|
+
[deckOtId: string]: undefined | {
|
|
383
|
+
[slotId: string]: undefined | {
|
|
325
384
|
[transformKey in keyof ModuleDefinition]?: AffineTransformMatrix;
|
|
326
385
|
};
|
|
327
386
|
};
|
|
@@ -538,22 +597,26 @@ export interface Liquid {
|
|
|
538
597
|
description: string;
|
|
539
598
|
displayColor?: string;
|
|
540
599
|
}
|
|
541
|
-
type LiquidHandlingPropertyByVolume = number[][];
|
|
542
|
-
export type PositionReference = typeof
|
|
600
|
+
export type LiquidHandlingPropertyByVolume = number[][];
|
|
601
|
+
export type PositionReference = typeof POSITION_REFERENCE_BOTTOM | typeof POSITION_REFERENCE_CENTER | typeof POSITION_REFERENCE_TOP | typeof POSITION_REFERENCE_LIQUID_MENISCUS;
|
|
543
602
|
type BlowoutLocation = 'source' | 'destination' | 'trash';
|
|
544
603
|
interface DelayParams {
|
|
545
604
|
duration: number;
|
|
546
605
|
}
|
|
547
|
-
interface
|
|
606
|
+
export interface TipPosition {
|
|
607
|
+
positionReference: PositionReference;
|
|
608
|
+
offset: Vector3D;
|
|
609
|
+
}
|
|
610
|
+
export interface DelayProperties {
|
|
548
611
|
enable: boolean;
|
|
549
612
|
params?: DelayParams;
|
|
550
613
|
}
|
|
551
614
|
interface TouchTipParams {
|
|
552
615
|
zOffset: number;
|
|
553
|
-
|
|
616
|
+
mmFromEdge: number;
|
|
554
617
|
speed: number;
|
|
555
618
|
}
|
|
556
|
-
interface TouchTipProperties {
|
|
619
|
+
export interface TouchTipProperties {
|
|
557
620
|
enable: boolean;
|
|
558
621
|
params?: TouchTipParams;
|
|
559
622
|
}
|
|
@@ -561,7 +624,7 @@ interface MixParams {
|
|
|
561
624
|
repetitions: number;
|
|
562
625
|
volume: number;
|
|
563
626
|
}
|
|
564
|
-
interface MixProperties {
|
|
627
|
+
export interface MixProperties {
|
|
565
628
|
enable: boolean;
|
|
566
629
|
params?: MixParams;
|
|
567
630
|
}
|
|
@@ -569,56 +632,55 @@ interface BlowoutParams {
|
|
|
569
632
|
location: BlowoutLocation;
|
|
570
633
|
flowRate: number;
|
|
571
634
|
}
|
|
572
|
-
interface BlowoutProperties {
|
|
635
|
+
export interface BlowoutProperties {
|
|
573
636
|
enable: boolean;
|
|
574
637
|
params?: BlowoutParams;
|
|
575
638
|
}
|
|
576
|
-
interface Submerge {
|
|
577
|
-
|
|
578
|
-
offset: Coordinates;
|
|
639
|
+
export interface Submerge {
|
|
640
|
+
startPosition: TipPosition;
|
|
579
641
|
speed: number;
|
|
580
642
|
delay: DelayProperties;
|
|
581
643
|
}
|
|
582
644
|
interface BaseRetract {
|
|
583
|
-
|
|
584
|
-
offset: Coordinates;
|
|
645
|
+
endPosition: TipPosition;
|
|
585
646
|
speed: number;
|
|
586
647
|
airGapByVolume: LiquidHandlingPropertyByVolume;
|
|
587
648
|
touchTip: TouchTipProperties;
|
|
588
649
|
delay: DelayProperties;
|
|
589
650
|
}
|
|
590
|
-
type RetractAspirate = BaseRetract;
|
|
591
|
-
interface RetractDispense extends BaseRetract {
|
|
651
|
+
export type RetractAspirate = BaseRetract;
|
|
652
|
+
export interface RetractDispense extends BaseRetract {
|
|
592
653
|
blowout: BlowoutProperties;
|
|
593
654
|
}
|
|
594
655
|
interface BaseLiquidHandlingProperties<RetractType> {
|
|
595
656
|
submerge: Submerge;
|
|
596
657
|
retract: RetractType;
|
|
597
|
-
positionReference: PositionReference;
|
|
598
|
-
offset: Coordinates;
|
|
599
658
|
flowRateByVolume: LiquidHandlingPropertyByVolume;
|
|
600
659
|
correctionByVolume: LiquidHandlingPropertyByVolume;
|
|
601
660
|
delay: DelayProperties;
|
|
602
661
|
}
|
|
603
662
|
export interface AspirateProperties extends BaseLiquidHandlingProperties<RetractAspirate> {
|
|
663
|
+
aspiratePosition: TipPosition;
|
|
604
664
|
preWet: boolean;
|
|
605
665
|
mix: MixProperties;
|
|
606
666
|
}
|
|
607
667
|
export interface SingleDispenseProperties extends BaseLiquidHandlingProperties<RetractDispense> {
|
|
668
|
+
dispensePosition: TipPosition;
|
|
608
669
|
mix: MixProperties;
|
|
609
670
|
pushOutByVolume: LiquidHandlingPropertyByVolume;
|
|
610
671
|
}
|
|
611
|
-
export interface MultiDispenseProperties {
|
|
672
|
+
export interface MultiDispenseProperties extends BaseLiquidHandlingProperties<RetractDispense> {
|
|
673
|
+
dispensePosition: TipPosition;
|
|
612
674
|
conditioningByVolume: LiquidHandlingPropertyByVolume;
|
|
613
675
|
disposalByVolume: LiquidHandlingPropertyByVolume;
|
|
614
676
|
}
|
|
615
|
-
interface ByTipTypeSetting {
|
|
677
|
+
export interface ByTipTypeSetting {
|
|
616
678
|
tiprack: string;
|
|
617
679
|
aspirate: AspirateProperties;
|
|
618
680
|
singleDispense: SingleDispenseProperties;
|
|
619
681
|
multiDispense?: MultiDispenseProperties;
|
|
620
682
|
}
|
|
621
|
-
interface ByPipetteSetting {
|
|
683
|
+
export interface ByPipetteSetting {
|
|
622
684
|
pipetteModel: string;
|
|
623
685
|
byTipType: ByTipTypeSetting[];
|
|
624
686
|
}
|
|
@@ -778,5 +840,10 @@ export interface CutoutConfig {
|
|
|
778
840
|
opentronsModuleSerialNumber?: string;
|
|
779
841
|
}
|
|
780
842
|
export type DeckConfiguration = CutoutConfig[];
|
|
843
|
+
type CutoutConfigWithoutCutoutFixtureId = Omit<CutoutConfig, 'cutoutFixtureId'>;
|
|
844
|
+
export interface CutoutConfigMap extends CutoutConfigWithoutCutoutFixtureId {
|
|
845
|
+
addressableAreaId: AddressableAreaNamesWithFakes;
|
|
846
|
+
cutoutFixtureId: CutoutFixtureIdsWithFakes;
|
|
847
|
+
}
|
|
781
848
|
export type NozzleLayoutConfig = 'single' | 'column' | 'row' | 'full' | 'subrect';
|
|
782
849
|
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ordering": [["A1"]],
|
|
3
|
+
"brand": {
|
|
4
|
+
"brand": "Agilent",
|
|
5
|
+
"brandId": ["201252-100"],
|
|
6
|
+
"links": ["https://www.agilent.com/store/en_US/Prod-201252-100/201252-100"]
|
|
7
|
+
},
|
|
8
|
+
"metadata": {
|
|
9
|
+
"displayName": "Agilent 1 Well Reservoir 290 mL",
|
|
10
|
+
"displayCategory": "reservoir",
|
|
11
|
+
"displayVolumeUnits": "mL",
|
|
12
|
+
"tags": []
|
|
13
|
+
},
|
|
14
|
+
"dimensions": {
|
|
15
|
+
"xDimension": 127.76,
|
|
16
|
+
"yDimension": 85.57,
|
|
17
|
+
"zDimension": 44.04
|
|
18
|
+
},
|
|
19
|
+
"wells": {
|
|
20
|
+
"A1": {
|
|
21
|
+
"depth": 39.23,
|
|
22
|
+
"shape": "rectangular",
|
|
23
|
+
"xDimension": 108,
|
|
24
|
+
"yDimension": 72,
|
|
25
|
+
"totalLiquidVolume": 290000,
|
|
26
|
+
"x": 63.88,
|
|
27
|
+
"y": 42.785,
|
|
28
|
+
"z": 4.81,
|
|
29
|
+
"geometryDefinitionId": "cuboidalWell"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"groups": [
|
|
33
|
+
{
|
|
34
|
+
"wells": ["A1"],
|
|
35
|
+
"metadata": {
|
|
36
|
+
"wellBottomShape": "v"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"parameters": {
|
|
41
|
+
"format": "trough",
|
|
42
|
+
"isTiprack": false,
|
|
43
|
+
"isMagneticModuleCompatible": false,
|
|
44
|
+
"loadName": "agilent_1_reservoir_290ml",
|
|
45
|
+
"quirks": ["centerMultichannelOnWells", "touchTipDisabled"]
|
|
46
|
+
},
|
|
47
|
+
"namespace": "opentrons",
|
|
48
|
+
"version": 3,
|
|
49
|
+
"schemaVersion": 2,
|
|
50
|
+
"cornerOffsetFromSlot": {
|
|
51
|
+
"x": 0,
|
|
52
|
+
"y": 0,
|
|
53
|
+
"z": 0
|
|
54
|
+
},
|
|
55
|
+
"innerLabwareGeometry": {
|
|
56
|
+
"cuboidalWell": {
|
|
57
|
+
"sections": [
|
|
58
|
+
{
|
|
59
|
+
"shape": "cuboidal",
|
|
60
|
+
"topXDimension": 107.5,
|
|
61
|
+
"topYDimension": 71.25,
|
|
62
|
+
"bottomXDimension": 106.785,
|
|
63
|
+
"bottomYDimension": 71.0,
|
|
64
|
+
"topHeight": 39.23,
|
|
65
|
+
"bottomHeight": 2.0
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"shape": "cuboidal",
|
|
69
|
+
"topXDimension": 106.785,
|
|
70
|
+
"topYDimension": 8,
|
|
71
|
+
"bottomXDimension": 100.75,
|
|
72
|
+
"bottomYDimension": 1.66,
|
|
73
|
+
"topHeight": 2,
|
|
74
|
+
"bottomHeight": 0,
|
|
75
|
+
"yCount": 8
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|