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
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Array
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,17 +17,59 @@ module Chemicalml
16
17
  attribute :delimiter, :string
17
18
  attribute :content, :string
18
19
 
20
+ attribute :convention, :string
21
+ attribute :error_value_array, :string
22
+ attribute :error_basis, :string
23
+ attribute :min_value_array, :string
24
+ attribute :max_value_array, :string
25
+ attribute :start, :string
26
+ attribute :end, :string
27
+ attribute :ref, :string
28
+ attribute :constant_to_s_i, :string
29
+ attribute :multiplier_to_s_i, :string
30
+ attribute :unit_type, :string
19
31
  xml do
20
32
  namespace Chemicalml::Cml::Namespace
21
- root "array"
22
- map_attribute "id", to: :id
23
- map_attribute "title", to: :title
24
- map_attribute "dictRef", to: :dict_ref
25
- map_attribute "dataType", to: :data_type
26
- map_attribute "units", to: :units
27
- map_attribute "size", to: :size
28
- map_attribute "delimiter", to: :delimiter
33
+ root 'array'
34
+ map_attribute 'id', to: :id
35
+ map_attribute 'title', to: :title
36
+ map_attribute 'dictRef', to: :dict_ref
37
+ map_attribute 'dataType', to: :data_type
38
+ map_attribute 'units', to: :units
39
+ map_attribute 'size', to: :size
40
+ map_attribute 'delimiter', to: :delimiter
29
41
  map_content to: :content
42
+ map_attribute 'convention', to: :convention
43
+ map_attribute 'errorValueArray', to: :error_value_array
44
+ map_attribute 'errorBasis', to: :error_basis
45
+ map_attribute 'minValueArray', to: :min_value_array
46
+ map_attribute 'maxValueArray', to: :max_value_array
47
+ map_attribute 'start', to: :start
48
+ map_attribute 'end', to: :end
49
+ map_attribute 'ref', to: :ref
50
+ map_attribute 'constantToSI', to: :constant_to_s_i
51
+ map_attribute 'multiplierToSI', to: :multiplier_to_s_i
52
+ map_attribute 'unitType', to: :unit_type
53
+ end
54
+ key_value do
55
+ map 'id', to: :id
56
+ map 'title', to: :title
57
+ map 'dictRef', to: :dict_ref
58
+ map 'dataType', to: :data_type
59
+ map 'units', to: :units
60
+ map 'size', to: :size
61
+ map 'delimiter', to: :delimiter
62
+ map 'convention', to: :convention
63
+ map 'errorValueArray', to: :error_value_array
64
+ map 'errorBasis', to: :error_basis
65
+ map 'minValueArray', to: :min_value_array
66
+ map 'maxValueArray', to: :max_value_array
67
+ map 'start', to: :start
68
+ map 'end', to: :end
69
+ map 'ref', to: :ref
70
+ map 'constantToSI', to: :constant_to_s_i
71
+ map 'multiplierToSI', to: :multiplier_to_s_i
72
+ map 'unitType', to: :unit_type
30
73
  end
31
74
  end
32
75
  end
@@ -7,18 +7,28 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ArrayList
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
13
14
  attribute :convention, :string
14
15
 
16
+ attribute :shape, :string
15
17
  xml do
16
18
  namespace Chemicalml::Cml::Namespace
17
- root "arrayList"
18
- map_attribute "id", to: :id
19
- map_attribute "title", to: :title
20
- map_attribute "dictRef", to: :dict_ref
21
- map_attribute "convention", to: :convention
19
+ root 'arrayList'
20
+ map_attribute 'id', to: :id
21
+ map_attribute 'title', to: :title
22
+ map_attribute 'dictRef', to: :dict_ref
23
+ map_attribute 'convention', to: :convention
24
+ map_attribute 'shape', to: :shape
25
+ end
26
+ key_value do
27
+ map 'id', to: :id
28
+ map 'title', to: :title
29
+ map 'dictRef', to: :dict_ref
30
+ map 'convention', to: :convention
31
+ map 'shape', to: :shape
22
32
  end
