chemicalml 0.2.1 → 0.4.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 (352) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +21 -14
  3. data/.rubocop.yml +23 -0
  4. data/CHANGELOG.md +32 -0
  5. data/CLAUDE.md +49 -1
  6. data/README.adoc +154 -26
  7. data/TODO.align/61-parallel-array-attrs.md +54 -0
  8. data/TODO.align/62-per-element-attribute-gaps.md +49 -0
  9. data/TODO.align/63-universal-children-mixin.md +42 -0
  10. data/TODO.align/64-per-element-child-gaps.md +81 -0
  11. data/TODO.align/65-simple-unit-convention.md +40 -0
  12. data/TODO.align/66-schema24-legacy-children.md +32 -0
  13. data/TODO.align/67-final-verification.md +32 -0
  14. data/TODO.align/68-detection-coverage.md +33 -0
  15. data/TODO.align/69-json-yaml-roundtrip.md +27 -0
  16. data/TODO.align/70-iterative-walker.md +40 -0
  17. data/TODO.align/71-violation-value.md +25 -0
  18. data/TODO.align/72-close-child-gaps.md +66 -0
  19. data/TODO.align/73-schema24-parse-limitation.md +64 -0
  20. data/TODO.align/74-final-verification-round18.md +15 -0
  21. data/TODO.align/75-key-value-mappings.md +43 -0
  22. data/TODO.align/76-schema24-workaround.md +57 -0
  23. data/TODO.align/77-convention-coverage-matrix.md +31 -0
  24. data/TODO.align/78-fixture-audit.md +23 -0
  25. data/TODO.align/79-final-verification-round19.md +15 -0
  26. data/TODO.align/80-xsd-enum-constants.md +35 -0
  27. data/TODO.align/81-enum-validation-constraints.md +29 -0
  28. data/TODO.align/82-reference-resolver.md +33 -0
  29. data/TODO.align/83-toml-roundtrip.md +20 -0
  30. data/TODO.align/84-final-verification-round21.md +16 -0
  31. data/TODO.align/85-bond-distinct-atoms.md +25 -0
  32. data/TODO.align/86-references-should-resolve.md +20 -0
  33. data/TODO.align/87-cli-utility.md +26 -0
  34. data/TODO.align/88-diverse-fixtures.md +26 -0
  35. data/TODO.align/89-final-verification-round22.md +15 -0
  36. data/TODO.align/90-bond-stereo-completeness.md +31 -0
  37. data/TODO.align/91-atomparity-distinct.md +21 -0
  38. data/TODO.align/92-unit-dictionary-completeness.md +28 -0
  39. data/TODO.align/93-yard-docs.md +23 -0
  40. data/TODO.align/94-final-verification-round23.md +15 -0
  41. data/TODO.align/README.round17.md +28 -0
  42. data/TODO.align/README.round18.md +37 -0
  43. data/TODO.align/README.round19.md +40 -0
  44. data/TODO.align/README.round20.md +49 -0
  45. data/TODO.align/README.round21.md +35 -0
  46. data/TODO.align/README.round22.md +48 -0
  47. data/TODO.align/README.round23.md +46 -0
  48. data/TODO.align/README.round24.md +53 -0
  49. data/TODO.align/README.round25.md +66 -0
  50. data/TODO.align/README.round26.md +55 -0
  51. data/TODO.align/README.round27.md +51 -0
  52. data/TODO.align/README.round28.md +61 -0
  53. data/TODO.align/README.round29.md +64 -0
  54. data/TODO.align/README.round30.md +50 -0
  55. data/TODO.align/README.round31.md +54 -0
  56. data/TODO.align/README.round32.md +67 -0
  57. data/TODO.align/README.round33.md +62 -0
  58. data/TODO.align/README.round34.md +70 -0
  59. data/chemicalml.gemspec +1 -1
  60. data/docs/constraints.md +161 -0
  61. data/docs/generate_constraint_docs.rb +44 -0
  62. data/exe/chemicalml +6 -0
  63. data/lib/chemicalml/cli/base.rb +68 -0
  64. data/lib/chemicalml/cli/command.rb +43 -0
  65. data/lib/chemicalml/cli/constraints_command.rb +27 -0
  66. data/lib/chemicalml/cli/conventions_command.rb +14 -0
  67. data/lib/chemicalml/cli/dictionaries_command.rb +14 -0
  68. data/lib/chemicalml/cli/elements_command.rb +17 -0
  69. data/lib/chemicalml/cli/enums_command.rb +17 -0
  70. data/lib/chemicalml/cli/info_command.rb +77 -0
  71. data/lib/chemicalml/cli/inspect_command.rb +39 -0
  72. data/lib/chemicalml/cli/validate_command.rb +54 -0
  73. data/lib/chemicalml/cli.rb +43 -0
  74. data/lib/chemicalml/cml/base/abundance.rb +18 -8
  75. data/lib/chemicalml/cml/base/action.rb +34 -16
  76. data/lib/chemicalml/cml/base/action_list.rb +35 -17
  77. data/lib/chemicalml/cml/base/alternative.rb +13 -4
  78. data/lib/chemicalml/cml/base/amount.rb +14 -6
  79. data/lib/chemicalml/cml/base/angle.rb +28 -13
  80. data/lib/chemicalml/cml/base/annotation.rb +14 -6
  81. data/lib/chemicalml/cml/base/any_cml.rb +12 -5
  82. data/lib/chemicalml/cml/base/appinfo.rb +14 -6
  83. data/lib/chemicalml/cml/base/arg.rb +47 -13
  84. data/lib/chemicalml/cml/base/array.rb +40 -19
  85. data/lib/chemicalml/cml/base/array_list.rb +14 -6
  86. data/lib/chemicalml/cml/base/atom.rb +84 -28
  87. data/lib/chemicalml/cml/base/atom_array.rb +60 -23
  88. data/lib/chemicalml/cml/base/atom_parity.rb +14 -6
  89. data/lib/chemicalml/cml/base/atom_set.rb +14 -6
  90. data/lib/chemicalml/cml/base/atom_type.rb +25 -9
  91. data/lib/chemicalml/cml/base/atom_type_list.rb +22 -8
  92. data/lib/chemicalml/cml/base/atomic_basis_function.rb +33 -13
  93. data/lib/chemicalml/cml/base/band.rb +21 -8
  94. data/lib/chemicalml/cml/base/band_list.rb +15 -7
  95. data/lib/chemicalml/cml/base/basis_set.rb +24 -9
  96. data/lib/chemicalml/cml/base/bond.rb +36 -10
  97. data/lib/chemicalml/cml/base/bond_array.rb +34 -11
  98. data/lib/chemicalml/cml/base/bond_set.rb +14 -6
  99. data/lib/chemicalml/cml/base/bond_stereo.rb +20 -9
  100. data/lib/chemicalml/cml/base/bond_type.rb +23 -8
  101. data/lib/chemicalml/cml/base/bond_type_list.rb +22 -8
  102. data/lib/chemicalml/cml/base/cell_parameter.rb +28 -10
  103. data/lib/chemicalml/cml/base/cml_module.rb +42 -11
  104. data/lib/chemicalml/cml/base/common_children.rb +35 -0
  105. data/lib/chemicalml/cml/base/complex_object.rb +12 -5
  106. data/lib/chemicalml/cml/base/condition_list.rb +26 -10
  107. data/lib/chemicalml/cml/base/crystal.rb +26 -10
  108. data/lib/chemicalml/cml/base/definition.rb +14 -5
  109. data/lib/chemicalml/cml/base/description.rb +16 -6
  110. data/lib/chemicalml/cml/base/dictionary.rb +28 -11
  111. data/lib/chemicalml/cml/base/dictionary_entry.rb +69 -10
  112. data/lib/chemicalml/cml/base/dimension.rb +26 -12
  113. data/lib/chemicalml/cml/base/document.rb +24 -8
  114. data/lib/chemicalml/cml/base/documentation.rb +12 -5
  115. data/lib/chemicalml/cml/base/eigen.rb +32 -8
  116. data/lib/chemicalml/cml/base/electron.rb +26 -12
  117. data/lib/chemicalml/cml/base/enumeration.rb +16 -7
  118. data/lib/chemicalml/cml/base/expression.rb +21 -6
  119. data/lib/chemicalml/cml/base/float.rb +22 -10
  120. data/lib/chemicalml/cml/base/float_array.rb +24 -11
  121. data/lib/chemicalml/cml/base/formula.rb +31 -10
  122. data/lib/chemicalml/cml/base/fragment.rb +30 -12
  123. data/lib/chemicalml/cml/base/fragment_list.rb +24 -9
  124. data/lib/chemicalml/cml/base/gradient.rb +19 -6
  125. data/lib/chemicalml/cml/base/identifier.rb +18 -8
  126. data/lib/chemicalml/cml/base/integer.rb +22 -10
  127. data/lib/chemicalml/cml/base/integer_array.rb +24 -11
  128. data/lib/chemicalml/cml/base/isotope.rb +28 -9
  129. data/lib/chemicalml/cml/base/isotope_list.rb +17 -8
  130. data/lib/chemicalml/cml/base/join.rb +25 -9
  131. data/lib/chemicalml/cml/base/kpoint.rb +16 -7
  132. data/lib/chemicalml/cml/base/kpoint_list.rb +15 -7
  133. data/lib/chemicalml/cml/base/label.rb +14 -6
  134. data/lib/chemicalml/cml/base/lattice.rb +35 -10
  135. data/lib/chemicalml/cml/base/lattice_vector.rb +16 -7
  136. data/lib/chemicalml/cml/base/length.rb +26 -12
  137. data/lib/chemicalml/cml/base/line3.rb +18 -8
  138. data/lib/chemicalml/cml/base/link.rb +41 -20
  139. data/lib/chemicalml/cml/base/list.rb +22 -10
  140. data/lib/chemicalml/cml/base/map.rb +32 -11
  141. data/lib/chemicalml/cml/base/matrix.rb +32 -15
  142. data/lib/chemicalml/cml/base/mechanism.rb +20 -7
  143. data/lib/chemicalml/cml/base/mechanism_component.rb +14 -6
  144. data/lib/chemicalml/cml/base/metadata.rb +18 -8
  145. data/lib/chemicalml/cml/base/metadata_list.rb +27 -8
  146. data/lib/chemicalml/cml/base/molecule.rb +92 -26
  147. data/lib/chemicalml/cml/base/molecule_list.rb +26 -8
  148. data/lib/chemicalml/cml/base/name.rb +10 -4
  149. data/lib/chemicalml/cml/base/object.rb +18 -8
  150. data/lib/chemicalml/cml/base/observation.rb +16 -7
  151. data/lib/chemicalml/cml/base/operator.rb +14 -6
  152. data/lib/chemicalml/cml/base/parameter.rb +33 -13
  153. data/lib/chemicalml/cml/base/parameter_list.rb +27 -8
  154. data/lib/chemicalml/cml/base/particle.rb +20 -9
  155. data/lib/chemicalml/cml/base/peak.rb +73 -26
  156. data/lib/chemicalml/cml/base/peak_group.rb +62 -26
  157. data/lib/chemicalml/cml/base/peak_list.rb +24 -9
  158. data/lib/chemicalml/cml/base/peak_structure.rb +40 -13
  159. data/lib/chemicalml/cml/base/plane3.rb +14 -6
  160. data/lib/chemicalml/cml/base/point3.rb +14 -6
  161. data/lib/chemicalml/cml/base/potential.rb +17 -6
  162. data/lib/chemicalml/cml/base/potential_form.rb +30 -7
  163. data/lib/chemicalml/cml/base/potential_list.rb +15 -7
  164. data/lib/chemicalml/cml/base/product.rb +45 -10
  165. data/lib/chemicalml/cml/base/product_list.rb +29 -9
  166. data/lib/chemicalml/cml/base/property.rb +29 -11
  167. data/lib/chemicalml/cml/base/property_list.rb +23 -8
  168. data/lib/chemicalml/cml/base/reactant.rb +45 -10
  169. data/lib/chemicalml/cml/base/reactant_list.rb +29 -9
  170. data/lib/chemicalml/cml/base/reaction.rb +74 -20
  171. data/lib/chemicalml/cml/base/reaction_list.rb +23 -8
  172. data/lib/chemicalml/cml/base/reaction_scheme.rb +43 -13
  173. data/lib/chemicalml/cml/base/reaction_step.rb +30 -12
  174. data/lib/chemicalml/cml/base/reaction_step_list.rb +30 -11
  175. data/lib/chemicalml/cml/base/reactive_centre.rb +31 -6
  176. data/lib/chemicalml/cml/base/region.rb +20 -9
  177. data/lib/chemicalml/cml/base/related_entry.rb +11 -3
  178. data/lib/chemicalml/cml/base/sample.rb +30 -7
  179. data/lib/chemicalml/cml/base/scalar.rb +32 -15
  180. data/lib/chemicalml/cml/base/spectator.rb +25 -6
  181. data/lib/chemicalml/cml/base/spectator_list.rb +20 -7
  182. data/lib/chemicalml/cml/base/spectrum.rb +57 -18
  183. data/lib/chemicalml/cml/base/spectrum_data.rb +19 -9
  184. data/lib/chemicalml/cml/base/spectrum_list.rb +28 -9
  185. data/lib/chemicalml/cml/base/sphere3.rb +14 -6
  186. data/lib/chemicalml/cml/base/stmml.rb +12 -5
  187. data/lib/chemicalml/cml/base/string.rb +14 -6
  188. data/lib/chemicalml/cml/base/string_array.rb +22 -10
  189. data/lib/chemicalml/cml/base/substance.rb +36 -14
  190. data/lib/chemicalml/cml/base/substance_list.rb +29 -10
  191. data/lib/chemicalml/cml/base/symmetry.rb +31 -9
  192. data/lib/chemicalml/cml/base/system.rb +21 -10
  193. data/lib/chemicalml/cml/base/table.rb +38 -13
  194. data/lib/chemicalml/cml/base/table_cell.rb +12 -5
  195. data/lib/chemicalml/cml/base/table_content.rb +19 -9
  196. data/lib/chemicalml/cml/base/table_header.rb +15 -7
  197. data/lib/chemicalml/cml/base/table_header_cell.rb +22 -10
  198. data/lib/chemicalml/cml/base/table_row.rb +15 -7
  199. data/lib/chemicalml/cml/base/table_row_list.rb +15 -7
  200. data/lib/chemicalml/cml/base/tcell.rb +16 -7
  201. data/lib/chemicalml/cml/base/torsion.rb +28 -13
  202. data/lib/chemicalml/cml/base/transform3.rb +12 -5
  203. data/lib/chemicalml/cml/base/transition_state.rb +23 -5
  204. data/lib/chemicalml/cml/base/trow.rb +22 -6
  205. data/lib/chemicalml/cml/base/unit.rb +39 -16
  206. data/lib/chemicalml/cml/base/unit_list.rb +34 -12
  207. data/lib/chemicalml/cml/base/unit_type.rb +30 -10
  208. data/lib/chemicalml/cml/base/unit_type_list.rb +29 -11
  209. data/lib/chemicalml/cml/base/vector3.rb +14 -6
  210. data/lib/chemicalml/cml/base/xaxis.rb +32 -10
  211. data/lib/chemicalml/cml/base/yaxis.rb +30 -10
  212. data/lib/chemicalml/cml/base/z_matrix.rb +26 -5
  213. data/lib/chemicalml/cml/base.rb +139 -138
  214. data/lib/chemicalml/cml/canonical_comparison.rb +54 -0
  215. data/lib/chemicalml/cml/elements.rb +145 -136
  216. data/lib/chemicalml/cml/enums.rb +55 -0
  217. data/lib/chemicalml/cml/namespace.rb +2 -3
  218. data/lib/chemicalml/cml/patterns.rb +33 -0
  219. data/lib/chemicalml/cml/reference_resolver.rb +137 -0
  220. data/lib/chemicalml/cml/role.rb +138 -138
  221. data/lib/chemicalml/cml/schema24/configuration.rb +11 -1
  222. data/lib/chemicalml/cml/schema24.rb +139 -139
  223. data/lib/chemicalml/cml/schema3.rb +123 -123
  224. data/lib/chemicalml/cml/visitable.rb +77 -3
  225. data/lib/chemicalml/cml/wire_class_registry.rb +3 -3
  226. data/lib/chemicalml/cml/xhtml/p.rb +21 -0
  227. data/lib/chemicalml/cml/xhtml.rb +20 -0
  228. data/lib/chemicalml/cml.rb +164 -129
  229. data/lib/chemicalml/context_configuration.rb +4 -2
  230. data/lib/chemicalml/convention/cascade/constraints/reaction_scheme_must_have_content.rb +33 -0
  231. data/lib/chemicalml/convention/cascade/constraints/reaction_step_list_must_contain_steps.rb +31 -0
  232. data/lib/chemicalml/convention/cascade/constraints/reaction_step_must_have_reaction_or_lists.rb +33 -0
  233. data/lib/chemicalml/convention/cascade/constraints/reactive_centre_atom_refs_should_be_present.rb +34 -0
  234. data/lib/chemicalml/convention/cascade/constraints.rb +18 -0
  235. data/lib/chemicalml/convention/cascade.rb +43 -0
  236. data/lib/chemicalml/convention/compchem/constraints/array_rules.rb +1 -1
  237. data/lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb +1 -1
  238. data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +2 -1
  239. data/lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb +1 -1
  240. data/lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb +1 -1
  241. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb +1 -1
  242. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb +1 -1
  243. data/lib/chemicalml/convention/compchem/constraints/finalization_must_have_content.rb +44 -0
  244. data/lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb +1 -1
  245. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb +1 -1
  246. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb +1 -1
  247. data/lib/chemicalml/convention/compchem/constraints/initialization_must_have_content.rb +54 -0
  248. data/lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb +1 -1
  249. data/lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb +1 -0
  250. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb +1 -1
  251. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb +1 -1
  252. data/lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb +1 -0
  253. data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +1 -0
  254. data/lib/chemicalml/convention/compchem/constraints/matrix_rules.rb +1 -1
  255. data/lib/chemicalml/convention/compchem/constraints/scalar_units.rb +1 -1
  256. data/lib/chemicalml/convention/compchem/constraints.rb +4 -0
  257. data/lib/chemicalml/convention/compchem.rb +4 -2
  258. data/lib/chemicalml/convention/constraint.rb +40 -9
  259. data/lib/chemicalml/convention/coordinator.rb +4 -3
  260. data/lib/chemicalml/convention/detection.rb +10 -4
  261. data/lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb +1 -0
  262. data/lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb +1 -1
  263. data/lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb +1 -1
  264. data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +1 -1
  265. data/lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb +15 -1
  266. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +1 -1
  267. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb +1 -0
  268. data/lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb +1 -1
  269. data/lib/chemicalml/convention/dictionary/constraints.rb +8 -8
  270. data/lib/chemicalml/convention/dictionary.rb +2 -2
  271. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb +1 -0
  272. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +15 -6
  273. data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +1 -1
  274. data/lib/chemicalml/convention/molecular/constraints/atom_element_type_should_be_in_periodic_table.rb +39 -0
  275. data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +3 -2
  276. data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +1 -0
  277. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +1 -1
  278. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +2 -1
  279. data/lib/chemicalml/convention/molecular/constraints/atom_parity_atom_refs4_should_be_distinct.rb +44 -0
  280. data/lib/chemicalml/convention/molecular/constraints/atom_parity_should_include_parent_atom.rb +65 -0
  281. data/lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb +1 -0
  282. data/lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb +44 -0
  283. data/lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb +38 -0
  284. data/lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb +1 -0
  285. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +1 -1
  286. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +2 -1
  287. data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +1 -0
  288. data/lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb +1 -0
  289. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_be_in_enum.rb +39 -0
  290. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +1 -1
  291. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_atom_refs4_should_be_distinct.rb +43 -0
  292. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb +1 -1
  293. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb +1 -0
  294. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_should_be_in_enum.rb +38 -0
  295. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb +1 -1
  296. data/lib/chemicalml/convention/molecular/constraints/dict_ref_should_resolve.rb +59 -0
  297. data/lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb +1 -0
  298. data/lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb +1 -0
  299. data/lib/chemicalml/convention/molecular/constraints/molecule_chirality_should_be_in_enum.rb +38 -0
  300. data/lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb +1 -0
  301. data/lib/chemicalml/convention/molecular/constraints/molecule_id_should_match_pattern.rb +38 -0
  302. data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +1 -1
  303. data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +1 -1
  304. data/lib/chemicalml/convention/molecular/constraints/property_scalar_data_type_matches_dictionary.rb +58 -0
  305. data/lib/chemicalml/convention/molecular/constraints/references_should_resolve.rb +37 -0
  306. data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +1 -1
  307. data/lib/chemicalml/convention/molecular/constraints.rb +49 -23
  308. data/lib/chemicalml/convention/molecular.rb +15 -2
  309. data/lib/chemicalml/convention/registry.rb +79 -11
  310. data/lib/chemicalml/convention/simple_unit/constraints/root_must_be_unit_list.rb +24 -0
  311. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_power.rb +32 -0
  312. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_symbol.rb +31 -0
  313. data/lib/chemicalml/convention/simple_unit/constraints.rb +16 -0
  314. data/lib/chemicalml/convention/simple_unit.rb +37 -0
  315. data/lib/chemicalml/convention/spectroscopy/constraints/peak_list_must_contain_peaks.rb +31 -0
  316. data/lib/chemicalml/convention/spectroscopy/constraints/peak_should_have_values.rb +34 -0
  317. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_content.rb +31 -0
  318. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_convention.rb +32 -0
  319. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_format.rb +31 -0
  320. data/lib/chemicalml/convention/spectroscopy/constraints.rb +20 -0
  321. data/lib/chemicalml/convention/spectroscopy.rb +41 -0
  322. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb +1 -0
  323. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb +1 -1
  324. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb +1 -0
  325. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb +1 -0
  326. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb +34 -0
  327. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_parent_si.rb +32 -0
  328. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +1 -1
  329. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_title.rb +32 -0
  330. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_parent_si_should_resolve.rb +45 -0
  331. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_unit_type_should_resolve.rb +46 -0
  332. data/lib/chemicalml/convention/unit_dictionary/constraints.rb +10 -0
  333. data/lib/chemicalml/convention/unit_dictionary.rb +7 -2
  334. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb +1 -1
  335. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb +1 -0
  336. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb +1 -1
  337. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb +1 -0
  338. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +1 -1
  339. data/lib/chemicalml/convention/unit_type_dictionary.rb +2 -2
  340. data/lib/chemicalml/convention/validation_report.rb +30 -3
  341. data/lib/chemicalml/convention/violation.rb +9 -3
  342. data/lib/chemicalml/convention.rb +41 -14
  343. data/lib/chemicalml/dictionary.rb +13 -9
  344. data/lib/chemicalml/logger.rb +47 -0
  345. data/lib/chemicalml/schema/definition.rb +2 -2
  346. data/lib/chemicalml/schema.rb +7 -7
  347. data/lib/chemicalml/version.rb +1 -1
  348. data/lib/chemicalml/versioned_parser.rb +10 -10
  349. data/lib/chemicalml.rb +78 -15
  350. data/lib/tasks/reference_fetch.rake +30 -31
  351. data/lib/tasks/scrape_fixtures.rake +23 -24
  352. metadata +118 -5
