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,12 +7,14 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::PeakGroup
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 :peaks, :peak, collection: true
17
+ attribute :peaks, :peak, collection: true
16
18
 
17
19
  attribute :ref, :string
18
20
  attribute :peak_height, :string
@@ -33,33 +35,67 @@ module Chemicalml
33
35
  attribute :atom_refs, :string
34
36
  attribute :bond_refs, :string
35
37
  attribute :molecule_refs, :string
38
+ attribute :peak_groups, :peakGroup, collection: true
39
+
36
40
  xml do
37
41
  namespace Chemicalml::Cml::Namespace
38
- map_element "peak", to: :peaks
39
- root "peakGroup"
40
- map_attribute "id", to: :id
41
- map_attribute "title", to: :title
42
- map_attribute "dictRef", to: :dict_ref
43
- map_attribute "convention", to: :convention
44
- map_attribute "ref", to: :ref
45
- map_attribute "peakHeight", to: :peak_height
46
- map_attribute "peakMultiplicity", to: :peak_multiplicity
47
- map_attribute "peakShape", to: :peak_shape
48
- map_attribute "integral", to: :integral
49
- map_attribute "peakUnits", to: :peak_units
50
- map_attribute "xMin", to: :x_min
51
- map_attribute "xMax", to: :x_max
52
- map_attribute "xValue", to: :x_value
53
- map_attribute "xWidth", to: :x_width
54
- map_attribute "xUnits", to: :x_units
55
- map_attribute "yMin", to: :y_min
56
- map_attribute "yMax", to: :y_max
57
- map_attribute "yValue", to: :y_value
58
- map_attribute "yWidth", to: :y_width
59
- map_attribute "yUnits", to: :y_units
60
- map_attribute "atomRefs", to: :atom_refs
61
- map_attribute "bondRefs", to: :bond_refs
62
- map_attribute "moleculeRefs", to: :molecule_refs
42
+ map_element 'peak', to: :peaks
43
+ map_element 'peakGroup', to: :peak_groups
44
+ root 'peakGroup'
45
+ map_attribute 'id', to: :id
46
+ map_attribute 'title', to: :title
47
+ map_attribute 'dictRef', to: :dict_ref
48
+ map_attribute 'convention', to: :convention
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 'xValue', to: :x_value
58
+ map_attribute 'xWidth', to: :x_width
59
+ map_attribute 'xUnits', to: :x_units
60
+ map_attribute 'yMin', to: :y_min
61
+ map_attribute 'yMax', to: :y_max
62
+ map_attribute 'yValue', to: :y_value
63
+ map_attribute 'yWidth', to: :y_width
64
+ map_attribute 'yUnits', to: :y_units
65
+ map_attribute 'atomRefs', to: :atom_refs
66
+ map_attribute 'bondRefs', to: :bond_refs
67
+ map_attribute 'moleculeRefs', to: :molecule_refs
68
+ end
69
+ key_value do
70
+ map 'metadataList', to: :metadata_lists
71
+ map 'label', to: :labels
72
+ map 'name', to: :names
73
+ map 'description', to: :descriptions
74
+ map 'peak', to: :peaks
75
+ map 'peakGroup', to: :peak_groups
76
+ map 'id', to: :id
77
+ map 'title', to: :title
78
+ map 'dictRef', to: :dict_ref
79
+ map 'convention', to: :convention
80
+ map 'ref', to: :ref
81
+ map 'peakHeight', to: :peak_height
82
+ map 'peakMultiplicity', to: :peak_multiplicity
83
+ map 'peakShape', to: :peak_shape
84
+ map 'integral', to: :integral
85
+ map 'peakUnits', to: :peak_units
86
+ map 'xMin', to: :x_min
87
+ map 'xMax', to: :x_max
88
+ map 'xValue', to: :x_value
89
+ map 'xWidth', to: :x_width
90
+ map 'xUnits', to: :x_units
91
+ map 'yMin', to: :y_min
92
+ map 'yMax', to: :y_max
93
+ map 'yValue', to: :y_value
94
+ map 'yWidth', to: :y_width
95
+ map 'yUnits', to: :y_units
96
+ map 'atomRefs', to: :atom_refs
97
+ map 'bondRefs', to: :bond_refs
98
+ map 'moleculeRefs', to: :molecule_refs
63
99
  end
64
100
  end
65
101
  end
@@ -7,25 +7,40 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::PeakList
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 :peaks, :peak, collection: true
17
+ attribute :peaks, :peak, collection: true
16
18
  attribute :peak_groups, :peakGroup, collection: true
17
19
 