23
33
  end
24
34
  end
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Atom
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :element_type, :string
12
14
  attribute :count, :string
@@ -25,28 +27,100 @@ module Chemicalml
25
27
  attribute :yFract, :string
26
28
  attribute :zFract, :string
27
29
  attribute :atom_parity, :atomParity
30
+ attribute :atom_type, :atomType
31
+ attribute :electrons, :electron, collection: true
32
+ attribute :particles, :particle, collection: true
33
+ attribute :arrays, :array, collection: true
34
+ attribute :matrices, :matrix, collection: true
35
+ attribute :scalars, :scalar, collection: true
36
+ attribute :vectors3, :vector3, collection: true
28
37
 
38
+ attribute :convention, :string
39
+ attribute :dict_ref, :string
40
+ attribute :ref, :string
41
+ attribute :isotope_ref, :string
42
+ attribute :isotope_list_ref, :string
43
+ attribute :occupancy, :string
44
+ attribute :role, :string
45
+ attribute :space_group_multiplicity, :string
46
+ attribute :point_group_multiplicity, :string
29
47
  xml do
30
48
  namespace Chemicalml::Cml::Namespace
31
- root "atom"
32
- map_attribute "id", to: :id
33
- map_attribute "elementType", to: :element_type
34
- map_attribute "count", to: :count
35
- map_attribute "formalCharge", to: :formal_charge
36
- map_attribute "hydrogenCount", to: :hydrogen_count
37
- map_attribute "isotope", to: :isotope
38
- map_attribute "isotopeNumber", to: :isotope_number
39
- map_attribute "spinMultiplicity", to: :spin_multiplicity
40
- map_attribute "title", to: :title
41
- map_attribute "x2", to: :x2
42
- map_attribute "y2", to: :y2
43
- map_attribute "x3", to: :x3
44
- map_attribute "y3", to: :y3
45
- map_attribute "z3", to: :z3
46
- map_attribute "xFract", to: :xFract
47
- map_attribute "yFract", to: :yFract
48
- map_attribute "zFract", to: :zFract
49
- map_element "atomParity", to: :atom_parity
49
+ root 'atom'
50
+ map_attribute 'id', to: :id
51
+ map_attribute 'elementType', to: :element_type
52
+ map_attribute 'count', to: :count
53
+ map_attribute 'formalCharge', to: :formal_charge
54
+ map_attribute 'hydrogenCount', to: :hydrogen_count
55
+ map_attribute 'isotope', to: :isotope
56
+ map_attribute 'isotopeNumber', to: :isotope_number
57
+ map_attribute 'spinMultiplicity', to: :spin_multiplicity
58
+ map_attribute 'title', to: :title
59
+ map_attribute 'x2', to: :x2
60
+ map_attribute 'y2', to: :y2
61
+ map_attribute 'x3', to: :x3
62
+ map_attribute 'y3', to: :y3
63
+ map_attribute 'z3', to: :z3
64
+ map_attribute 'xFract', to: :xFract
65
+ map_attribute 'yFract', to: :yFract
66
+ map_attribute 'zFract', to: :zFract
67
+ map_element 'atomParity', to: :atom_parity
68
+ map_element 'atomType', to: :atom_type
69
+ map_element 'electron', to: :electrons
70
+ map_element 'particle', to: :particles
71
+ map_element 'array', to: :arrays
72
+ map_element 'matrix', to: :matrices
73
+ map_element 'scalar', to: :scalars
74
+ map_element 'vector3', to: :vectors3
75
+ map_attribute 'convention', to: :convention
76
+ map_attribute 'dictRef', to: :dict_ref
77
+ map_attribute 'ref', to: :ref
78
+ map_attribute 'isotopeRef', to: :isotope_ref
79
+ map_attribute 'isotopeListRef', to: :isotope_list_ref
80
+ map_attribute 'occupancy', to: :occupancy
81
+ map_attribute 'role', to: :role
82
+ map_attribute 'spaceGroupMultiplicity', to: :space_group_multiplicity
83
+ map_attribute 'pointGroupMultiplicity', to: :point_group_multiplicity
84
+ end
85
+ key_value do
86
+ map 'metadataList', to: :metadata_lists
87
+ map 'label', to: :labels
88
+ map 'name', to: :names
89
+ map 'description', to: :descriptions
90
+ map 'atomParity', to: :atom_parity
91
+ map 'atomType', to: :atom_type
92
+ map 'electron', to: :electrons
93
+ map 'particle', to: :particles
94
+ map 'array', to: :arrays
95
+ map 'matrix', to: :matrices
96
+ map 'scalar', to: :scalars
97
+ map 'vector3', to: :vectors3
98
+ map 'id', to: :id
99
+ map 'elementType', to: :element_type
100
+ map 'count', to: :count
101
+ map 'formalCharge', to: :formal_charge
102
+ map 'hydrogenCount', to: :hydrogen_count
103
+ map 'isotope', to: :isotope
104
+ map 'isotopeNumber', to: :isotope_number
105
+ map 'spinMultiplicity', to: :spin_multiplicity
106
+ map 'title', to: :title
107
+ map 'x2', to: :x2
108
+ map 'y2', to: :y2
109
+ map 'x3', to: :x3
110
+ map 'y3', to: :y3
111
+ map 'z3', to: :z3
112
+ map 'xFract', to: :xFract
113
+ map 'yFract', to: :yFract
114
+ map 'zFract', to: :zFract
115
+ map 'convention', to: :convention
116
+ map 'dictRef', to: :dict_ref
117
+ map 'ref', to: :ref
118
+ map 'isotopeRef', to: :isotope_ref
119
+ map 'isotopeListRef', to: :isotope_list_ref
120
+ map 'occupancy', to: :occupancy
121
+ map 'role', to: :role
122
+ map 'spaceGroupMultiplicity', to: :space_group_multiplicity
123
+ map 'pointGroupMultiplicity', to: :point_group_multiplicity
50
124
  end
