chemicalml 0.2.0 → 0.3.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 (450) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +7 -1
  3. data/.rubocop.yml +23 -0
  4. data/CLAUDE.md +95 -40
  5. data/README.adoc +154 -26
  6. data/TODO.align/36-molecular-convention-coverage.md +46 -0
  7. data/TODO.align/37-compchem-convention-coverage.md +55 -0
  8. data/TODO.align/38-dictionary-convention-coverage.md +34 -0
  9. data/TODO.align/39-unit-dictionary-convention-coverage.md +33 -0
  10. data/TODO.align/40-unit-type-dictionary-convention-coverage.md +28 -0
  11. data/TODO.align/41-expand-canonical-model-layer.md +43 -0
  12. data/TODO.align/42-translator-wire-new-models.md +31 -0
  13. data/TODO.align/43-dictionary-model-no-to-h.md +39 -0
  14. data/TODO.align/44-schema3-only-and-schema24-module.md +44 -0
  15. data/TODO.align/45-documentation-and-final-verification.md +23 -0
  16. data/TODO.align/46-lattice-vector-content.md +24 -0
  17. data/TODO.align/47-molecule-crystal-spectra-property-lists.md +23 -0
  18. data/TODO.align/48-model-list-and-module-lists.md +21 -0
  19. data/TODO.align/49-more-chemistry-models.md +34 -0
  20. data/TODO.align/50-validation-report.md +29 -0
  21. data/TODO.align/51-convention-auto-detection.md +30 -0
  22. data/TODO.align/52-schema24-legacy-elements.md +28 -0
  23. data/TODO.align/53-round-trip-integration-specs.md +30 -0
  24. data/TODO.align/54-document-versioned-parser-shim.md +38 -0
  25. data/TODO.align/55-molecule-missing-attributes.md +20 -0
  26. data/TODO.align/56-geometry-models.md +24 -0
  27. data/TODO.align/57-compchem-models.md +26 -0
  28. data/TODO.align/58-remaining-models.md +24 -0
  29. data/TODO.align/59-wire-new-models-translator.md +18 -0
  30. data/TODO.align/60-docs-and-final-verification.md +19 -0
  31. data/TODO.align/61-parallel-array-attrs.md +54 -0
  32. data/TODO.align/62-per-element-attribute-gaps.md +49 -0
  33. data/TODO.align/63-universal-children-mixin.md +42 -0
  34. data/TODO.align/64-per-element-child-gaps.md +81 -0
  35. data/TODO.align/65-simple-unit-convention.md +40 -0
  36. data/TODO.align/66-schema24-legacy-children.md +32 -0
  37. data/TODO.align/67-final-verification.md +32 -0
  38. data/TODO.align/68-detection-coverage.md +33 -0
  39. data/TODO.align/69-json-yaml-roundtrip.md +27 -0
  40. data/TODO.align/70-iterative-walker.md +40 -0
  41. data/TODO.align/71-violation-value.md +25 -0
  42. data/TODO.align/72-close-child-gaps.md +66 -0
  43. data/TODO.align/73-schema24-parse-limitation.md +64 -0
  44. data/TODO.align/74-final-verification-round18.md +15 -0
  45. data/TODO.align/75-key-value-mappings.md +43 -0
  46. data/TODO.align/76-schema24-workaround.md +57 -0
  47. data/TODO.align/77-convention-coverage-matrix.md +31 -0
  48. data/TODO.align/78-fixture-audit.md +23 -0
  49. data/TODO.align/79-final-verification-round19.md +15 -0
  50. data/TODO.align/80-xsd-enum-constants.md +35 -0
  51. data/TODO.align/81-enum-validation-constraints.md +29 -0
  52. data/TODO.align/82-reference-resolver.md +33 -0
  53. data/TODO.align/83-toml-roundtrip.md +20 -0
  54. data/TODO.align/84-final-verification-round21.md +16 -0
  55. data/TODO.align/85-bond-distinct-atoms.md +25 -0
  56. data/TODO.align/86-references-should-resolve.md +20 -0
  57. data/TODO.align/87-cli-utility.md +26 -0
  58. data/TODO.align/88-diverse-fixtures.md +26 -0
  59. data/TODO.align/89-final-verification-round22.md +15 -0
  60. data/TODO.align/90-bond-stereo-completeness.md +31 -0
  61. data/TODO.align/91-atomparity-distinct.md +21 -0
  62. data/TODO.align/92-unit-dictionary-completeness.md +28 -0
  63. data/TODO.align/93-yard-docs.md +23 -0
  64. data/TODO.align/94-final-verification-round23.md +15 -0
  65. data/TODO.align/README.round17.md +28 -0
  66. data/TODO.align/README.round18.md +37 -0
  67. data/TODO.align/README.round19.md +40 -0
  68. data/TODO.align/README.round20.md +49 -0
  69. data/TODO.align/README.round21.md +35 -0
  70. data/TODO.align/README.round22.md +48 -0
  71. data/TODO.align/README.round23.md +46 -0
  72. data/TODO.align/README.round24.md +53 -0
  73. data/TODO.align/README.round25.md +66 -0
  74. data/TODO.align/README.round26.md +55 -0
  75. data/TODO.align/README.round27.md +51 -0
  76. data/TODO.align/README.round28.md +61 -0
  77. data/TODO.align/README.round29.md +64 -0
  78. data/TODO.align/README.round30.md +50 -0
  79. data/TODO.align/README.round31.md +54 -0
  80. data/TODO.align/README.round32.md +67 -0
  81. data/TODO.align/README.round33.md +62 -0
  82. data/TODO.align/README.round34.md +70 -0
  83. data/docs/constraints.md +161 -0
  84. data/docs/generate_constraint_docs.rb +44 -0
  85. data/exe/chemicalml +6 -0
  86. data/lib/chemicalml/cli/base.rb +68 -0
  87. data/lib/chemicalml/cli/command.rb +43 -0
  88. data/lib/chemicalml/cli/constraints_command.rb +27 -0
  89. data/lib/chemicalml/cli/conventions_command.rb +14 -0
  90. data/lib/chemicalml/cli/dictionaries_command.rb +14 -0
  91. data/lib/chemicalml/cli/elements_command.rb +17 -0
  92. data/lib/chemicalml/cli/enums_command.rb +17 -0
  93. data/lib/chemicalml/cli/info_command.rb +77 -0
  94. data/lib/chemicalml/cli/inspect_command.rb +39 -0
  95. data/lib/chemicalml/cli/validate_command.rb +54 -0
  96. data/lib/chemicalml/cli.rb +43 -0
  97. data/lib/chemicalml/cml/base/abundance.rb +21 -5
  98. data/lib/chemicalml/cml/base/action.rb +44 -6
  99. data/lib/chemicalml/cml/base/action_list.rb +44 -8
  100. data/lib/chemicalml/cml/base/alternative.rb +37 -0
  101. data/lib/chemicalml/cml/base/amount.rb +15 -5
  102. data/lib/chemicalml/cml/base/angle.rb +34 -7
  103. data/lib/chemicalml/cml/base/annotation.rb +38 -0
  104. data/lib/chemicalml/cml/base/any_cml.rb +12 -5
  105. data/lib/chemicalml/cml/base/appinfo.rb +40 -0
  106. data/lib/chemicalml/cml/base/arg.rb +80 -0
  107. data/lib/chemicalml/cml/base/array.rb +51 -8
  108. data/lib/chemicalml/cml/base/array_list.rb +15 -5
  109. data/lib/chemicalml/cml/base/atom.rb +93 -19
  110. data/lib/chemicalml/cml/base/atom_array.rb +77 -2
  111. data/lib/chemicalml/cml/base/atom_parity.rb +18 -2
  112. data/lib/chemicalml/cml/base/atom_set.rb +15 -5
  113. data/lib/chemicalml/cml/base/atom_type.rb +27 -7
  114. data/lib/chemicalml/cml/base/atom_type_list.rb +23 -7
  115. data/lib/chemicalml/cml/base/atomic_basis_function.rb +35 -11
  116. data/lib/chemicalml/cml/base/band.rb +22 -7
  117. data/lib/chemicalml/cml/base/band_list.rb +15 -7
  118. data/lib/chemicalml/cml/base/basis_set.rb +26 -7
  119. data/lib/chemicalml/cml/base/bond.rb +39 -7
  120. data/lib/chemicalml/cml/base/bond_array.rb +41 -2
  121. data/lib/chemicalml/cml/base/bond_set.rb +15 -5
  122. data/lib/chemicalml/cml/base/bond_stereo.rb +25 -4
  123. data/lib/chemicalml/cml/base/bond_type.rb +24 -7
  124. data/lib/chemicalml/cml/base/bond_type_list.rb +23 -7
  125. data/lib/chemicalml/cml/base/cell_parameter.rb +30 -8
  126. data/lib/chemicalml/cml/base/cml_module.rb +36 -11
  127. data/lib/chemicalml/cml/base/common_children.rb +35 -0
  128. data/lib/chemicalml/cml/base/complex_object.rb +37 -0
  129. data/lib/chemicalml/cml/base/condition_list.rb +28 -8
  130. data/lib/chemicalml/cml/base/crystal.rb +27 -9
  131. data/lib/chemicalml/cml/base/definition.rb +12 -5
  132. data/lib/chemicalml/cml/base/description.rb +15 -5
  133. data/lib/chemicalml/cml/base/dictionary.rb +30 -7
  134. data/lib/chemicalml/cml/base/dictionary_entry.rb +67 -8
  135. data/lib/chemicalml/cml/base/dimension.rb +31 -7
  136. data/lib/chemicalml/cml/base/document.rb +18 -8
  137. data/lib/chemicalml/cml/base/documentation.rb +12 -5
  138. data/lib/chemicalml/cml/base/eigen.rb +33 -7
  139. data/lib/chemicalml/cml/base/electron.rb +29 -9
  140. data/lib/chemicalml/cml/base/enumeration.rb +41 -0
  141. data/lib/chemicalml/cml/base/expression.rb +47 -0
  142. data/lib/chemicalml/cml/base/float.rb +52 -0
  143. data/lib/chemicalml/cml/base/float_array.rb +55 -0
  144. data/lib/chemicalml/cml/base/formula.rb +31 -10
  145. data/lib/chemicalml/cml/base/fragment.rb +33 -9
  146. data/lib/chemicalml/cml/base/fragment_list.rb +26 -7
  147. data/lib/chemicalml/cml/base/gradient.rb +19 -6
  148. data/lib/chemicalml/cml/base/identifier.rb +22 -4
  149. data/lib/chemicalml/cml/base/integer.rb +52 -0
  150. data/lib/chemicalml/cml/base/integer_array.rb +55 -0
  151. data/lib/chemicalml/cml/base/isotope.rb +29 -8
  152. data/lib/chemicalml/cml/base/isotope_list.rb +18 -7
  153. data/lib/chemicalml/cml/base/join.rb +28 -6
  154. data/lib/chemicalml/cml/base/kpoint.rb +17 -6
  155. data/lib/chemicalml/cml/base/kpoint_list.rb +15 -7
  156. data/lib/chemicalml/cml/base/label.rb +15 -5
  157. data/lib/chemicalml/cml/base/lattice.rb +36 -9
  158. data/lib/chemicalml/cml/base/lattice_vector.rb +17 -6
  159. data/lib/chemicalml/cml/base/length.rb +31 -7
  160. data/lib/chemicalml/cml/base/line3.rb +21 -5
  161. data/lib/chemicalml/cml/base/link.rb +51 -10
  162. data/lib/chemicalml/cml/base/list.rb +23 -9
  163. data/lib/chemicalml/cml/base/map.rb +38 -5
  164. data/lib/chemicalml/cml/base/matrix.rb +38 -9
  165. data/lib/chemicalml/cml/base/mechanism.rb +20 -7
  166. data/lib/chemicalml/cml/base/mechanism_component.rb +14 -6
  167. data/lib/chemicalml/cml/base/metadata.rb +20 -6
  168. data/lib/chemicalml/cml/base/metadata_list.rb +30 -5
  169. data/lib/chemicalml/cml/base/molecule.rb +95 -21
  170. data/lib/chemicalml/cml/base/molecule_list.rb +27 -7
  171. data/lib/chemicalml/cml/base/name.rb +11 -3
  172. data/lib/chemicalml/cml/base/object.rb +20 -6
  173. data/lib/chemicalml/cml/base/observation.rb +18 -5
  174. data/lib/chemicalml/cml/base/operator.rb +40 -0
  175. data/lib/chemicalml/cml/base/parameter.rb +38 -8
  176. data/lib/chemicalml/cml/base/parameter_list.rb +30 -5
  177. data/lib/chemicalml/cml/base/particle.rb +23 -6
  178. data/lib/chemicalml/cml/base/peak.rb +86 -11
  179. data/lib/chemicalml/cml/base/peak_group.rb +81 -7
  180. data/lib/chemicalml/cml/base/peak_list.rb +25 -8
  181. data/lib/chemicalml/cml/base/peak_structure.rb +47 -6
  182. data/lib/chemicalml/cml/base/plane3.rb +15 -5
  183. data/lib/chemicalml/cml/base/point3.rb +15 -5
  184. data/lib/chemicalml/cml/base/potential.rb +17 -6
  185. data/lib/chemicalml/cml/base/potential_form.rb +31 -6
  186. data/lib/chemicalml/cml/base/potential_list.rb +15 -7
  187. data/lib/chemicalml/cml/base/product.rb +53 -2
  188. data/lib/chemicalml/cml/base/product_list.rb +36 -2
  189. data/lib/chemicalml/cml/base/property.rb +32 -8
  190. data/lib/chemicalml/cml/base/property_list.rb +26 -5
  191. data/lib/chemicalml/cml/base/reactant.rb +53 -2
  192. data/lib/chemicalml/cml/base/reactant_list.rb +36 -2
  193. data/lib/chemicalml/cml/base/reaction.rb +82 -12
  194. data/lib/chemicalml/cml/base/reaction_list.rb +29 -2
  195. data/lib/chemicalml/cml/base/reaction_scheme.rb +48 -8
  196. data/lib/chemicalml/cml/base/reaction_step.rb +33 -9
  197. data/lib/chemicalml/cml/base/reaction_step_list.rb +34 -7
  198. data/lib/chemicalml/cml/base/reactive_centre.rb +31 -6
  199. data/lib/chemicalml/cml/base/region.rb +24 -5
  200. data/lib/chemicalml/cml/base/related_entry.rb +34 -0
  201. data/lib/chemicalml/cml/base/sample.rb +32 -5
  202. data/lib/chemicalml/cml/base/scalar.rb +41 -6
  203. data/lib/chemicalml/cml/base/spectator.rb +26 -5
  204. data/lib/chemicalml/cml/base/spectator_list.rb +20 -7
  205. data/lib/chemicalml/cml/base/spectrum.rb +63 -12
  206. data/lib/chemicalml/cml/base/spectrum_data.rb +20 -8
  207. data/lib/chemicalml/cml/base/spectrum_list.rb +30 -7
  208. data/lib/chemicalml/cml/base/sphere3.rb +15 -5
  209. data/lib/chemicalml/cml/base/stmml.rb +12 -5
  210. data/lib/chemicalml/cml/base/string.rb +40 -0
  211. data/lib/chemicalml/cml/base/string_array.rb +52 -0
  212. data/lib/chemicalml/cml/base/substance.rb +42 -8
  213. data/lib/chemicalml/cml/base/substance_list.rb +32 -7
  214. data/lib/chemicalml/cml/base/symmetry.rb +33 -7
  215. data/lib/chemicalml/cml/base/system.rb +23 -8
  216. data/lib/chemicalml/cml/base/table.rb +43 -8
  217. data/lib/chemicalml/cml/base/table_cell.rb +12 -5
  218. data/lib/chemicalml/cml/base/table_content.rb +20 -8
  219. data/lib/chemicalml/cml/base/table_header.rb +15 -7
  220. data/lib/chemicalml/cml/base/table_header_cell.rb +27 -5
  221. data/lib/chemicalml/cml/base/table_row.rb +15 -7
  222. data/lib/chemicalml/cml/base/table_row_list.rb +15 -7
  223. data/lib/chemicalml/cml/base/tcell.rb +43 -0
  224. data/lib/chemicalml/cml/base/torsion.rb +34 -7
  225. data/lib/chemicalml/cml/base/transform3.rb +12 -5
  226. data/lib/chemicalml/cml/base/transition_state.rb +23 -5
  227. data/lib/chemicalml/cml/base/trow.rb +48 -0
  228. data/lib/chemicalml/cml/base/unit.rb +45 -10
  229. data/lib/chemicalml/cml/base/unit_list.rb +40 -6
  230. data/lib/chemicalml/cml/base/unit_type.rb +32 -5
  231. data/lib/chemicalml/cml/base/unit_type_list.rb +34 -6
  232. data/lib/chemicalml/cml/base/vector3.rb +15 -5
  233. data/lib/chemicalml/cml/base/xaxis.rb +33 -7
  234. data/lib/chemicalml/cml/base/yaxis.rb +33 -7
  235. data/lib/chemicalml/cml/base/z_matrix.rb +26 -5
  236. data/lib/chemicalml/cml/base.rb +139 -121
  237. data/lib/chemicalml/cml/canonical_comparison.rb +54 -0
  238. data/lib/chemicalml/cml/elements.rb +168 -124
  239. data/lib/chemicalml/cml/enums.rb +55 -0
  240. data/lib/chemicalml/cml/namespace.rb +2 -3
  241. data/lib/chemicalml/cml/patterns.rb +33 -0
  242. data/lib/chemicalml/cml/reference_resolver.rb +137 -0
  243. data/lib/chemicalml/cml/role/alternative.rb +10 -0
  244. data/lib/chemicalml/cml/role/annotation.rb +10 -0
  245. data/lib/chemicalml/cml/role/appinfo.rb +10 -0
  246. data/lib/chemicalml/cml/role/arg.rb +10 -0
  247. data/lib/chemicalml/cml/role/cml_module.rb +2 -3
  248. data/lib/chemicalml/cml/role/complex_object.rb +10 -0
  249. data/lib/chemicalml/cml/role/enumeration.rb +10 -0
  250. data/lib/chemicalml/cml/role/expression.rb +10 -0
  251. data/lib/chemicalml/cml/role/float.rb +10 -0
  252. data/lib/chemicalml/cml/role/float_array.rb +10 -0
  253. data/lib/chemicalml/cml/role/integer.rb +10 -0
  254. data/lib/chemicalml/cml/role/integer_array.rb +10 -0
  255. data/lib/chemicalml/cml/role/operator.rb +10 -0
  256. data/lib/chemicalml/cml/role/related_entry.rb +10 -0
  257. data/lib/chemicalml/cml/role/string.rb +10 -0
  258. data/lib/chemicalml/cml/role/string_array.rb +10 -0
  259. data/lib/chemicalml/cml/role/tcell.rb +10 -0
  260. data/lib/chemicalml/cml/role/trow.rb +10 -0
  261. data/lib/chemicalml/cml/role.rb +138 -121
  262. data/lib/chemicalml/cml/schema24/alternative.rb +14 -0
  263. data/lib/chemicalml/cml/schema24/annotation.rb +15 -0
  264. data/lib/chemicalml/cml/schema24/appinfo.rb +15 -0
  265. data/lib/chemicalml/cml/schema24/arg.rb +14 -0
  266. data/lib/chemicalml/cml/schema24/cml_module.rb +18 -0
  267. data/lib/chemicalml/cml/schema24/complex_object.rb +14 -0
  268. data/lib/chemicalml/cml/schema24/configuration.rb +15 -2
  269. data/lib/chemicalml/cml/schema24/enumeration.rb +16 -0
  270. data/lib/chemicalml/cml/schema24/expression.rb +14 -0
  271. data/lib/chemicalml/cml/schema24/float.rb +14 -0
  272. data/lib/chemicalml/cml/schema24/float_array.rb +14 -0
  273. data/lib/chemicalml/cml/schema24/integer.rb +14 -0
  274. data/lib/chemicalml/cml/schema24/integer_array.rb +14 -0
  275. data/lib/chemicalml/cml/schema24/operator.rb +14 -0
  276. data/lib/chemicalml/cml/schema24/related_entry.rb +14 -0
  277. data/lib/chemicalml/cml/schema24/string.rb +14 -0
  278. data/lib/chemicalml/cml/schema24/string_array.rb +14 -0
  279. data/lib/chemicalml/cml/schema24/tcell.rb +14 -0
  280. data/lib/chemicalml/cml/schema24/trow.rb +14 -0
  281. data/lib/chemicalml/cml/schema24.rb +154 -126
  282. data/lib/chemicalml/cml/schema3.rb +123 -123
  283. data/lib/chemicalml/cml/visitable.rb +77 -3
  284. data/lib/chemicalml/cml/wire_class_registry.rb +3 -3
  285. data/lib/chemicalml/cml.rb +164 -132
  286. data/lib/chemicalml/context_configuration.rb +12 -4
  287. data/lib/chemicalml/convention/base.rb +17 -3
  288. data/lib/chemicalml/convention/cascade/constraints/reaction_scheme_must_have_content.rb +33 -0
  289. data/lib/chemicalml/convention/cascade/constraints/reaction_step_list_must_contain_steps.rb +31 -0
  290. data/lib/chemicalml/convention/cascade/constraints/reaction_step_must_have_reaction_or_lists.rb +33 -0
  291. data/lib/chemicalml/convention/cascade/constraints/reactive_centre_atom_refs_should_be_present.rb +34 -0
  292. data/lib/chemicalml/convention/cascade/constraints.rb +18 -0
  293. data/lib/chemicalml/convention/cascade.rb +43 -0
  294. data/lib/chemicalml/convention/compchem/constraints/array_rules.rb +44 -0
  295. data/lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb +28 -0
  296. data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +5 -4
  297. data/lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb +26 -0
  298. data/lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb +28 -0
  299. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb +26 -0
  300. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb +26 -0
  301. data/lib/chemicalml/convention/compchem/constraints/finalization_must_have_content.rb +44 -0
  302. data/lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb +27 -0
  303. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb +26 -0
  304. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb +26 -0
  305. data/lib/chemicalml/convention/compchem/constraints/initialization_must_have_content.rb +54 -0
  306. data/lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb +28 -0
  307. data/lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb +25 -0
  308. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb +25 -0
  309. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb +25 -0
  310. data/lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb +25 -0
  311. data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +7 -9
  312. data/lib/chemicalml/convention/compchem/constraints/matrix_rules.rb +48 -0
  313. data/lib/chemicalml/convention/compchem/constraints/module_predicates.rb +50 -0
  314. data/lib/chemicalml/convention/compchem/constraints/scalar_units.rb +42 -0
  315. data/lib/chemicalml/convention/compchem/constraints.rb +40 -2
  316. data/lib/chemicalml/convention/compchem.rb +20 -2
  317. data/lib/chemicalml/convention/constraint.rb +68 -24
  318. data/lib/chemicalml/convention/coordinator.rb +90 -0
  319. data/lib/chemicalml/convention/detection.rb +39 -0
  320. data/lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb +29 -0
  321. data/lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb +32 -0
  322. data/lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb +33 -0
  323. data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +4 -4
  324. data/lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb +29 -0
  325. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +6 -6
  326. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb +31 -0
  327. data/lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb +44 -0
  328. data/lib/chemicalml/convention/dictionary/constraints.rb +14 -2
  329. data/lib/chemicalml/convention/dictionary.rb +8 -2
  330. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb +41 -0
  331. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +18 -9
  332. data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +6 -6
  333. data/lib/chemicalml/convention/molecular/constraints/atom_element_type_should_be_in_periodic_table.rb +39 -0
  334. data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +7 -6
  335. data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +3 -2
  336. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +4 -4
  337. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +5 -4
  338. data/lib/chemicalml/convention/molecular/constraints/atom_parity_atom_refs4_should_be_distinct.rb +44 -0
  339. data/lib/chemicalml/convention/molecular/constraints/atom_parity_should_include_parent_atom.rb +65 -0
  340. data/lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb +37 -0
  341. data/lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb +44 -0
  342. data/lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb +38 -0
  343. data/lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb +44 -0
  344. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +4 -4
  345. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +5 -4
  346. data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +4 -3
  347. data/lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb +34 -0
  348. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_be_in_enum.rb +39 -0
  349. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +3 -3
  350. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_atom_refs4_should_be_distinct.rb +43 -0
  351. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb +45 -0
  352. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb +33 -0
  353. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_should_be_in_enum.rb +38 -0
  354. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb +45 -0
  355. data/lib/chemicalml/convention/molecular/constraints/dict_ref_should_resolve.rb +59 -0
  356. data/lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb +33 -0
  357. data/lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb +32 -0
  358. data/lib/chemicalml/convention/molecular/constraints/molecule_chirality_should_be_in_enum.rb +38 -0
  359. data/lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb +35 -0
  360. data/lib/chemicalml/convention/molecular/constraints/molecule_id_should_match_pattern.rb +38 -0
  361. data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +4 -4
  362. data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +4 -4
  363. data/lib/chemicalml/convention/molecular/constraints/property_scalar_data_type_matches_dictionary.rb +58 -0
  364. data/lib/chemicalml/convention/molecular/constraints/references_should_resolve.rb +37 -0
  365. data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +4 -4
  366. data/lib/chemicalml/convention/molecular/constraints.rb +59 -13
  367. data/lib/chemicalml/convention/molecular.rb +25 -2
  368. data/lib/chemicalml/convention/registry.rb +95 -10
  369. data/lib/chemicalml/convention/simple_unit/constraints/root_must_be_unit_list.rb +24 -0
  370. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_power.rb +32 -0
  371. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_symbol.rb +31 -0
  372. data/lib/chemicalml/convention/simple_unit/constraints.rb +16 -0
  373. data/lib/chemicalml/convention/simple_unit.rb +37 -0
  374. data/lib/chemicalml/convention/spectroscopy/constraints/peak_list_must_contain_peaks.rb +31 -0
  375. data/lib/chemicalml/convention/spectroscopy/constraints/peak_should_have_values.rb +34 -0
  376. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_content.rb +31 -0
  377. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_convention.rb +32 -0
  378. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_format.rb +31 -0
  379. data/lib/chemicalml/convention/spectroscopy/constraints.rb +20 -0
  380. data/lib/chemicalml/convention/spectroscopy.rb +41 -0
  381. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb +29 -0
  382. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb +36 -0
  383. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb +28 -0
  384. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb +28 -0
  385. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb +34 -0
  386. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_parent_si.rb +32 -0
  387. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +4 -4
  388. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_title.rb +32 -0
  389. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_parent_si_should_resolve.rb +45 -0
  390. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_unit_type_should_resolve.rb +46 -0
  391. data/lib/chemicalml/convention/unit_dictionary/constraints.rb +19 -1
  392. data/lib/chemicalml/convention/unit_dictionary.rb +11 -2
  393. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb +31 -0
  394. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb +28 -0
  395. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb +35 -0
  396. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb +28 -0
  397. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +6 -6
  398. data/lib/chemicalml/convention/unit_type_dictionary/constraints.rb +9 -1
  399. data/lib/chemicalml/convention/unit_type_dictionary.rb +6 -2
  400. data/lib/chemicalml/convention/validation_report.rb +90 -0
  401. data/lib/chemicalml/convention/violation.rb +9 -3
  402. data/lib/chemicalml/convention.rb +49 -11
  403. data/lib/chemicalml/dictionary/entry.rb +6 -6
  404. data/lib/chemicalml/dictionary/enum.rb +1 -1
  405. data/lib/chemicalml/dictionary/link.rb +3 -3
  406. data/lib/chemicalml/dictionary/loader.rb +19 -19
  407. data/lib/chemicalml/dictionary/model.rb +5 -5
  408. data/lib/chemicalml/dictionary/registry.rb +9 -9
  409. data/lib/chemicalml/dictionary.rb +13 -9
  410. data/lib/chemicalml/logger.rb +47 -0
  411. data/lib/chemicalml/schema/definition.rb +2 -2
  412. data/lib/chemicalml/schema.rb +7 -7
  413. data/lib/chemicalml/version.rb +1 -1
  414. data/lib/chemicalml/versioned_parser.rb +28 -10
  415. data/lib/chemicalml.rb +79 -17
  416. data/lib/tasks/reference_fetch.rake +30 -31
  417. data/lib/tasks/scrape_fixtures.rake +23 -24
  418. metadata +235 -35
  419. data/lib/chemicalml/cml/child_mappings.rb +0 -168
  420. data/lib/chemicalml/cml/translator/value_translations.rb +0 -270
  421. data/lib/chemicalml/cml/translator.rb +0 -484
  422. data/lib/chemicalml/model/atom.rb +0 -64
  423. data/lib/chemicalml/model/atom_parity.rb +0 -21
  424. data/lib/chemicalml/model/bond.rb +0 -39
  425. data/lib/chemicalml/model/bond_stereo.rb +0 -29
  426. data/lib/chemicalml/model/cml_array.rb +0 -27
  427. data/lib/chemicalml/model/cml_module.rb +0 -45
  428. data/lib/chemicalml/model/document.rb +0 -29
  429. data/lib/chemicalml/model/formula.rb +0 -34
  430. data/lib/chemicalml/model/identifier.rb +0 -21
  431. data/lib/chemicalml/model/label.rb +0 -21
  432. data/lib/chemicalml/model/matrix.rb +0 -29
  433. data/lib/chemicalml/model/metadata.rb +0 -23
  434. data/lib/chemicalml/model/metadata_list.rb +0 -25
  435. data/lib/chemicalml/model/molecule.rb +0 -45
  436. data/lib/chemicalml/model/name.rb +0 -21
  437. data/lib/chemicalml/model/node.rb +0 -45
  438. data/lib/chemicalml/model/parameter.rb +0 -27
  439. data/lib/chemicalml/model/parameter_list.rb +0 -25
  440. data/lib/chemicalml/model/product.rb +0 -21
  441. data/lib/chemicalml/model/product_list.rb +0 -21
  442. data/lib/chemicalml/model/property.rb +0 -28
  443. data/lib/chemicalml/model/property_list.rb +0 -25
  444. data/lib/chemicalml/model/reactant.rb +0 -21
  445. data/lib/chemicalml/model/reactant_list.rb +0 -21
  446. data/lib/chemicalml/model/reaction.rb +0 -41
  447. data/lib/chemicalml/model/reaction_list.rb +0 -23
  448. data/lib/chemicalml/model/scalar.rb +0 -25
  449. data/lib/chemicalml/model/substance.rb +0 -25
  450. data/lib/chemicalml/model.rb +0 -40
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chemicalml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-07-14 00:00:00.000000000 Z
11
+ date: 2026-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
@@ -29,7 +29,8 @@ description: ChemML provides a lutaml-model-based Ruby object model for the Chem
29
29
  fidelity. Designed as a sibling model to other chemistry model layers (e.g. AsciiChem).
