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,15 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Reactant
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 "reactant"
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 'reactant'
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::ReactantList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :reactants, :reactant, 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 :reactant_lists, :reactantList, collection: true
22
+
19
23
  xml do
20
24
  namespace Chemicalml::Cml::Namespace
21
- root "reactantList"
22
- map_element "reactant", to: :reactants
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 'reactantList'
26
+ map_element 'reactant', to: :reactants
27
+ map_element 'reactantList', to: :reactant_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 'reactant', to: :reactants
42
+ map 'reactantList', to: :reactant_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::Reaction
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :type, :string
@@ -15,10 +17,16 @@ module Chemicalml
15
17
  attribute :convention, :string
16
18
  attribute :reactant_list, :reactantList
17
19
  attribute :product_list, :productList
18
-
19
- attribute :spectator_list, :spectatorList
20
+ attribute :spectator_list, :spectatorList
21
+ attribute :substance_lists, :substanceList, collection: true
20
22
  attribute :condition_list, :conditionList
21
- attribute :metadata_lists, :metadataList, collection: true
23
+ attribute :identifiers, :identifier, collection: true
24
+ attribute :objects, :object, collection: true
25
+ attribute :property_lists, :propertyList, collection: true
26
+ attribute :maps, :map, collection: true
27
+ attribute :mechanisms, :mechanism, collection: true
28
+ attribute :reactive_centres, :reactiveCentre, collection: true
29
+ attribute :transition_states, :transitionState, collection: true
22
30
 
23
31
  attribute :reaction_format, :string
24
32
  attribute :ref, :string
@@ -30,23 +38,69 @@ module Chemicalml
30
38
  attribute :yield, :string
31
39
  xml do
32
40
  namespace Chemicalml::Cml::Namespace
33
- root "reaction"
34
- map_attribute "id", to: :id
35
- map_attribute "title", to: :title
36
- map_attribute "type", to: :type
37
- map_attribute "state", to: :state
38
- map_attribute "dictRef", to: :dict_ref
39
- map_attribute "convention", to: :convention
40
- map_element "reactantList", to: :reactant_list
41
- map_element "productList", to: :product_list
42
- map_attribute "reactionFormat", to: :reaction_format
43
- map_attribute "ref", to: :ref
44
- map_attribute "reactionRole", to: :reaction_role
45
- map_attribute "reactionType", to: :reaction_type
46
- map_attribute "atomMap", to: :atom_map
47
- map_attribute "electronMap", to: :electron_map
48
- map_attribute "bondMap", to: :bond_map
49
- map_attribute "yield", to: :yield
41
+ root 'reaction'
42
+ map_attribute 'id', to: :id
43
+ map_attribute 'title', to: :title
44
+ map_attribute 'type', to: :type
45
+ map_attribute 'state', to: :state
46
+ map_attribute 'dictRef', to: :dict_ref
47
+ map_attribute 'convention', to: :convention
48
+ map_element 'reactantList', to: :reactant_list
49
+ map_element 'productList', to: :product_list
50
+ map_element 'spectatorList', to: :spectator_list
51
+ map_element 'substanceList', to: :substance_lists
52
+ map_element 'conditionList', to: :condition_list
53
+ map_element 'identifier', to: :identifiers
54
+ map_element 'object', to: :objects
55
+ map_element 'propertyList', to: :property_lists
56
+ map_element 'map', to: :maps
57
+ map_element 'mechanism', to: :mechanisms
58
+ map_element 'reactiveCentre', to: :reactive_centres
59
+ map_element 'transitionState', to: :transition_states
60
+ map_attribute 'reactionFormat', to: :reaction_format
61
+ map_attribute 'format', to: :reaction_format
62
+ map_attribute 'ref', to: :ref
63
+ map_attribute 'reactionRole', to: :reaction_role
64
+ map_attribute 'role', to: :reaction_role
65
+ map_attribute 'reactionType', to: :reaction_type
66
+ map_attribute 'atomMap', to: :atom_map
67
+ map_attribute 'electronMap', to: :electron_map
68
+ map_attribute 'bondMap', to: :bond_map
69
+ map_attribute 'yield', to: :yield
70
+ end
71
+ key_value do
72
+ map 'metadataList', to: :metadata_lists
73
+ map 'label', to: :labels
74
+ map 'name', to: :names
75
+ map 'description', to: :descriptions
76
+ map 'reactantList', to: :reactant_list
77
+ map 'productList', to: :product_list
78
+ map 'spectatorList', to: :spectator_list
79
+ map 'substanceList', to: :substance_lists
80
+ map 'conditionList', to: :condition_list
81
+ map 'identifier', to: :identifiers
82
+ map 'object', to: :objects
83
+ map 'propertyList', to: :property_lists
84
+ map 'map', to: :maps
85
+ map 'mechanism', to: :mechanisms
86
+ map 'reactiveCentre', to: :reactive_centres
87
+ map 'transitionState', to: :transition_states
88
+ map 'id', to: :id
89
+ map 'title', to: :title
90
+ map 'type', to: :type
91
+ map 'state', to: :state
92
+ map 'dictRef', to: :dict_ref
93
+ map 'convention', to: :convention
94
+ map 'reactionFormat', to: :reaction_format
95
+ map 'format', to: :reaction_format
96
+ map 'ref', to: :ref
97
+ map 'reactionRole', to: :reaction_role
98
+ map 'role', to: :reaction_role
99
+ map 'reactionType', to: :reaction_type
100
+ map 'atomMap', to: :atom_map
101
+ map 'electronMap', to: :electron_map
102
+ map 'bondMap', to: :bond_map
103
+ map 'yield', to: :yield
50
104
  end