@@ -7,7 +7,10 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Molecule
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
13
+ attribute :concise, :string
11
14
  attribute :title, :string
12
15
  attribute :count, :string
13
16
  attribute :formal_charge, :string
@@ -15,18 +18,27 @@ module Chemicalml
15
18
  attribute :dict_ref, :string
16
19
  attribute :convention, :string
17
20
  attribute :chirality, :string
18
- attribute :names, :name, collection: true
21
+ attribute :formula, :string
19
22
  attribute :identifiers, :identifier, collection: true
20
23
  attribute :formulas, :formula, collection: true
21
24
  attribute :properties, :property, collection: true
22
- attribute :labels, :label, collection: true
23
25
  attribute :atom_array, :atomArray
24
26
  attribute :bond_array, :bondArray
25
27
  attribute :molecules, :molecule, collection: true
26
-
27
- attribute :crystal, :crystal
28
+ attribute :crystal, :crystal
28
29
  attribute :spectra, :spectrum
29
30
  attribute :property_lists, :propertyList, collection: true
31
+ attribute :electrons, :electron, collection: true
32
+ attribute :angles, :angle, collection: true
33
+ attribute :lengths, :length, collection: true
34
+ attribute :torsions, :torsion, collection: true
35
+ attribute :joins, :join, collection: true
36
+ attribute :scalars, :scalar, collection: true
37
+ attribute :arrays, :array, collection: true
38
+ attribute :matrices, :matrix, collection: true
39
+ attribute :lists, :list, collection: true
40
+ attribute :symmetries, :symmetry, collection: true
41
+ attribute :z_matrix, :zMatrix
30
42
 