30
30
  email:
31
31
  - open.source@ribose.com
32
- executables: []
32
+ executables:
33
+ - chemicalml
33
34
  extensions: []
34
35
  extra_rdoc_files: []
35
36
  files:
@@ -83,6 +84,65 @@ files:
83
84
  - TODO.align/33-polymorphic-parse.md
84
85
  - TODO.align/34-polymorphic-specs.md
85
86
  - TODO.align/35-final-spec-lint.md
87
+ - TODO.align/36-molecular-convention-coverage.md
88
+ - TODO.align/37-compchem-convention-coverage.md
89
+ - TODO.align/38-dictionary-convention-coverage.md
90
+ - TODO.align/39-unit-dictionary-convention-coverage.md
91
+ - TODO.align/40-unit-type-dictionary-convention-coverage.md
92
+ - TODO.align/41-expand-canonical-model-layer.md
93
+ - TODO.align/42-translator-wire-new-models.md
94
+ - TODO.align/43-dictionary-model-no-to-h.md
95
+ - TODO.align/44-schema3-only-and-schema24-module.md
96
+ - TODO.align/45-documentation-and-final-verification.md
97
+ - TODO.align/46-lattice-vector-content.md
98
+ - TODO.align/47-molecule-crystal-spectra-property-lists.md
99
+ - TODO.align/48-model-list-and-module-lists.md
100
+ - TODO.align/49-more-chemistry-models.md
101
+ - TODO.align/50-validation-report.md
102
+ - TODO.align/51-convention-auto-detection.md
103
+ - TODO.align/52-schema24-legacy-elements.md
104
+ - TODO.align/53-round-trip-integration-specs.md
105
+ - TODO.align/54-document-versioned-parser-shim.md
106
+ - TODO.align/55-molecule-missing-attributes.md
107
+ - TODO.align/56-geometry-models.md
108
+ - TODO.align/57-compchem-models.md
109
+ - TODO.align/58-remaining-models.md
110
+ - TODO.align/59-wire-new-models-translator.md
111
+ - TODO.align/60-docs-and-final-verification.md
112
+ - TODO.align/61-parallel-array-attrs.md
113
+ - TODO.align/62-per-element-attribute-gaps.md
114
+ - TODO.align/63-universal-children-mixin.md
115
+ - TODO.align/64-per-element-child-gaps.md
116
+ - TODO.align/65-simple-unit-convention.md
117
+ - TODO.align/66-schema24-legacy-children.md
118
+ - TODO.align/67-final-verification.md
119
+ - TODO.align/68-detection-coverage.md
120
+ - TODO.align/69-json-yaml-roundtrip.md
121
+ - TODO.align/70-iterative-walker.md
122
+ - TODO.align/71-violation-value.md
123
+ - TODO.align/72-close-child-gaps.md
124
+ - TODO.align/73-schema24-parse-limitation.md
125
+ - TODO.align/74-final-verification-round18.md
126
+ - TODO.align/75-key-value-mappings.md
127
+ - TODO.align/76-schema24-workaround.md
128
+ - TODO.align/77-convention-coverage-matrix.md
129
+ - TODO.align/78-fixture-audit.md
130
+ - TODO.align/79-final-verification-round19.md
131
+ - TODO.align/80-xsd-enum-constants.md
132
+ - TODO.align/81-enum-validation-constraints.md
133
+ - TODO.align/82-reference-resolver.md
134
+ - TODO.align/83-toml-roundtrip.md
135
+ - TODO.align/84-final-verification-round21.md
136
+ - TODO.align/85-bond-distinct-atoms.md
137
+ - TODO.align/86-references-should-resolve.md
138
+ - TODO.align/87-cli-utility.md
139
+ - TODO.align/88-diverse-fixtures.md
140
+ - TODO.align/89-final-verification-round22.md
141
+ - TODO.align/90-bond-stereo-completeness.md
142
+ - TODO.align/91-atomparity-distinct.md
143
+ - TODO.align/92-unit-dictionary-completeness.md
144
+ - TODO.align/93-yard-docs.md
145
+ - TODO.align/94-final-verification-round23.md
86
146
  - TODO.align/README.md