18
20
  attribute :ref, :string
19
21
  xml do
20
22
  namespace Chemicalml::Cml::Namespace
21
- map_element "peak", to: :peaks
22
- map_element "peakGroup", to: :peak_groups
23
- root "peakList"
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
23
+ map_element 'peak', to: :peaks
24
+ map_element 'peakGroup', to: :peak_groups
25
+ root 'peakList'
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_attribute 'ref', to: :ref
31
+ end
32
+ key_value do
33
+ map 'metadataList', to: :metadata_lists
34
+ map 'label', to: :labels
35
+ map 'name', to: :names
36
+ map 'description', to: :descriptions
37
+ map 'peak', to: :peaks
38
+ map 'peakGroup', to: :peak_groups
39
+ map 'id', to: :id
40
+ map 'title', to: :title
41
+ map 'dictRef', to: :dict_ref
42
+ map 'convention', to: :convention
43
+ map 'ref', to: :ref
29
44
  end
30
45
  end
31
46
  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::PeakStructure
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -20,21 +22,46 @@ module Chemicalml
20
22
  attribute :units, :string
21
23
  attribute :atom_refs, :string
22
24
  attribute :bond_refs, :string
25
+ attribute :type, :string
26
+ attribute :peak_structures, :peakStructure, collection: true
27
+
23
28
  xml do
29
+ map_element 'peakStructure', to: :peak_structures
24
30
  namespace Chemicalml::Cml::Namespace
25
- root "peakStructure"
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_attribute "peakShape", to: :peakShape
31
- map_attribute "ref", to: :ref
32
- map_attribute "peakMultiplicity", to: :peak_multiplicity
33
- map_attribute "peakStructureType", to: :peak_structure_type
34
- map_attribute "value", to: :value
35
- map_attribute "units", to: :units
36
- map_attribute "atomRefs", to: :atom_refs
37
- map_attribute "bondRefs", to: :bond_refs
31
+ root 'peakStructure'
32
+ map_attribute 'id', to: :id
33
+ map_attribute 'title', to: :title
34
+ map_attribute 'dictRef', to: :dict_ref
35
+ map_attribute 'convention', to: :convention
36
+ map_attribute 'peakShape', to: :peakShape
37
+ map_attribute 'ref', to: :ref
38
+ map_attribute 'peakMultiplicity', to: :peak_multiplicity
39
+ map_attribute 'peakStructureType', to: :peak_structure_type
40
+ map_attribute 'value', to: :value
41
+ map_attribute 'units', to: :units
42
+ map_attribute 'atomRefs', to: :atom_refs
43
+ map_attribute 'bondRefs', to: :bond_refs
44
+ map_attribute 'type', to: :type
45
+ end
46
+ key_value do
47
+ map 'metadataList', to: :metadata_lists
48
+ map 'label', to: :labels
49
+ map 'name', to: :names
50
+ map 'description', to: :descriptions
51
+ map 'peakStructure', to: :peak_structures
52
+ map 'id', to: :id
53
+ map 'title', to: :title
54
+ map 'dictRef', to: :dict_ref
55
+ map 'convention', to: :convention
56
+ map 'peakShape', to: :peakShape
57
+ map 'ref', to: :ref
58
+ map 'peakMultiplicity', to: :peak_multiplicity
59
+ map 'peakStructureType', to: :peak_structure_type
60
+ map 'value', to: :value
61
+ map 'units', to: :units
62
+ map 'atomRefs', to: :atom_refs
63
+ map 'bondRefs', to: :bond_refs
64
+ map 'type', to: :type
38
65
  end
39
66
  end
40
67
  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::Plane3
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,13 +17,20 @@ module Chemicalml
16
17
  attribute :units, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "plane3"
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
20
+ root 'plane3'
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
24
25
  map_content to: :content
25
- map_attribute "units", to: :units
26
+ map_attribute 'units', to: :units
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 'units', to: :units
26
34
  end
27
35
  end
28
36
  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::Point3
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,13 +17,20 @@ module Chemicalml
16
17
  attribute :units, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "point3"
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
20
+ root 'point3'
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
24
25
  map_content to: :content
25
- map_attribute "units", to: :units
26
+ map_attribute 'units', to: :units
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 'units', to: :units
26
34
  end
27
35
  end
28
36
  end
@@ -7,20 +7,31 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Potential
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 :formRef, :string
16
+ attribute :form, :string
15
17
 
16
18
  xml do
17
19
  namespace Chemicalml::Cml::Namespace