51
105
  end
52
106
  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::ReactionList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :reactions, :reaction, collection: true
11
13
 
12
14
  attribute :dict_ref, :string
@@ -17,14 +19,27 @@ module Chemicalml
17
19
  attribute :ref, :string
18
20
  xml do
19
21
  namespace Chemicalml::Cml::Namespace
20
- root "reactionList"
21
- map_element "reaction", to: :reactions
22
- map_attribute "dictRef", to: :dict_ref
23
- map_attribute "convention", to: :convention
24
- map_attribute "title", to: :title
25
- map_attribute "id", to: :id
26
- map_attribute "name", to: :name
27
- map_attribute "ref", to: :ref
22
+ root 'reactionList'
23
+ map_element 'reaction', to: :reactions
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 'name', to: :name
29
+ map_attribute 'ref', to: :ref
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 'reaction', to: :reactions
37
+ map 'dictRef', to: :dict_ref
38
+ map 'convention', to: :convention
39
+ map 'title', to: :title
40
+ map 'id', to: :id
41
+ map 'name', to: :name
42
+ map 'ref', to: :ref
28
43
  end
29
44
  end
30
45
  end
@@ -7,12 +7,14 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ReactionScheme
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 :reaction_step_lists, :reactionStepList, collection: true
17
+ attribute :reaction_step_lists, :reactionStepList, collection: true
16
18
  attribute :reactions, :reaction, collection: true
17
19
 
18
20
  attribute :ref, :string
@@ -20,20 +22,48 @@ module Chemicalml
20
22
  attribute :reaction_type, :string
21
23
  attribute :state, :string
22
24
  attribute :reaction_format, :string
25
+ attribute :type, :string
26
+ attribute :reaction_schemes, :reactionScheme, collection: true
27
+
23
28
  xml do
24
29
  namespace Chemicalml::Cml::Namespace