87
147
  - TODO.align/README.round10.md
88
148
  - TODO.align/README.round11.md
@@ -91,8 +151,26 @@ files:
91
151
  - TODO.align/README.round14.md
92
152
  - TODO.align/README.round15.md
93
153
  - TODO.align/README.round16.md
154
+ - TODO.align/README.round17.md
155
+ - TODO.align/README.round18.md
156
+ - TODO.align/README.round19.md
94
157
  - TODO.align/README.round2.md
158
+ - TODO.align/README.round20.md
159
+ - TODO.align/README.round21.md
160
+ - TODO.align/README.round22.md
161
+ - TODO.align/README.round23.md
162
+ - TODO.align/README.round24.md
163
+ - TODO.align/README.round25.md
164
+ - TODO.align/README.round26.md
165
+ - TODO.align/README.round27.md
166
+ - TODO.align/README.round28.md
167
+ - TODO.align/README.round29.md
95
168
  - TODO.align/README.round3.md
169
+ - TODO.align/README.round30.md
170
+ - TODO.align/README.round31.md
171
+ - TODO.align/README.round32.md
172
+ - TODO.align/README.round33.md
173
+ - TODO.align/README.round34.md
96
174
  - TODO.align/README.round4.md
97
175
  - TODO.align/README.round5.md