51
125
  end
52
126
  end
@@ -3,16 +3,91 @@
3
3
  module Chemicalml
4
4
  module Cml
5
5
  module Base
6
+ # Container for a list of atoms. Two equivalent serialisations:
7
+ #
8
+ # <atomArray><atom id="a1" elementType="C"/></atomArray>
9
+ #
10
+ # <atomArray atomID="a1 a2" elementType="C O" x3="0.0 1.0"/>
11
+ #
12
+ # The parallel-array form uses the *same* XML attribute names as
13
+ # the singular `<atom>` (e.g. `elementType`, `x3`), NOT names
14
+ # like `elementTypeArray`. The XSD names the attribute *groups*
15
+ # `elementTypeArray` etc., but the wire attribute is `elementType`.
6
16
  module AtomArray
7
17
  def self.included(klass)
8
18
  klass.class_eval do
9
19
  include Chemicalml::Cml::Role::AtomArray
20
+
10
21
  attribute :atoms, :atom, collection: true
11
22
 
23
+ attribute :title, :string
24
+ attribute :id, :string
25
+ attribute :convention, :string
26
+ attribute :dict_ref, :string
27
+ attribute :ref, :string
28
+
29
+ # Parallel-array attributes. Wire names match the singular
30
+ # <atom> attributes; the Ruby names use _array suffix for
31
+ # clarity at the call site.
32
+ attribute :atom_id_array, :string
33
+ attribute :count_array, :string
34
+ attribute :element_type_array, :string
35
+ attribute :formal_charge_array, :string
36
+ attribute :hydrogen_count_array, :string
37
+ attribute :occupancy_array, :string
38
+ attribute :x2_array, :string
39
+ attribute :y2_array, :string
40
+ attribute :x3_array, :string
41
+ attribute :y3_array, :string
42
+ attribute :z3_array, :string
43
+ attribute :x_fract_array, :string
44
+ attribute :y_fract_array, :string
45
+ attribute :z_fract_array, :string
12
46
  xml do
13
47
  namespace Chemicalml::Cml::Namespace
