@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
@@ -1,9 +1,10 @@
1
- import fixture_12_trough from './fixture_12_trough.json'
2
1
  import fixture_12_trough_v2 from './fixture_12_trough_v2.json'
2
+ import fixture_12_trough from './fixture_12_trough.json'
3
3
  import fixture_24_tuberack from './fixture_24_tuberack.json'
4
- import fixture_384_plate from './fixture_384_plate.json'
5
4
  import fixture_96_plate from './fixture_96_plate.json'
5
+ import fixture_384_plate from './fixture_384_plate.json'
6
6
  import fixture_calibration_block from './fixture_calibration_block.json'
7
+ import fixture_corning_96_wellplate_360_flat from './fixture_corning_96_wellplate_360_flat.json'
7
8
  import fixture_flex_96_tiprack_1000ul from './fixture_flex_96_tiprack_1000ul.json'
8
9
  import fixture_flex_96_tiprack_adapter from './fixture_flex_96_tiprack_adapter.json'
9
10
  import fixture_irregular_example_1 from './fixture_irregular_example_1.json'
@@ -11,11 +12,10 @@ import fixture_overlappy_wellplate from './fixture_overlappy_wellplate.json'
11
12
  import fixture_regular_example_1 from './fixture_regular_example_1.json'
12
13
  import fixture_regular_example_2 from './fixture_regular_example_2.json'
13
14
  import fixture_tiprack_10_ul from './fixture_tiprack_10_ul.json'
14
- import fixture_tiprack_1000_ul from './fixture_tiprack_1000_ul.json'
15
15
  import fixture_tiprack_300_ul from './fixture_tiprack_300_ul.json'
16
+ import fixture_tiprack_1000_ul from './fixture_tiprack_1000_ul.json'
16
17
  import fixture_trash from './fixture_trash.json'
17
18
  import fixture_universal_flat_bottom_adapter from './fixture_universal_flat_bottom_adapter.json'
18
- import fixture_corning_96_wellplate_360_flat from './fixture_corning_96_wellplate_360_flat.json'
19
19
 
20
20
  export {
21
21
  fixture_12_trough_v2,
@@ -8,10 +8,32 @@
8
8
  "displayVolumeUnits": "mL",
9
9
  "displayCategory": "reservoir"
10
10
  },
11
- "dimensions": {
12
- "xDimension": 127.76,
13
- "yDimension": 85.8,
14
- "zDimension": 44.45
11
+ "extents": {
12
+ "total": {
13
+ "backLeftBottom": {
14
+ "x": 0,
15
+ "y": 0,
16
+ "z": 0
17
+ },
18
+ "frontRightTop": {
19
+ "x": 127.76,
20
+ "y": -85.8,
21
+ "z": 44.45
22
+ }
23
+ }
24
+ },
25
+ "features": {
26
+ "slotFootprintAsChild": {
27
+ "z": 0,
28
+ "backLeft": {
29
+ "x": 0,
30
+ "y": 0
31
+ },
32
+ "frontRight": {
33
+ "x": 127.76,
34
+ "y": -85.8
35
+ }
36
+ }
15
37
  },
16
38
  "parameters": {
17
39
  "format": "trough",
@@ -27,7 +49,7 @@
27
49
  "diameter": 35.0,
28
50
  "totalLiquidVolume": 22000,
29
51
  "x": 13.94,
30
- "y": 42.9,
52
+ "y": -42.9,
31
53
  "z": 2.29,
32
54
  "geometryDefinitionId": "iuweofiuwhfn"
33
55
  },
@@ -38,7 +60,7 @@
38
60
  "yDimension": 71.88,
39
61
  "totalLiquidVolume": 22000,
40
62
  "x": 23.03,
41
- "y": 42.9,
63
+ "y": -42.9,
42
64
  "z": 2.29,
43
65
  "geometryDefinitionId": "daiwudhadfhiew"
44
66
  }
@@ -55,11 +77,6 @@
55
77
  }
56
78
  }
57
79
  ],