98
176
  - TODO.align/README.round6.md
@@ -119,16 +197,34 @@ files:
119
197
  - data/dictionaries/unit_non_si.yaml
120
198
  - data/dictionaries/unit_si.yaml
121
199
  - data/dictionaries/unit_type.yaml
200
+ - docs/constraints.md
201
+ - docs/generate_constraint_docs.rb
202
+ - exe/chemicalml
122
203
  - lib/chemicalml.rb
204
+ - lib/chemicalml/cli.rb
205
+ - lib/chemicalml/cli/base.rb
206
+ - lib/chemicalml/cli/command.rb
207
+ - lib/chemicalml/cli/constraints_command.rb
208
+ - lib/chemicalml/cli/conventions_command.rb
209
+ - lib/chemicalml/cli/dictionaries_command.rb
210
+ - lib/chemicalml/cli/elements_command.rb
211
+ - lib/chemicalml/cli/enums_command.rb
212
+ - lib/chemicalml/cli/info_command.rb
213
+ - lib/chemicalml/cli/inspect_command.rb
214
+ - lib/chemicalml/cli/validate_command.rb
123
215
  - lib/chemicalml/cml.rb
124
216
  - lib/chemicalml/cml/aliases.rb
125
217
  - lib/chemicalml/cml/base.rb