25
- map_element "reactionStepList", to: :reaction_step_lists
26
- map_element "reaction", to: :reactions
27
- root "reactionScheme"
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 "ref", to: :ref
33
- map_attribute "reactionRole", to: :reaction_role
34
- map_attribute "reactionType", to: :reaction_type
35
- map_attribute "state", to: :state
36
- map_attribute "reactionFormat", to: :reaction_format
30
+ map_element 'reactionStepList', to: :reaction_step_lists
31
+ map_element 'reactionScheme', to: :reaction_schemes
32
+ map_element 'reaction', to: :reactions
33
+ root 'reactionScheme'
34
+ map_attribute 'id', to: :id
35
+ map_attribute 'title', to: :title
36
+ map_attribute 'dictRef', to: :dict_ref
37
+ map_attribute 'convention', to: :convention
38
+ map_attribute 'ref', to: :ref
39
+ map_attribute 'reactionRole', to: :reaction_role
40
+ map_attribute 'role', to: :reaction_role
41
+ map_attribute 'reactionType', to: :reaction_type
42
+ map_attribute 'type', to: :reaction_type
43
+ map_attribute 'state', to: :state
44
+ map_attribute 'reactionFormat', to: :reaction_format
45
+ map_attribute 'format', to: :reaction_format
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 'reactionStepList', to: :reaction_step_lists
53
+ map 'reactionScheme', to: :reaction_schemes
54
+ map 'reaction', to: :reactions
55
+ map 'id', to: :id
56
+ map 'title', to: :title
57
+ map 'dictRef', to: :dict_ref
58
+ map 'convention', to: :convention
59
+ map 'ref', to: :ref
60
+ map 'reactionRole', to: :reaction_role
61
+ map 'role', to: :reaction_role
62
+ map 'reactionType', to: :reaction_type
63
+ map 'type', to: :reaction_type
64
+ map 'state', to: :state
65
+ map 'reactionFormat', to: :reaction_format
66
+ map 'format', to: :reaction_format
37
67
  end
38
68
  end
39
69
  end
@@ -7,12 +7,14 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ReactionStep
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 :reaction, :reaction
17
+ attribute :reaction, :reaction
16
18
  attribute :reactant_list, :reactantList
17
19
  attribute :product_list, :productList
18
20
 
@@ -21,17 +23,33 @@ module Chemicalml
21
23
  attribute :ratio, :string
22
24
  xml do
23
25
  namespace Chemicalml::Cml::Namespace
24
- map_element "reaction", to: :reaction
25
- map_element "reactantList", to: :reactant_list
26
- map_element "productList", to: :product_list
27
- root "reactionStep"
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 "ref", to: :ref
33
- map_attribute "yield", to: :yield
34
- map_attribute "ratio", to: :ratio
26
+ map_element 'reaction', to: :reaction
27
+ map_element 'reactantList', to: :reactant_list
28
+ map_element 'productList', to: :product_list
29
+ root 'reactionStep'
30
+ map_attribute 'id', to: :id
31
+ map_attribute 'title', to: :title
32
+ map_attribute 'dictRef', to: :dict_ref
33
+ map_attribute 'convention', to: :convention
34
+ map_attribute 'ref', to: :ref
35
+ map_attribute 'yield', to: :yield
36
+ map_attribute 'ratio', to: :ratio
37
+ end
38
+ key_value do
39
+ map 'metadataList', to: :metadata_lists
40
+ map 'label', to: :labels
41
+ map 'name', to: :names
42
+ map 'description', to: :descriptions
43
+ map 'reaction', to: :reaction
44
+ map 'reactantList', to: :reactant_list
45
+ map 'productList', to: :product_list
46
+ map 'id', to: :id
47
+ map 'title', to: :title
48
+ map 'dictRef', to: :dict_ref
49
+ map 'convention', to: :convention
50
+ map 'ref', to: :ref
51
+ map 'yield', to: :yield
52
+ map 'ratio', to: :ratio
35
53
  end
36
54
  end
37
55
  end
@@ -7,12 +7,14 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ReactionStepList
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 :reaction_steps, :reactionStep, collection: true
17
+ attribute :reaction_steps, :reactionStep, collection: true
16
18
 
17
19
  attribute :ref, :string
18
20
  attribute :reaction_step_list_type, :string
@@ -20,16 +22,33 @@ module Chemicalml
20
22
  attribute :type, :string
21
23
  xml do
22
24
  namespace Chemicalml::Cml::Namespace