58
- "cornerOffsetFromSlot": {
59
- "x": 0,
60
- "y": 0,
61
- "z": 0
62
- },
63
80
  "innerLabwareGeometry": {
64
81
  "daiwudhadfhiew": {
65
82
  "sections": [
@@ -16,17 +16,39 @@
16
16
  },
17
17
  "schemaVersion": 3,
18
18
  "version": 3,
19
- "namespace": "opentrons",
19
+ "namespace": "fixture",
20
20
  "metadata": {
21
21
  "displayName": "Corning 24 Well Plate 3.4 mL Flat",
22
22
  "displayVolumeUnits": "mL",
23
23
  "displayCategory": "wellPlate",
24
24
  "tags": []
25
25
  },
26
- "dimensions": {
27
- "xDimension": 127.76,
28
- "yDimension": 85.47,
29
- "zDimension": 20.27
26
+ "extents": {
27
+ "total": {
28
+ "backLeftBottom": {
29
+ "x": 0,
30
+ "y": 0,
31
+ "z": 0
32
+ },
33
+ "frontRightTop": {
34
+ "x": 127.76,
35
+ "y": -85.47,
36
+ "z": 20.27
37
+ }
38
+ }
39
+ },
40
+ "features": {
41
+ "slotFootprintAsChild": {
42
+ "z": 0,
43
+ "backLeft": {
44
+ "x": 0,
45
+ "y": 0
46
+ },
47
+ "frontRight": {
48
+ "x": 127.76,
49
+ "y": -85.47
50
+ }
51
+ }
30
52
  },
31
53
  "wells": {
32
54
  "D1": {
@@ -35,7 +57,7 @@
35
57
  "diameter": 16.26,
36
58
  "totalLiquidVolume": 3400,
37
59
  "x": 17.48,
38
- "y": 13.77,
60
+ "y": -71.7,
39
61
  "z": 2.87,
40
62
  "geometryDefinitionId": "venirhgerug"
41
63
  },
@@ -45,7 +67,7 @@
45
67
  "diameter": 16.26,
46
68
  "totalLiquidVolume": 3400,
47
69
  "x": 17.48,
48
- "y": 33.07,
70
+ "y": -52.4,
49
71
  "z": 2.87,
50
72
  "geometryDefinitionId": "venirhgerug"
51
73
  },
@@ -55,7 +77,7 @@
55
77
  "diameter": 16.26,
56
78
  "totalLiquidVolume": 3400,
57
79
  "x": 17.48,
58
- "y": 52.37,
80
+ "y": -33.1,
59
81
  "z": 2.87,
60
82
  "geometryDefinitionId": "venirhgerug"
61
83
  },
@@ -65,7 +87,7 @@
65
87
  "diameter": 16.26,
66
88
  "totalLiquidVolume": 3400,
67
89
  "x": 17.48,
68
- "y": 71.67,
90
+ "y": -13.8,
69
91
  "z": 2.87,
70
92
  "geometryDefinitionId": "venirhgerug"
71
93
  },
@@ -75,7 +97,7 @@
75
97
  "diameter": 16.26,
76
98
  "totalLiquidVolume": 3400,
77
99
  "x": 36.78,
78
- "y": 13.77,
100
+ "y": -71.7,
79
101
  "z": 2.87,
80
102
  "geometryDefinitionId": "venirhgerug"
81
103
  },
@@ -85,7 +107,7 @@
85
107
  "diameter": 16.26,
86
108
  "totalLiquidVolume": 3400,
87
109
  "x": 36.78,
88
- "y": 33.07,
110
+ "y": -52.4,
89
111
  "z": 2.87,
90
112
  "geometryDefinitionId": "venirhgerug"
91
113
  },
@@ -95,7 +117,7 @@
95
117
  "diameter": 16.26,
96
118
  "totalLiquidVolume": 3400,
97
119
  "x": 36.78,
98
- "y": 52.37,
120
+ "y": -33.1,
99
121
  "z": 2.87,
100
122
  "geometryDefinitionId": "venirhgerug"
101
123
  },
@@ -105,7 +127,7 @@
105
127
  "diameter": 16.26,