14
- root "atomArray"
15
- map_element "atom", to: :atoms
48
+ root 'atomArray'
49
+ map_element 'atom', to: :atoms
50
+ map_attribute 'title', to: :title
51
+ map_attribute 'id', to: :id
52
+ map_attribute 'convention', to: :convention
53
+ map_attribute 'dictRef', to: :dict_ref
54
+ map_attribute 'ref', to: :ref
55
+ map_attribute 'atomID', to: :atom_id_array
56
+ map_attribute 'count', to: :count_array
57
+ map_attribute 'elementType', to: :element_type_array
58
+ map_attribute 'formalCharge', to: :formal_charge_array
59
+ map_attribute 'hydrogenCount', to: :hydrogen_count_array
60
+ map_attribute 'occupancy', to: :occupancy_array
61
+ map_attribute 'x2', to: :x2_array
62
+ map_attribute 'y2', to: :y2_array
63
+ map_attribute 'x3', to: :x3_array
64
+ map_attribute 'y3', to: :y3_array
65
+ map_attribute 'z3', to: :z3_array
66
+ map_attribute 'xFract', to: :x_fract_array
67
+ map_attribute 'yFract', to: :y_fract_array
68
+ map_attribute 'zFract', to: :z_fract_array
69
+ end
70
+ key_value do
71
+ map 'atom', to: :atoms
72
+ map 'title', to: :title
73
+ map 'id', to: :id
74
+ map 'convention', to: :convention
75
+ map 'dictRef', to: :dict_ref
76
+ map 'ref', to: :ref
77
+ map 'atomID', to: :atom_id_array
78
+ map 'count', to: :count_array
79
+ map 'elementType', to: :element_type_array
80
+ map 'formalCharge', to: :formal_charge_array
81
+ map 'hydrogenCount', to: :hydrogen_count_array
82
+ map 'occupancy', to: :occupancy_array
83
+ map 'x2', to: :x2_array
84
+ map 'y2', to: :y2_array
85
+ map 'x3', to: :x3_array
86
+ map 'y3', to: :y3_array
87
+ map 'z3', to: :z3_array
88
+ map 'xFract', to: :x_fract_array
89
+ map 'yFract', to: :y_fract_array
90
+ map 'zFract', to: :z_fract_array
16
91
  end
17
92
  end
18
93
  end
@@ -7,14 +7,30 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::AtomParity
10
+
10
11
  attribute :atom_refs4, :string
11
12
  attribute :content, :string
12
13
 
14
+ attribute :title, :string
15
+ attribute :id, :string
16
+ attribute :convention, :string
17
+ attribute :dict_ref, :string
13
18
  xml do
14
19
  namespace Chemicalml::Cml::Namespace
15
- root "atomParity"
16
- map_attribute "atomRefs4", to: :atom_refs4
20
+ root 'atomParity'
21
+ map_attribute 'atomRefs4', to: :atom_refs4
17
22
  map_content to: :content
23
+ map_attribute 'title', to: :title
24
+ map_attribute 'id', to: :id
25
+ map_attribute 'convention', to: :convention
26
+ map_attribute 'dictRef', to: :dict_ref
27
+ end
28
+ key_value do
29
+ map 'atomRefs4', to: :atom_refs4
30
+ map 'title', to: :title
31
+ map 'id', to: :id
32
+ map 'convention', to: :convention
33
+ map 'dictRef', to: :dict_ref
18
34
  end
19
35
  end
20
36
  end
@@ -7,18 +7,28 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::AtomSet
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
13
14
  attribute :convention, :string
14
15
 
16
+ attribute :size, :string
15
17
  xml do
16
18
  namespace Chemicalml::Cml::Namespace
