@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.
Files changed (372) hide show
  1. package/.coveragerc +4 -0
  2. package/.flake8 +31 -0
  3. package/Config.in +11 -0
  4. package/LICENSE +202 -0
  5. package/Makefile +13 -14
  6. package/Makefile-python.mk +134 -0
  7. package/buildroot.mk +35 -0
  8. package/command/index.ts +16 -2
  9. package/command/schemas/12.json +65 -0
  10. package/command/schemas/13.json +7039 -0
  11. package/command/schemas/14.json +7254 -0
  12. package/command/types/annotation.ts +1 -1
  13. package/command/types/calibration.ts +7 -6
  14. package/command/types/gantry.ts +7 -6
  15. package/command/types/incidental.ts +1 -1
  16. package/command/types/index.ts +79 -20
  17. package/command/types/module.ts +98 -11
  18. package/command/types/pipetting.ts +9 -3
  19. package/command/types/robot.ts +98 -0
  20. package/command/types/setup.ts +8 -8
  21. package/command/types/support.ts +14 -2
  22. package/command/types/timing.ts +1 -1
  23. package/command/types/unsafe.ts +63 -1
  24. package/deck/definitions/5/ot2_short_trash.json +37 -0
  25. package/deck/definitions/5/ot2_standard.json +37 -0
  26. package/deck/definitions/5/ot3_standard.json +152 -51
  27. package/deck/index.ts +3 -6
  28. package/deck/schemas/5.json +46 -1
  29. package/errors/definitions/1/errors.json +12 -0
  30. package/errors/index.ts +2 -1
  31. package/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
  32. package/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
  33. package/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
  34. package/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
  35. package/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
  36. package/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
  37. package/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
  38. package/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
  39. package/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
  40. package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
  41. package/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
  42. package/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
  43. package/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
  44. package/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
  45. package/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
  46. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
  47. package/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
  48. package/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
  49. package/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
  50. package/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
  51. package/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
  52. package/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
  53. package/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
  54. package/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
  55. package/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
  56. package/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
  57. package/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
  58. package/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
  59. package/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
  60. package/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
  61. package/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
  62. package/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
  63. package/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
  64. package/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
  65. package/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
  66. package/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
  67. package/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
  68. package/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
  69. package/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
  70. package/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
  71. package/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
  72. package/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
  73. package/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
  74. package/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
  75. package/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
  76. package/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
  77. package/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
  78. package/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
  79. package/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
  80. package/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
  81. package/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
  82. package/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
  83. package/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
  84. package/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
  85. package/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
  86. package/labware/fixtures/2/index.ts +4 -4
  87. package/labware/fixtures/3/fixture_2_plate.json +28 -11
  88. package/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
  89. package/labware/fixtures/3/index.ts +4 -0
  90. package/labware/schemas/2.json +36 -1
  91. package/labware/schemas/3.json +115 -25
  92. package/lib/command/index.d.ts +4211 -2095
  93. package/lib/command/schemas/12.json +65 -0
  94. package/lib/command/schemas/13.json +7039 -0
  95. package/lib/command/schemas/14.json +7254 -0
  96. package/lib/command/types/annotation.d.ts +1 -1
  97. package/lib/command/types/calibration.d.ts +5 -5
  98. package/lib/command/types/gantry.d.ts +5 -4
  99. package/lib/command/types/incidental.d.ts +1 -1
  100. package/lib/command/types/index.d.ts +60 -14
  101. package/lib/command/types/module.d.ts +75 -13
  102. package/lib/command/types/pipetting.d.ts +8 -3
  103. package/lib/command/types/robot.d.ts +71 -0
  104. package/lib/command/types/setup.d.ts +5 -5
  105. package/lib/command/types/support.d.ts +3 -2
  106. package/lib/command/types/timing.d.ts +1 -1
  107. package/lib/command/types/unsafe.d.ts +44 -3
  108. package/lib/deck/definitions/5/ot2_short_trash.json +37 -0
  109. package/lib/deck/definitions/5/ot2_standard.json +37 -0
  110. package/lib/deck/definitions/5/ot3_standard.json +152 -51
  111. package/lib/deck/index.d.ts +3 -3
  112. package/lib/deck/schemas/5.json +46 -1
  113. package/lib/errors/definitions/1/errors.json +12 -0
  114. package/lib/errors/index.d.ts +1 -1
  115. package/lib/index.mjs +380872 -297265
  116. package/lib/js/constants.d.ts +45 -17
  117. package/lib/js/deck/index.d.ts +2 -2
  118. package/lib/js/fixtures.d.ts +78 -3
  119. package/lib/js/getLabware.d.ts +3 -3
  120. package/lib/js/gripper.d.ts +1 -1
  121. package/lib/js/helpers/__tests__/getMaxPushOutVolume.test.d.ts +1 -0
  122. package/lib/js/helpers/__tests__/getMmFromBottom.test.d.ts +1 -0
  123. package/lib/js/helpers/__tests__/getStackedItemsOnStartingDeck.test.d.ts +1 -0
  124. package/lib/js/helpers/__tests__/labwareSchemaShims.test.d.ts +1 -0
  125. package/lib/js/helpers/__tests__/liquidClasses.test.d.ts +1 -0
  126. package/lib/js/helpers/__tests__/pairsFromArray.test.d.ts +1 -0
  127. package/lib/js/helpers/__tests__/vectorMath.test.d.ts +1 -0
  128. package/lib/js/helpers/getFixedTrashLabwareDefinition.d.ts +2 -2
  129. package/lib/js/helpers/getLabwareDefURI.d.ts +3 -0
  130. package/lib/js/helpers/getLabwareDefinitionsByURIForProtocol.d.ts +6 -0
  131. package/lib/js/helpers/getLabwareInfoByLiquidId.d.ts +10 -0
  132. package/lib/js/helpers/getLiquidsByIdForLabware.d.ts +2 -0
  133. package/lib/js/helpers/getLoadedLabwareDefinitionsByUri.d.ts +2 -2
  134. package/lib/js/helpers/getMaxPushOutVolume.d.ts +2 -0
  135. package/lib/js/helpers/getMmFromBottom.d.ts +2 -0
  136. package/lib/js/helpers/getSimplestFlexDeckConfig.d.ts +1 -1
  137. package/lib/js/helpers/getStackedItemsOnStartingDeck.d.ts +50 -0
  138. package/lib/js/helpers/getStandardDeckViewLayerBlockList.d.ts +2 -0
  139. package/lib/js/helpers/getTipTypeFromTipRackDefinition.d.ts +2 -2
  140. package/lib/js/helpers/getWellFillFromLabwareId.d.ts +4 -0
  141. package/lib/js/helpers/getWellNamePerMultiTip.d.ts +3 -3
  142. package/lib/js/helpers/getWellRangeForLiquidLabwarePair.d.ts +6 -0
  143. package/lib/js/helpers/getWellTotalVolume.d.ts +2 -2
  144. package/lib/js/helpers/index.d.ts +25 -14
  145. package/lib/js/helpers/labwareInference.d.ts +3 -3
  146. package/lib/js/helpers/liquidClasses.d.ts +10 -0
  147. package/lib/js/helpers/matrixMath.d.ts +3 -0
  148. package/lib/js/helpers/pairsFromArray.d.ts +8 -0
  149. package/lib/js/helpers/parseAddressableArea.d.ts +1 -1
  150. package/lib/js/helpers/parseProtocolCommands.d.ts +5 -5
  151. package/lib/js/helpers/positionMath.d.ts +127 -0
  152. package/lib/js/helpers/validateCustomLabwareHelper.d.ts +2 -2
  153. package/lib/js/helpers/vectorMath.d.ts +14 -0
  154. package/lib/js/helpers/wellSets.d.ts +4 -4
  155. package/lib/js/labware.d.ts +10 -9
  156. package/lib/js/labwareTools/index.d.ts +1 -1
  157. package/lib/js/liquidClasses.d.ts +4 -0
  158. package/lib/js/modules.d.ts +2 -2
  159. package/lib/js/pipettes.d.ts +3 -2
  160. package/lib/js/types.d.ts +105 -38
  161. package/lib/labware/definitions/2/agilent_1_reservoir_290ml/3.json +80 -0
  162. package/lib/labware/definitions/2/appliedbiosystemsmicroamp_384_wellplate_40ul/3.json +4737 -0
  163. package/lib/labware/definitions/2/axygen_96_wellplate_500ul/1.json +1036 -0
  164. package/lib/labware/definitions/2/axygen_96_wellplate_500ul/2.json +1159 -0
  165. package/lib/labware/definitions/2/biorad_384_wellplate_50ul/4.json +4748 -0
  166. package/lib/labware/definitions/2/biorad_96_wellplate_200ul_pcr/4.json +1187 -0
  167. package/lib/labware/definitions/2/corning_12_wellplate_6.9ml_flat/4.json +210 -0
  168. package/lib/labware/definitions/2/corning_24_wellplate_3.4ml_flat/4.json +342 -0
  169. package/lib/labware/definitions/2/corning_384_wellplate_112ul_flat/4.json +5116 -0
  170. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/4.json +605 -0
  171. package/lib/labware/definitions/2/corning_48_wellplate_1.6ml_flat/5.json +610 -0
  172. package/lib/labware/definitions/2/corning_6_wellplate_16.8ml_flat/4.json +134 -0
  173. package/lib/labware/definitions/2/corning_96_wellplate_360ul_flat/4.json +1177 -0
  174. package/lib/labware/definitions/2/corning_96_wellplate_360ul_lid/1.json +111 -0
  175. package/lib/labware/definitions/2/ev_resin_tips_flex_96_labware/1.json +1 -1
  176. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/1.json +1105 -0
  177. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul/2.json +1216 -0
  178. package/lib/labware/definitions/2/ibidi_96_square_well_plate_300ul_lid/1.json +110 -0
  179. package/lib/labware/definitions/2/nest_12_reservoir_22ml/1.json +232 -0
  180. package/lib/labware/definitions/2/nest_1_reservoir_290ml/3.json +80 -0
  181. package/lib/labware/definitions/2/nest_24_wellplate_10.4ml/1.json +386 -0
  182. package/lib/labware/definitions/2/nest_8_reservoir_22ml/1.json +162 -0
  183. package/lib/labware/definitions/2/nest_96_wellplate_100ul_pcr_full_skirt/4.json +1166 -0
  184. package/lib/labware/definitions/2/nest_96_wellplate_200ul_flat/4.json +1145 -0
  185. package/lib/labware/definitions/2/nest_96_wellplate_2ml_deep/4.json +1261 -0
  186. package/lib/labware/definitions/2/opentrons_24_aluminumblock_nest_0.5ml_screwcap/3.json +370 -0
  187. package/lib/labware/definitions/2/opentrons_24_tuberack_nest_0.5ml_screwcap/3.json +371 -0
  188. package/lib/labware/definitions/2/opentrons_96_aluminumblock_generic_pcr_strip_200ul/4.json +1149 -0
  189. package/lib/labware/definitions/2/opentrons_96_wellplate_200ul_pcr_full_skirt/4.json +1174 -0
  190. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_1000ul/1.json +5 -0
  191. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_200ul/1.json +5 -0
  192. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_20ul/1.json +5 -0
  193. package/lib/labware/definitions/2/opentrons_flex_96_filtertiprack_50ul/1.json +5 -0
  194. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_1000ul/1.json +5 -0
  195. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_200ul/1.json +5 -0
  196. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_20ul/1.json +5 -0
  197. package/lib/labware/definitions/2/opentrons_flex_96_tiprack_50ul/1.json +5 -0
  198. package/lib/labware/definitions/2/opentrons_flex_tiprack_lid/1.json +15 -9
  199. package/lib/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +8 -0
  200. package/lib/labware/definitions/2/opentrons_tough_universal_lid/1.json +16 -1
  201. package/lib/labware/definitions/2/smc_384_read_plate/1.json +4701 -0
  202. package/lib/labware/definitions/2/smc_384_read_plate/2.json +5100 -0
  203. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_1300ul/3.json +1141 -0
  204. package/lib/labware/definitions/2/thermoscientificnunc_96_wellplate_2000ul/3.json +1141 -0
  205. package/lib/labware/definitions/2/usascientific_12_reservoir_22ml/3.json +237 -0
  206. package/lib/labware/definitions/2/usascientific_96_wellplate_2.4ml_deep/3.json +1243 -0
  207. package/lib/labware/definitions/3/schema3test_96_well_aluminum_block/999.json +1050 -0
  208. package/lib/labware/definitions/3/schema3test_96_wellplate_200ul_pcr_full_skirt/999.json +1202 -0
  209. package/lib/labware/definitions/3/schema3test_aluminum_flat_bottom_plate/999.json +70 -0
  210. package/lib/labware/definitions/3/schema3test_flex_96_tiprack_200ul/999.json +1037 -0
  211. package/lib/labware/definitions/3/schema3test_flex_96_tiprack_adapter/999.json +70 -0
  212. package/lib/labware/definitions/3/schema3test_flex_tiprack_lid/999.json +146 -0
  213. package/lib/labware/definitions/3/schema3test_tough_pcr_auto_sealing_lid/999.json +162 -0
  214. package/lib/labware/definitions/3/schema3test_universal_flat_adapter/999.json +157 -0
  215. package/lib/labware/fixtures/2/fixture_user_volumes_prototype.json +1137 -0
  216. package/lib/labware/fixtures/2/index.d.ts +4 -4
  217. package/lib/labware/fixtures/3/fixture_2_plate.json +28 -11
  218. package/lib/labware/fixtures/3/fixture_corning_24_plate.json +51 -34
  219. package/lib/labware/fixtures/3/index.d.ts +3 -0
  220. package/lib/labware/schemas/2.json +36 -1
  221. package/lib/labware/schemas/3.json +115 -25
  222. package/lib/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
  223. package/lib/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
  224. package/lib/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
  225. package/lib/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
  226. package/lib/liquid-class/schemas/1.json +40 -48
  227. package/lib/module/definitions/3/absorbanceReaderV1.json +20 -150
  228. package/lib/module/definitions/3/flexStackerModuleV1.json +31 -385
  229. package/lib/module/definitions/3/heaterShakerModuleV1.json +16 -357
  230. package/lib/module/definitions/3/magneticBlockV1.json +18 -148
  231. package/lib/module/definitions/3/magneticModuleV1.json +16 -398
  232. package/lib/module/definitions/3/magneticModuleV2.json +16 -398
  233. package/lib/module/definitions/3/temperatureModuleV1.json +16 -152
  234. package/lib/module/definitions/3/temperatureModuleV2.json +16 -152
  235. package/lib/module/definitions/3/thermocyclerModuleV1.json +16 -1339
  236. package/lib/module/definitions/3/thermocyclerModuleV2.json +18 -3616
  237. package/lib/module/schemas/3.json +111 -10
  238. package/lib/pipette/definitions/1/pipetteModelSpecs.json +336 -0
  239. package/lib/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
  240. package/lib/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
  241. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
  242. package/lib/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
  243. package/lib/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
  244. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
  245. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
  246. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
  247. package/lib/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
  248. package/lib/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
  249. package/lib/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
  250. package/lib/pipette/fixtures/name/index.d.ts +1 -1
  251. package/lib/protocol/fixtures/index.d.ts +2 -2
  252. package/lib/protocol/index.d.ts +7 -7
  253. package/lib/protocol/types/schemaV4.d.ts +1 -1
  254. package/lib/protocol/types/schemaV5.d.ts +1 -1
  255. package/lib/protocol/types/schemaV5Addendum.d.ts +1 -1
  256. package/lib/protocol/types/schemaV6/command/gantry.d.ts +4 -4
  257. package/lib/protocol/types/schemaV6/command/index.d.ts +5 -5
  258. package/lib/protocol/types/schemaV6/command/module.d.ts +1 -1
  259. package/lib/protocol/types/schemaV6/command/pipetting.d.ts +1 -1
  260. package/lib/protocol/types/schemaV6/command/setup.d.ts +1 -1
  261. package/lib/protocol/types/schemaV6/command/timing.d.ts +1 -1
  262. package/lib/protocol/types/schemaV6/index.d.ts +2 -2
  263. package/lib/protocol/types/schemaV7/command/annotation.d.ts +1 -1
  264. package/lib/protocol/types/schemaV7/command/calibration.d.ts +5 -5
  265. package/lib/protocol/types/schemaV7/command/gantry.d.ts +4 -4
  266. package/lib/protocol/types/schemaV7/command/incidental.d.ts +1 -1
  267. package/lib/protocol/types/schemaV7/command/index.d.ts +7 -7
  268. package/lib/protocol/types/schemaV7/command/module.d.ts +1 -1
  269. package/lib/protocol/types/schemaV7/command/pipetting.d.ts +1 -1
  270. package/lib/protocol/types/schemaV7/command/setup.d.ts +1 -1
  271. package/lib/protocol/types/schemaV7/command/timing.d.ts +1 -1
  272. package/lib/protocol/types/schemaV7/index.d.ts +2 -2
  273. package/lib/protocol/types/schemaV8/index.d.ts +18 -2
  274. package/liquid-class/definitions/1/{ethanol_80.json → ethanol_80/1.json} +1957 -1406
  275. package/liquid-class/definitions/1/{glycerol_50.json → glycerol_50/1.json} +1781 -1230
  276. package/liquid-class/definitions/1/{water.json → water/1.json} +1567 -1082
  277. package/liquid-class/fixtures/1/fixture_glycerol50.json +67 -48
  278. package/liquid-class/schemas/1.json +40 -48
  279. package/module/definitions/3/absorbanceReaderV1.json +20 -150
  280. package/module/definitions/3/flexStackerModuleV1.json +31 -385
  281. package/module/definitions/3/heaterShakerModuleV1.json +16 -357
  282. package/module/definitions/3/magneticBlockV1.json +18 -148
  283. package/module/definitions/3/magneticModuleV1.json +16 -398
  284. package/module/definitions/3/magneticModuleV2.json +16 -398
  285. package/module/definitions/3/temperatureModuleV1.json +16 -152
  286. package/module/definitions/3/temperatureModuleV2.json +16 -152
  287. package/module/definitions/3/thermocyclerModuleV1.json +16 -1339
  288. package/module/definitions/3/thermocyclerModuleV2.json +18 -3616
  289. package/module/schemas/3.json +111 -10
  290. package/mypy.ini +22 -0
  291. package/package.json +1 -1
  292. package/pipette/definitions/1/pipetteModelSpecs.json +336 -0
  293. package/pipette/definitions/2/general/ninety_six_channel/p200/3_2.json +660 -0
  294. package/pipette/definitions/2/geometry/eight_channel/p50/3_5.json +4 -0
  295. package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_0.json +4 -0
  296. package/pipette/definitions/2/geometry/ninety_six_channel/p200/3_2.json +309 -0
  297. package/pipette/definitions/2/geometry/single_channel/p50/3_6.json +4 -0
  298. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/1_0.json +11 -11
  299. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_0.json +12 -12
  300. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_1.json +28 -18
  301. package/pipette/definitions/2/liquid/ninety_six_channel/p200/default/3_2.json +192 -0
  302. package/pipette/definitions/2/liquid/single_channel/p50/default/3_6.json +5 -5
  303. package/pipette/definitions/2/liquid/single_channel/p50/lowVolumeDefault/3_6.json +5 -5
  304. package/pipette/fixtures/index.ts +12 -12
  305. package/pipette/fixtures/name/index.ts +1 -0
  306. package/protocol/fixtures/index.ts +2 -3
  307. package/protocol/index.ts +9 -8
  308. package/protocol/types/schemaV4.ts +4 -4
  309. package/protocol/types/schemaV5.ts +1 -1
  310. package/protocol/types/schemaV5Addendum.ts +1 -1
  311. package/protocol/types/schemaV6/command/gantry.ts +4 -4
  312. package/protocol/types/schemaV6/command/index.ts +6 -6
  313. package/protocol/types/schemaV6/command/module.ts +1 -1
  314. package/protocol/types/schemaV6/command/pipetting.ts +2 -1
  315. package/protocol/types/schemaV6/command/setup.ts +2 -2
  316. package/protocol/types/schemaV6/command/timing.ts +1 -1
  317. package/protocol/types/schemaV6/index.ts +3 -3
  318. package/protocol/types/schemaV7/command/annotation.ts +1 -1
  319. package/protocol/types/schemaV7/command/calibration.ts +7 -6
  320. package/protocol/types/schemaV7/command/gantry.ts +5 -5
  321. package/protocol/types/schemaV7/command/incidental.ts +1 -1
  322. package/protocol/types/schemaV7/command/index.ts +14 -14
  323. package/protocol/types/schemaV7/command/module.ts +1 -1
  324. package/protocol/types/schemaV7/command/pipetting.ts +2 -1
  325. package/protocol/types/schemaV7/command/setup.ts +2 -2
  326. package/protocol/types/schemaV7/command/timing.ts +1 -1
  327. package/protocol/types/schemaV7/index.ts +3 -3
  328. package/protocol/types/schemaV8/index.ts +32 -4
  329. package/pyproject.toml +119 -0
  330. package/pytest.ini +8 -0
  331. package/python_tests/__init__.py +1 -0
  332. package/python_tests/command/test_known_schema_ids.py +9 -0
  333. package/python_tests/conftest.py +108 -0
  334. package/python_tests/deck/__init__.py +0 -0
  335. package/python_tests/deck/test_list_names.py +12 -0
  336. package/python_tests/deck/test_position.py +101 -0
  337. package/python_tests/deck/test_typechecks.py +23 -0
  338. package/python_tests/errors/__init__.py +1 -0
  339. package/python_tests/errors/test_error_completeness.py +19 -0
  340. package/python_tests/errors/test_exceptions.py +74 -0
  341. package/python_tests/gripper/__init__.py +0 -0
  342. package/python_tests/gripper/test_definition.py +30 -0
  343. package/python_tests/gripper/test_load.py +19 -0
  344. package/python_tests/labware/__init__.py +13 -0
  345. package/python_tests/labware/test_typechecks.py +80 -0
  346. package/python_tests/liquid_classes/__init__.py +0 -0
  347. package/python_tests/liquid_classes/test_liquid_class_values.py +59 -0
  348. package/python_tests/liquid_classes/test_load.py +45 -0
  349. package/python_tests/liquid_classes/test_validations.py +192 -0
  350. package/python_tests/module/__init__.py +20 -0
  351. package/python_tests/module/test_load.py +49 -0
  352. package/python_tests/module/test_typechecks.py +26 -0
  353. package/python_tests/pipette/__init__.py +0 -0
  354. package/python_tests/pipette/test_load_data.py +109 -0
  355. package/python_tests/pipette/test_max_flow_rates_per_volume.py +112 -0
  356. package/python_tests/pipette/test_mutable_configurations.py +467 -0
  357. package/python_tests/pipette/test_pipette_definition.py +183 -0
  358. package/python_tests/pipette/test_pipette_load_name_conversions.py +244 -0
  359. package/python_tests/pipette/test_typechecks.py +47 -0
  360. package/python_tests/pipette/test_validate_schema.py +198 -0
  361. package/python_tests/protocol/__init__.py +7 -0
  362. package/python_tests/protocol/test_protocol_schema_v6.py +108 -0
  363. package/python_tests/protocol/test_protocol_schema_v7.py +35 -0
  364. package/python_tests/protocol/test_protocol_schema_v8.py +17 -0
  365. package/python_tests/protocol/test_typechecks.py +30 -0
  366. package/python_tests/robot/__init__.py +0 -0
  367. package/python_tests/robot/test_typechecks.py +13 -0
  368. package/lib/js/cypressUtils.d.ts +0 -1
  369. package/lib/js/helpers/getVectorDifference.d.ts +0 -2
  370. package/lib/js/helpers/getVectorSum.d.ts +0 -2
  371. /package/lib/js/{helpers/__tests__/getVectorDifference.test.d.ts → __tests__/fixtures.test.d.ts} +0 -0
  372. /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 { LabwareDefinition2 } from '..';
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: LabwareDefinition2 | null) => boolean;
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 { LabwareDefinition2, NozzleLayoutConfig, PipetteV2Specs } from '../types';
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: LabwareDefinition2;
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: LabwareDefinition2) => WellSetByPrimaryWell;
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?: LabwareDefinition2, trashName?: string) => boolean;
24
+ canPipetteUseLabware: (pipetteSpec: PipetteV2Specs, labwareDef?: LabwareDefinition, trashName?: string) => boolean;
25
25
  }