18
- root "potential"
19
- map_attribute "id", to: :id
20
- map_attribute "title", to: :title
21
- map_attribute "dictRef", to: :dict_ref
22
- map_attribute "convention", to: :convention
23
- map_attribute "formRef", to: :formRef
20
+ root 'potential'
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 'formRef', to: :formRef
26
+ map_attribute 'form', to: :form
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 'formRef', to: :formRef
34
+ map 'form', to: :form
24
35
  end
25
36
  end
26
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::PotentialForm
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,36 @@ module Chemicalml
14
16
  attribute :type, :string
15
17
 
16
18
  attribute :name, :string
19
+ attribute :args, :arg, collection: true
20
+ attribute :expression, :expression
21
+ attribute :parameters, :parameter, collection: true
17
22
  xml do
18
23
  namespace Chemicalml::Cml::Namespace
19
- root "potentialForm"
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 "name", to: :name
24
+ root 'potentialForm'
25
+ map_attribute 'id', to: :id
26
+ map_attribute 'title', to: :title
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_attribute 'convention', to: :convention
29
+ map_attribute 'type', to: :type
30
+ map_attribute 'name', to: :name
31
+ map_element 'arg', to: :args
32
+ map_element 'expression', to: :expression
33
+ map_element 'parameter', to: :parameters
34
+ end
35
+ key_value do
36
+ map 'metadataList', to: :metadata_lists
37
+ map 'label', to: :labels
38
+ map 'name', to: :names
39
+ map 'description', to: :descriptions
40
+ map 'arg', to: :args
41
+ map 'expression', to: :expression
42
+ map 'parameter', to: :parameters
43
+ map 'id', to: :id
44
+ map 'title', to: :title
45
+ map 'dictRef', to: :dict_ref
46
+ map 'convention', to: :convention
47
+ map 'type', to: :type
48
+ map 'name', to: :name
26
49
  end
27
50
  end
28
51
  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::PotentialList
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 :potentials, :potential, collection: true
16
+ attribute :potentials, :potential, collection: true
16
17
 
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- map_element "potential", to: :potentials
20
- root "potentialList"
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 'potential', to: :potentials
21
+ root 'potentialList'
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 'potential', to: :potentials
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
@@ -7,7 +7,15 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Product
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :substance, :substance
13
+ attribute :substance_lists, :substanceList, collection: true
14
+ attribute :molecule, :molecule
15
+ attribute :electrons, :electron, collection: true
16
+ attribute :formula, :formula
17
+ attribute :amounts, :amount, collection: true
18
+ attribute :identifier, :identifier
11
19
 
12
20
  attribute :dict_ref, :string
13
21
  attribute :convention, :string
@@ -19,16 +27,43 @@ module Chemicalml
19
27
  attribute :state, :string
20
28
  xml do
21
29
  namespace Chemicalml::Cml::Namespace
22
- root "product"
23
- map_element "substance", to: :substance
24
- map_attribute "dictRef", to: :dict_ref
25
- map_attribute "convention", to: :convention
26
- map_attribute "title", to: :title
27
- map_attribute "id", to: :id
28
- map_attribute "ref", to: :ref
29
- map_attribute "role", to: :role
30
- map_attribute "count", to: :count
31
- map_attribute "state", to: :state
30
+ root 'product'
31
+ map_element 'substance', to: :substance
32
+ map_element 'substanceList', to: :substance_lists
33
+ map_element 'molecule', to: :molecule
34
+ map_element 'electron', to: :electrons
35
+ map_element 'formula', to: :formula
36
+ map_element 'amount', to: :amounts
37
+ map_element 'identifier', to: :identifier
38
+ map_attribute 'dictRef', to: :dict_ref
39
+ map_attribute 'convention', to: :convention
40
+ map_attribute 'title', to: :title
41
+ map_attribute 'id', to: :id
42
+ map_attribute 'ref', to: :ref
43
+ map_attribute 'role', to: :role
44
+ map_attribute 'count', to: :count
45
+ map_attribute 'state', to: :state
46
+ end
47
+ key_value do
48
+ map 'metadataList', to: :metadata_lists
49
+ map 'label', to: :labels
50
+ map 'name', to: :names
51
+ map 'description', to: :descriptions
52
+ map 'substance', to: :substance
53
+ map 'substanceList', to: :substance_lists
54
+ map 'molecule', to: :molecule
55
+ map 'electron', to: :electrons
56
+ map 'formula', to: :formula
57
+ map 'amount', to: :amounts
58
+ map 'identifier', to: :identifier
59
+ map 'dictRef', to: :dict_ref
60
+ map 'convention', to: :convention
61
+ map 'title', to: :title
62
+ map 'id', to: :id
63
+ map 'ref', to: :ref
64
+ map 'role', to: :role
65
+ map 'count', to: :count
66
+ map 'state', to: :state
32
67
  end