31
43
  attribute :ref, :string
32
44
  attribute :idgen, :string
@@ -35,28 +47,82 @@ module Chemicalml
35
47
  attribute :role, :string
36
48
  xml do
37
49
  namespace Chemicalml::Cml::Namespace
38
- root "molecule"
39
- map_attribute "id", to: :id
40
- map_attribute "title", to: :title
41
- map_attribute "count", to: :count
42
- map_attribute "formalCharge", to: :formal_charge
43
- map_attribute "spinMultiplicity", to: :spin_multiplicity
44
- map_attribute "dictRef", to: :dict_ref
45
- map_attribute "convention", to: :convention
46
- map_attribute "chirality", to: :chirality
47
- map_element "name", to: :names
48
- map_element "identifier", to: :identifiers
49
- map_element "formula", to: :formulas
50
- map_element "property", to: :properties
51
- map_element "label", to: :labels
52
- map_element "atomArray", to: :atom_array
53
- map_element "bondArray", to: :bond_array
54
- map_element "molecule", to: :molecules
55
- map_attribute "ref", to: :ref
56
- map_attribute "idgen", to: :idgen
57
- map_attribute "process", to: :process
58
- map_attribute "symmetryOriented", to: :symmetry_oriented
59
- map_attribute "role", to: :role
50
+ root 'molecule'
51
+ map_attribute 'id', to: :id
52
+ map_attribute 'concise', to: :concise
53
+ map_attribute 'title', to: :title
54
+ map_attribute 'count', to: :count
55
+ map_attribute 'formalCharge', to: :formal_charge
56
+ map_attribute 'spinMultiplicity', to: :spin_multiplicity
57
+ map_attribute 'dictRef', to: :dict_ref
58
+ map_attribute 'convention', to: :convention
59
+ map_attribute 'chirality', to: :chirality
60
+ map_attribute 'formula', to: :formula
61
+ map_element 'identifier', to: :identifiers
62
+ map_element 'formula', to: :formulas
63
+ map_element 'property', to: :properties
64
+ map_element 'atomArray', to: :atom_array
65
+ map_element 'bondArray', to: :bond_array
66
+ map_element 'molecule', to: :molecules
67
+ map_element 'crystal', to: :crystal
68
+ map_element 'spectrum', to: :spectra
69
+ map_element 'propertyList', to: :property_lists
70
+ map_element 'electron', to: :electrons
71
+ map_element 'angle', to: :angles
72
+ map_element 'length', to: :lengths
73
+ map_element 'torsion', to: :torsions
74
+ map_element 'join', to: :joins
75
+ map_element 'scalar', to: :scalars
76
+ map_element 'array', to: :arrays
77
+ map_element 'matrix', to: :matrices
78
+ map_element 'list', to: :lists
79
+ map_element 'symmetry', to: :symmetries
80
+ map_element 'zMatrix', to: :z_matrix
81
+ map_attribute 'ref', to: :ref
82
+ map_attribute 'idgen', to: :idgen
83
+ map_attribute 'process', to: :process
84
+ map_attribute 'symmetryOriented', to: :symmetry_oriented
85
+ map_attribute 'role', to: :role
86
+ end
87
+ key_value do
88
+ map 'metadataList', to: :metadata_lists
89
+ map 'label', to: :labels
90
+ map 'name', to: :names
91
+ map 'description', to: :descriptions
92
+ map 'identifier', to: :identifiers
93
+ map 'formula', to: :formulas
94
+ map 'property', to: :properties
95
+ map 'atomArray', to: :atom_array
96
+ map 'bondArray', to: :bond_array
97
+ map 'molecule', to: :molecules
98
+ map 'crystal', to: :crystal
99
+ map 'spectrum', to: :spectra
100
+ map 'propertyList', to: :property_lists
101
+ map 'electron', to: :electrons
102
+ map 'angle', to: :angles
103
+ map 'length', to: :lengths
104
+ map 'torsion', to: :torsions
105
+ map 'join', to: :joins
106
+ map 'scalar', to: :scalars
107
+ map 'array', to: :arrays
108
+ map 'matrix', to: :matrices
109
+ map 'list', to: :lists
110
+ map 'symmetry', to: :symmetries
111
+ map 'zMatrix', to: :z_matrix
112
+ map 'id', to: :id
113
+ map 'title', to: :title
114
+ map 'count', to: :count
115
+ map 'formalCharge', to: :formal_charge
116
+ map 'spinMultiplicity', to: :spin_multiplicity
117
+ map 'dictRef', to: :dict_ref
118
+ map 'convention', to: :convention
119
+ map 'chirality', to: :chirality
120
+ map 'formula', to: :formula
121
+ map 'ref', to: :ref
122
+ map 'idgen', to: :idgen
123
+ map 'process', to: :process
124
+ map 'symmetryOriented', to: :symmetry_oriented
125
+ map 'role', to: :role
60
126
  end