17
- root "atomSet"
18
- map_attribute "id", to: :id
19
- map_attribute "title", to: :title
20
- map_attribute "dictRef", to: :dict_ref
21
- map_attribute "convention", to: :convention
19
+ root 'atomSet'
20
+ map_attribute 'id', to: :id
21
+ map_attribute 'title', to: :title
22
+ map_attribute 'dictRef', to: :dict_ref
23
+ map_attribute 'convention', to: :convention
24
+ map_attribute 'size', to: :size
25
+ end
26
+ key_value do
27
+ map 'id', to: :id
28
+ map 'title', to: :title
29
+ map 'dictRef', to: :dict_ref
30
+ map 'convention', to: :convention
31
+ map 'size', to: :size
22
32
  end
23
33
  end
24
34
  end
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::AtomType
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -14,15 +16,33 @@ module Chemicalml
14
16
  attribute :elementType, :string
15
17
  attribute :ref, :string
16
18
 
19
+ attribute :name, :string
20
+ attribute :atom_ref, :string
17
21
  xml do
18
22
  namespace Chemicalml::Cml::Namespace
19
- root "atomType"
20
- map_attribute "id", to: :id
21
- map_attribute "title", to: :title
22
- map_attribute "dictRef", to: :dict_ref
23
- map_attribute "convention", to: :convention
24
- map_attribute "elementType", to: :elementType
25
- map_attribute "ref", to: :ref
23
+ root 'atomType'
24
+ map_attribute 'id', to: :id
25
+ map_attribute 'title', to: :title
26
+ map_attribute 'dictRef', to: :dict_ref
27
+ map_attribute 'convention', to: :convention
28
+ map_attribute 'elementType', to: :elementType
29
+ map_attribute 'ref', to: :ref
30
+ map_attribute 'name', to: :name
31
+ map_attribute 'atomRef', to: :atom_ref
32
+ end
33
+ key_value do
34
+ map 'metadataList', to: :metadata_lists
35
+ map 'label', to: :labels
36
+ map 'name', to: :names
37
+ map 'description', to: :descriptions
38
+ map 'id', to: :id
39
+ map 'title', to: :title
40
+ map 'dictRef', to: :dict_ref
41
+ map 'convention', to: :convention
42
+ map 'elementType', to: :elementType
43
+ map 'ref', to: :ref
44
+ map 'name', to: :name
45
+ map 'atomRef', to: :atom_ref
26
46
  end
27
47
  end
28
48
  end
@@ -7,21 +7,37 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::AtomTypeList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
13
15
  attribute :convention, :string
14
16
 
15
- attribute :atom_types, :atomType, collection: true
17
+ attribute :atom_types, :atomType, collection: true
16
18
 
19
+ attribute :ref, :string
17
20
  xml do
18
21
  namespace Chemicalml::Cml::Namespace
19
- map_element "atomType", to: :atom_types
20
- root "atomTypeList"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_attribute "convention", to: :convention
22
+ map_element 'atomType', to: :atom_types
23
+ root 'atomTypeList'
24
+ map_attribute 'id', to: :id
25
+ map_attribute 'title', to: :title
26
+ map_attribute 'dictRef', to: :dict_ref
27
+ map_attribute 'convention', to: :convention
28
+ map_attribute 'ref', to: :ref
29
+ end
30
+ key_value do
31
+ map 'metadataList', to: :metadata_lists
32
+ map 'label', to: :labels
33
+ map 'name', to: :names
34
+ map 'description', to: :descriptions
35
+ map 'atomType', to: :atom_types
36
+ map 'id', to: :id
37
+ map 'title', to: :title
38
+ map 'dictRef', to: :dict_ref
39
+ map 'convention', to: :convention
40
+ map 'ref', to: :ref
25
41
  end
26
42
  end
27
43
  end
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::AtomicBasisFunction
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -18,19 +20,41 @@ module Chemicalml
18
20
  attribute :ms, :string
19
21
  attribute :type, :string
20
22
 
23
+ attribute :symbol, :string
24
+ attribute :lm, :string
21
25
  xml do
22
26
  namespace Chemicalml::Cml::Namespace