106
128
  "totalLiquidVolume": 3400,
107
129
  "x": 36.78,
108
- "y": 71.67,
130
+ "y": -13.8,
109
131
  "z": 2.87,
110
132
  "geometryDefinitionId": "venirhgerug"
111
133
  },
@@ -115,7 +137,7 @@
115
137
  "diameter": 16.26,
116
138
  "totalLiquidVolume": 3400,
117
139
  "x": 56.08,
118
- "y": 13.77,
140
+ "y": -71.7,
119
141
  "z": 2.87,
120
142
  "geometryDefinitionId": "venirhgerug"
121
143
  },
@@ -125,7 +147,7 @@
125
147
  "diameter": 16.26,
126
148
  "totalLiquidVolume": 3400,
127
149
  "x": 56.08,
128
- "y": 33.07,
150
+ "y": -52.4,
129
151
  "z": 2.87,
130
152
  "geometryDefinitionId": "venirhgerug"
131
153
  },
@@ -135,7 +157,7 @@
135
157
  "diameter": 16.26,
136
158
  "totalLiquidVolume": 3400,
137
159
  "x": 56.08,
138
- "y": 52.37,
160
+ "y": -33.1,
139
161
  "z": 2.87,
140
162
  "geometryDefinitionId": "venirhgerug"
141
163
  },
@@ -145,7 +167,7 @@
145
167
  "diameter": 16.26,
146
168
  "totalLiquidVolume": 3400,
147
169
  "x": 56.08,
148
- "y": 71.67,
170
+ "y": -13.8,
149
171
  "z": 2.87,
150
172
  "geometryDefinitionId": "venirhgerug"
151
173
  },
@@ -155,7 +177,7 @@
155
177
  "diameter": 16.26,
156
178
  "totalLiquidVolume": 3400,
157
179
  "x": 75.38,
158
- "y": 13.77,
180
+ "y": -71.7,
159
181
  "z": 2.87,
160
182
  "geometryDefinitionId": "venirhgerug"
161
183
  },
@@ -165,7 +187,7 @@
165
187
  "diameter": 16.26,
166
188
  "totalLiquidVolume": 3400,
167
189
  "x": 75.38,
168
- "y": 33.07,
190
+ "y": -52.4,
169
191
  "z": 2.87,
170
192
  "geometryDefinitionId": "venirhgerug"
171
193
  },
@@ -175,7 +197,7 @@
175
197
  "diameter": 16.26,
176
198
  "totalLiquidVolume": 3400,
177
199
  "x": 75.38,
178
- "y": 52.37,
200
+ "y": -33.1,
179
201
  "z": 2.87,
180
202
  "geometryDefinitionId": "venirhgerug"
181
203
  },
@@ -185,7 +207,7 @@
185
207
  "diameter": 16.26,
186
208
  "totalLiquidVolume": 3400,
187
209
  "x": 75.38,
188
- "y": 71.67,
210
+ "y": -13.8,
189
211
  "z": 2.87,
190
212
  "geometryDefinitionId": "venirhgerug"
191
213
  },
@@ -195,7 +217,7 @@
195
217
  "diameter": 16.26,
196
218
  "totalLiquidVolume": 3400,
197
219
  "x": 94.68,
198
- "y": 13.77,
220
+ "y": -71.7,
199
221
  "z": 2.87,
200
222
  "geometryDefinitionId": "venirhgerug"
201
223
  },
@@ -205,7 +227,7 @@
205
227
  "diameter": 16.26,
206
228
  "totalLiquidVolume": 3400,
207
229
  "x": 94.68,
208
- "y": 33.07,
230
+ "y": -52.4,
209
231
  "z": 2.87,
210
232
  "geometryDefinitionId": "venirhgerug"
211
233
  },
@@ -215,7 +237,7 @@
215
237
  "diameter": 16.26,
216
238
  "totalLiquidVolume": 3400,
217
239
  "x": 94.68,
218
- "y": 52.37,
240
+ "y": -33.1,
219
241
  "z": 2.87,
220
242
  "geometryDefinitionId": "venirhgerug"