26
26
  export declare const makeWellSetHelpers: () => WellSetHelpers;
27
27
  export {};
@@ -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 fixtureTiprack10ul from '../labware/fixtures/2/fixture_tiprack_10_ul.json';
6
- import fixtureTiprack300ul from '../labware/fixtures/2/fixture_tiprack_300_ul.json';
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 fixtureCalibrationBlock from '../labware/fixtures/2/fixture_calibration_block.json';
10
- import fixture384Plate from '../labware/fixtures/2/fixture_384_plate.json';
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 type { LabwareDefByDefURI, LabwareDefinition2, LegacyLabwareDefByName } from './types';
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[]): LabwareDefByDefURI;
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 { LabwareDefinition2 as Definition, LabwareMetadata as Metadata, LabwareDimensions as Dimensions, LabwareBrand as Brand, LabwareParameters as Params, LabwareWell as Well, LabwareWellProperties as InputWell, LabwareWellGroup as WellGroup, LabwareOffset as Offset, LabwareVolumeUnits as VolumeUnits, ModuleModel, LabwareOffset } from '../types';
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>;
@@ -1,5 +1,5 @@
1
- import type { ModuleModel, ModuleModelWithLegacy, ModuleType, ModuleDefinition } from './types';
2
- export declare const getModuleDef2: (moduleModel: ModuleModel) => ModuleDefinition;
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;
@@ -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 type { PipetteV2Specs, PipetteNameSpecs, PipetteModelSpecs } from './types';
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 { MAGDECK, TEMPDECK, THERMOCYCLER, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_V1, THERMOCYCLER_MODULE_V2, HEATERSHAKER_MODULE_V1, ABSORBANCE_READER_V1, MAGNETIC_MODULE_TYPE, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, HEATERSHAKER_MODULE_TYPE, MAGNETIC_BLOCK_TYPE, ABSORBANCE_READER_TYPE, GEN1, GEN2, FLEX, LEFT, RIGHT, GRIPPER_V1, GRIPPER_V1_1, GRIPPER_V1_2, GRIPPER_V1_3, EXTENSION, MAGNETIC_BLOCK_V1, FLEX_STACKER_MODULE_V1, FLEX_STACKER_MODULE_TYPE, WELL_BOTTOM, WELL_CENTER, WELL_TOP, LIQUID_MENISCUS } from './constants';
2
- import type { RunTimeCommand, LoadedLabwareLocation } from '../command/types';
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 Coordinates {
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 = Coordinates;
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
- dimensions: LabwareDimensions;
177
- cornerOffsetFromSlot: LabwareOffset;
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 interface LabwareDefByDefURI {
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]?: Array<{
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
- type AreaType = 'slot' | 'movableTrash' | 'wasteChute' | 'fixedTrash' | 'stagingSlot' | 'lidDock';
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: Coordinates;
365
+ labwareOffset: Vector3D;
312
366
  dimensions: ModuleDimensions;
313
- cornerOffsetFromSlot: Coordinates;
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
- export type AffineTransformMatrix = number[][];
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 WELL_BOTTOM | typeof WELL_CENTER | typeof WELL_TOP | typeof LIQUID_MENISCUS;
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 DelayProperties {
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
- mmToEdge: number;
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
- positionReference: PositionReference;
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
- positionReference: PositionReference;
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
+ }