126
218
  - lib/chemicalml/cml/base/abundance.rb
127
219
  - lib/chemicalml/cml/base/action.rb
128
220
  - lib/chemicalml/cml/base/action_list.rb
221
+ - lib/chemicalml/cml/base/alternative.rb
129
222
  - lib/chemicalml/cml/base/amount.rb
130
223
  - lib/chemicalml/cml/base/angle.rb
224
+ - lib/chemicalml/cml/base/annotation.rb
131
225
  - lib/chemicalml/cml/base/any_cml.rb
226
+ - lib/chemicalml/cml/base/appinfo.rb
227
+ - lib/chemicalml/cml/base/arg.rb
132
228
  - lib/chemicalml/cml/base/array.rb
133
229
  - lib/chemicalml/cml/base/array_list.rb
134
230
  - lib/chemicalml/cml/base/atom.rb
@@ -149,6 +245,8 @@ files:
149
245
  - lib/chemicalml/cml/base/bond_type_list.rb
150
246
  - lib/chemicalml/cml/base/cell_parameter.rb
151
247
  - lib/chemicalml/cml/base/cml_module.rb
248
+ - lib/chemicalml/cml/base/common_children.rb
249
+ - lib/chemicalml/cml/base/complex_object.rb
152
250
  - lib/chemicalml/cml/base/condition_list.rb