221
243
  },
@@ -225,7 +247,7 @@
225
247
  "diameter": 16.26,
226
248
  "totalLiquidVolume": 3400,
227
249
  "x": 94.68,
228
- "y": 71.67,
250
+ "y": -13.8,
229
251
  "z": 2.87,
230
252
  "geometryDefinitionId": "venirhgerug"
231
253
  },
@@ -235,7 +257,7 @@
235
257
  "diameter": 16.26,
236
258
  "totalLiquidVolume": 3400,
237
259
  "x": 113.98,
238
- "y": 13.77,
260
+ "y": -71.7,
239
261
  "z": 2.87,
240
262
  "geometryDefinitionId": "venirhgerug"
241
263
  },
@@ -245,7 +267,7 @@
245
267
  "diameter": 16.26,
246
268
  "totalLiquidVolume": 3400,
247
269
  "x": 113.98,
248
- "y": 33.07,
270
+ "y": -52.4,
249
271
  "z": 2.87,
250
272
  "geometryDefinitionId": "venirhgerug"
251
273
  },
@@ -255,7 +277,7 @@
255
277
  "diameter": 16.26,
256
278
  "totalLiquidVolume": 3400,
257
279
  "x": 113.98,
258
- "y": 52.37,
280
+ "y": -33.1,
259
281
  "z": 2.87,
260
282
  "geometryDefinitionId": "venirhgerug"
261
283
  },
@@ -265,7 +287,7 @@
265
287
  "diameter": 16.26,
266
288
  "totalLiquidVolume": 3400,
267
289
  "x": 113.98,
268
- "y": 71.67,
290
+ "y": -13.8,
269
291
  "z": 2.87,
270
292
  "geometryDefinitionId": "venirhgerug"
271
293
  }
@@ -309,11 +331,6 @@
309
331
  }
310
332
  }
311
333
  ],
312
- "cornerOffsetFromSlot": {
313
- "x": 0,
314
- "y": 0,
315
- "z": 0
316
- },
317
334
  "stackingOffsetWithLabware": {
318
335
  "opentrons_aluminum_flat_bottom_plate": {
319
336
  "x": 0,
@@ -0,0 +1,4 @@
1
+ import fixture_2_plate from './fixture_2_plate.json'
2
+ import fixture_corning_24_plate from './fixture_corning_24_plate.json'
3
+
4
+ export { fixture_2_plate, fixture_corning_24_plate }
@@ -438,6 +438,34 @@
438
438
  }
439
439
  }
440
440
  }
441
+ },
442
+ "HeightVolumePair": {
443
+ "type": "object",
444
+ "required": ["height", "volume"],
445
+ "properties": {
446
+ "height": {
447
+ "description": "The height within a well at a user-defined volume.",
448
+ "type": "number"
449
+ },
450
+ "volume": {
451
+ "description": "A user-defined volume at a known height within a well.",
452
+ "type": "number"
453
+ }
454
+ }
455
+ },
456
+ "UserDefinedVolumes": {
457
+ "type": "object",
458
+ "required": ["heightToVolumeMap"],
459
+ "properties": {
460
+ "heightToVolumeMap": {
461
+ "description": "A list mapping heights to volumes [height, volume]. Must be ordered from top (highest z) to bottom (lowest z).",
462
+ "type": "array",
463
+ "minItems": 2,
464
+ "items": {
465
+ "$ref": "#/definitions/HeightVolumePair"
466
+ }
467
+ }
468
+ }
441
469
  }
442
470
  },
443
471
  "type": "object",
@@ -713,7 +741,14 @@
713
741
  "type": ["object", "null"],
714
742
  "description": "A dictionary holding all unique inner well geometries in a labware.",
715
743
  "additionalProperties": {
716
- "$ref": "#/definitions/InnerWellGeometry"
744
+ "oneOf": [
745
+ {
746
+ "$ref": "#/definitions/InnerWellGeometry"
747
+ },
748
+ {
749
+ "$ref": "#/definitions/UserDefinedVolumes"
750
+ }
751
+ ]
717
752
  }
