chemicalml 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/.github/workflows/docs.yml +63 -0
- data/.github/workflows/links.yml +99 -0
- data/.github/workflows/opal.yml +34 -0
- data/.github/workflows/performance.yml +25 -0
- data/.github/workflows/rake.yml +19 -0
- data/.github/workflows/release.yml +28 -0
- data/CHANGELOG.md +52 -12
- data/Gemfile +2 -1
- data/Rakefile +9 -4
- data/TODO.align/18-wire-class-registry.md +46 -0
- data/TODO.align/19-schema-aware-translator.md +33 -0
- data/TODO.align/20-missing-translator-rules.md +44 -0
- data/TODO.align/21-encapsulate-translator.md +33 -0
- data/TODO.align/22-dry-role-modules.md +32 -0
- data/TODO.align/23-final-spec-lint.md +25 -0
- data/TODO.align/24-autoload-wire-classes.md +84 -0
- data/TODO.align/25-value-container-schema-awareness.md +44 -0
- data/TODO.align/26-remove-dead-code.md +16 -0
- data/TODO.align/27-final-spec-lint.md +26 -0
- data/TODO.align/28-stereo-model.md +40 -0
- data/TODO.align/29-stereo-wire-children.md +30 -0
- data/TODO.align/30-stereo-translator.md +32 -0
- data/TODO.align/31-final-spec-lint.md +20 -0
- data/TODO.align/32-polymorphic-translator.md +43 -0
- data/TODO.align/33-polymorphic-parse.md +43 -0
- data/TODO.align/34-polymorphic-specs.md +16 -0
- data/TODO.align/35-final-spec-lint.md +10 -0
- data/TODO.align/README.round10.md +30 -0
- data/TODO.align/README.round11.md +50 -0
- data/TODO.align/README.round12.md +73 -0
- data/TODO.align/README.round13.md +59 -0
- data/TODO.align/README.round14.md +48 -0
- data/TODO.align/README.round15.md +86 -0
- data/TODO.align/README.round16.md +46 -0
- data/TODO.align/README.round3.md +27 -0
- data/TODO.align/README.round4.md +18 -0
- data/TODO.align/README.round5.md +20 -0
- data/TODO.align/README.round6.md +27 -0
- data/TODO.align/README.round7.md +43 -0
- data/TODO.align/README.round8.md +24 -0
- data/TODO.align/README.round9.md +50 -0
- data/data/dictionaries/_index.yaml +9 -1
- data/data/dictionaries/cif.yaml +155 -0
- data/data/dictionaries/cml.yaml +172 -0
- data/data/dictionaries/cml_formula.yaml +63 -0
- data/data/dictionaries/cml_name.yaml +84 -0
- data/data/dictionaries/unit_non_si.yaml +30 -0
- data/data/dictionaries/unit_type.yaml +12 -0
- data/lib/chemicalml/cml/aliases.rb +20 -0
- data/lib/chemicalml/cml/base/abundance.rb +28 -0
- data/lib/chemicalml/cml/base/action.rb +30 -0
- data/lib/chemicalml/cml/base/action_list.rb +33 -0
- data/lib/chemicalml/cml/base/amount.rb +28 -0
- data/lib/chemicalml/cml/base/angle.rb +32 -0
- data/lib/chemicalml/cml/base/any_cml.rb +28 -0
- data/lib/chemicalml/cml/base/array.rb +1 -1
- data/lib/chemicalml/cml/base/array_list.rb +28 -0
- data/lib/chemicalml/cml/base/atom.rb +19 -1
- data/lib/chemicalml/cml/base/atom_array.rb +1 -1
- data/lib/chemicalml/cml/base/atom_parity.rb +1 -1
- data/lib/chemicalml/cml/base/atom_set.rb +28 -0
- data/lib/chemicalml/cml/base/atom_type.rb +32 -0
- data/lib/chemicalml/cml/base/atom_type_list.rb +31 -0
- data/lib/chemicalml/cml/base/atomic_basis_function.rb +40 -0
- data/lib/chemicalml/cml/base/band.rb +32 -0
- data/lib/chemicalml/cml/base/band_list.rb +31 -0
- data/lib/chemicalml/cml/base/basis_set.rb +31 -0
- data/lib/chemicalml/cml/base/bond.rb +5 -1
- data/lib/chemicalml/cml/base/bond_array.rb +1 -1
- data/lib/chemicalml/cml/base/bond_set.rb +28 -0
- data/lib/chemicalml/cml/base/bond_stereo.rb +1 -1
- data/lib/chemicalml/cml/base/bond_type.rb +32 -0
- data/lib/chemicalml/cml/base/bond_type_list.rb +31 -0
- data/lib/chemicalml/cml/base/cell_parameter.rb +34 -0
- data/lib/chemicalml/cml/base/cml_module.rb +1 -1
- data/lib/chemicalml/cml/base/condition_list.rb +33 -0
- data/lib/chemicalml/cml/base/crystal.rb +35 -0
- data/lib/chemicalml/cml/base/definition.rb +30 -0
- data/lib/chemicalml/cml/base/description.rb +30 -0
- data/lib/chemicalml/cml/base/dictionary.rb +1 -1
- data/lib/chemicalml/cml/base/dictionary_entry.rb +1 -1
- data/lib/chemicalml/cml/base/dimension.rb +32 -0
- data/lib/chemicalml/cml/base/document.rb +9 -1
- data/lib/chemicalml/cml/base/documentation.rb +30 -0
- data/lib/chemicalml/cml/base/eigen.rb +34 -0
- data/lib/chemicalml/cml/base/electron.rb +36 -0
- data/lib/chemicalml/cml/base/formula.rb +1 -1
- data/lib/chemicalml/cml/base/fragment.rb +35 -0
- data/lib/chemicalml/cml/base/fragment_list.rb +31 -0
- data/lib/chemicalml/cml/base/gradient.rb +32 -0
- data/lib/chemicalml/cml/base/identifier.rb +1 -1
- data/lib/chemicalml/cml/base/isotope.rb +34 -0
- data/lib/chemicalml/cml/base/isotope_list.rb +31 -0
- data/lib/chemicalml/cml/base/join.rb +30 -0
- data/lib/chemicalml/cml/base/kpoint.rb +32 -0
- data/lib/chemicalml/cml/base/kpoint_list.rb +31 -0
- data/lib/chemicalml/cml/base/label.rb +1 -1
- data/lib/chemicalml/cml/base/lattice.rb +35 -0
- data/lib/chemicalml/cml/base/lattice_vector.rb +30 -0
- data/lib/chemicalml/cml/base/length.rb +32 -0
- data/lib/chemicalml/cml/base/line3.rb +30 -0
- data/lib/chemicalml/cml/base/link.rb +38 -0
- data/lib/chemicalml/cml/base/list.rb +1 -1
- data/lib/chemicalml/cml/base/map.rb +28 -0
- data/lib/chemicalml/cml/base/matrix.rb +1 -1
- data/lib/chemicalml/cml/base/mechanism.rb +31 -0
- data/lib/chemicalml/cml/base/mechanism_component.rb +30 -0
- data/lib/chemicalml/cml/base/metadata.rb +1 -1
- data/lib/chemicalml/cml/base/metadata_list.rb +1 -1
- data/lib/chemicalml/cml/base/molecule.rb +17 -1
- data/lib/chemicalml/cml/base/molecule_list.rb +31 -0
- data/lib/chemicalml/cml/base/name.rb +1 -1
- data/lib/chemicalml/cml/base/object.rb +30 -0
- data/lib/chemicalml/cml/base/observation.rb +28 -0
- data/lib/chemicalml/cml/base/parameter.rb +1 -1
- data/lib/chemicalml/cml/base/parameter_list.rb +1 -1
- data/lib/chemicalml/cml/base/particle.rb +30 -0
- data/lib/chemicalml/cml/base/peak.rb +40 -0
- data/lib/chemicalml/cml/base/peak_group.rb +31 -0
- data/lib/chemicalml/cml/base/peak_list.rb +33 -0
- data/lib/chemicalml/cml/base/peak_structure.rb +30 -0
- data/lib/chemicalml/cml/base/plane3.rb +30 -0
- data/lib/chemicalml/cml/base/point3.rb +30 -0
- data/lib/chemicalml/cml/base/potential.rb +30 -0
- data/lib/chemicalml/cml/base/potential_form.rb +30 -0
- data/lib/chemicalml/cml/base/potential_list.rb +31 -0
- data/lib/chemicalml/cml/base/product.rb +1 -1
- data/lib/chemicalml/cml/base/product_list.rb +1 -1
- data/lib/chemicalml/cml/base/property.rb +1 -1
- data/lib/chemicalml/cml/base/property_list.rb +1 -1
- data/lib/chemicalml/cml/base/reactant.rb +1 -1
- data/lib/chemicalml/cml/base/reactant_list.rb +1 -1
- data/lib/chemicalml/cml/base/reaction.rb +9 -1
- data/lib/chemicalml/cml/base/reaction_list.rb +1 -1
- data/lib/chemicalml/cml/base/reaction_scheme.rb +33 -0
- data/lib/chemicalml/cml/base/reaction_step.rb +35 -0
- data/lib/chemicalml/cml/base/reaction_step_list.rb +31 -0
- data/lib/chemicalml/cml/base/reactive_centre.rb +30 -0
- data/lib/chemicalml/cml/base/region.rb +28 -0
- data/lib/chemicalml/cml/base/sample.rb +28 -0
- data/lib/chemicalml/cml/base/scalar.rb +1 -1
- data/lib/chemicalml/cml/base/spectator.rb +28 -0
- data/lib/chemicalml/cml/base/spectator_list.rb +31 -0
- data/lib/chemicalml/cml/base/spectrum.rb +41 -0
- data/lib/chemicalml/cml/base/spectrum_data.rb +33 -0
- data/lib/chemicalml/cml/base/spectrum_list.rb +31 -0
- data/lib/chemicalml/cml/base/sphere3.rb +30 -0
- data/lib/chemicalml/cml/base/stmml.rb +28 -0
- data/lib/chemicalml/cml/base/substance.rb +1 -1
- data/lib/chemicalml/cml/base/substance_list.rb +31 -0
- data/lib/chemicalml/cml/base/symmetry.rb +32 -0
- data/lib/chemicalml/cml/base/system.rb +33 -0
- data/lib/chemicalml/cml/base/table.rb +33 -0
- data/lib/chemicalml/cml/base/table_cell.rb +30 -0
- data/lib/chemicalml/cml/base/table_content.rb +33 -0
- data/lib/chemicalml/cml/base/table_header.rb +31 -0
- data/lib/chemicalml/cml/base/table_header_cell.rb +30 -0
- data/lib/chemicalml/cml/base/table_row.rb +31 -0
- data/lib/chemicalml/cml/base/table_row_list.rb +31 -0
- data/lib/chemicalml/cml/base/torsion.rb +32 -0
- data/lib/chemicalml/cml/base/transform3.rb +30 -0
- data/lib/chemicalml/cml/base/transition_state.rb +28 -0
- data/lib/chemicalml/cml/base/unit.rb +1 -1
- data/lib/chemicalml/cml/base/unit_list.rb +1 -1
- data/lib/chemicalml/cml/base/unit_type.rb +1 -1
- data/lib/chemicalml/cml/base/unit_type_list.rb +1 -1
- data/lib/chemicalml/cml/base/vector3.rb +30 -0
- data/lib/chemicalml/cml/base/xaxis.rb +32 -0
- data/lib/chemicalml/cml/base/yaxis.rb +32 -0
- data/lib/chemicalml/cml/base/z_matrix.rb +30 -0
- data/lib/chemicalml/cml/base.rb +85 -0
- data/lib/chemicalml/cml/child_mappings.rb +168 -0
- data/lib/chemicalml/cml/elements.rb +130 -42
- data/lib/chemicalml/cml/role/abundance.rb +12 -0
- data/lib/chemicalml/cml/role/action.rb +12 -0
- data/lib/chemicalml/cml/role/action_list.rb +12 -0
- data/lib/chemicalml/cml/role/amount.rb +12 -0
- data/lib/chemicalml/cml/role/angle.rb +12 -0
- data/lib/chemicalml/cml/role/any_cml.rb +12 -0
- data/lib/chemicalml/cml/role/array_list.rb +12 -0
- data/lib/chemicalml/cml/role/atom_set.rb +12 -0
- data/lib/chemicalml/cml/role/atom_type.rb +12 -0
- data/lib/chemicalml/cml/role/atom_type_list.rb +12 -0
- data/lib/chemicalml/cml/role/atomic_basis_function.rb +12 -0
- data/lib/chemicalml/cml/role/band.rb +12 -0
- data/lib/chemicalml/cml/role/band_list.rb +12 -0
- data/lib/chemicalml/cml/role/basis_set.rb +12 -0
- data/lib/chemicalml/cml/role/bond_set.rb +12 -0
- data/lib/chemicalml/cml/role/bond_type.rb +12 -0
- data/lib/chemicalml/cml/role/bond_type_list.rb +12 -0
- data/lib/chemicalml/cml/role/cell_parameter.rb +12 -0
- data/lib/chemicalml/cml/role/condition_list.rb +12 -0
- data/lib/chemicalml/cml/role/crystal.rb +12 -0
- data/lib/chemicalml/cml/role/definition.rb +12 -0
- data/lib/chemicalml/cml/role/description.rb +12 -0
- data/lib/chemicalml/cml/role/dimension.rb +12 -0
- data/lib/chemicalml/cml/role/documentation.rb +12 -0
- data/lib/chemicalml/cml/role/eigen.rb +12 -0
- data/lib/chemicalml/cml/role/electron.rb +12 -0
- data/lib/chemicalml/cml/role/fragment.rb +12 -0
- data/lib/chemicalml/cml/role/fragment_list.rb +12 -0
- data/lib/chemicalml/cml/role/gradient.rb +12 -0
- data/lib/chemicalml/cml/role/isotope.rb +12 -0
- data/lib/chemicalml/cml/role/isotope_list.rb +12 -0
- data/lib/chemicalml/cml/role/join.rb +12 -0
- data/lib/chemicalml/cml/role/kpoint.rb +12 -0
- data/lib/chemicalml/cml/role/kpoint_list.rb +12 -0
- data/lib/chemicalml/cml/role/lattice.rb +12 -0
- data/lib/chemicalml/cml/role/lattice_vector.rb +12 -0
- data/lib/chemicalml/cml/role/length.rb +12 -0
- data/lib/chemicalml/cml/role/line3.rb +12 -0
- data/lib/chemicalml/cml/role/link.rb +12 -0
- data/lib/chemicalml/cml/role/map.rb +12 -0
- data/lib/chemicalml/cml/role/mechanism.rb +12 -0
- data/lib/chemicalml/cml/role/mechanism_component.rb +12 -0
- data/lib/chemicalml/cml/role/molecule_list.rb +12 -0
- data/lib/chemicalml/cml/role/object.rb +12 -0
- data/lib/chemicalml/cml/role/observation.rb +12 -0
- data/lib/chemicalml/cml/role/particle.rb +12 -0
- data/lib/chemicalml/cml/role/peak.rb +12 -0
- data/lib/chemicalml/cml/role/peak_group.rb +12 -0
- data/lib/chemicalml/cml/role/peak_list.rb +12 -0
- data/lib/chemicalml/cml/role/peak_structure.rb +12 -0
- data/lib/chemicalml/cml/role/plane3.rb +12 -0
- data/lib/chemicalml/cml/role/point3.rb +12 -0
- data/lib/chemicalml/cml/role/potential.rb +12 -0
- data/lib/chemicalml/cml/role/potential_form.rb +12 -0
- data/lib/chemicalml/cml/role/potential_list.rb +12 -0
- data/lib/chemicalml/cml/role/reaction_scheme.rb +12 -0
- data/lib/chemicalml/cml/role/reaction_step.rb +12 -0
- data/lib/chemicalml/cml/role/reaction_step_list.rb +12 -0
- data/lib/chemicalml/cml/role/reactive_centre.rb +12 -0
- data/lib/chemicalml/cml/role/region.rb +12 -0
- data/lib/chemicalml/cml/role/sample.rb +12 -0
- data/lib/chemicalml/cml/role/spectator.rb +12 -0
- data/lib/chemicalml/cml/role/spectator_list.rb +12 -0
- data/lib/chemicalml/cml/role/spectrum.rb +12 -0
- data/lib/chemicalml/cml/role/spectrum_data.rb +12 -0
- data/lib/chemicalml/cml/role/spectrum_list.rb +12 -0
- data/lib/chemicalml/cml/role/sphere3.rb +12 -0
- data/lib/chemicalml/cml/role/stmml.rb +12 -0
- data/lib/chemicalml/cml/role/substance_list.rb +12 -0
- data/lib/chemicalml/cml/role/symmetry.rb +12 -0
- data/lib/chemicalml/cml/role/system.rb +12 -0
- data/lib/chemicalml/cml/role/table.rb +12 -0
- data/lib/chemicalml/cml/role/table_cell.rb +12 -0
- data/lib/chemicalml/cml/role/table_content.rb +12 -0
- data/lib/chemicalml/cml/role/table_header.rb +12 -0
- data/lib/chemicalml/cml/role/table_header_cell.rb +12 -0
- data/lib/chemicalml/cml/role/table_row.rb +12 -0
- data/lib/chemicalml/cml/role/table_row_list.rb +12 -0
- data/lib/chemicalml/cml/role/torsion.rb +12 -0
- data/lib/chemicalml/cml/role/transform3.rb +12 -0
- data/lib/chemicalml/cml/role/transition_state.rb +12 -0
- data/lib/chemicalml/cml/role/vector3.rb +12 -0
- data/lib/chemicalml/cml/role/xaxis.rb +12 -0
- data/lib/chemicalml/cml/role/yaxis.rb +12 -0
- data/lib/chemicalml/cml/role/z_matrix.rb +12 -0
- data/lib/chemicalml/cml/role.rb +86 -1
- data/lib/chemicalml/cml/schema24/abundance.rb +13 -0
- data/lib/chemicalml/cml/schema24/action.rb +13 -0
- data/lib/chemicalml/cml/schema24/action_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/amount.rb +13 -0
- data/lib/chemicalml/cml/schema24/angle.rb +13 -0
- data/lib/chemicalml/cml/schema24/any_cml.rb +13 -0
- data/lib/chemicalml/cml/schema24/array.rb +15 -0
- data/lib/chemicalml/cml/schema24/array_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/atom.rb +15 -0
- data/lib/chemicalml/cml/schema24/atom_array.rb +15 -0
- data/lib/chemicalml/cml/schema24/atom_parity.rb +15 -0
- data/lib/chemicalml/cml/schema24/atom_set.rb +13 -0
- data/lib/chemicalml/cml/schema24/atom_type.rb +13 -0
- data/lib/chemicalml/cml/schema24/atom_type_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/atomic_basis_function.rb +13 -0
- data/lib/chemicalml/cml/schema24/band.rb +13 -0
- data/lib/chemicalml/cml/schema24/band_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/basis_set.rb +13 -0
- data/lib/chemicalml/cml/schema24/bond.rb +15 -0
- data/lib/chemicalml/cml/schema24/bond_array.rb +15 -0
- data/lib/chemicalml/cml/schema24/bond_set.rb +13 -0
- data/lib/chemicalml/cml/schema24/bond_stereo.rb +15 -0
- data/lib/chemicalml/cml/schema24/bond_type.rb +13 -0
- data/lib/chemicalml/cml/schema24/bond_type_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/cell_parameter.rb +13 -0
- data/lib/chemicalml/cml/schema24/condition_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/context.rb +18 -0
- data/lib/chemicalml/cml/schema24/crystal.rb +13 -0
- data/lib/chemicalml/cml/schema24/definition.rb +13 -0
- data/lib/chemicalml/cml/schema24/description.rb +13 -0
- data/lib/chemicalml/cml/schema24/dictionary.rb +15 -0
- data/lib/chemicalml/cml/schema24/dictionary_entry.rb +15 -0
- data/lib/chemicalml/cml/schema24/dimension.rb +13 -0
- data/lib/chemicalml/cml/schema24/document.rb +15 -0
- data/lib/chemicalml/cml/schema24/documentation.rb +13 -0
- data/lib/chemicalml/cml/schema24/eigen.rb +13 -0
- data/lib/chemicalml/cml/schema24/electron.rb +13 -0
- data/lib/chemicalml/cml/schema24/formula.rb +15 -0
- data/lib/chemicalml/cml/schema24/fragment.rb +13 -0
- data/lib/chemicalml/cml/schema24/fragment_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/gradient.rb +13 -0
- data/lib/chemicalml/cml/schema24/identifier.rb +15 -0
- data/lib/chemicalml/cml/schema24/isotope.rb +13 -0
- data/lib/chemicalml/cml/schema24/isotope_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/join.rb +13 -0
- data/lib/chemicalml/cml/schema24/kpoint.rb +13 -0
- data/lib/chemicalml/cml/schema24/kpoint_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/label.rb +15 -0
- data/lib/chemicalml/cml/schema24/lattice.rb +13 -0
- data/lib/chemicalml/cml/schema24/lattice_vector.rb +13 -0
- data/lib/chemicalml/cml/schema24/length.rb +13 -0
- data/lib/chemicalml/cml/schema24/line3.rb +13 -0
- data/lib/chemicalml/cml/schema24/link.rb +13 -0
- data/lib/chemicalml/cml/schema24/list.rb +15 -0
- data/lib/chemicalml/cml/schema24/map.rb +13 -0
- data/lib/chemicalml/cml/schema24/matrix.rb +15 -0
- data/lib/chemicalml/cml/schema24/mechanism.rb +13 -0
- data/lib/chemicalml/cml/schema24/mechanism_component.rb +13 -0
- data/lib/chemicalml/cml/schema24/metadata.rb +15 -0
- data/lib/chemicalml/cml/schema24/metadata_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/molecule.rb +15 -0
- data/lib/chemicalml/cml/schema24/molecule_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/name.rb +15 -0
- data/lib/chemicalml/cml/schema24/object.rb +13 -0
- data/lib/chemicalml/cml/schema24/observation.rb +13 -0
- data/lib/chemicalml/cml/schema24/parameter.rb +15 -0
- data/lib/chemicalml/cml/schema24/parameter_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/particle.rb +13 -0
- data/lib/chemicalml/cml/schema24/peak.rb +13 -0
- data/lib/chemicalml/cml/schema24/peak_group.rb +13 -0
- data/lib/chemicalml/cml/schema24/peak_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/peak_structure.rb +13 -0
- data/lib/chemicalml/cml/schema24/plane3.rb +13 -0
- data/lib/chemicalml/cml/schema24/point3.rb +13 -0
- data/lib/chemicalml/cml/schema24/potential.rb +13 -0
- data/lib/chemicalml/cml/schema24/potential_form.rb +13 -0
- data/lib/chemicalml/cml/schema24/potential_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/product.rb +15 -0
- data/lib/chemicalml/cml/schema24/product_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/property.rb +15 -0
- data/lib/chemicalml/cml/schema24/property_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/reactant.rb +15 -0
- data/lib/chemicalml/cml/schema24/reactant_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/reaction.rb +15 -0
- data/lib/chemicalml/cml/schema24/reaction_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/reaction_scheme.rb +13 -0
- data/lib/chemicalml/cml/schema24/reaction_step.rb +13 -0
- data/lib/chemicalml/cml/schema24/reaction_step_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/reactive_centre.rb +13 -0
- data/lib/chemicalml/cml/schema24/region.rb +13 -0
- data/lib/chemicalml/cml/schema24/sample.rb +13 -0
- data/lib/chemicalml/cml/schema24/scalar.rb +15 -0
- data/lib/chemicalml/cml/schema24/spectator.rb +13 -0
- data/lib/chemicalml/cml/schema24/spectator_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/spectrum.rb +13 -0
- data/lib/chemicalml/cml/schema24/spectrum_data.rb +13 -0
- data/lib/chemicalml/cml/schema24/spectrum_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/sphere3.rb +13 -0
- data/lib/chemicalml/cml/schema24/stmml.rb +13 -0
- data/lib/chemicalml/cml/schema24/substance.rb +15 -0
- data/lib/chemicalml/cml/schema24/substance_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/symmetry.rb +13 -0
- data/lib/chemicalml/cml/schema24/system.rb +13 -0
- data/lib/chemicalml/cml/schema24/table.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_cell.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_content.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_header.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_header_cell.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_row.rb +13 -0
- data/lib/chemicalml/cml/schema24/table_row_list.rb +13 -0
- data/lib/chemicalml/cml/schema24/torsion.rb +13 -0
- data/lib/chemicalml/cml/schema24/transform3.rb +13 -0
- data/lib/chemicalml/cml/schema24/transition_state.rb +13 -0
- data/lib/chemicalml/cml/schema24/unit.rb +15 -0
- data/lib/chemicalml/cml/schema24/unit_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/unit_type.rb +15 -0
- data/lib/chemicalml/cml/schema24/unit_type_list.rb +15 -0
- data/lib/chemicalml/cml/schema24/vector3.rb +13 -0
- data/lib/chemicalml/cml/schema24/xaxis.rb +13 -0
- data/lib/chemicalml/cml/schema24/yaxis.rb +13 -0
- data/lib/chemicalml/cml/schema24/z_matrix.rb +13 -0
- data/lib/chemicalml/cml/schema24.rb +131 -19
- data/lib/chemicalml/cml/schema3/abundance.rb +13 -0
- data/lib/chemicalml/cml/schema3/action.rb +13 -0
- data/lib/chemicalml/cml/schema3/action_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/amount.rb +13 -0
- data/lib/chemicalml/cml/schema3/angle.rb +13 -0
- data/lib/chemicalml/cml/schema3/any_cml.rb +13 -0
- data/lib/chemicalml/cml/schema3/array.rb +15 -0
- data/lib/chemicalml/cml/schema3/array_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/atom.rb +15 -0
- data/lib/chemicalml/cml/schema3/atom_array.rb +15 -0
- data/lib/chemicalml/cml/schema3/atom_parity.rb +15 -0
- data/lib/chemicalml/cml/schema3/atom_set.rb +13 -0
- data/lib/chemicalml/cml/schema3/atom_type.rb +13 -0
- data/lib/chemicalml/cml/schema3/atom_type_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/atomic_basis_function.rb +13 -0
- data/lib/chemicalml/cml/schema3/band.rb +13 -0
- data/lib/chemicalml/cml/schema3/band_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/basis_set.rb +13 -0
- data/lib/chemicalml/cml/schema3/bond.rb +15 -0
- data/lib/chemicalml/cml/schema3/bond_array.rb +15 -0
- data/lib/chemicalml/cml/schema3/bond_set.rb +13 -0
- data/lib/chemicalml/cml/schema3/bond_stereo.rb +15 -0
- data/lib/chemicalml/cml/schema3/bond_type.rb +13 -0
- data/lib/chemicalml/cml/schema3/bond_type_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/cell_parameter.rb +13 -0
- data/lib/chemicalml/cml/schema3/cml_module.rb +15 -0
- data/lib/chemicalml/cml/schema3/condition_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/context.rb +18 -0
- data/lib/chemicalml/cml/schema3/crystal.rb +13 -0
- data/lib/chemicalml/cml/schema3/definition.rb +13 -0
- data/lib/chemicalml/cml/schema3/description.rb +13 -0
- data/lib/chemicalml/cml/schema3/dictionary.rb +15 -0
- data/lib/chemicalml/cml/schema3/dictionary_entry.rb +15 -0
- data/lib/chemicalml/cml/schema3/dimension.rb +13 -0
- data/lib/chemicalml/cml/schema3/document.rb +15 -0
- data/lib/chemicalml/cml/schema3/documentation.rb +13 -0
- data/lib/chemicalml/cml/schema3/eigen.rb +13 -0
- data/lib/chemicalml/cml/schema3/electron.rb +13 -0
- data/lib/chemicalml/cml/schema3/formula.rb +15 -0
- data/lib/chemicalml/cml/schema3/fragment.rb +13 -0
- data/lib/chemicalml/cml/schema3/fragment_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/gradient.rb +13 -0
- data/lib/chemicalml/cml/schema3/identifier.rb +15 -0
- data/lib/chemicalml/cml/schema3/isotope.rb +13 -0
- data/lib/chemicalml/cml/schema3/isotope_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/join.rb +13 -0
- data/lib/chemicalml/cml/schema3/kpoint.rb +13 -0
- data/lib/chemicalml/cml/schema3/kpoint_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/label.rb +15 -0
- data/lib/chemicalml/cml/schema3/lattice.rb +13 -0
- data/lib/chemicalml/cml/schema3/lattice_vector.rb +13 -0
- data/lib/chemicalml/cml/schema3/length.rb +13 -0
- data/lib/chemicalml/cml/schema3/line3.rb +13 -0
- data/lib/chemicalml/cml/schema3/link.rb +13 -0
- data/lib/chemicalml/cml/schema3/list.rb +15 -0
- data/lib/chemicalml/cml/schema3/map.rb +13 -0
- data/lib/chemicalml/cml/schema3/matrix.rb +15 -0
- data/lib/chemicalml/cml/schema3/mechanism.rb +13 -0
- data/lib/chemicalml/cml/schema3/mechanism_component.rb +13 -0
- data/lib/chemicalml/cml/schema3/metadata.rb +15 -0
- data/lib/chemicalml/cml/schema3/metadata_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/molecule.rb +15 -0
- data/lib/chemicalml/cml/schema3/molecule_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/name.rb +15 -0
- data/lib/chemicalml/cml/schema3/object.rb +13 -0
- data/lib/chemicalml/cml/schema3/observation.rb +13 -0
- data/lib/chemicalml/cml/schema3/parameter.rb +15 -0
- data/lib/chemicalml/cml/schema3/parameter_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/particle.rb +13 -0
- data/lib/chemicalml/cml/schema3/peak.rb +13 -0
- data/lib/chemicalml/cml/schema3/peak_group.rb +13 -0
- data/lib/chemicalml/cml/schema3/peak_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/peak_structure.rb +13 -0
- data/lib/chemicalml/cml/schema3/plane3.rb +13 -0
- data/lib/chemicalml/cml/schema3/point3.rb +13 -0
- data/lib/chemicalml/cml/schema3/potential.rb +13 -0
- data/lib/chemicalml/cml/schema3/potential_form.rb +13 -0
- data/lib/chemicalml/cml/schema3/potential_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/product.rb +15 -0
- data/lib/chemicalml/cml/schema3/product_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/property.rb +15 -0
- data/lib/chemicalml/cml/schema3/property_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/reactant.rb +15 -0
- data/lib/chemicalml/cml/schema3/reactant_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/reaction.rb +15 -0
- data/lib/chemicalml/cml/schema3/reaction_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/reaction_scheme.rb +13 -0
- data/lib/chemicalml/cml/schema3/reaction_step.rb +13 -0
- data/lib/chemicalml/cml/schema3/reaction_step_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/reactive_centre.rb +13 -0
- data/lib/chemicalml/cml/schema3/region.rb +13 -0
- data/lib/chemicalml/cml/schema3/sample.rb +13 -0
- data/lib/chemicalml/cml/schema3/scalar.rb +15 -0
- data/lib/chemicalml/cml/schema3/spectator.rb +13 -0
- data/lib/chemicalml/cml/schema3/spectator_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/spectrum.rb +13 -0
- data/lib/chemicalml/cml/schema3/spectrum_data.rb +13 -0
- data/lib/chemicalml/cml/schema3/spectrum_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/sphere3.rb +13 -0
- data/lib/chemicalml/cml/schema3/stmml.rb +13 -0
- data/lib/chemicalml/cml/schema3/substance.rb +15 -0
- data/lib/chemicalml/cml/schema3/substance_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/symmetry.rb +13 -0
- data/lib/chemicalml/cml/schema3/system.rb +13 -0
- data/lib/chemicalml/cml/schema3/table.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_cell.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_content.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_header.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_header_cell.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_row.rb +13 -0
- data/lib/chemicalml/cml/schema3/table_row_list.rb +13 -0
- data/lib/chemicalml/cml/schema3/torsion.rb +13 -0
- data/lib/chemicalml/cml/schema3/transform3.rb +13 -0
- data/lib/chemicalml/cml/schema3/transition_state.rb +13 -0
- data/lib/chemicalml/cml/schema3/unit.rb +15 -0
- data/lib/chemicalml/cml/schema3/unit_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/unit_type.rb +15 -0
- data/lib/chemicalml/cml/schema3/unit_type_list.rb +15 -0
- data/lib/chemicalml/cml/schema3/vector3.rb +13 -0
- data/lib/chemicalml/cml/schema3/xaxis.rb +13 -0
- data/lib/chemicalml/cml/schema3/yaxis.rb +13 -0
- data/lib/chemicalml/cml/schema3/z_matrix.rb +13 -0
- data/lib/chemicalml/cml/schema3.rb +132 -17
- data/lib/chemicalml/cml/translator/value_translations.rb +40 -35
- data/lib/chemicalml/cml/translator.rb +319 -68
- data/lib/chemicalml/cml/wire_class_registry.rb +42 -0
- data/lib/chemicalml/cml.rb +138 -44
- data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +32 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +26 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +27 -0
- data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +20 -0
- data/lib/chemicalml/convention/molecular/constraints.rb +20 -3
- data/lib/chemicalml/convention/molecular.rb +10 -0
- data/lib/chemicalml/model/atom.rb +28 -4
- data/lib/chemicalml/model/atom_parity.rb +21 -0
- data/lib/chemicalml/model/bond.rb +9 -3
- data/lib/chemicalml/model/bond_stereo.rb +29 -0
- data/lib/chemicalml/model/molecule.rb +13 -6
- data/lib/chemicalml/model.rb +2 -0
- data/lib/chemicalml/version.rb +1 -1
- data/lib/chemicalml/versioned_parser.rb +53 -12
- data/lib/chemicalml.rb +3 -1
- metadata +476 -40
- data/lib/chemicalml/cml/array.rb +0 -10
- data/lib/chemicalml/cml/atom.rb +0 -10
- data/lib/chemicalml/cml/atom_array.rb +0 -10
- data/lib/chemicalml/cml/atom_parity.rb +0 -10
- data/lib/chemicalml/cml/bond.rb +0 -10
- data/lib/chemicalml/cml/bond_array.rb +0 -10
- data/lib/chemicalml/cml/bond_stereo.rb +0 -10
- data/lib/chemicalml/cml/cml_module.rb +0 -10
- data/lib/chemicalml/cml/dictionary.rb +0 -10
- data/lib/chemicalml/cml/dictionary_entry.rb +0 -10
- data/lib/chemicalml/cml/document.rb +0 -10
- data/lib/chemicalml/cml/formula.rb +0 -10
- data/lib/chemicalml/cml/identifier.rb +0 -10
- data/lib/chemicalml/cml/label.rb +0 -10
- data/lib/chemicalml/cml/list.rb +0 -10
- data/lib/chemicalml/cml/matrix.rb +0 -10
- data/lib/chemicalml/cml/metadata.rb +0 -10
- data/lib/chemicalml/cml/metadata_list.rb +0 -10
- data/lib/chemicalml/cml/molecule.rb +0 -10
- data/lib/chemicalml/cml/name.rb +0 -10
- data/lib/chemicalml/cml/parameter.rb +0 -10
- data/lib/chemicalml/cml/parameter_list.rb +0 -10
- data/lib/chemicalml/cml/product.rb +0 -10
- data/lib/chemicalml/cml/product_list.rb +0 -10
- data/lib/chemicalml/cml/property.rb +0 -10
- data/lib/chemicalml/cml/property_list.rb +0 -10
- data/lib/chemicalml/cml/reactant.rb +0 -10
- data/lib/chemicalml/cml/reactant_list.rb +0 -10
- data/lib/chemicalml/cml/reaction.rb +0 -10
- data/lib/chemicalml/cml/reaction_list.rb +0 -10
- data/lib/chemicalml/cml/scalar.rb +0 -10
- data/lib/chemicalml/cml/substance.rb +0 -10
- data/lib/chemicalml/cml/unit.rb +0 -10
- data/lib/chemicalml/cml/unit_list.rb +0 -10
- data/lib/chemicalml/cml/unit_type.rb +0 -10
- data/lib/chemicalml/cml/unit_type_list.rb +0 -10
- data/lib/chemicalml/cml/wire_class_macro.rb +0 -45
data/lib/chemicalml/cml.rb
CHANGED
|
@@ -7,49 +7,143 @@ module Chemicalml
|
|
|
7
7
|
# Shared attribute + xml-mapping declarations live under `Base::*`
|
|
8
8
|
# and are included by both schema-versioned class hierarchies.
|
|
9
9
|
module Cml
|
|
10
|
-
|
|
11
|
-
autoload :
|
|
12
|
-
autoload :
|
|
13
|
-
autoload :
|
|
14
|
-
autoload :
|
|
15
|
-
autoload :
|
|
16
|
-
autoload :
|
|
17
|
-
autoload :
|
|
18
|
-
autoload :
|
|
19
|
-
autoload :
|
|
20
|
-
autoload :
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
autoload
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
autoload :
|
|
28
|
-
autoload :
|
|
29
|
-
autoload :
|
|
30
|
-
autoload :
|
|
31
|
-
autoload :
|
|
32
|
-
autoload :
|
|
33
|
-
autoload :
|
|
34
|
-
autoload :
|
|
35
|
-
autoload :
|
|
36
|
-
autoload :
|
|
37
|
-
autoload :
|
|
38
|
-
autoload :
|
|
39
|
-
autoload :
|
|
40
|
-
autoload :
|
|
41
|
-
autoload :
|
|
42
|
-
autoload :
|
|
43
|
-
autoload :
|
|
44
|
-
autoload :
|
|
45
|
-
autoload :
|
|
46
|
-
autoload :
|
|
47
|
-
autoload :
|
|
48
|
-
autoload :
|
|
49
|
-
autoload :
|
|
50
|
-
autoload :
|
|
51
|
-
autoload :
|
|
52
|
-
autoload :
|
|
53
|
-
autoload :
|
|
10
|
+
# Structural modules (each in its own file, loaded independently).
|
|
11
|
+
autoload :Base, "chemicalml/cml/base"
|
|
12
|
+
autoload :ChildMappings, "chemicalml/cml/child_mappings"
|
|
13
|
+
autoload :Elements, "chemicalml/cml/elements"
|
|
14
|
+
autoload :Namespace, "chemicalml/cml/namespace"
|
|
15
|
+
autoload :Role, "chemicalml/cml/role"
|
|
16
|
+
autoload :Schema3, "chemicalml/cml/schema3"
|
|
17
|
+
autoload :Schema24, "chemicalml/cml/schema24"
|
|
18
|
+
autoload :Translator, "chemicalml/cml/translator"
|
|
19
|
+
autoload :Visitable, "chemicalml/cml/visitable"
|
|
20
|
+
autoload :WireClassRegistry, "chemicalml/cml/wire_class_registry"
|
|
21
|
+
|
|
22
|
+
# Backward-compatible aliases (Cml::Foo = Schema3::Foo). All 36
|
|
23
|
+
# aliases load from a single file via autoload — the file loads
|
|
24
|
+
# lazily when the first alias is referenced, then defines all of
|
|
25
|
+
# them via const_set (aliasing existing Schema3 classes, not
|
|
26
|
+
# creating new ones).
|
|
27
|
+
autoload :Array, "chemicalml/cml/aliases"
|
|
28
|
+
autoload :Atom, "chemicalml/cml/aliases"
|
|
29
|
+
autoload :AtomArray, "chemicalml/cml/aliases"
|
|
30
|
+
autoload :AtomParity, "chemicalml/cml/aliases"
|
|
31
|
+
autoload :Bond, "chemicalml/cml/aliases"
|
|
32
|
+
autoload :BondArray, "chemicalml/cml/aliases"
|
|
33
|
+
autoload :BondStereo, "chemicalml/cml/aliases"
|
|
34
|
+
autoload :Dictionary, "chemicalml/cml/aliases"
|
|
35
|
+
autoload :DictionaryEntry, "chemicalml/cml/aliases"
|
|
36
|
+
autoload :Document, "chemicalml/cml/aliases"
|
|
37
|
+
autoload :Formula, "chemicalml/cml/aliases"
|
|
38
|
+
autoload :Identifier, "chemicalml/cml/aliases"
|
|
39
|
+
autoload :Label, "chemicalml/cml/aliases"
|
|
40
|
+
autoload :List, "chemicalml/cml/aliases"
|
|
41
|
+
autoload :Matrix, "chemicalml/cml/aliases"
|
|
42
|
+
autoload :Metadata, "chemicalml/cml/aliases"
|
|
43
|
+
autoload :MetadataList, "chemicalml/cml/aliases"
|
|
44
|
+
autoload :Module, "chemicalml/cml/aliases"
|
|
45
|
+
autoload :Molecule, "chemicalml/cml/aliases"
|
|
46
|
+
autoload :Name, "chemicalml/cml/aliases"
|
|
47
|
+
autoload :Parameter, "chemicalml/cml/aliases"
|
|
48
|
+
autoload :ParameterList, "chemicalml/cml/aliases"
|
|
49
|
+
autoload :Product, "chemicalml/cml/aliases"
|
|
50
|
+
autoload :ProductList, "chemicalml/cml/aliases"
|
|
51
|
+
autoload :Property, "chemicalml/cml/aliases"
|
|
52
|
+
autoload :PropertyList, "chemicalml/cml/aliases"
|
|
53
|
+
autoload :Reaction, "chemicalml/cml/aliases"
|
|
54
|
+
autoload :ReactionList, "chemicalml/cml/aliases"
|
|
55
|
+
autoload :Reactant, "chemicalml/cml/aliases"
|
|
56
|
+
autoload :ReactantList, "chemicalml/cml/aliases"
|
|
57
|
+
autoload :Scalar, "chemicalml/cml/aliases"
|
|
58
|
+
autoload :Substance, "chemicalml/cml/aliases"
|
|
59
|
+
autoload :Unit, "chemicalml/cml/aliases"
|
|
60
|
+
autoload :UnitList, "chemicalml/cml/aliases"
|
|
61
|
+
autoload :UnitType, "chemicalml/cml/aliases"
|
|
62
|
+
autoload :UnitTypeList, "chemicalml/cml/aliases"
|
|
63
|
+
autoload :Abundance, "chemicalml/cml/aliases"
|
|
64
|
+
autoload :Action, "chemicalml/cml/aliases"
|
|
65
|
+
autoload :ActionList, "chemicalml/cml/aliases"
|
|
66
|
+
autoload :Amount, "chemicalml/cml/aliases"
|
|
67
|
+
autoload :Angle, "chemicalml/cml/aliases"
|
|
68
|
+
autoload :AnyCml, "chemicalml/cml/aliases"
|
|
69
|
+
autoload :ArrayList, "chemicalml/cml/aliases"
|
|
70
|
+
autoload :AtomSet, "chemicalml/cml/aliases"
|
|
71
|
+
autoload :AtomType, "chemicalml/cml/aliases"
|
|
72
|
+
autoload :AtomTypeList, "chemicalml/cml/aliases"
|
|
73
|
+
autoload :AtomicBasisFunction, "chemicalml/cml/aliases"
|
|
74
|
+
autoload :Band, "chemicalml/cml/aliases"
|
|
75
|
+
autoload :BandList, "chemicalml/cml/aliases"
|
|
76
|
+
autoload :BasisSet, "chemicalml/cml/aliases"
|
|
77
|
+
autoload :BondSet, "chemicalml/cml/aliases"
|
|
78
|
+
autoload :BondType, "chemicalml/cml/aliases"
|
|
79
|
+
autoload :BondTypeList, "chemicalml/cml/aliases"
|
|
80
|
+
autoload :CellParameter, "chemicalml/cml/aliases"
|
|
81
|
+
autoload :ConditionList, "chemicalml/cml/aliases"
|
|
82
|
+
autoload :Crystal, "chemicalml/cml/aliases"
|
|
83
|
+
autoload :Definition, "chemicalml/cml/aliases"
|
|
84
|
+
autoload :Description, "chemicalml/cml/aliases"
|
|
85
|
+
autoload :Dimension, "chemicalml/cml/aliases"
|
|
86
|
+
autoload :Documentation, "chemicalml/cml/aliases"
|
|
87
|
+
autoload :Eigen, "chemicalml/cml/aliases"
|
|
88
|
+
autoload :Electron, "chemicalml/cml/aliases"
|
|
89
|
+
autoload :Fragment, "chemicalml/cml/aliases"
|
|
90
|
+
autoload :FragmentList, "chemicalml/cml/aliases"
|
|
91
|
+
autoload :Gradient, "chemicalml/cml/aliases"
|
|
92
|
+
autoload :Isotope, "chemicalml/cml/aliases"
|
|
93
|
+
autoload :IsotopeList, "chemicalml/cml/aliases"
|
|
94
|
+
autoload :Join, "chemicalml/cml/aliases"
|
|
95
|
+
autoload :Kpoint, "chemicalml/cml/aliases"
|
|
96
|
+
autoload :KpointList, "chemicalml/cml/aliases"
|
|
97
|
+
autoload :Lattice, "chemicalml/cml/aliases"
|
|
98
|
+
autoload :LatticeVector, "chemicalml/cml/aliases"
|
|
99
|
+
autoload :Length, "chemicalml/cml/aliases"
|
|
100
|
+
autoload :Line3, "chemicalml/cml/aliases"
|
|
101
|
+
autoload :Link, "chemicalml/cml/aliases"
|
|
102
|
+
autoload :Map, "chemicalml/cml/aliases"
|
|
103
|
+
autoload :Mechanism, "chemicalml/cml/aliases"
|
|
104
|
+
autoload :MechanismComponent, "chemicalml/cml/aliases"
|
|
105
|
+
autoload :MoleculeList, "chemicalml/cml/aliases"
|
|
106
|
+
autoload :Object, "chemicalml/cml/aliases"
|
|
107
|
+
autoload :Observation, "chemicalml/cml/aliases"
|
|
108
|
+
autoload :Particle, "chemicalml/cml/aliases"
|
|
109
|
+
autoload :Peak, "chemicalml/cml/aliases"
|
|
110
|
+
autoload :PeakGroup, "chemicalml/cml/aliases"
|
|
111
|
+
autoload :PeakList, "chemicalml/cml/aliases"
|
|
112
|
+
autoload :PeakStructure, "chemicalml/cml/aliases"
|
|
113
|
+
autoload :Plane3, "chemicalml/cml/aliases"
|
|
114
|
+
autoload :Point3, "chemicalml/cml/aliases"
|
|
115
|
+
autoload :Potential, "chemicalml/cml/aliases"
|
|
116
|
+
autoload :PotentialForm, "chemicalml/cml/aliases"
|
|
117
|
+
autoload :PotentialList, "chemicalml/cml/aliases"
|
|
118
|
+
autoload :ReactionScheme, "chemicalml/cml/aliases"
|
|
119
|
+
autoload :ReactionStep, "chemicalml/cml/aliases"
|
|
120
|
+
autoload :ReactionStepList, "chemicalml/cml/aliases"
|
|
121
|
+
autoload :ReactiveCentre, "chemicalml/cml/aliases"
|
|
122
|
+
autoload :Region, "chemicalml/cml/aliases"
|
|
123
|
+
autoload :Sample, "chemicalml/cml/aliases"
|
|
124
|
+
autoload :Spectator, "chemicalml/cml/aliases"
|
|
125
|
+
autoload :SpectatorList, "chemicalml/cml/aliases"
|
|
126
|
+
autoload :Spectrum, "chemicalml/cml/aliases"
|
|
127
|
+
autoload :SpectrumData, "chemicalml/cml/aliases"
|
|
128
|
+
autoload :SpectrumList, "chemicalml/cml/aliases"
|
|
129
|
+
autoload :Sphere3, "chemicalml/cml/aliases"
|
|
130
|
+
autoload :Stmml, "chemicalml/cml/aliases"
|
|
131
|
+
autoload :SubstanceList, "chemicalml/cml/aliases"
|
|
132
|
+
autoload :Symmetry, "chemicalml/cml/aliases"
|
|
133
|
+
autoload :System, "chemicalml/cml/aliases"
|
|
134
|
+
autoload :Table, "chemicalml/cml/aliases"
|
|
135
|
+
autoload :TableCell, "chemicalml/cml/aliases"
|
|
136
|
+
autoload :TableContent, "chemicalml/cml/aliases"
|
|
137
|
+
autoload :TableHeader, "chemicalml/cml/aliases"
|
|
138
|
+
autoload :TableHeaderCell, "chemicalml/cml/aliases"
|
|
139
|
+
autoload :TableRow, "chemicalml/cml/aliases"
|
|
140
|
+
autoload :TableRowList, "chemicalml/cml/aliases"
|
|
141
|
+
autoload :Torsion, "chemicalml/cml/aliases"
|
|
142
|
+
autoload :Transform3, "chemicalml/cml/aliases"
|
|
143
|
+
autoload :TransitionState, "chemicalml/cml/aliases"
|
|
144
|
+
autoload :Vector3, "chemicalml/cml/aliases"
|
|
145
|
+
autoload :Xaxis, "chemicalml/cml/aliases"
|
|
146
|
+
autoload :Yaxis, "chemicalml/cml/aliases"
|
|
147
|
+
autoload :ZMatrix, "chemicalml/cml/aliases"
|
|
54
148
|
end
|
|
55
149
|
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class AtomCoordinatesMustBePaired < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Atom)
|
|
10
|
+
|
|
11
|
+
violations = []
|
|
12
|
+
has_x2 = !node.x2.to_s.empty?
|
|
13
|
+
has_y2 = !node.y2.to_s.empty?
|
|
14
|
+
if has_x2 != has_y2
|
|
15
|
+
violations << violation(path: path.empty? ? "atom" : path.join("/"),
|
|
16
|
+
message: "x2 and y2 must both be present or both absent")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
has_x3 = !node.x3.to_s.empty?
|
|
20
|
+
has_y3 = !node.y3.to_s.empty?
|
|
21
|
+
has_z3 = !node.z3.to_s.empty?
|
|
22
|
+
if [has_x3, has_y3, has_z3].any? && ![has_x3, has_y3, has_z3].all?
|
|
23
|
+
violations << violation(path: path.empty? ? "atom" : path.join("/"),
|
|
24
|
+
message: "x3, y3, and z3 must all be present together")
|
|
25
|
+
end
|
|
26
|
+
violations
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class AtomIdMustMatchPattern < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
ID_PATTERN = /\A[A-Za-z][A-Za-z0-9._\-]*\z/.freeze
|
|
9
|
+
|
|
10
|
+
def check_node(node, path)
|
|
11
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Atom)
|
|
12
|
+
|
|
13
|
+
id = node.id.to_s
|
|
14
|
+
return [] if id.empty?
|
|
15
|
+
return [] if id.match?(ID_PATTERN)
|
|
16
|
+
|
|
17
|
+
[violation(path: path.empty? ? "atom" : path.join("/"),
|
|
18
|
+
message: "atom id #{id.inspect} must start with a letter and " \
|
|
19
|
+
"contain only letters, digits, dot, hyphen, or underscore",
|
|
20
|
+
severity: :warning)]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class AtomMustHaveElementType < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Atom)
|
|
10
|
+
|
|
11
|
+
return [] unless node.element_type.to_s.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "atom" : path.join("/"),
|
|
14
|
+
message: "atom must have an elementType attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class AtomMustHaveId < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Atom)
|
|
10
|
+
|
|
11
|
+
return [] unless node.id.to_s.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "atom" : path.join("/"),
|
|
14
|
+
message: "atom must have an id attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class BondMustHaveAtomRefs2 < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Bond)
|
|
10
|
+
|
|
11
|
+
return [] unless node.atom_refs2.to_s.strip.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "bond" : path.join("/"),
|
|
14
|
+
message: "bond must have an atomRefs2 attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class BondMustHaveOrder < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Bond)
|
|
10
|
+
|
|
11
|
+
return [] unless node.order.to_s.strip.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "bond" : path.join("/"),
|
|
14
|
+
message: "bond must have an order attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class BondOrderShouldNotBeNumeric < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
VALID_ORDERS = %w[S D T Q A other].freeze
|
|
9
|
+
|
|
10
|
+
def check_node(node, path)
|
|
11
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Bond)
|
|
12
|
+
|
|
13
|
+
order = node.order.to_s
|
|
14
|
+
return [] if order.empty?
|
|
15
|
+
|
|
16
|
+
return [] if VALID_ORDERS.include?(order) || node.dict_ref.to_s.size.positive?
|
|
17
|
+
|
|
18
|
+
[violation(path: path.empty? ? "bond" : path.join("/"),
|
|
19
|
+
message: "bond order #{order.inspect} is not recommended " \
|
|
20
|
+
"(use S/D/T/Q/A or 'other' with dictRef)",
|
|
21
|
+
severity: :warning)]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class MoleculeMustHaveId < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Molecule)
|
|
10
|
+
|
|
11
|
+
return [] unless node.id.to_s.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "molecule" : path.join("/"),
|
|
14
|
+
message: "molecule must have an id attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class PropertyMustHaveDictRef < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Property)
|
|
10
|
+
|
|
11
|
+
return [] unless node.dict_ref.to_s.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "property" : path.join("/"),
|
|
14
|
+
message: "property must have a dictRef attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Molecular
|
|
6
|
+
module Constraints
|
|
7
|
+
class ScalarMustHaveDataType < Chemicalml::Convention::Constraint::NodeConstraint
|
|
8
|
+
def check_node(node, path)
|
|
9
|
+
return [] unless node.is_a?(Chemicalml::Cml::Role::Scalar)
|
|
10
|
+
|
|
11
|
+
return [] unless node.data_type.to_s.empty?
|
|
12
|
+
|
|
13
|
+
[violation(path: path.empty? ? "scalar" : path.join("/"),
|
|
14
|
+
message: "scalar must have a dataType attribute")]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
module Chemicalml
|
|
4
4
|
module Convention
|
|
5
5
|
module Molecular
|
|
6
|
-
# Namespace container for all molecular-convention constraint
|
|
7
|
-
# classes. One class per file, registered from the parent
|
|
8
|
-
# `molecular.rb`.
|
|
9
6
|
module Constraints
|
|
10
7
|
autoload :AtomArrayMustContainAtoms,
|
|
11
8
|
"chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms"
|
|
@@ -13,6 +10,26 @@ module Chemicalml
|
|
|
13
10
|
"chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule"
|
|
14
11
|
autoload :BondMustReferenceAtomsInSameMolecule,
|
|
15
12
|
"chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule"
|
|
13
|
+
autoload :AtomMustHaveId,
|
|
14
|
+
"chemicalml/convention/molecular/constraints/atom_must_have_id"
|
|
15
|
+
autoload :AtomMustHaveElementType,
|
|
16
|
+
"chemicalml/convention/molecular/constraints/atom_must_have_element_type"
|
|
17
|
+
autoload :BondMustHaveAtomRefs2,
|
|
18
|
+
"chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2"
|
|
19
|
+
autoload :BondMustHaveOrder,
|
|
20
|
+
"chemicalml/convention/molecular/constraints/bond_must_have_order"
|
|
21
|
+
autoload :MoleculeMustHaveId,
|
|
22
|
+
"chemicalml/convention/molecular/constraints/molecule_must_have_id"
|
|
23
|
+
autoload :AtomCoordinatesMustBePaired,
|
|
24
|
+
"chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired"
|
|
25
|
+
autoload :PropertyMustHaveDictRef,
|
|
26
|
+
"chemicalml/convention/molecular/constraints/property_must_have_dict_ref"
|
|
27
|
+
autoload :ScalarMustHaveDataType,
|
|
28
|
+
"chemicalml/convention/molecular/constraints/scalar_must_have_data_type"
|
|
29
|
+
autoload :BondOrderShouldNotBeNumeric,
|
|
30
|
+
"chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric"
|
|
31
|
+
autoload :AtomIdMustMatchPattern,
|
|
32
|
+
"chemicalml/convention/molecular/constraints/atom_id_must_match_pattern"
|
|
16
33
|
end
|
|
17
34
|
end
|
|
18
35
|
end
|
|
@@ -24,6 +24,16 @@ module Chemicalml
|
|
|
24
24
|
register Constraints::AtomArrayMustContainAtoms
|
|
25
25
|
register Constraints::AtomIdsUniqueWithinMolecule
|
|
26
26
|
register Constraints::BondMustReferenceAtomsInSameMolecule
|
|
27
|
+
register Constraints::AtomMustHaveId
|
|
28
|
+
register Constraints::AtomMustHaveElementType
|
|
29
|
+
register Constraints::BondMustHaveAtomRefs2
|
|
30
|
+
register Constraints::BondMustHaveOrder
|
|
31
|
+
register Constraints::MoleculeMustHaveId
|
|
32
|
+
register Constraints::AtomCoordinatesMustBePaired
|
|
33
|
+
register Constraints::PropertyMustHaveDictRef
|
|
34
|
+
register Constraints::ScalarMustHaveDataType
|
|
35
|
+
register Constraints::BondOrderShouldNotBeNumeric
|
|
36
|
+
register Constraints::AtomIdMustMatchPattern
|
|
27
37
|
end
|
|
28
38
|
end
|
|
29
39
|
end
|
|
@@ -5,16 +5,24 @@ module Chemicalml
|
|
|
5
5
|
# A chemical atom. Carries every attribute CML's `<atom>` carries
|
|
6
6
|
# that's chemistry-relevant: element symbol, formal charge,
|
|
7
7
|
# isotope, count (multiplicity), hydrogen count, lone pairs,
|
|
8
|
-
# radical electrons, spin multiplicity
|
|
8
|
+
# radical electrons, spin multiplicity, 2D/3D coordinates,
|
|
9
|
+
# fractional coordinates. Optional `atom_parity` for atom-centre
|
|
10
|
+
# chirality.
|
|
9
11
|
class Atom < Node
|
|
10
12
|
attr_accessor :id, :element, :formal_charge, :isotope,
|
|
11
13
|
:count, :hydrogen_count, :lone_pairs,
|
|
12
|
-
:radical_electrons, :spin_multiplicity, :title
|
|
14
|
+
:radical_electrons, :spin_multiplicity, :title,
|
|
15
|
+
:x2, :y2, :x3, :y3, :z3,
|
|
16
|
+
:x_fract, :y_fract, :z_fract,
|
|
17
|
+
:atom_parity
|
|
13
18
|
|
|
14
19
|
def initialize(element:, id: nil, formal_charge: nil,
|
|
15
20
|
isotope: nil, count: nil, hydrogen_count: nil,
|
|
16
21
|
lone_pairs: nil, radical_electrons: nil,
|
|
17
|
-
spin_multiplicity: nil, title: nil
|
|
22
|
+
spin_multiplicity: nil, title: nil,
|
|
23
|
+
x2: nil, y2: nil, x3: nil, y3: nil, z3: nil,
|
|
24
|
+
x_fract: nil, y_fract: nil, z_fract: nil,
|
|
25
|
+
atom_parity: nil)
|
|
18
26
|
@element = element
|
|
19
27
|
@id = id
|
|
20
28
|
@formal_charge = formal_charge
|
|
@@ -25,6 +33,19 @@ module Chemicalml
|
|
|
25
33
|
@radical_electrons = radical_electrons
|
|
26
34
|
@spin_multiplicity = spin_multiplicity
|
|
27
35
|
@title = title
|
|
36
|
+
@x2 = x2
|
|
37
|
+
@y2 = y2
|
|
38
|
+
@x3 = x3
|
|
39
|
+
@y3 = y3
|
|
40
|
+
@z3 = z3
|
|
41
|
+
@x_fract = x_fract
|
|
42
|
+
@y_fract = y_fract
|
|
43
|
+
@z_fract = z_fract
|
|
44
|
+
@atom_parity = atom_parity
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def children
|
|
48
|
+
[atom_parity].compact
|
|
28
49
|
end
|
|
29
50
|
|
|
30
51
|
def value_attributes
|
|
@@ -32,7 +53,10 @@ module Chemicalml
|
|
|
32
53
|
element: element, id: id, formal_charge: formal_charge,
|
|
33
54
|
isotope: isotope, count: count, hydrogen_count: hydrogen_count,
|
|
34
55
|
lone_pairs: lone_pairs, radical_electrons: radical_electrons,
|
|
35
|
-
spin_multiplicity: spin_multiplicity, title: title
|
|
56
|
+
spin_multiplicity: spin_multiplicity, title: title,
|
|
57
|
+
x2: x2, y2: y2, x3: x3, y3: y3, z3: z3,
|
|
58
|
+
x_fract: x_fract, y_fract: y_fract, z_fract: z_fract,
|
|
59
|
+
atom_parity: atom_parity
|
|
36
60
|
}
|
|
37
61
|
end
|
|
38
62
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Model
|
|
5
|
+
# Atom-centre chirality. CML `<atomParity>` element with
|
|
6
|
+
# `atomRefs4` (four atom IDs in order) and a `value` (typically
|
|
7
|
+
# `"1"`, `"-1"`, or `"0"`).
|
|
8
|
+
class AtomParity < Node
|
|
9
|
+
attr_accessor :atom_refs4, :value
|
|
10
|
+
|
|
11
|
+
def initialize(atom_refs4:, value:)
|
|
12
|
+
@atom_refs4 = atom_refs4
|
|
13
|
+
@value = value
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def value_attributes
|
|
17
|
+
{ atom_refs4: atom_refs4, value: value }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -4,6 +4,7 @@ module Chemicalml
|
|
|
4
4
|
module Model
|
|
5
5
|
# A bond between two atoms. Endpoint references are string IDs
|
|
6
6
|
# matching `Atom#id`; the kind enum follows CML conventions.
|
|
7
|
+
# Optional `bond_stereo` carries cis/trans/wedge/hatch info.
|
|
7
8
|
class Bond < Node
|
|
8
9
|
KINDS = %i[single double triple quadruple aromatic wedge hash
|
|
9
10
|
dative wavy].freeze
|
|
@@ -13,16 +14,21 @@ module Chemicalml
|
|
|
13
14
|
aromatic: "A", wedge: "W", hash: "H", dative: "DG", wavy: "V"
|
|
14
15
|
}.freeze
|
|
15
16
|
|
|
16
|
-
attr_accessor :id, :atom_refs, :kind
|
|
17
|
+
attr_accessor :id, :atom_refs, :kind, :bond_stereo
|
|
17
18
|
|
|
18
|
-
def initialize(id: nil, atom_refs:, kind: :single)
|
|
19
|
+
def initialize(id: nil, atom_refs:, kind: :single, bond_stereo: nil)
|
|
19
20
|
@id = id
|
|
20
21
|
@atom_refs = atom_refs
|
|
21
22
|
@kind = kind
|
|
23
|
+
@bond_stereo = bond_stereo
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def children
|
|
27
|
+
[bond_stereo].compact
|
|
22
28
|
end
|
|
23
29
|
|
|
24
30
|
def value_attributes
|
|
25
|
-
{ id: id, atom_refs: atom_refs, kind: kind }
|
|
31
|
+
{ id: id, atom_refs: atom_refs, kind: kind, bond_stereo: bond_stereo }
|
|
26
32
|
end
|
|
27
33
|
|
|
28
34
|
def cml_order
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Model
|
|
5
|
+
# Bond stereochemistry. CML `<bondStereo>` element. Carries
|
|
6
|
+
# either `atom_refs2` (for `W`/`H` wedge/hatch) or `atom_refs4`
|
|
7
|
+
# (for `C`/`T` cis/trans). The `value` is the convention letter:
|
|
8
|
+
# `W`, `H`, `C`, `T`, or `other` (with a `dict_ref`).
|
|
9
|
+
class BondStereo < Node
|
|
10
|
+
attr_accessor :atom_refs2, :atom_refs4, :dict_ref, :value
|
|
11
|
+
|
|
12
|
+
def initialize(value:, atom_refs2: nil, atom_refs4: nil, dict_ref: nil)
|
|
13
|
+
@value = value
|
|
14
|
+
@atom_refs2 = atom_refs2
|
|
15
|
+
@atom_refs4 = atom_refs4
|
|
16
|
+
@dict_ref = dict_ref
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def value_attributes
|
|
20
|
+
{
|
|
21
|
+
value: value,
|
|
22
|
+
atom_refs2: atom_refs2,
|
|
23
|
+
atom_refs4: atom_refs4,
|
|
24
|
+
dict_ref: dict_ref
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|