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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74eb61f89b283d3263aa4ead18e9b76061700defcc54232002855af6b1291c0a
|
|
4
|
+
data.tar.gz: 228f8f704086b458a73b3f4cb679b25133cf5ee36aa16d58c688a6439abb1974
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba13a979cce6d48bbef181917107ac9ad24291131e8568652a012698c5e3ebe7f43851f908408478e4b4481d270cb9b83371d9c3f19093700df19a97565af2a9
|
|
7
|
+
data.tar.gz: 8557d650ab706936b25031541e256e840cc638d025d5c4b7308a512aa46e27d4223a050ba27b37c7d9c5408c1b1dd7af4974697699af317fec17a3ecfa262f92
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- 'docs/**'
|
|
8
|
+
pull_request:
|
|
9
|
+
paths:
|
|
10
|
+
- 'docs/**'
|
|
11
|
+
repository_dispatch:
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
pages: write
|
|
17
|
+
id-token: write
|
|
18
|
+
|
|
19
|
+
concurrency:
|
|
20
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
21
|
+
cancel-in-progress: false
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
build:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout
|
|
28
|
+
uses: actions/checkout@v6
|
|
29
|
+
|
|
30
|
+
- name: Setup Ruby
|
|
31
|
+
uses: ruby/setup-ruby@v1
|
|
32
|
+
with:
|
|
33
|
+
ruby-version: '3.3'
|
|
34
|
+
bundler-cache: true
|
|
35
|
+
cache-version: 0
|
|
36
|
+
working-directory: docs
|
|
37
|
+
|
|
38
|
+
- name: Setup Pages
|
|
39
|
+
id: pages
|
|
40
|
+
uses: actions/configure-pages@v5
|
|
41
|
+
|
|
42
|
+
- name: Build with Jekyll
|
|
43
|
+
run: bundle exec jekyll build --verbose --trace --baseurl "${{ steps.pages.outputs.base_path }}"
|
|
44
|
+
working-directory: docs
|
|
45
|
+
env:
|
|
46
|
+
JEKYLL_ENV: production
|
|
47
|
+
|
|
48
|
+
- name: Upload artifact
|
|
49
|
+
uses: actions/upload-pages-artifact@v4
|
|
50
|
+
with:
|
|
51
|
+
path: docs/_site
|
|
52
|
+
|
|
53
|
+
deploy:
|
|
54
|
+
environment:
|
|
55
|
+
name: github-pages
|
|
56
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
57
|
+
if: ${{ github.ref == 'refs/heads/main' }}
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
needs: build
|
|
60
|
+
steps:
|
|
61
|
+
- name: Deploy to GitHub Pages
|
|
62
|
+
id: deployment
|
|
63
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
name: links
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- 'docs/**'
|
|
9
|
+
pull_request:
|
|
10
|
+
paths:
|
|
11
|
+
- 'docs/**'
|
|
12
|
+
|
|
13
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
pull-requests: write
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
link_checker:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
|
|
24
|
+
- uses: ruby/setup-ruby@v1
|
|
25
|
+
with:
|
|
26
|
+
ruby-version: '3.4'
|
|
27
|
+
bundler-cache: true
|
|
28
|
+
working-directory: docs
|
|
29
|
+
|
|
30
|
+
- name: Build site
|
|
31
|
+
env:
|
|
32
|
+
JEKYLL_ENV: production
|
|
33
|
+
run: bundle exec jekyll build --trace
|
|
34
|
+
working-directory: docs
|
|
35
|
+
|
|
36
|
+
- name: Restore lychee cache
|
|
37
|
+
uses: actions/cache@v4
|
|
38
|
+
with:
|
|
39
|
+
path: .lycheecache
|
|
40
|
+
key: cache-lychee-${{ github.sha }}
|
|
41
|
+
restore-keys: cache-lychee-
|
|
42
|
+
|
|
43
|
+
- name: Check if site was built
|
|
44
|
+
run: |
|
|
45
|
+
if [ ! -d "_site" ]; then
|
|
46
|
+
echo "Error: _site directory not created"
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
echo "Site built successfully"
|
|
50
|
+
ls -la _site/
|
|
51
|
+
working-directory: docs
|
|
52
|
+
|
|
53
|
+
- name: Link Checker (Built Site)
|
|
54
|
+
uses: lycheeverse/lychee-action@v2
|
|
55
|
+
with:
|
|
56
|
+
# Check the built HTML site for rendered links
|
|
57
|
+
# Only check https and http schemes, exclude file:// due to path resolution issues
|
|
58
|
+
args: >-
|
|
59
|
+
--verbose
|
|
60
|
+
--no-progress
|
|
61
|
+
--config lychee.toml
|
|
62
|
+
--root-dir "$(pwd)/_site"
|
|
63
|
+
--scheme https,http
|
|
64
|
+
'_site/**/*.html'
|
|
65
|
+
fail: true
|
|
66
|
+
output: link-check-results.md
|
|
67
|
+
format: markdown
|
|
68
|
+
workingDirectory: docs
|
|
69
|
+
|
|
70
|
+
- name: Upload link check results
|
|
71
|
+
if: always()
|
|
72
|
+
uses: actions/upload-artifact@v4
|
|
73
|
+
with:
|
|
74
|
+
name: link-check-results
|
|
75
|
+
path: |
|
|
76
|
+
docs/link-check-results.md
|
|
77
|
+
retention-days: 30
|
|
78
|
+
|
|
79
|
+
- name: Comment PR with results
|
|
80
|
+
if: failure() && github.event_name == 'pull_request'
|
|
81
|
+
uses: actions/github-script@v7
|
|
82
|
+
with:
|
|
83
|
+
script: |
|
|
84
|
+
const fs = require('fs');
|
|
85
|
+
let comment = '## 🔗 Link Check Failed\n\n';
|
|
86
|
+
|
|
87
|
+
if (fs.existsSync('docs/link-check-results.md')) {
|
|
88
|
+
const results = fs.readFileSync('docs/link-check-results.md', 'utf8');
|
|
89
|
+
comment += '### Built Site Results\n\n' + results + '\n\n';
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
comment += '\n---\n\n*Please fix the broken links and push a new commit.*';
|
|
93
|
+
|
|
94
|
+
github.rest.issues.createComment({
|
|
95
|
+
issue_number: context.issue.number,
|
|
96
|
+
owner: context.repo.owner,
|
|
97
|
+
repo: context.repo.repo,
|
|
98
|
+
body: comment
|
|
99
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: opal
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
|
+
|
|
17
|
+
- name: Set up Ruby
|
|
18
|
+
uses: ruby/setup-ruby@v1
|
|
19
|
+
with:
|
|
20
|
+
ruby-version: "3.4"
|
|
21
|
+
bundler-cache: true
|
|
22
|
+
|
|
23
|
+
- name: Set up Node.js
|
|
24
|
+
uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: "20"
|
|
27
|
+
|
|
28
|
+
- name: Install Opal dependencies
|
|
29
|
+
run: |
|
|
30
|
+
bundle config set with opal
|
|
31
|
+
bundle install
|
|
32
|
+
|
|
33
|
+
- name: Run Opal smoke tests
|
|
34
|
+
run: bundle exec rake spec:opal
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: performance
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
performance:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 15
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
|
|
18
|
+
- name: Set up Ruby
|
|
19
|
+
uses: ruby/setup-ruby@v1
|
|
20
|
+
with:
|
|
21
|
+
ruby-version: 3.4
|
|
22
|
+
bundler-cache: true
|
|
23
|
+
|
|
24
|
+
- name: Run performance benchmarks
|
|
25
|
+
run: bundle exec rake performance:compare
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
|
2
|
+
# See https://github.com/metanorma/cimas
|
|
3
|
+
name: rake
|
|
4
|
+
|
|
5
|
+
permissions:
|
|
6
|
+
contents: write
|
|
7
|
+
packages: write
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
branches: [ master, main ]
|
|
12
|
+
tags: [ v* ]
|
|
13
|
+
pull_request:
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
rake:
|
|
17
|
+
uses: metanorma/ci/.github/workflows/generic-rake.yml@main
|
|
18
|
+
secrets:
|
|
19
|
+
pat_token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
|
2
|
+
# See https://github.com/metanorma/cimas
|
|
3
|
+
name: release
|
|
4
|
+
|
|
5
|
+
permissions:
|
|
6
|
+
contents: write
|
|
7
|
+
packages: write
|
|
8
|
+
id-token: write
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
inputs:
|
|
13
|
+
next_version:
|
|
14
|
+
description: |
|
|
15
|
+
Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
|
|
16
|
+
Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
|
|
17
|
+
required: true
|
|
18
|
+
default: 'skip'
|
|
19
|
+
repository_dispatch:
|
|
20
|
+
types: [ do-release ]
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
release:
|
|
24
|
+
uses: relaton/support/.github/workflows/release.yml@main
|
|
25
|
+
with:
|
|
26
|
+
next_version: ${{ github.event.inputs.next_version }}
|
|
27
|
+
secrets:
|
|
28
|
+
rubygems-api-key: ${{ secrets.LUTAML_CI_RUBYGEMS_API_KEY }}
|
data/CHANGELOG.md
CHANGED
|
@@ -1,21 +1,61 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to
|
|
3
|
+
All notable changes to Chemicalml are documented here.
|
|
4
4
|
This project follows [Semantic Versioning](https://semver.org/).
|
|
5
5
|
|
|
6
|
-
## [
|
|
6
|
+
## [0.2.0] - 2026-07-14
|
|
7
7
|
|
|
8
8
|
### Added
|
|
9
|
+
|
|
10
|
+
- Full CML Schema 3 element coverage (121 elements).
|
|
11
|
+
- Dual schema support: Schema 2.4 and Schema 3 wire classes with
|
|
12
|
+
real class hierarchies, shared declarations via `Base::*` mixins,
|
|
13
|
+
and `Role::*` type marker modules.
|
|
14
|
+
- `Chemicalml.parse(xml, schema:)` polymorphic entry point with
|
|
15
|
+
auto-detection of root element (any of the 121 CML elements).
|
|
16
|
+
- `Chemicalml::Cml::Translator` with schema-aware translation:
|
|
17
|
+
`to_canonical` / `from_canonical` handle both Schema3 and
|
|
18
|
+
Schema24 wire classes at every nesting level via
|
|
19
|
+
`WireClassRegistry`.
|
|
20
|
+
- Convention framework: 5 built-in conventions (molecular, compchem,
|
|
21
|
+
dictionary, unit-dictionary, unitType-dictionary) with 17
|
|
22
|
+
registered constraint classes.
|
|
23
|
+
- Dictionary model: 8 built-in YAML dictionaries (compchem, cml,
|
|
24
|
+
cml_name, cml_formula, cif, unit_si, unit_non_si, unit_type)
|
|
25
|
+
with 193+ entries.
|
|
26
|
+
- Atom coordinate support: 2D (x2/y2), 3D (x3/y3/z3), and
|
|
27
|
+
fractional (xFract/yFract/zFract) coordinates round-trip through
|
|
28
|
+
canonical.
|
|
29
|
+
- Stereo support: `AtomParity` and `BondStereo` round-trip through
|
|
30
|
+
canonical Model.
|
|
31
|
+
- Compchem module support: `<module>`-rooted documents parse and
|
|
32
|
+
round-trip through canonical.
|
|
33
|
+
- Property/Formula/Label as children of Molecule — no more silent
|
|
34
|
+
data loss on `<property>` inside `<molecule>`.
|
|
35
|
+
- `Visitable` mixin: uniform interface for constraint walker
|
|
36
|
+
(`wire_children`, `node_id`, `element_name`).
|
|
37
|
+
- Canon-based semantic XML comparison in specs.
|
|
38
|
+
- Attribution: NOTICES.adoc credits xml-cml.org editors and
|
|
39
|
+
CC-BY-3.0 license for upstream content.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- Namespace renamed from `ChemicalML` to `Chemicalml`.
|
|
44
|
+
- Wire classes load lazily via `autoload` — every file, every
|
|
45
|
+
constant.
|
|
46
|
+
- Serialization goes through `lutaml-model` only — no hand-rolled
|
|
47
|
+
XML.
|
|
48
|
+
- Schema 2.4 correctly lacks `<module>` (schema 3 only).
|
|
49
|
+
|
|
50
|
+
## [0.1.0] - 2026-07-13
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
9
54
|
- Initial gem scaffold: autoload tree, version, errors.
|
|
10
|
-
- CML namespace declaration
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
`Document`, `Molecule`, `AtomArray`, `Atom`, `BondArray`, `Bond`,
|
|
14
|
-
`Reaction`, `ReactantList`, `Reactant`, `ProductList`, `Product`,
|
|
15
|
-
`ReactionList`, `Name`, `Identifier`.
|
|
16
|
-
- AsciiChem extension namespace (`Chemicalml::Ext::Namespace`) for
|
|
17
|
-
attributes CML doesn't natively cover (lone pairs, radical
|
|
18
|
-
electrons, stereochemistry).
|
|
19
|
-
- Round-trip specs covering canonical CML fragments.
|
|
55
|
+
- CML namespace declaration.
|
|
56
|
+
- CML model classes for the core element set.
|
|
57
|
+
- Round-trip specs.
|
|
20
58
|
|
|
21
59
|
[Unreleased]: https://github.com/lutaml/chemicalml/commits/main
|
|
60
|
+
[0.2.0]: https://github.com/lutaml/chemicalml/releases/tag/v0.2.0
|
|
61
|
+
[0.1.0]: https://github.com/lutaml/chemicalml/releases/tag/v0.1.0
|
data/Gemfile
CHANGED
|
@@ -4,10 +4,11 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
gemspec
|
|
6
6
|
|
|
7
|
+
gem "rake", "~> 13.2"
|
|
8
|
+
|
|
7
9
|
group :development do
|
|
8
10
|
gem "canon"
|
|
9
11
|
gem "nokogiri"
|
|
10
|
-
gem "rake", "~> 13.2"
|
|
11
12
|
gem "rspec", "~> 3.13"
|
|
12
13
|
gem "rubocop", "~> 1.66", require: false
|
|
13
14
|
gem "simplecov", "~> 0.22", require: false
|
data/Rakefile
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "bundler/gem_tasks"
|
|
4
|
-
require "rspec/core/rake_task"
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
begin
|
|
6
|
+
require "rspec/core/rake_task"
|
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
8
|
+
task default: :spec
|
|
9
|
+
rescue LoadError
|
|
10
|
+
task :default do
|
|
11
|
+
warn "rspec not available — skipping specs"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 18 — WireClassRegistry
|
|
2
|
+
|
|
3
|
+
**Status:** complete
|
|
4
|
+
**Depends on:** —
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
A central registry that, given a schema symbol and a Role module,
|
|
9
|
+
returns the right wire class. Eliminates the hardcoded `Cml::Foo`
|
|
10
|
+
references in the Translator (which are all Schema3 aliases).
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
Chemicalml::Cml::WireClassRegistry.for(:schema24, Chemicalml::Cml::Role::Molecule)
|
|
14
|
+
# => Chemicalml::Cml::Schema24::Molecule
|
|
15
|
+
|
|
16
|
+
Chemicalml::Cml::WireClassRegistry.for(:schema3, Chemicalml::Cml::Role::Atom)
|
|
17
|
+
# => Chemicalml::Cml::Schema3::Atom
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Why
|
|
21
|
+
|
|
22
|
+
The Translator today hardcodes `Cml::Molecule` (which is an alias for
|
|
23
|
+
`Schema3::Molecule`). When the user asks for a Schema24 document,
|
|
24
|
+
`Translator.from_canonical(doc, schema: :schema24)` returns a
|
|
25
|
+
`Schema24::Document` but its `molecules` collection contains
|
|
26
|
+
`Schema3::Molecule` instances. **This is a correctness bug.**
|
|
27
|
+
|
|
28
|
+
The registry centralizes the lookup so every helper can resolve the
|
|
29
|
+
right class for the requested schema.
|
|
30
|
+
|
|
31
|
+
## Deliverables
|
|
32
|
+
|
|
33
|
+
- [ ] `lib/chemicalml/cml/wire_class_registry.rb` — module with
|
|
34
|
+
`for(schema, role)` class method.
|
|
35
|
+
- [ ] Raises `ArgumentError` on unknown schema or role.
|
|
36
|
+
- [ ] Lazily resolves via `Schema3::Foo` / `Schema24::Foo` constants
|
|
37
|
+
(no eager loading).
|
|
38
|
+
- [ ] Spec coverage.
|
|
39
|
+
|
|
40
|
+
## Acceptance
|
|
41
|
+
|
|
42
|
+
- `WireClassRegistry.for(:schema24, Role::Molecule)` returns
|
|
43
|
+
`Chemicalml::Cml::Schema24::Molecule`.
|
|
44
|
+
- `WireClassRegistry.for(:schema3, Role::Atom)` returns
|
|
45
|
+
`Chemicalml::Cml::Schema3::Atom`.
|
|
46
|
+
- Unknown schema raises `ArgumentError`.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 19 — Schema-aware translator helpers
|
|
2
|
+
|
|
3
|
+
**Status:** complete
|
|
4
|
+
**Depends on:** 18
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Replace every `Cml::Foo.new(...)` in the Translator with
|
|
9
|
+
`WireClassRegistry.for(schema, Role::Foo).new(...)`. Pass the schema
|
|
10
|
+
through every `*_from_canonical` helper.
|
|
11
|
+
|
|
12
|
+
## Why
|
|
13
|
+
|
|
14
|
+
Today `Translator.from_canonical(doc, schema: :schema24)` returns a
|
|
15
|
+
Schema24 Document whose children are Schema3 instances — silent
|
|
16
|
+
correctness bug. Fixing it requires the WireClassRegistry (task 18)
|
|
17
|
+
plus threading `schema:` through every helper.
|
|
18
|
+
|
|
19
|
+
## Deliverables
|
|
20
|
+
|
|
21
|
+
- [ ] Every `*_from_canonical` helper takes `schema:` keyword.
|
|
22
|
+
- [ ] `from_canonical` itself passes its `schema:` to each helper.
|
|
23
|
+
- [ ] No hardcoded `Cml::Foo` in `lib/chemicalml/cml/translator.rb`
|
|
24
|
+
or `value_translations.rb`.
|
|
25
|
+
- [ ] Spec verifying `from_canonical(schema: :schema24)` produces
|
|
26
|
+
Schema24 children at every level (Document, Molecule, Atom,
|
|
27
|
+
Bond, Name, Identifier, etc.).
|
|
28
|
+
|
|
29
|
+
## Acceptance
|
|
30
|
+
|
|
31
|
+
- Round-trip canonical → Schema24 wire → canonical yields equal doc.
|
|
32
|
+
- `wire.molecules.first` is a `Schema24::Molecule` (not Schema3).
|
|
33
|
+
- `wire.molecules.first.atom_array.atoms.first` is a `Schema24::Atom`.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# 20 — Missing translator rules
|
|
2
|
+
|
|
3
|
+
**Status:** complete
|
|
4
|
+
**Depends on:** 19
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
The Translator today handles: Document, Molecule, AtomArray,
|
|
9
|
+
Atom, BondArray, Bond, Name, Identifier, Reaction, ReactionList,
|
|
10
|
+
ReactantList, Reactant, ProductList, Product, Substance, plus
|
|
11
|
+
value containers (Scalar, Array, Matrix, Property, Parameter),
|
|
12
|
+
Label, Metadata, Formula via the ValueTranslations module.
|
|
13
|
+
|
|
14
|
+
Missing: **Module** (compchem), **PropertyList**, **ParameterList**,
|
|
15
|
+
**MetadataList**, **AtomParity**, **BondStereo**, **Dictionary**,
|
|
16
|
+
**DictionaryEntry**, **Unit**, **UnitList**, **UnitType**,
|
|
17
|
+
**UnitTypeList**, **List**.
|
|
18
|
+
|
|
19
|
+
Add canonical ↔ wire rules for each so compchem modules and
|
|
20
|
+
dictionaries can round-trip through canonical.
|
|
21
|
+
|
|
22
|
+
## Why
|
|
23
|
+
|
|
24
|
+
- Compchem modules can't be translated today — the wire class exists
|
|
25
|
+
but no canonical mapping does.
|
|
26
|
+
- Dictionary / Unit / UnitType wire classes have no canonical
|
|
27
|
+
counterpart. They could reuse `Chemicalml::Dictionary::Model` etc.
|
|
28
|
+
but the Translator doesn't connect them.
|
|
29
|
+
|
|
30
|
+
## Deliverables
|
|
31
|
+
|
|
32
|
+
- [ ] `module_to_canonical` / `module_from_canonical` — handles
|
|
33
|
+
nested modules, parameter_lists, property_lists,
|
|
34
|
+
metadata_lists, molecules, lists.
|
|
35
|
+
- [ ] `property_list_to_canonical` / `property_list_from_canonical`.
|
|
36
|
+
- [ ] `parameter_list_to_canonical` / `parameter_list_from_canonical`.
|
|
37
|
+
- [ ] `metadata_list_to_canonical` / `metadata_list_from_canonical`.
|
|
38
|
+
- [ ] Specs covering each new rule.
|
|
39
|
+
|
|
40
|
+
## Acceptance
|
|
41
|
+
|
|
42
|
+
- Round-trip a compchem module fixture through canonical → wire →
|
|
43
|
+
canonical yields equal model.
|
|
44
|
+
- Specs green.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 21 — Encapsulate translator internals
|
|
2
|
+
|
|
3
|
+
**Status:** complete
|
|
4
|
+
**Depends on:** 19, 20
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
The Translator has 17 public class methods today. Only `to_canonical`
|
|
9
|
+
and `from_canonical` are part of the public API. Every helper
|
|
10
|
+
(`molecule_to_canonical`, `atom_from_canonical`, `cml_order_to_kind`,
|
|
11
|
+
etc.) is an implementation detail and should be private.
|
|
12
|
+
|
|
13
|
+
## Why
|
|
14
|
+
|
|
15
|
+
- Public API surface = mental load for users. They see 17 methods and
|
|
16
|
+
wonder which to use.
|
|
17
|
+
- Internal helpers shouldn't be callable from outside — encapsulation
|
|
18
|
+
violation.
|
|
19
|
+
- Risk: a future refactor (e.g. visitor pattern) would need to keep
|
|
20
|
+
these as public for backward compat.
|
|
21
|
+
|
|
22
|
+
## Deliverables
|
|
23
|
+
|
|
24
|
+
- [ ] Add `private_class_method` for every helper method on
|
|
25
|
+
`Translator`.
|
|
26
|
+
- [ ] Same for `ValueTranslations::ClassMethods` helpers.
|
|
27
|
+
- [ ] Verify no spec or external code calls the helpers directly.
|
|
28
|
+
|
|
29
|
+
## Acceptance
|
|
30
|
+
|
|
31
|
+
- `Chemicalml::Cml::Translator.public_methods(false)` returns only
|
|
32
|
+
`to_canonical` and `from_canonical`.
|
|
33
|
+
- All specs still pass.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 22 — DRY role modules
|
|
2
|
+
|
|
3
|
+
**Status:** rejected
|
|
4
|
+
**Depends on:** —
|
|
5
|
+
|
|
6
|
+
## Goal (rejected)
|
|
7
|
+
|
|
8
|
+
Replace 36 nearly-identical Role module files with a single
|
|
9
|
+
`Elements::ALL.each_key { const_set(class_name, Module.new) }`
|
|
10
|
+
block.
|
|
11
|
+
|
|
12
|
+
## Why rejected
|
|
13
|
+
|
|
14
|
+
`const_set(class_name, Module.new)` is **eager** — every role module
|
|
15
|
+
is created when `cml/role.rb` loads. The user's global rule mandates
|
|
16
|
+
**autoload** (lazy file loading), not `const_set`. The two are not
|
|
17
|
+
equivalent:
|
|
18
|
+
|
|
19
|
+
- `autoload :Foo, "path"` — registers a hook; the file loads only
|
|
20
|
+
when `Foo` is first referenced. Enables lazy loading, avoids
|
|
21
|
+
circular dependencies, keeps the load path clean.
|
|
22
|
+
- `const_set(:Foo, Module.new)` — creates the constant eagerly at
|
|
23
|
+
file-load time. No lazy loading.
|
|
24
|
+
|
|
25
|
+
The 36 tiny role files are the price of admission for the lazy-load
|
|
26
|
+
guarantee. They stay.
|
|
27
|
+
|
|
28
|
+
## Acceptance
|
|
29
|
+
|
|
30
|
+
- Keep the 36 individual role files under `lib/chemicalml/cml/role/`.
|
|
31
|
+
- Keep the autoload declarations in `lib/chemicalml/cml/role.rb`.
|
|
32
|
+
- Do not use `const_set` for role modules.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 23 — Final spec + lint pass
|
|
2
|
+
|
|
3
|
+
**Status:** complete
|
|
4
|
+
**Depends on:** all
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Run the full suite, audit forbidden patterns, document final state.
|
|
9
|
+
|
|
10
|
+
## Deliverables
|
|
11
|
+
|
|
12
|
+
- [ ] `bundle exec rspec spec/chemicalml/` green.
|
|
13
|
+
- [ ] `Chemicalml::Cml::Translator.public_methods(false)` returns only
|
|
14
|
+
`to_canonical` and `from_canonical`.
|
|
15
|
+
- [ ] No hardcoded `Cml::Foo.new` in translator files.
|
|
16
|
+
- [ ] `from_canonical(schema: :schema24)` produces Schema24 children
|
|
17
|
+
at every level (spec verification).
|
|
18
|
+
- [ ] `lib/chemicalml/cml/role/` directory removed.
|
|
19
|
+
- [ ] Zero `require_relative`, `respond_to?`, `instance_variable_set`/`get`,
|
|
20
|
+
private `send` in lib/.
|
|
21
|
+
- [ ] TODO.align/README.round3.md marked complete.
|
|
22
|
+
|
|
23
|
+
## Acceptance
|
|
24
|
+
|
|
25
|
+
All checks pass.
|