61
127
  end
62
128
  end
@@ -7,23 +7,41 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::MoleculeList
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 :molecules, :molecule, collection: true
17
+ attribute :molecules, :molecule, collection: true
16
18
 
17
19
  attribute :ref, :string
20
+ attribute :molecule_lists, :moleculeList, collection: true
21
+
18
22
  xml do
19
23
  namespace Chemicalml::Cml::Namespace
20
- map_element "molecule", to: :molecules
21
- root "moleculeList"
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
- map_attribute "ref", to: :ref
24
+ map_element 'molecule', to: :molecules
25
+ map_element 'moleculeList', to: :molecule_lists
26
+ root 'moleculeList'
27
+ map_attribute 'id', to: :id
28
+ map_attribute 'title', to: :title
29
+ map_attribute 'dictRef', to: :dict_ref
30
+ map_attribute 'convention', to: :convention
31
+ map_attribute 'ref', to: :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 'molecule', to: :molecules
39
+ map 'moleculeList', to: :molecule_lists
40
+ map 'id', to: :id
41
+ map 'title', to: :title
42
+ map 'dictRef', to: :dict_ref
43
+ map 'convention', to: :convention
44
+ map 'ref', to: :ref
27
45
  end
28
46
  end
29
47
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Name
10
+
10
11
  attribute :content, :string