153
251
  - lib/chemicalml/cml/base/crystal.rb
154
252
  - lib/chemicalml/cml/base/definition.rb
@@ -160,11 +258,17 @@ files:
160
258
  - lib/chemicalml/cml/base/documentation.rb
161
259
  - lib/chemicalml/cml/base/eigen.rb
162
260
  - lib/chemicalml/cml/base/electron.rb
261
+ - lib/chemicalml/cml/base/enumeration.rb
262
+ - lib/chemicalml/cml/base/expression.rb
263
+ - lib/chemicalml/cml/base/float.rb
264
+ - lib/chemicalml/cml/base/float_array.rb
163
265
  - lib/chemicalml/cml/base/formula.rb
164
266
  - lib/chemicalml/cml/base/fragment.rb
165
267
  - lib/chemicalml/cml/base/fragment_list.rb
166
268
  - lib/chemicalml/cml/base/gradient.rb
167
269
  - lib/chemicalml/cml/base/identifier.rb
270
+ - lib/chemicalml/cml/base/integer.rb
271
+ - lib/chemicalml/cml/base/integer_array.rb
168
272
  - lib/chemicalml/cml/base/isotope.rb
169
273
  - lib/chemicalml/cml/base/isotope_list.rb
170
274
  - lib/chemicalml/cml/base/join.rb
@@ -188,6 +292,7 @@ files:
188
292
  - lib/chemicalml/cml/base/name.rb
189
293
  - lib/chemicalml/cml/base/object.rb
190
294
  - lib/chemicalml/cml/base/observation.rb
295
+ - lib/chemicalml/cml/base/operator.rb
191
296
  - lib/chemicalml/cml/base/parameter.rb
192
297
  - lib/chemicalml/cml/base/parameter_list.rb
193
298
  - lib/chemicalml/cml/base/particle.rb
@@ -213,6 +318,7 @@ files:
213
318
  - lib/chemicalml/cml/base/reaction_step_list.rb
214
319
  - lib/chemicalml/cml/base/reactive_centre.rb
215
320
  - lib/chemicalml/cml/base/region.rb
321
+ - lib/chemicalml/cml/base/related_entry.rb
216
322
  - lib/chemicalml/cml/base/sample.rb
217
323
  - lib/chemicalml/cml/base/scalar.rb
218
324
  - lib/chemicalml/cml/base/spectator.rb
@@ -222,6 +328,8 @@ files:
222
328
  - lib/chemicalml/cml/base/spectrum_list.rb
223
329
  - lib/chemicalml/cml/base/sphere3.rb
224
330
  - lib/chemicalml/cml/base/stmml.rb
331
+ - lib/chemicalml/cml/base/string.rb
332
+ - lib/chemicalml/cml/base/string_array.rb
225
333
  - lib/chemicalml/cml/base/substance.rb
226
334
  - lib/chemicalml/cml/base/substance_list.rb
227
335
  - lib/chemicalml/cml/base/symmetry.rb
@@ -233,9 +341,11 @@ files:
233
341
  - lib/chemicalml/cml/base/table_header_cell.rb
234
342
  - lib/chemicalml/cml/base/table_row.rb
235
343
  - lib/chemicalml/cml/base/table_row_list.rb
344
+ - lib/chemicalml/cml/base/tcell.rb
236
345
  - lib/chemicalml/cml/base/torsion.rb
237
346
  - lib/chemicalml/cml/base/transform3.rb
238
347
  - lib/chemicalml/cml/base/transition_state.rb
348
+ - lib/chemicalml/cml/base/trow.rb
239
349
  - lib/chemicalml/cml/base/unit.rb
240
350
  - lib/chemicalml/cml/base/unit_list.rb
241
351
  - lib/chemicalml/cml/base/unit_type.rb
@@ -244,16 +354,23 @@ files:
244
354
  - lib/chemicalml/cml/base/xaxis.rb
245
355
  - lib/chemicalml/cml/base/yaxis.rb
246
356
  - lib/chemicalml/cml/base/z_matrix.rb
247
- - lib/chemicalml/cml/child_mappings.rb
357
+ - lib/chemicalml/cml/canonical_comparison.rb
248
358
  - lib/chemicalml/cml/elements.rb
359
+ - lib/chemicalml/cml/enums.rb
249
360
  - lib/chemicalml/cml/namespace.rb
361
+ - lib/chemicalml/cml/patterns.rb
362
+ - lib/chemicalml/cml/reference_resolver.rb
250
363
  - lib/chemicalml/cml/role.rb
251
364
  - lib/chemicalml/cml/role/abundance.rb
252
365
  - lib/chemicalml/cml/role/action.rb
253
366
  - lib/chemicalml/cml/role/action_list.rb
367
+ - lib/chemicalml/cml/role/alternative.rb
254
368
  - lib/chemicalml/cml/role/amount.rb
255
369
  - lib/chemicalml/cml/role/angle.rb
370
+ - lib/chemicalml/cml/role/annotation.rb
256
371
  - lib/chemicalml/cml/role/any_cml.rb
372
+ - lib/chemicalml/cml/role/appinfo.rb
373
+ - lib/chemicalml/cml/role/arg.rb
257
374
  - lib/chemicalml/cml/role/array.rb
258
375
  - lib/chemicalml/cml/role/array_list.rb
259
376
  - lib/chemicalml/cml/role/atom.rb
@@ -274,6 +391,7 @@ files:
274
391
  - lib/chemicalml/cml/role/bond_type_list.rb
275
392
  - lib/chemicalml/cml/role/cell_parameter.rb
276
393
  - lib/chemicalml/cml/role/cml_module.rb
394
+ - lib/chemicalml/cml/role/complex_object.rb
277
395
  - lib/chemicalml/cml/role/condition_list.rb
278
396
  - lib/chemicalml/cml/role/crystal.rb
279
397
  - lib/chemicalml/cml/role/definition.rb
@@ -285,11 +403,17 @@ files:
285
403
  - lib/chemicalml/cml/role/documentation.rb
286
404
  - lib/chemicalml/cml/role/eigen.rb
287
405
  - lib/chemicalml/cml/role/electron.rb
406
+ - lib/chemicalml/cml/role/enumeration.rb
407
+ - lib/chemicalml/cml/role/expression.rb
408
+ - lib/chemicalml/cml/role/float.rb
409
+ - lib/chemicalml/cml/role/float_array.rb
288
410
  - lib/chemicalml/cml/role/formula.rb
289
411
  - lib/chemicalml/cml/role/fragment.rb
290
412
  - lib/chemicalml/cml/role/fragment_list.rb
291
413
  - lib/chemicalml/cml/role/gradient.rb
292
414
  - lib/chemicalml/cml/role/identifier.rb
415
+ - lib/chemicalml/cml/role/integer.rb
416
+ - lib/chemicalml/cml/role/integer_array.rb
293
417
  - lib/chemicalml/cml/role/isotope.rb
294
418
  - lib/chemicalml/cml/role/isotope_list.rb
295
419
  - lib/chemicalml/cml/role/join.rb
@@ -313,6 +437,7 @@ files:
313
437
  - lib/chemicalml/cml/role/name.rb
314
438
  - lib/chemicalml/cml/role/object.rb
315
439
  - lib/chemicalml/cml/role/observation.rb
440
+ - lib/chemicalml/cml/role/operator.rb
316
441
  - lib/chemicalml/cml/role/parameter.rb
317
442
  - lib/chemicalml/cml/role/parameter_list.rb
318
443
  - lib/chemicalml/cml/role/particle.rb
@@ -338,6 +463,7 @@ files:
338
463
  - lib/chemicalml/cml/role/reaction_step_list.rb
339
464
  - lib/chemicalml/cml/role/reactive_centre.rb
340
465
  - lib/chemicalml/cml/role/region.rb