718
753
  }
719
754
  }
@@ -51,7 +51,20 @@
51
51
  "type": "string",
52
52
  "pattern": "^[a-z0-9._]+$"
53
53
  },
54
- "vector": {
54
+ "vector2D": {
55
+ "type": "object",
56
+ "additionalProperties": false,
57
+ "required": ["x", "y"],
58
+ "properties": {
59
+ "x": {
60
+ "type": "number"
61
+ },
62
+ "y": {
63
+ "type": "number"
64
+ }
65
+ }
66
+ },
67
+ "vector3D": {
55
68
  "type": "object",
56
69
  "additionalProperties": false,
57
70
  "required": ["x", "y", "z"],
@@ -67,16 +80,46 @@
67
80
  }
68
81
  }
69
82
  },
83
+ "axisAlignedBoundingBox2D": {
84
+ "type": "object",
85
+ "required": ["backLeft", "frontRight"],
86
+ "additionalProperties": false,
87
+ "properties": {
88
+ "backLeft": {
89
+ "description": "(-x, +y) relative to the labware origin.",
90
+ "$ref": "#/definitions/vector2D"
91
+ },
92
+ "frontRight": {
93
+ "description": "(+x, -y) relative to the labware origin.",
94
+ "$ref": "#/definitions/vector2D"
95
+ }
96
+ }
97
+ },
98
+ "axisAlignedBoundingBox3D": {
99
+ "type": "object",
100
+ "required": ["backLeftBottom", "frontRightTop"],
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "backLeftBottom": {
104
+ "description": "(-x, +y, -z) relative to the labware origin.",
105
+ "$ref": "#/definitions/vector3D"
106
+ },
107
+ "frontRightTop": {
108
+ "description": "(+x, -y, +z) relative to the labware origin.",
109
+ "$ref": "#/definitions/vector3D"
110
+ }
111
+ }
112
+ },
70
113
  "pickUpAndDropOffsets": {
71
114
  "type": "object",
72
115
  "required": ["pickUpOffset", "dropOffset"],
73
116
  "properties": {
74
117
  "pickUpOffset": {
75
- "$ref": "#/definitions/vector",
118
+ "$ref": "#/definitions/vector3D",
76
119
  "description": "Offset added to calculate pick-up coordinates."
77
120
  },
78
121
  "dropOffset": {
79
- "$ref": "#/definitions/vector",
122
+ "$ref": "#/definitions/vector3D",
80
123
  "description": "Offset added to calculate drop coordinates."
81
124
  }
82
125
  }
@@ -164,15 +207,16 @@
164
207
  "$ref": "#/definitions/positiveNumber"
165
208
  },
166
209
  "x": {
167
- "description": "x location of center-bottom of well in reference to left-front-bottom of labware",
210
+ "description": "x location of center-bottom of well in reference to the labware origin",
168
211
  "$ref": "#/definitions/positiveNumber"
169
212
  },
170
213
  "y": {
171
- "description": "y location of center-bottom of well in reference to left-front-bottom of labware",
172
- "$ref": "#/definitions/positiveNumber"
214
+ "description": "y location of center-bottom of well in reference to the labware origin",
215
+ "type": "number",
216
+ "maximum": 0
173
217
  },
174
218
  "z": {
175
- "description": "z location of center-bottom of well in reference to left-front-bottom of labware",
219
+ "description": "z location of center-bottom of well in reference to the labware origin",
176
220
  "$ref": "#/definitions/positiveNumber"
177
221
  },
178
222
  "geometryDefinitionId": {
@@ -450,9 +494,9 @@
450
494
  "metadata",
451
495
  "brand",
452
496
  "parameters",
453
- "cornerOffsetFromSlot",
454
497
  "ordering",
455
- "dimensions",
498
+ "extents",
499
+ "features",
456
500
  "wells",
457
501
  "groups"
458
502
  ],
@@ -570,24 +614,70 @@
570
614
  }
571
615
  }
572
616
  },