23
- root "atomicBasisFunction"
24
- map_attribute "id", to: :id
25
- map_attribute "title", to: :title
26
- map_attribute "dictRef", to: :dict_ref
27
- map_attribute "convention", to: :convention
28
- map_attribute "atomRef", to: :atomRef
29
- map_attribute "n", to: :n
30
- map_attribute "l", to: :l
31
- map_attribute "m", to: :m
32
- map_attribute "ms", to: :ms
33
- map_attribute "type", to: :type
27
+ root 'atomicBasisFunction'
28
+ map_attribute 'id', to: :id
29
+ map_attribute 'title', to: :title
30
+ map_attribute 'dictRef', to: :dict_ref
31
+ map_attribute 'convention', to: :convention
32
+ map_attribute 'atomRef', to: :atomRef
33
+ map_attribute 'n', to: :n
34
+ map_attribute 'l', to: :l
35
+ map_attribute 'm', to: :m
36
+ map_attribute 'ms', to: :ms
37
+ map_attribute 'type', to: :type
38
+ map_attribute 'symbol', to: :symbol
39
+ map_attribute 'lm', to: :lm
40
+ end
41
+ key_value do
42
+ map 'metadataList', to: :metadata_lists
43
+ map 'label', to: :labels
44
+ map 'name', to: :names
45
+ map 'description', to: :descriptions
46
+ map 'id', to: :id
47
+ map 'title', to: :title
48
+ map 'dictRef', to: :dict_ref
49
+ map 'convention', to: :convention
50
+ map 'atomRef', to: :atomRef
51
+ map 'n', to: :n
52
+ map 'l', to: :l
53
+ map 'm', to: :m
54
+ map 'ms', to: :ms
55
+ map 'type', to: :type
56
+ map 'symbol', to: :symbol
57
+ map 'lm', to: :lm
34
58
  end
35
59
  end
36
60
  end
@@ -7,22 +7,37 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Band
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
13
14
  attribute :convention, :string
14
15
  attribute :kpointRef, :string
16
+ attribute :kpoint, :string
15
17
  attribute :weight, :string
16
18
 
19
+ attribute :label, :string
17
20
  xml do
18
21
  namespace Chemicalml::Cml::Namespace
19
- root "band"
20
- map_attribute "id", to: :id
21
- map_attribute "title", to: :title
22
- map_attribute "dictRef", to: :dict_ref
23
- map_attribute "convention", to: :convention
24
- map_attribute "kpointRef", to: :kpointRef
25
- map_attribute "weight", to: :weight
22
+ root 'band'
23
+ map_attribute 'id', to: :id
24
+ map_attribute 'title', to: :title
25
+ map_attribute 'dictRef', to: :dict_ref
26
+ map_attribute 'convention', to: :convention
27
+ map_attribute 'kpointRef', to: :kpointRef
28
+ map_attribute 'kpoint', to: :kpoint
29
+ map_attribute 'weight', to: :weight
30
+ map_attribute 'label', to: :label
31
+ end
32
+ key_value do
33
+ map 'id', to: :id
34
+ map 'title', to: :title
35
+ map 'dictRef', to: :dict_ref
36
+ map 'convention', to: :convention
37
+ map 'kpointRef', to: :kpointRef
38
+ map 'kpoint', to: :kpoint
39
+ map 'weight', to: :weight
40
+ map 'label', to: :label
26
41
  end
27
42
  end
28
43
  end
@@ -7,21 +7,29 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::BandList
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
13
14
  attribute :convention, :string
14
15
 
15
- attribute :bands, :band, collection: true
16
+ attribute :bands, :band, collection: true
16
17
 
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- map_element "band", to: :bands
20
- root "bandList"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_attribute "convention", to: :convention
20
+ map_element 'band', to: :bands
21
+ root 'bandList'
22
+ map_attribute 'id', to: :id
23
+ map_attribute 'title', to: :title
24
+ map_attribute 'dictRef', to: :dict_ref
25
+ map_attribute 'convention', to: :convention
26
+ end
27
+ key_value do
28
+ map 'band', to: :bands
29
+ map 'id', to: :id
30
+ map 'title', to: :title
31
+ map 'dictRef', to: :dict_ref
32
+ map 'convention', to: :convention
25
33
  end
26
34
  end
27
35
  end