466
+ - lib/chemicalml/cml/role/related_entry.rb
341
467
  - lib/chemicalml/cml/role/sample.rb
342
468
  - lib/chemicalml/cml/role/scalar.rb
343
469
  - lib/chemicalml/cml/role/spectator.rb
@@ -347,6 +473,8 @@ files:
347
473
  - lib/chemicalml/cml/role/spectrum_list.rb
348
474
  - lib/chemicalml/cml/role/sphere3.rb
349
475
  - lib/chemicalml/cml/role/stmml.rb
476
+ - lib/chemicalml/cml/role/string.rb
477
+ - lib/chemicalml/cml/role/string_array.rb
350
478
  - lib/chemicalml/cml/role/substance.rb
351
479
  - lib/chemicalml/cml/role/substance_list.rb
352
480
  - lib/chemicalml/cml/role/symmetry.rb
@@ -358,9 +486,11 @@ files:
358
486
  - lib/chemicalml/cml/role/table_header_cell.rb
359
487
  - lib/chemicalml/cml/role/table_row.rb
360
488
  - lib/chemicalml/cml/role/table_row_list.rb
489
+ - lib/chemicalml/cml/role/tcell.rb
361
490
  - lib/chemicalml/cml/role/torsion.rb
362
491
  - lib/chemicalml/cml/role/transform3.rb
363
492
  - lib/chemicalml/cml/role/transition_state.rb
493
+ - lib/chemicalml/cml/role/trow.rb
364
494
  - lib/chemicalml/cml/role/unit.rb
365
495
  - lib/chemicalml/cml/role/unit_list.rb
366
496
  - lib/chemicalml/cml/role/unit_type.rb
@@ -373,9 +503,13 @@ files:
373
503
  - lib/chemicalml/cml/schema24/abundance.rb
374
504
  - lib/chemicalml/cml/schema24/action.rb
375
505
  - lib/chemicalml/cml/schema24/action_list.rb
506
+ - lib/chemicalml/cml/schema24/alternative.rb
376
507
  - lib/chemicalml/cml/schema24/amount.rb
377
508
  - lib/chemicalml/cml/schema24/angle.rb
509
+ - lib/chemicalml/cml/schema24/annotation.rb
378
510
  - lib/chemicalml/cml/schema24/any_cml.rb
511
+ - lib/chemicalml/cml/schema24/appinfo.rb
512
+ - lib/chemicalml/cml/schema24/arg.rb
379
513
  - lib/chemicalml/cml/schema24/array.rb
380
514
  - lib/chemicalml/cml/schema24/array_list.rb
381
515
  - lib/chemicalml/cml/schema24/atom.rb
@@ -395,6 +529,8 @@ files:
395
529
  - lib/chemicalml/cml/schema24/bond_type.rb
396
530
  - lib/chemicalml/cml/schema24/bond_type_list.rb
397
531
  - lib/chemicalml/cml/schema24/cell_parameter.rb
532
+ - lib/chemicalml/cml/schema24/cml_module.rb
533
+ - lib/chemicalml/cml/schema24/complex_object.rb
398
534
  - lib/chemicalml/cml/schema24/condition_list.rb
399
535
  - lib/chemicalml/cml/schema24/configuration.rb
400
536
  - lib/chemicalml/cml/schema24/context.rb
@@ -408,11 +544,17 @@ files:
408
544
  - lib/chemicalml/cml/schema24/documentation.rb
409
545
  - lib/chemicalml/cml/schema24/eigen.rb
410
546
  - lib/chemicalml/cml/schema24/electron.rb
547
+ - lib/chemicalml/cml/schema24/enumeration.rb
548
+ - lib/chemicalml/cml/schema24/expression.rb
549
+ - lib/chemicalml/cml/schema24/float.rb
550
+ - lib/chemicalml/cml/schema24/float_array.rb
411
551
  - lib/chemicalml/cml/schema24/formula.rb
412
552
  - lib/chemicalml/cml/schema24/fragment.rb
413
553
  - lib/chemicalml/cml/schema24/fragment_list.rb
414
554
  - lib/chemicalml/cml/schema24/gradient.rb
415
555
  - lib/chemicalml/cml/schema24/identifier.rb
556
+ - lib/chemicalml/cml/schema24/integer.rb
557
+ - lib/chemicalml/cml/schema24/integer_array.rb
416
558
  - lib/chemicalml/cml/schema24/isotope.rb
417
559
  - lib/chemicalml/cml/schema24/isotope_list.rb
418
560
  - lib/chemicalml/cml/schema24/join.rb
@@ -436,6 +578,7 @@ files:
436
578
  - lib/chemicalml/cml/schema24/name.rb
437
579
  - lib/chemicalml/cml/schema24/object.rb
438
580
  - lib/chemicalml/cml/schema24/observation.rb
581
+ - lib/chemicalml/cml/schema24/operator.rb
439
582
  - lib/chemicalml/cml/schema24/parameter.rb
440
583
  - lib/chemicalml/cml/schema24/parameter_list.rb
441
584
  - lib/chemicalml/cml/schema24/particle.rb
@@ -461,6 +604,7 @@ files:
461
604
  - lib/chemicalml/cml/schema24/reaction_step_list.rb
462
605
  - lib/chemicalml/cml/schema24/reactive_centre.rb
463
606
  - lib/chemicalml/cml/schema24/region.rb
607
+ - lib/chemicalml/cml/schema24/related_entry.rb
464
608
  - lib/chemicalml/cml/schema24/sample.rb
465
609
  - lib/chemicalml/cml/schema24/scalar.rb
466
610
  - lib/chemicalml/cml/schema24/spectator.rb
@@ -470,6 +614,8 @@ files:
470
614
  - lib/chemicalml/cml/schema24/spectrum_list.rb
471
615
  - lib/chemicalml/cml/schema24/sphere3.rb
472
616
  - lib/chemicalml/cml/schema24/stmml.rb
617
+ - lib/chemicalml/cml/schema24/string.rb
618
+ - lib/chemicalml/cml/schema24/string_array.rb
473
619
  - lib/chemicalml/cml/schema24/substance.rb
474
620
  - lib/chemicalml/cml/schema24/substance_list.rb
475
621
  - lib/chemicalml/cml/schema24/symmetry.rb
@@ -481,9 +627,11 @@ files:
481
627
  - lib/chemicalml/cml/schema24/table_header_cell.rb
482
628
  - lib/chemicalml/cml/schema24/table_row.rb
483
629
  - lib/chemicalml/cml/schema24/table_row_list.rb
630
+ - lib/chemicalml/cml/schema24/tcell.rb
484
631
  - lib/chemicalml/cml/schema24/torsion.rb
485
632
  - lib/chemicalml/cml/schema24/transform3.rb
486
633
  - lib/chemicalml/cml/schema24/transition_state.rb
634
+ - lib/chemicalml/cml/schema24/trow.rb
487
635
  - lib/chemicalml/cml/schema24/unit.rb
488
636
  - lib/chemicalml/cml/schema24/unit_list.rb
489
637
  - lib/chemicalml/cml/schema24/unit_type.rb
@@ -616,44 +764,124 @@ files:
616
764
  - lib/chemicalml/cml/schema3/xaxis.rb
617
765
  - lib/chemicalml/cml/schema3/yaxis.rb
618
766
  - lib/chemicalml/cml/schema3/z_matrix.rb
619
- - lib/chemicalml/cml/translator.rb
620
- - lib/chemicalml/cml/translator/value_translations.rb
621
767
  - lib/chemicalml/cml/visitable.rb
622
768
  - lib/chemicalml/cml/wire_class_registry.rb
623
769
  - lib/chemicalml/context_configuration.rb
624
770
  - lib/chemicalml/convention.rb
625
771
  - lib/chemicalml/convention/base.rb