33
68
  end
34
69
  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::ProductList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :products, :product, collection: true
11
13
 
12
14
  attribute :dict_ref, :string
@@ -16,17 +18,35 @@ module Chemicalml
16
18
  attribute :ref, :string
17
19
  attribute :role, :string
18
20
  attribute :count, :string
21
+ attribute :product_lists, :productList, collection: true
22
+
19
23
  xml do
20
24
  namespace Chemicalml::Cml::Namespace
21
- root "productList"
22
- map_element "product", to: :products
23
- map_attribute "dictRef", to: :dict_ref
24
- map_attribute "convention", to: :convention
25
- map_attribute "title", to: :title
26
- map_attribute "id", to: :id
27
- map_attribute "ref", to: :ref
28
- map_attribute "role", to: :role
29
- map_attribute "count", to: :count
25
+ root 'productList'
26
+ map_element 'product', to: :products
27
+ map_element 'productList', to: :product_lists
28
+ map_attribute 'dictRef', to: :dict_ref
29
+ map_attribute 'convention', to: :convention
30
+ map_attribute 'title', to: :title
31
+ map_attribute 'id', to: :id
32
+ map_attribute 'ref', to: :ref
33
+ map_attribute 'role', to: :role
34
+ map_attribute 'count', to: :count
35
+ end
36
+ key_value do
37
+ map 'metadataList', to: :metadata_lists
38
+ map 'label', to: :labels
39
+ map 'name', to: :names
40
+ map 'description', to: :descriptions
41
+ map 'product', to: :products
42
+ map 'productList', to: :product_lists
43
+ map 'dictRef', to: :dict_ref
44
+ map 'convention', to: :convention
45
+ map 'title', to: :title
46
+ map 'id', to: :id
47
+ map 'ref', to: :ref
48
+ map 'role', to: :role
49
+ map 'count', to: :count
30
50
  end
31
51
  end
32
52
  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::Property
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -20,17 +22,33 @@ module Chemicalml
20
22
  attribute :state, :string
21
23
  xml do
22
24
  namespace Chemicalml::Cml::Namespace
23
- root "property"
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_element "scalar", to: :scalar
29
- map_element "array", to: :array
30
- map_element "matrix", to: :matrix
31
- map_attribute "ref", to: :ref
32
- map_attribute "role", to: :role
33
- map_attribute "state", to: :state
25
+ root 'property'
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 'role', to: :role
35
+ map_attribute 'state', to: :state
36
+ end
37
+ key_value do
38
+ map 'metadataList', to: :metadata_lists
39
+ map 'label', to: :labels
40
+ map 'name', to: :names
41
+ map 'description', to: :descriptions
42
+ map 'scalar', to: :scalar
43
+ map 'array', to: :array
44
+ map 'matrix', to: :matrix
45
+ map 'id', to: :id
46
+ map 'title', to: :title
47
+ map 'dictRef', to: :dict_ref
48
+ map 'convention', to: :convention
49
+ map 'ref', to: :ref
50
+ map 'role', to: :role
51
+ map 'state', to: :state
34
52
  end
35
53
  end
36
54
  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::PropertyList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -17,14 +19,27 @@ module Chemicalml
17
19
  attribute :role, :string
18
20
  xml do
19
21
  namespace Chemicalml::Cml::Namespace
20
- root "propertyList"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_element "property", to: :properties
25
- map_attribute "convention", to: :convention
26
- map_attribute "ref", to: :ref
27
- map_attribute "role", to: :role
22
+ root 'propertyList'
23
+ map_attribute 'id', to: :id
24
+ map_attribute 'title', to: :title
25
+ map_attribute 'dictRef', to: :dict_ref
26
+ map_element 'property', to: :properties
27
+ map_attribute 'convention', to: :convention
28
+ map_attribute 'ref', to: :ref
29
+ map_attribute 'role', to: :role
30
+ end
31
+ key_value do
32
+ map 'metadataList', to: :metadata_lists
33
+ map 'label', to: :labels
34
+ map 'name', to: :names
35
+ map 'description', to: :descriptions
36
+ map 'property', to: :properties
37
+ map 'id', to: :id
38
+ map 'title', to: :title
39
+ map 'dictRef', to: :dict_ref
40
+ map 'convention', to: :convention
41
+ map 'ref', to: :ref
42
+ map 'role', to: :role
28
43
  end
29
44
  end
30
45
  end