573
- "cornerOffsetFromSlot": {
574
- "description": "Distance from left-front-bottom corner of slot to left-front-bottom corner of labware bounding box. Used for labware that spans multiple slots. For labware that does not span multiple slots, x/y/z should all be zero.",
575
- "$ref": "#/definitions/vector"
576
- },
577
- "dimensions": {
617
+ "extents": {
618
+ "description": "The outer dimensions of the labware. Includes offsets from `cornerOffsetFromSlot`.",
578
619
  "type": "object",
620
+ "required": ["total"],
579
621
  "additionalProperties": false,
580
- "description": "Outer dimensions of a labware",
581
- "required": ["xDimension", "yDimension", "zDimension"],
582
622
  "properties": {
583
- "yDimension": {
584
- "$ref": "#/definitions/positiveNumber"
585
- },
586
- "zDimension": {
587
- "$ref": "#/definitions/positiveNumber"
623
+ "total": {
624
+ "description": "The all-encompassing outer dimensions of the labware.",
625
+ "$ref": "#/definitions/axisAlignedBoundingBox3D"
626
+ }
627
+ }
628
+ },
629
+ "features": {
630
+ "type": "object",
631
+ "description": "Locating features when this labware is a part of a stackup.",
632
+ "required": [],
633
+ "properties": {
634
+ "slotFootprintAsChild": {
635
+ "description": "The 3D plane of the labware that makes physical contact with a parent entity. Constrained by the dimensions of a slot.",
636
+ "type": "object",
637
+ "required": ["backLeft", "frontRight", "z"],
638
+ "properties": {
639
+ "backLeft": {
640
+ "description": "(-x, +y) relative to the labware origin.",
641
+ "$ref": "#/definitions/vector2D"
642
+ },
643
+ "frontRight": {
644
+ "description": "(+x, -y) relative to the labware origin.",
645
+ "$ref": "#/definitions/vector2D"
646
+ },
647
+ "z": {
648
+ "description": "Always zero by convention. Z-coordinate of the footprint plane.",
649
+ "type": "number"
650
+ },
651
+ "springDirectionalForce": {
652
+ "description": "Applicable when the labware contains a spring that influences its position when placed on a parent deck item.",
653
+ "type": "string",
654
+ "enum": ["backLeftBottom"]
655
+ }
656
+ }
588
657
  },
589
- "xDimension": {
590
- "$ref": "#/definitions/positiveNumber"
658
+ "slotFootprintAsParent": {
659
+ "description": "The 2D plane on which a child deck item resides.",
660
+ "type": "object",
661
+ "required": ["backLeft", "frontRight", "z"],
662
+ "properties": {
663
+ "backLeft": {
664
+ "description": "(-x, +y), the back left corner of a labware's mating plane.",
665
+ "$ref": "#/definitions/vector2D"
666
+ },
667
+ "frontRight": {
668
+ "description": "(+x, -y), the back left corner of a labware's module plane.",
669
+ "$ref": "#/definitions/vector2D"
670
+ },
671
+ "z": {
672
+ "description": "The z-offset from this labware's origin to the plane on which a child deck item resides.",
673
+ "type": "number"
674
+ },
675
+ "springDirectionalForce": {
676
+ "description": "Applicable when the labware contains a spring that influences the positioning of a child deck item.",
677
+ "type": "string",
678
+ "enum": ["backLeftBottom"]
679
+ }
680
+ }
591
681
  }
592
682
  }
593
683
  },
@@ -663,14 +753,14 @@
663
753
  "type": "object",
664
754
  "description": "Supported labware that can be stacked upon, with overlap height between both labware.",
665
755
  "additionalProperties": {
666
- "$ref": "#/definitions/vector"
756
+ "$ref": "#/definitions/vector3D"
667
757
  }
668
758
  },
669
759
  "stackingOffsetWithModule": {
670
760
  "type": "object",
671
761
  "description": "Supported module that can be stacked upon, with overlap height between labware and module.",
672
762
  "additionalProperties": {
673
- "$ref": "#/definitions/vector"
763
+ "$ref": "#/definitions/vector3D"
674
764
  }
675
765
  },
676
766
  "gripperOffsets": {