772
+ - lib/chemicalml/convention/cascade.rb
773
+ - lib/chemicalml/convention/cascade/constraints.rb
774
+ - lib/chemicalml/convention/cascade/constraints/reaction_scheme_must_have_content.rb
775
+ - lib/chemicalml/convention/cascade/constraints/reaction_step_list_must_contain_steps.rb
776
+ - lib/chemicalml/convention/cascade/constraints/reaction_step_must_have_reaction_or_lists.rb
777
+ - lib/chemicalml/convention/cascade/constraints/reactive_centre_atom_refs_should_be_present.rb
626
778
  - lib/chemicalml/convention/compchem.rb
627
779
  - lib/chemicalml/convention/compchem/constraints.rb
780
+ - lib/chemicalml/convention/compchem/constraints/array_rules.rb
781
+ - lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb
628
782
  - lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb
783
+ - lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb
784
+ - lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb
785
+ - lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb
786
+ - lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb
787
+ - lib/chemicalml/convention/compchem/constraints/finalization_must_have_content.rb
788
+ - lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb
789
+ - lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb
790
+ - lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb
791
+ - lib/chemicalml/convention/compchem/constraints/initialization_must_have_content.rb
792
+ - lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb
793
+ - lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb
794
+ - lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb
795
+ - lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb
796
+ - lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb
629
797
  - lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb
798
+ - lib/chemicalml/convention/compchem/constraints/matrix_rules.rb
799
+ - lib/chemicalml/convention/compchem/constraints/module_predicates.rb
800
+ - lib/chemicalml/convention/compchem/constraints/scalar_units.rb
630
801
  - lib/chemicalml/convention/constraint.rb
802
+ - lib/chemicalml/convention/coordinator.rb
803
+ - lib/chemicalml/convention/detection.rb
631
804
  - lib/chemicalml/convention/dictionary.rb
632
805
  - lib/chemicalml/convention/dictionary/constraints.rb
806
+ - lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb
807
+ - lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb
808
+ - lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb
633
809
  - lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb
810
+ - lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb
634
811
  - lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb
812
+ - lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb
813
+ - lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb
635
814
  - lib/chemicalml/convention/molecular.rb
636
815
  - lib/chemicalml/convention/molecular/constraints.rb
816
+ - lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb
637
817
  - lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb
638
818
  - lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb
819
+ - lib/chemicalml/convention/molecular/constraints/atom_element_type_should_be_in_periodic_table.rb
639
820
  - lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb
640
821
  - lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb
641
822
  - lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb
642
823
  - lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb
824
+ - lib/chemicalml/convention/molecular/constraints/atom_parity_atom_refs4_should_be_distinct.rb
825
+ - lib/chemicalml/convention/molecular/constraints/atom_parity_should_include_parent_atom.rb
826
+ - lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb
827
+ - lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb
828
+ - lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb
829
+ - lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb
643
830
  - lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb
644
831
  - lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb
645
832
  - lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb
833
+ - lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb
834
+ - lib/chemicalml/convention/molecular/constraints/bond_order_should_be_in_enum.rb
646
835
  - lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb
836
+ - lib/chemicalml/convention/molecular/constraints/bond_stereo_atom_refs4_should_be_distinct.rb
837
+ - lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb
838
+ - lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb
839
+ - lib/chemicalml/convention/molecular/constraints/bond_stereo_should_be_in_enum.rb
840
+ - lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb
841
+ - lib/chemicalml/convention/molecular/constraints/dict_ref_should_resolve.rb
842
+ - lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb
843
+ - lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb
844
+ - lib/chemicalml/convention/molecular/constraints/molecule_chirality_should_be_in_enum.rb
845
+ - lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb
846
+ - lib/chemicalml/convention/molecular/constraints/molecule_id_should_match_pattern.rb
647
847
  - lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb
648
848
  - lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb
849
+ - lib/chemicalml/convention/molecular/constraints/property_scalar_data_type_matches_dictionary.rb
850
+ - lib/chemicalml/convention/molecular/constraints/references_should_resolve.rb
649
851
  - lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb
650
852
  - lib/chemicalml/convention/registry.rb
853
+ - lib/chemicalml/convention/simple_unit.rb
854
+ - lib/chemicalml/convention/simple_unit/constraints.rb
855
+ - lib/chemicalml/convention/simple_unit/constraints/root_must_be_unit_list.rb
856
+ - lib/chemicalml/convention/simple_unit/constraints/unit_must_have_power.rb
857
+ - lib/chemicalml/convention/simple_unit/constraints/unit_must_have_symbol.rb
858
+ - lib/chemicalml/convention/spectroscopy.rb
859
+ - lib/chemicalml/convention/spectroscopy/constraints.rb
860
+ - lib/chemicalml/convention/spectroscopy/constraints/peak_list_must_contain_peaks.rb
861
+ - lib/chemicalml/convention/spectroscopy/constraints/peak_should_have_values.rb
862
+ - lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_content.rb
863
+ - lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_convention.rb
864
+ - lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_format.rb
651
865
  - lib/chemicalml/convention/unit_dictionary.rb
652
866
  - lib/chemicalml/convention/unit_dictionary/constraints.rb
867
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb
868
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb
869
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb
870
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb
871
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb
872
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_parent_si.rb
653
873
  - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb
874
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_title.rb
875
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_parent_si_should_resolve.rb
876
+ - lib/chemicalml/convention/unit_dictionary/constraints/unit_unit_type_should_resolve.rb
654
877
  - lib/chemicalml/convention/unit_type_dictionary.rb
655
878
  - lib/chemicalml/convention/unit_type_dictionary/constraints.rb
879
+ - lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb
880
+ - lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb
881
+ - lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb
882
+ - lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb
656
883
  - lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb
884
+ - lib/chemicalml/convention/validation_report.rb
657
885
  - lib/chemicalml/convention/violation.rb
658
886
  - lib/chemicalml/dictionary.rb
659
887
  - lib/chemicalml/dictionary/entry.rb
@@ -663,35 +891,7 @@ files:
663
891
  - lib/chemicalml/dictionary/model.rb
664
892
  - lib/chemicalml/dictionary/registry.rb
665
893
  - lib/chemicalml/errors.rb
666
- - lib/chemicalml/model.rb
667
- - lib/chemicalml/model/atom.rb
668
- - lib/chemicalml/model/atom_parity.rb
669
- - lib/chemicalml/model/bond.rb
670
- - lib/chemicalml/model/bond_stereo.rb
671
- - lib/chemicalml/model/cml_array.rb
672
- - lib/chemicalml/model/cml_module.rb
673
- - lib/chemicalml/model/document.rb
674
- - lib/chemicalml/model/formula.rb
675
- - lib/chemicalml/model/identifier.rb
676
- - lib/chemicalml/model/label.rb
677
- - lib/chemicalml/model/matrix.rb
678
- - lib/chemicalml/model/metadata.rb
679
- - lib/chemicalml/model/metadata_list.rb
680
- - lib/chemicalml/model/molecule.rb
681
- - lib/chemicalml/model/name.rb
682
- - lib/chemicalml/model/node.rb
683
- - lib/chemicalml/model/parameter.rb
684
- - lib/chemicalml/model/parameter_list.rb
685
- - lib/chemicalml/model/product.rb
686
- - lib/chemicalml/model/product_list.rb
687
- - lib/chemicalml/model/property.rb
688
- - lib/chemicalml/model/property_list.rb
689
- - lib/chemicalml/model/reactant.rb
690
- - lib/chemicalml/model/reactant_list.rb
691
- - lib/chemicalml/model/reaction.rb
692
- - lib/chemicalml/model/reaction_list.rb
693
- - lib/chemicalml/model/scalar.rb
694
- - lib/chemicalml/model/substance.rb
894
+ - lib/chemicalml/logger.rb
695
895
  - lib/chemicalml/schema.rb
696
896
  - lib/chemicalml/schema/definition.rb
697
897
  - lib/chemicalml/schema/registry.rb