11
12
  attribute :convention, :string
12
13
  attribute :dict_ref, :string
@@ -14,11 +15,16 @@ module Chemicalml
14
15
  attribute :id, :string
15
16
  xml do
16
17
  namespace Chemicalml::Cml::Namespace
17
- root "name"
18
+ root 'name'
18
19
  map_content to: :content
19
- map_attribute "convention", to: :convention
20
- map_attribute "dictRef", to: :dict_ref
21
- map_attribute "id", to: :id
20
+ map_attribute 'convention', to: :convention
21
+ map_attribute 'dictRef', to: :dict_ref
22
+ map_attribute 'id', to: :id
23
+ end
24
+ key_value do
25
+ map 'convention', to: :convention
26
+ map 'dictRef', to: :dict_ref
27
+ map 'id', to: :id
22
28
  end
23
29
  end
24
30
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Object
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -17,14 +18,23 @@ module Chemicalml
17
18
  attribute :count, :string
18
19
  xml do
19
20
  namespace Chemicalml::Cml::Namespace
20
- root "object"
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
25
- map_attribute "type", to: :type
26
- map_attribute "name", to: :name
27
- map_attribute "count", to: :count
21
+ root 'object'
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
+ map_attribute 'type', to: :type
27
+ map_attribute 'name', to: :name
28
+ map_attribute 'count', to: :count
29
+ end
30
+ key_value do
31
+ map 'id', to: :id
32
+ map 'title', to: :title
33
+ map 'dictRef', to: :dict_ref
34
+ map 'convention', to: :convention
35
+ map 'type', to: :type
36
+ map 'name', to: :name
37
+ map 'count', to: :count
28
38
  end