23
- map_element "reactionStep", to: :reaction_steps
24
- root "reactionStepList"
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 "ref", to: :ref
30
- map_attribute "reactionStepListType", to: :reaction_step_list_type
31
- map_attribute "reactionFormat", to: :reaction_format
32
- map_attribute "type", to: :type
25
+ map_element 'reactionStep', to: :reaction_steps
26
+ root 'reactionStepList'
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
+ map_attribute 'reactionStepListType', to: :reaction_step_list_type
33
+ map_attribute 'reactionFormat', to: :reaction_format
34
+ map_attribute 'format', to: :reaction_format
35
+ map_attribute 'type', to: :type
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 'reactionStep', to: :reaction_steps
43
+ map 'id', to: :id
44
+ map 'title', to: :title
45
+ map 'dictRef', to: :dict_ref
46
+ map 'convention', to: :convention
47
+ map 'ref', to: :ref
48
+ map 'reactionStepListType', to: :reaction_step_list_type
49
+ map 'reactionFormat', to: :reaction_format
50
+ map 'format', to: :reaction_format
51
+ map 'type', to: :type
33
52
  end
34
53
  end
35
54
  end
@@ -7,20 +7,45 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ReactiveCentre
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
  attribute :atomRefs, :string
17
+ attribute :atom_sets, :atomSet, collection: true
18
+ attribute :atom_type_lists, :atomTypeList, collection: true
19
+ attribute :bond_sets, :bondSet, collection: true
20
+ attribute :bond_type_lists, :bondTypeList, collection: true
15
21
 
16
22
  xml do
17
23
  namespace Chemicalml::Cml::Namespace
18
- root "reactiveCentre"
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 "atomRefs", to: :atomRefs
24
+ root 'reactiveCentre'
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 'atomRefs', to: :atomRefs
30
+ map_element 'atomSet', to: :atom_sets
31
+ map_element 'atomTypeList', to: :atom_type_lists
32
+ map_element 'bondSet', to: :bond_sets
33
+ map_element 'bondTypeList', to: :bond_type_lists
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 'atomSet', to: :atom_sets
41
+ map 'atomTypeList', to: :atom_type_lists
42
+ map 'bondSet', to: :bond_sets
43
+ map 'bondTypeList', to: :bond_type_lists
44
+ map 'id', to: :id
45
+ map 'title', to: :title
46
+ map 'dictRef', to: :dict_ref
47
+ map 'convention', to: :convention
48
+ map 'atomRefs', to: :atomRefs
24
49
  end
25
50
  end
26
51
  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::Region
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 :region_refs, :string
19
20
  xml do
20
21
  namespace Chemicalml::Cml::Namespace
21
- root "region"
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 "sphere3", to: :sphere3
27
- map_attribute "box3", to: :box3
28
- map_attribute "atomSetRef", to: :atom_set_ref
29
- map_attribute "regionRefs", to: :region_refs
22
+ root 'region'
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 'sphere3', to: :sphere3
28
+ map_attribute 'box3', to: :box3
29
+ map_attribute 'atomSetRef', to: :atom_set_ref
30
+ map_attribute 'regionRefs', to: :region_refs
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 'sphere3', to: :sphere3
38
+ map 'box3', to: :box3
39
+ map 'atomSetRef', to: :atom_set_ref
40
+ map 'regionRefs', to: :region_refs
30
41
  end
31
42
  end
32
43
  end
@@ -7,17 +7,25 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::RelatedEntry
10
+
10
11
  attribute :related_entry_type, :string
12
+ attribute :type, :string
11
13
  attribute :href, :string
12
14
  attribute :content, :string
13
15
 
14
16
  xml do
15
17
  namespace Chemicalml::Cml::Namespace
16
- root "relatedEntry"
17
- map_attribute "relatedEntryType", to: :related_entry_type
18
- map_attribute "href", to: :href
18
+ root 'relatedEntry'
19
+ map_attribute 'relatedEntryType', to: :related_entry_type
20
+ map_attribute 'type', to: :type
21
+ map_attribute 'href', to: :href
19
22
  map_content to: :content
20
23
  end
24
+ key_value do
25
+ map 'relatedEntryType', to: :related_entry_type
26
+ map 'type', to: :type
27
+ map 'href', to: :href
28
+ end
21
29
  end
22
30
  end
23
31
  end