29
39
  end
30
40
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Observation
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,13 +17,21 @@ module Chemicalml
16
17
  attribute :count, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "observation"
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 "type", to: :type
25
- map_attribute "count", to: :count
20
+ root 'observation'
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
25
+ map_attribute 'type', to: :type
26
+ map_attribute 'count', to: :count
27
+ end
28
+ key_value do
29
+ map 'id', to: :id
30
+ map 'title', to: :title
31
+ map 'dictRef', to: :dict_ref
32
+ map 'convention', to: :convention
33
+ map 'type', to: :type
34
+ map 'count', to: :count
26
35
  end
27
36
  end
28
37
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Operator
10
+
10
11
  attribute :title, :string
11
12
  attribute :id, :string
12
13
  attribute :convention, :string
@@ -16,14 +17,21 @@ module Chemicalml
16
17
 
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "operator"
20
- map_attribute "title", to: :title
21
- map_attribute "id", to: :id
22
- map_attribute "convention", to: :convention
23
- map_attribute "dictRef", to: :dict_ref
24
- map_attribute "type", to: :type
20
+ root 'operator'
21
+ map_attribute 'title', to: :title
22
+ map_attribute 'id', to: :id
23
+ map_attribute 'convention', to: :convention
24
+ map_attribute 'dictRef', to: :dict_ref
25
+ map_attribute 'type', to: :type
25
26
  map_content to: :content
26
27
  end
28
+ key_value do
29
+ map 'title', to: :title
30
+ map 'id', to: :id
31
+ map 'convention', to: :convention
32
+ map 'dictRef', to: :dict_ref
33
+ map 'type', to: :type
34
+ end
27
35
  end
28
36
  end
29
37
  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::Parameter
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -22,19 +24,37 @@ module Chemicalml
22
24
  attribute :role, :string
23
25
  xml do
24
26
  namespace Chemicalml::Cml::Namespace
25
- root "parameter"
26
- map_attribute "id", to: :id
27
- map_attribute "title", to: :title
28
- map_attribute "dictRef", to: :dict_ref
29
- map_attribute "convention", to: :convention
30
- map_element "scalar", to: :scalar
31
- map_element "array", to: :array
32
- map_element "matrix", to: :matrix
33
- map_attribute "ref", to: :ref
34
- map_attribute "value", to: :value
35
- map_attribute "constraint", to: :constraint
36
- map_attribute "name", to: :name
37
- map_attribute "role", to: :role
27
+ root 'parameter'
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_element 'scalar', to: :scalar
33
+ map_element 'array', to: :array
34
+ map_element 'matrix', to: :matrix
35
+ map_attribute 'ref', to: :ref
36
+ map_attribute 'value', to: :value
37
+ map_attribute 'constraint', to: :constraint
38
+ map_attribute 'name', to: :name
39
+ map_attribute 'role', to: :role
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 'scalar', to: :scalar
47
+ map 'array', to: :array
48
+ map 'matrix', to: :matrix
49
+ map 'id', to: :id
50
+ map 'title', to: :title
51
+ map 'dictRef', to: :dict_ref
52
+ map 'convention', to: :convention
53
+ map 'ref', to: :ref
54
+ map 'value', to: :value
55
+ map 'constraint', to: :constraint
56
+ map 'name', to: :name
57
+ map 'role', to: :role
38
58
  end
39
59
  end
40
60
  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::ParameterList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -15,16 +17,33 @@ module Chemicalml
15
17
  attribute :convention, :string
16
18
  attribute :ref, :string
17
19
  attribute :role, :string
20
+ attribute :parameter_lists, :parameterList, collection: true
21
+
18
22
  xml do
19
23
  namespace Chemicalml::Cml::Namespace
20
- root "parameterList"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_element "parameter", to: :parameters
25
- map_attribute "convention", to: :convention
26
- map_attribute "ref", to: :ref
27
- map_attribute "role", to: :role
24
+ root 'parameterList'
25
+ map_attribute 'id', to: :id
26
+ map_attribute 'title', to: :title
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_element 'parameter', to: :parameters
29
+ map_element 'parameterList', to: :parameter_lists
30
+ map_attribute 'convention', to: :convention
31
+ map_attribute 'ref', to: :ref
32
+ map_attribute 'role', to: :role
33
+ end
34
+ key_value do
35
+ map 'metadataList', to: :metadata_lists
36
+ map 'label', to: :labels
37
+ map 'name', to: :names
38
+ map 'description', to: :descriptions
39
+ map 'parameter', to: :parameters
40
+ map 'parameterList', to: :parameter_lists
41
+ map 'id', to: :id
42
+ map 'title', to: :title
43
+ map 'dictRef', to: :dict_ref
44
+ map 'convention', to: :convention
45
+ map 'ref', to: :ref
46
+ map 'role', to: :role
28
47
  end
29
48
  end
30
49
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Particle
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -18,15 +19,25 @@ module Chemicalml
18
19
  attribute :z3, :string
19
20
  xml do
20
21
  namespace Chemicalml::Cml::Namespace
21
- root "particle"
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
- map_attribute "type", to: :type
27
- map_attribute "x3", to: :x3
28
- map_attribute "y3", to: :y3
29
- map_attribute "z3", to: :z3
22
+ root 'particle'
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 'type', to: :type
28
+ map_attribute 'x3', to: :x3
29
+ map_attribute 'y3', to: :y3
30
+ map_attribute 'z3', to: :z3
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 'type', to: :type
38
+ map 'x3', to: :x3
39
+ map 'y3', to: :y3
40
+ map 'z3', to: :z3
30
41
  end
31
42
  end
32
43
  end
@@ -7,6 +7,12 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Peak
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
12
+ attribute :atoms, :atom, collection: true
13
+ attribute :bonds, :bond, collection: true
14
+ attribute :molecules, :molecule, collection: true
15
+ attribute :peak_structures, :peakStructure, collection: true
10
16
  attribute :id, :string
11
17
  attribute :title, :string
12
18
  attribute :dict_ref, :string
@@ -31,36 +37,77 @@ module Chemicalml
31
37
  attribute :y_max, :string
32
38
  attribute :y_width, :string
33
39
  attribute :atom_refs, :string
40
+ attribute :atom_refs_values, :string, collection: true
34
41
  attribute :bond_refs, :string
35
42
  attribute :molecule_refs, :string
36
43
  xml do
37
44
  namespace Chemicalml::Cml::Namespace
38
- root "peak"
39
- map_attribute "id", to: :id
40
- map_attribute "title", to: :title
41
- map_attribute "dictRef", to: :dict_ref
42
- map_attribute "convention", to: :convention
43
- map_attribute "xValue", to: :xValue
44
- map_attribute "xUnits", to: :xUnits
45
- map_attribute "xMultiplier", to: :xMultiplier
46
- map_attribute "yValue", to: :yValue
47
- map_attribute "yUnits", to: :yUnits
48
- map_attribute "yMultiplicity", to: :yMultiplicity
49
- map_attribute "ref", to: :ref
50
- map_attribute "peakHeight", to: :peak_height
51
- map_attribute "peakMultiplicity", to: :peak_multiplicity
52
- map_attribute "peakShape", to: :peak_shape
53
- map_attribute "integral", to: :integral
54
- map_attribute "peakUnits", to: :peak_units
55
- map_attribute "xMin", to: :x_min
56
- map_attribute "xMax", to: :x_max
57
- map_attribute "xWidth", to: :x_width
58
- map_attribute "yMin", to: :y_min
59
- map_attribute "yMax", to: :y_max
60
- map_attribute "yWidth", to: :y_width
61
- map_attribute "atomRefs", to: :atom_refs
62
- map_attribute "bondRefs", to: :bond_refs
63
- map_attribute "moleculeRefs", to: :molecule_refs
45
+ root 'peak'
46
+ map_element 'atom', to: :atoms
47
+ map_element 'bond', to: :bonds
48
+ map_element 'molecule', to: :molecules
49
+ map_element 'peakStructure', to: :peak_structures
50
+ map_attribute 'id', to: :id
51
+ map_attribute 'title', to: :title
52
+ map_attribute 'dictRef', to: :dict_ref
53
+ map_attribute 'convention', to: :convention
54
+ map_attribute 'xValue', to: :xValue
55
+ map_attribute 'xUnits', to: :xUnits
56
+ map_attribute 'xMultiplier', to: :xMultiplier
57
+ map_attribute 'yValue', to: :yValue
58
+ map_attribute 'yUnits', to: :yUnits
59
+ map_attribute 'yMultiplicity', to: :yMultiplicity
60
+ map_attribute 'ref', to: :ref
61
+ map_attribute 'peakHeight', to: :peak_height
62
+ map_attribute 'peakMultiplicity', to: :peak_multiplicity
63
+ map_attribute 'peakShape', to: :peak_shape
64
+ map_attribute 'integral', to: :integral
65
+ map_attribute 'peakUnits', to: :peak_units
66
+ map_attribute 'xMin', to: :x_min
67
+ map_attribute 'xMax', to: :x_max
68
+ map_attribute 'xWidth', to: :x_width
69
+ map_attribute 'yMin', to: :y_min
70
+ map_attribute 'yMax', to: :y_max
71
+ map_attribute 'yWidth', to: :y_width
72
+ map_attribute 'atomRefs', to: :atom_refs
73
+ map_element 'atomRefs', to: :atom_refs_values
74
+ map_attribute 'bondRefs', to: :bond_refs
75
+ map_attribute 'moleculeRefs', to: :molecule_refs
76
+ end
77
+ key_value do
78
+ map 'metadataList', to: :metadata_lists
79
+ map 'label', to: :labels
80
+ map 'name', to: :names
81
+ map 'description', to: :descriptions
82
+ map 'atom', to: :atoms
83
+ map 'bond', to: :bonds
84
+ map 'molecule', to: :molecules
85
+ map 'peakStructure', to: :peak_structures
86
+ map 'id', to: :id
87
+ map 'title', to: :title
88
+ map 'dictRef', to: :dict_ref
89
+ map 'convention', to: :convention
90
+ map 'xValue', to: :xValue
91
+ map 'xUnits', to: :xUnits
92
+ map 'xMultiplier', to: :xMultiplier
93
+ map 'yValue', to: :yValue
94
+ map 'yUnits', to: :yUnits
95
+ map 'yMultiplicity', to: :yMultiplicity
96
+ map 'ref', to: :ref
97
+ map 'peakHeight', to: :peak_height
98
+ map 'peakMultiplicity', to: :peak_multiplicity
99
+ map 'peakShape', to: :peak_shape
100
+ map 'integral', to: :integral
101
+ map 'peakUnits', to: :peak_units
102
+ map 'xMin', to: :x_min
103
+ map 'xMax', to: :x_max
104
+ map 'xWidth', to: :x_width
105
+ map 'yMin', to: :y_min
106
+ map 'yMax', to: :y_max
107
+ map 'yWidth', to: :y_width
108
+ map 'atomRefs', to: :atom_refs_values
109
+ map 'bondRefs', to: :bond_refs
110
+ map 'moleculeRefs', to: :molecule_refs
64
111
  end
65
112
  end
66
113
  end