chemicalml 0.2.0 → 0.2.1
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/release.yml +7 -1
- data/CLAUDE.md +48 -41
- data/TODO.align/36-molecular-convention-coverage.md +46 -0
- data/TODO.align/37-compchem-convention-coverage.md +55 -0
- data/TODO.align/38-dictionary-convention-coverage.md +34 -0
- data/TODO.align/39-unit-dictionary-convention-coverage.md +33 -0
- data/TODO.align/40-unit-type-dictionary-convention-coverage.md +28 -0
- data/TODO.align/41-expand-canonical-model-layer.md +43 -0
- data/TODO.align/42-translator-wire-new-models.md +31 -0
- data/TODO.align/43-dictionary-model-no-to-h.md +39 -0
- data/TODO.align/44-schema3-only-and-schema24-module.md +44 -0
- data/TODO.align/45-documentation-and-final-verification.md +23 -0
- data/TODO.align/46-lattice-vector-content.md +24 -0
- data/TODO.align/47-molecule-crystal-spectra-property-lists.md +23 -0
- data/TODO.align/48-model-list-and-module-lists.md +21 -0
- data/TODO.align/49-more-chemistry-models.md +34 -0
- data/TODO.align/50-validation-report.md +29 -0
- data/TODO.align/51-convention-auto-detection.md +30 -0
- data/TODO.align/52-schema24-legacy-elements.md +28 -0
- data/TODO.align/53-round-trip-integration-specs.md +30 -0
- data/TODO.align/54-document-versioned-parser-shim.md +38 -0
- data/TODO.align/55-molecule-missing-attributes.md +20 -0
- data/TODO.align/56-geometry-models.md +24 -0
- data/TODO.align/57-compchem-models.md +26 -0
- data/TODO.align/58-remaining-models.md +24 -0
- data/TODO.align/59-wire-new-models-translator.md +18 -0
- data/TODO.align/60-docs-and-final-verification.md +19 -0
- data/lib/chemicalml/cml/base/abundance.rb +6 -0
- data/lib/chemicalml/cml/base/action.rb +20 -0
- data/lib/chemicalml/cml/base/action_list.rb +18 -0
- data/lib/chemicalml/cml/base/alternative.rb +28 -0
- data/lib/chemicalml/cml/base/amount.rb +2 -0
- data/lib/chemicalml/cml/base/angle.rb +12 -0
- data/lib/chemicalml/cml/base/annotation.rb +30 -0
- data/lib/chemicalml/cml/base/appinfo.rb +32 -0
- data/lib/chemicalml/cml/base/arg.rb +46 -0
- data/lib/chemicalml/cml/base/array.rb +22 -0
- data/lib/chemicalml/cml/base/array_list.rb +2 -0
- data/lib/chemicalml/cml/base/atom.rb +18 -0
- data/lib/chemicalml/cml/base/atom_array.rb +38 -0
- data/lib/chemicalml/cml/base/atom_parity.rb +8 -0
- data/lib/chemicalml/cml/base/atom_set.rb +2 -0
- data/lib/chemicalml/cml/base/atom_type.rb +4 -0
- data/lib/chemicalml/cml/base/atom_type_list.rb +2 -0
- data/lib/chemicalml/cml/base/atomic_basis_function.rb +4 -0
- data/lib/chemicalml/cml/base/band.rb +2 -0
- data/lib/chemicalml/cml/base/basis_set.rb +4 -0
- data/lib/chemicalml/cml/base/bond.rb +6 -0
- data/lib/chemicalml/cml/base/bond_array.rb +16 -0
- data/lib/chemicalml/cml/base/bond_set.rb +2 -0
- data/lib/chemicalml/cml/base/bond_stereo.rb +10 -0
- data/lib/chemicalml/cml/base/bond_type.rb +2 -0
- data/lib/chemicalml/cml/base/bond_type_list.rb +2 -0
- data/lib/chemicalml/cml/base/cell_parameter.rb +4 -0
- data/lib/chemicalml/cml/base/complex_object.rb +30 -0
- data/lib/chemicalml/cml/base/condition_list.rb +4 -0
- data/lib/chemicalml/cml/base/crystal.rb +2 -0
- data/lib/chemicalml/cml/base/description.rb +2 -0
- data/lib/chemicalml/cml/base/dictionary.rb +6 -0
- data/lib/chemicalml/cml/base/dimension.rb +10 -0
- data/lib/chemicalml/cml/base/eigen.rb +2 -0
- data/lib/chemicalml/cml/base/electron.rb +6 -0
- data/lib/chemicalml/cml/base/enumeration.rb +32 -0
- data/lib/chemicalml/cml/base/expression.rb +32 -0
- data/lib/chemicalml/cml/base/float.rb +40 -0
- data/lib/chemicalml/cml/base/float_array.rb +42 -0
- data/lib/chemicalml/cml/base/fragment.rb +6 -0
- data/lib/chemicalml/cml/base/fragment_list.rb +4 -0
- data/lib/chemicalml/cml/base/identifier.rb +8 -0
- data/lib/chemicalml/cml/base/integer.rb +40 -0
- data/lib/chemicalml/cml/base/integer_array.rb +42 -0
- data/lib/chemicalml/cml/base/isotope.rb +2 -0
- data/lib/chemicalml/cml/base/isotope_list.rb +2 -0
- data/lib/chemicalml/cml/base/join.rb +6 -0
- data/lib/chemicalml/cml/base/kpoint.rb +2 -0
- data/lib/chemicalml/cml/base/label.rb +2 -0
- data/lib/chemicalml/cml/base/lattice.rb +2 -0
- data/lib/chemicalml/cml/base/lattice_vector.rb +2 -0
- data/lib/chemicalml/cml/base/length.rb +10 -0
- data/lib/chemicalml/cml/base/line3.rb +6 -0
- data/lib/chemicalml/cml/base/link.rb +20 -0
- data/lib/chemicalml/cml/base/list.rb +2 -0
- data/lib/chemicalml/cml/base/map.rb +12 -0
- data/lib/chemicalml/cml/base/matrix.rb +12 -0
- data/lib/chemicalml/cml/base/metadata.rb +4 -0
- data/lib/chemicalml/cml/base/metadata_list.rb +6 -0
- data/lib/chemicalml/cml/base/molecule.rb +10 -0
- data/lib/chemicalml/cml/base/molecule_list.rb +2 -0
- data/lib/chemicalml/cml/base/name.rb +2 -0
- data/lib/chemicalml/cml/base/object.rb +4 -0
- data/lib/chemicalml/cml/base/observation.rb +4 -0
- data/lib/chemicalml/cml/base/operator.rb +32 -0
- data/lib/chemicalml/cml/base/parameter.rb +10 -0
- data/lib/chemicalml/cml/base/parameter_list.rb +6 -0
- data/lib/chemicalml/cml/base/particle.rb +6 -0
- data/lib/chemicalml/cml/base/peak.rb +30 -0
- data/lib/chemicalml/cml/base/peak_group.rb +38 -0
- data/lib/chemicalml/cml/base/peak_list.rb +2 -0
- data/lib/chemicalml/cml/base/peak_structure.rb +14 -0
- data/lib/chemicalml/cml/base/plane3.rb +2 -0
- data/lib/chemicalml/cml/base/point3.rb +2 -0
- data/lib/chemicalml/cml/base/potential_form.rb +2 -0
- data/lib/chemicalml/cml/base/product.rb +16 -0
- data/lib/chemicalml/cml/base/product_list.rb +14 -0
- data/lib/chemicalml/cml/base/property.rb +6 -0
- data/lib/chemicalml/cml/base/property_list.rb +6 -0
- data/lib/chemicalml/cml/base/reactant.rb +16 -0
- data/lib/chemicalml/cml/base/reactant_list.rb +14 -0
- data/lib/chemicalml/cml/base/reaction.rb +16 -0
- data/lib/chemicalml/cml/base/reaction_list.rb +12 -0
- data/lib/chemicalml/cml/base/reaction_scheme.rb +10 -0
- data/lib/chemicalml/cml/base/reaction_step.rb +6 -0
- data/lib/chemicalml/cml/base/reaction_step_list.rb +8 -0
- data/lib/chemicalml/cml/base/region.rb +8 -0
- data/lib/chemicalml/cml/base/related_entry.rb +26 -0
- data/lib/chemicalml/cml/base/sample.rb +4 -0
- data/lib/chemicalml/cml/base/scalar.rb +18 -0
- data/lib/chemicalml/cml/base/spectator.rb +2 -0
- data/lib/chemicalml/cml/base/spectrum.rb +12 -0
- data/lib/chemicalml/cml/base/spectrum_data.rb +2 -0
- data/lib/chemicalml/cml/base/spectrum_list.rb +4 -0
- data/lib/chemicalml/cml/base/sphere3.rb +2 -0
- data/lib/chemicalml/cml/base/string.rb +32 -0
- data/lib/chemicalml/cml/base/string_array.rb +40 -0
- data/lib/chemicalml/cml/base/substance.rb +12 -0
- data/lib/chemicalml/cml/base/substance_list.rb +6 -0
- data/lib/chemicalml/cml/base/symmetry.rb +4 -0
- data/lib/chemicalml/cml/base/system.rb +4 -0
- data/lib/chemicalml/cml/base/table.rb +10 -0
- data/lib/chemicalml/cml/base/table_content.rb +2 -0
- data/lib/chemicalml/cml/base/table_header_cell.rb +10 -0
- data/lib/chemicalml/cml/base/tcell.rb +34 -0
- data/lib/chemicalml/cml/base/torsion.rb +12 -0
- data/lib/chemicalml/cml/base/trow.rb +32 -0
- data/lib/chemicalml/cml/base/unit.rb +12 -0
- data/lib/chemicalml/cml/base/unit_list.rb +12 -0
- data/lib/chemicalml/cml/base/unit_type.rb +10 -0
- data/lib/chemicalml/cml/base/unit_type_list.rb +10 -0
- data/lib/chemicalml/cml/base/vector3.rb +2 -0
- data/lib/chemicalml/cml/base/xaxis.rb +6 -0
- data/lib/chemicalml/cml/base/yaxis.rb +6 -0
- data/lib/chemicalml/cml/base.rb +17 -0
- data/lib/chemicalml/cml/elements.rb +39 -4
- data/lib/chemicalml/cml/role/alternative.rb +10 -0
- data/lib/chemicalml/cml/role/annotation.rb +10 -0
- data/lib/chemicalml/cml/role/appinfo.rb +10 -0
- data/lib/chemicalml/cml/role/arg.rb +10 -0
- data/lib/chemicalml/cml/role/cml_module.rb +2 -3
- data/lib/chemicalml/cml/role/complex_object.rb +10 -0
- data/lib/chemicalml/cml/role/enumeration.rb +10 -0
- data/lib/chemicalml/cml/role/expression.rb +10 -0
- data/lib/chemicalml/cml/role/float.rb +10 -0
- data/lib/chemicalml/cml/role/float_array.rb +10 -0
- data/lib/chemicalml/cml/role/integer.rb +10 -0
- data/lib/chemicalml/cml/role/integer_array.rb +10 -0
- data/lib/chemicalml/cml/role/operator.rb +10 -0
- data/lib/chemicalml/cml/role/related_entry.rb +10 -0
- data/lib/chemicalml/cml/role/string.rb +10 -0
- data/lib/chemicalml/cml/role/string_array.rb +10 -0
- data/lib/chemicalml/cml/role/tcell.rb +10 -0
- data/lib/chemicalml/cml/role/trow.rb +10 -0
- data/lib/chemicalml/cml/role.rb +17 -0
- data/lib/chemicalml/cml/schema24/alternative.rb +14 -0
- data/lib/chemicalml/cml/schema24/annotation.rb +15 -0
- data/lib/chemicalml/cml/schema24/appinfo.rb +15 -0
- data/lib/chemicalml/cml/schema24/arg.rb +14 -0
- data/lib/chemicalml/cml/schema24/cml_module.rb +18 -0
- data/lib/chemicalml/cml/schema24/complex_object.rb +14 -0
- data/lib/chemicalml/cml/schema24/configuration.rb +5 -2
- data/lib/chemicalml/cml/schema24/enumeration.rb +16 -0
- data/lib/chemicalml/cml/schema24/expression.rb +14 -0
- data/lib/chemicalml/cml/schema24/float.rb +14 -0
- data/lib/chemicalml/cml/schema24/float_array.rb +14 -0
- data/lib/chemicalml/cml/schema24/integer.rb +14 -0
- data/lib/chemicalml/cml/schema24/integer_array.rb +14 -0
- data/lib/chemicalml/cml/schema24/operator.rb +14 -0
- data/lib/chemicalml/cml/schema24/related_entry.rb +14 -0
- data/lib/chemicalml/cml/schema24/string.rb +14 -0
- data/lib/chemicalml/cml/schema24/string_array.rb +14 -0
- data/lib/chemicalml/cml/schema24/tcell.rb +14 -0
- data/lib/chemicalml/cml/schema24/trow.rb +14 -0
- data/lib/chemicalml/cml/schema24.rb +33 -5
- data/lib/chemicalml/cml.rb +1 -3
- data/lib/chemicalml/context_configuration.rb +8 -2
- data/lib/chemicalml/convention/base.rb +17 -3
- data/lib/chemicalml/convention/compchem/constraints/array_rules.rb +44 -0
- data/lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb +28 -0
- data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +4 -4
- data/lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb +26 -0
- data/lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb +28 -0
- data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb +26 -0
- data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb +26 -0
- data/lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb +27 -0
- data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb +26 -0
- data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb +26 -0
- data/lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb +28 -0
- data/lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb +24 -0
- data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb +25 -0
- data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb +25 -0
- data/lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb +24 -0
- data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +6 -9
- data/lib/chemicalml/convention/compchem/constraints/matrix_rules.rb +48 -0
- data/lib/chemicalml/convention/compchem/constraints/module_predicates.rb +50 -0
- data/lib/chemicalml/convention/compchem/constraints/scalar_units.rb +42 -0
- data/lib/chemicalml/convention/compchem/constraints.rb +36 -2
- data/lib/chemicalml/convention/compchem.rb +16 -0
- data/lib/chemicalml/convention/constraint.rb +31 -18
- data/lib/chemicalml/convention/coordinator.rb +89 -0
- data/lib/chemicalml/convention/detection.rb +33 -0
- data/lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb +28 -0
- data/lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb +32 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb +33 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +3 -3
- data/lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb +28 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +5 -5
- data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb +30 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb +44 -0
- data/lib/chemicalml/convention/dictionary/constraints.rb +12 -0
- data/lib/chemicalml/convention/dictionary.rb +6 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb +40 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +5 -5
- data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +4 -4
- data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +2 -2
- data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb +36 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb +43 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb +33 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +2 -2
- data/lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb +45 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb +32 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb +45 -0
- data/lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb +32 -0
- data/lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb +31 -0
- data/lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb +34 -0
- data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +3 -3
- data/lib/chemicalml/convention/molecular/constraints.rb +20 -0
- data/lib/chemicalml/convention/molecular.rb +10 -0
- data/lib/chemicalml/convention/registry.rb +17 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb +28 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb +36 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb +27 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb +27 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +3 -3
- data/lib/chemicalml/convention/unit_dictionary/constraints.rb +9 -1
- data/lib/chemicalml/convention/unit_dictionary.rb +4 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb +31 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb +27 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb +35 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb +27 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +5 -5
- data/lib/chemicalml/convention/unit_type_dictionary/constraints.rb +9 -1
- data/lib/chemicalml/convention/unit_type_dictionary.rb +4 -0
- data/lib/chemicalml/convention/validation_report.rb +63 -0
- data/lib/chemicalml/convention.rb +11 -0
- data/lib/chemicalml/dictionary/entry.rb +6 -6
- data/lib/chemicalml/dictionary/enum.rb +1 -1
- data/lib/chemicalml/dictionary/link.rb +3 -3
- data/lib/chemicalml/dictionary/loader.rb +19 -19
- data/lib/chemicalml/dictionary/model.rb +5 -5
- data/lib/chemicalml/dictionary/registry.rb +9 -9
- data/lib/chemicalml/version.rb +1 -1
- data/lib/chemicalml/versioned_parser.rb +18 -0
- data/lib/chemicalml.rb +1 -2
- metadata +123 -34
- data/lib/chemicalml/cml/child_mappings.rb +0 -168
- data/lib/chemicalml/cml/translator/value_translations.rb +0 -270
- data/lib/chemicalml/cml/translator.rb +0 -484
- data/lib/chemicalml/model/atom.rb +0 -64
- data/lib/chemicalml/model/atom_parity.rb +0 -21
- data/lib/chemicalml/model/bond.rb +0 -39
- data/lib/chemicalml/model/bond_stereo.rb +0 -29
- data/lib/chemicalml/model/cml_array.rb +0 -27
- data/lib/chemicalml/model/cml_module.rb +0 -45
- data/lib/chemicalml/model/document.rb +0 -29
- data/lib/chemicalml/model/formula.rb +0 -34
- data/lib/chemicalml/model/identifier.rb +0 -21
- data/lib/chemicalml/model/label.rb +0 -21
- data/lib/chemicalml/model/matrix.rb +0 -29
- data/lib/chemicalml/model/metadata.rb +0 -23
- data/lib/chemicalml/model/metadata_list.rb +0 -25
- data/lib/chemicalml/model/molecule.rb +0 -45
- data/lib/chemicalml/model/name.rb +0 -21
- data/lib/chemicalml/model/node.rb +0 -45
- data/lib/chemicalml/model/parameter.rb +0 -27
- data/lib/chemicalml/model/parameter_list.rb +0 -25
- data/lib/chemicalml/model/product.rb +0 -21
- data/lib/chemicalml/model/product_list.rb +0 -21
- data/lib/chemicalml/model/property.rb +0 -28
- data/lib/chemicalml/model/property_list.rb +0 -25
- data/lib/chemicalml/model/reactant.rb +0 -21
- data/lib/chemicalml/model/reactant_list.rb +0 -21
- data/lib/chemicalml/model/reaction.rb +0 -41
- data/lib/chemicalml/model/reaction_list.rb +0 -23
- data/lib/chemicalml/model/scalar.rb +0 -25
- data/lib/chemicalml/model/substance.rb +0 -25
- data/lib/chemicalml/model.rb +0 -40
data/lib/chemicalml/cml/role.rb
CHANGED
|
@@ -134,6 +134,23 @@ module Chemicalml
|
|
|
134
134
|
autoload :Xaxis, "chemicalml/cml/role/xaxis"
|
|
135
135
|
autoload :Yaxis, "chemicalml/cml/role/yaxis"
|
|
136
136
|
autoload :ZMatrix, "chemicalml/cml/role/z_matrix"
|
|
137
|
+
autoload :Alternative, "chemicalml/cml/role/alternative"
|
|
138
|
+
autoload :Arg, "chemicalml/cml/role/arg"
|
|
139
|
+
autoload :ComplexObject, "chemicalml/cml/role/complex_object"
|
|
140
|
+
autoload :Expression, "chemicalml/cml/role/expression"
|
|
141
|
+
autoload :Float, "chemicalml/cml/role/float"
|
|
142
|
+
autoload :FloatArray, "chemicalml/cml/role/float_array"
|
|
143
|
+
autoload :Integer, "chemicalml/cml/role/integer"
|
|
144
|
+
autoload :IntegerArray, "chemicalml/cml/role/integer_array"
|
|
145
|
+
autoload :Operator, "chemicalml/cml/role/operator"
|
|
146
|
+
autoload :RelatedEntry, "chemicalml/cml/role/related_entry"
|
|
147
|
+
autoload :String, "chemicalml/cml/role/string"
|
|
148
|
+
autoload :StringArray, "chemicalml/cml/role/string_array"
|
|
149
|
+
autoload :Tcell, "chemicalml/cml/role/tcell"
|
|
150
|
+
autoload :Trow, "chemicalml/cml/role/trow"
|
|
151
|
+
autoload :Annotation, "chemicalml/cml/role/annotation"
|
|
152
|
+
autoload :Appinfo, "chemicalml/cml/role/appinfo"
|
|
153
|
+
autoload :Enumeration, "chemicalml/cml/role/enumeration"
|
|
137
154
|
end
|
|
138
155
|
end
|
|
139
156
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class Alternative < Lutaml::Model::Serializable
|
|
8
|
+
include Base::Alternative
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. `<annotation>` wraps documentation for an
|
|
7
|
+
# entry or element. Not in Schema 3.
|
|
8
|
+
class Annotation < Lutaml::Model::Serializable
|
|
9
|
+
include Base::Annotation
|
|
10
|
+
include Visitable
|
|
11
|
+
extend Context
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. `<appinfo>` carries application-specific
|
|
7
|
+
# metadata. Not in Schema 3.
|
|
8
|
+
class Appinfo < Lutaml::Model::Serializable
|
|
9
|
+
include Base::Appinfo
|
|
10
|
+
include Visitable
|
|
11
|
+
extend Context
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# CML <module> wire class. Schema 2.4 declares <module> in its
|
|
7
|
+
# XSD (verified against `reference-docs/schemas/schema24/`), so
|
|
8
|
+
# this class exists and is registered by `Schema24::Configuration`.
|
|
9
|
+
# See `Chemicalml::Cml::Base::Module` for the shared attribute
|
|
10
|
+
# + xml-mapping declarations.
|
|
11
|
+
class Module < Lutaml::Model::Serializable
|
|
12
|
+
include Base::Module
|
|
13
|
+
include Visitable
|
|
14
|
+
extend Context
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class ComplexObject < Lutaml::Model::Serializable
|
|
8
|
+
include Base::ComplexObject
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -8,10 +8,13 @@ module Chemicalml
|
|
|
8
8
|
|
|
9
9
|
CONTEXT_ID = :chemicalml_schema24
|
|
10
10
|
|
|
11
|
-
# Schema 2.4 lacks
|
|
12
|
-
#
|
|
11
|
+
# Schema 2.4 lacks <anyCml> (Schema 3 only) — skip its
|
|
12
|
+
# registration. Schema 2.4 also declares three legacy
|
|
13
|
+
# elements (<annotation>, <appinfo>, <enumeration>) not in
|
|
14
|
+
# Schema 3; register those explicitly from SCHEMA24_ONLY.
|
|
13
15
|
def self.register_models!
|
|
14
16
|
register_elements!(except: Chemicalml::Cml::Elements::SCHEMA3_ONLY)
|
|
17
|
+
register_elements!(only: true)
|
|
15
18
|
end
|
|
16
19
|
end
|
|
17
20
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. `<enumeration>` declares a closed/open set of
|
|
7
|
+
# values for a dictionary entry. Not in Schema 3 (Schema 3 uses
|
|
8
|
+
# the `enum` attribute on `<entry>`).
|
|
9
|
+
class Enumeration < Lutaml::Model::Serializable
|
|
10
|
+
include Base::Enumeration
|
|
11
|
+
include Visitable
|
|
12
|
+
extend Context
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class Expression < Lutaml::Model::Serializable
|
|
8
|
+
include Base::Expression
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class FloatArray < Lutaml::Model::Serializable
|
|
8
|
+
include Base::FloatArray
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class Integer < Lutaml::Model::Serializable
|
|
8
|
+
include Base::Integer
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class IntegerArray < Lutaml::Model::Serializable
|
|
8
|
+
include Base::IntegerArray
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class Operator < Lutaml::Model::Serializable
|
|
8
|
+
include Base::Operator
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class RelatedEntry < Lutaml::Model::Serializable
|
|
8
|
+
include Base::RelatedEntry
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class String < Lutaml::Model::Serializable
|
|
8
|
+
include Base::String
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Cml
|
|
5
|
+
module Schema24
|
|
6
|
+
# Schema 2.4 only. Not in Schema 3.
|
|
7
|
+
class StringArray < Lutaml::Model::Serializable
|
|
8
|
+
include Base::StringArray
|
|
9
|
+
include Visitable
|
|
10
|
+
extend Context
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -7,10 +7,21 @@ module Chemicalml
|
|
|
7
7
|
# `Base::*` mixin and `Visitable`, and `extend`s
|
|
8
8
|
# `Schema24::Context` for `lutaml_default_register`.
|
|
9
9
|
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
10
|
+
# Schema 2.4 wire classes. Same structure as Schema3 — each is a
|
|
11
|
+
# `Lutaml::Model::Serializable` subclass that includes the
|
|
12
|
+
# `Base::*` mixin and `Visitable`, and `extend`s
|
|
13
|
+
# `Schema24::Context` for `lutaml_default_register`.
|
|
14
|
+
#
|
|
15
|
+
# Schema 2.4 lacks `<anyCml>` (Schema 3 only — see
|
|
16
|
+
# `Chemicalml::Cml::Elements::SCHEMA3_ONLY`). Every other element
|
|
17
|
+
# modeled here is declared in the Schema 2.4 XSD, including
|
|
18
|
+
# `<module>`. Schema 2.4 also declares 17 legacy elements not in
|
|
19
|
+
# Schema 3 (`alternative`, `annotation`, `appinfo`, `arg`,
|
|
20
|
+
# `complexObject`, `enumeration`, `expression`, `float`,
|
|
21
|
+
# `floatArray`, `integer`, `integerArray`, `operator`,
|
|
22
|
+
# `relatedEntry`, `string`, `stringArray`, `tcell`, `trow`); all
|
|
23
|
+
# are modeled under Schema24 only and registered via
|
|
24
|
+
# `Elements::SCHEMA24_ONLY`.
|
|
14
25
|
module Schema24
|
|
15
26
|
extend Chemicalml::VersionedParser
|
|
16
27
|
|
|
@@ -19,7 +30,6 @@ module Chemicalml
|
|
|
19
30
|
autoload :ActionList, "chemicalml/cml/schema24/action_list"
|
|
20
31
|
autoload :Amount, "chemicalml/cml/schema24/amount"
|
|
21
32
|
autoload :Angle, "chemicalml/cml/schema24/angle"
|
|
22
|
-
autoload :AnyCml, "chemicalml/cml/schema24/any_cml"
|
|
23
33
|
autoload :ArrayList, "chemicalml/cml/schema24/array_list"
|
|
24
34
|
autoload :AtomSet, "chemicalml/cml/schema24/atom_set"
|
|
25
35
|
autoload :AtomType, "chemicalml/cml/schema24/atom_type"
|
|
@@ -121,6 +131,7 @@ module Chemicalml
|
|
|
121
131
|
autoload :Matrix, "chemicalml/cml/schema24/matrix"
|
|
122
132
|
autoload :Metadata, "chemicalml/cml/schema24/metadata"
|
|
123
133
|
autoload :MetadataList, "chemicalml/cml/schema24/metadata_list"
|
|
134
|
+
autoload :Module, "chemicalml/cml/schema24/cml_module"
|
|
124
135
|
autoload :Molecule, "chemicalml/cml/schema24/molecule"
|
|
125
136
|
autoload :Name, "chemicalml/cml/schema24/name"
|
|
126
137
|
autoload :Parameter, "chemicalml/cml/schema24/parameter"
|
|
@@ -139,6 +150,23 @@ module Chemicalml
|
|
|
139
150
|
autoload :UnitList, "chemicalml/cml/schema24/unit_list"
|
|
140
151
|
autoload :UnitType, "chemicalml/cml/schema24/unit_type"
|
|
141
152
|
autoload :UnitTypeList, "chemicalml/cml/schema24/unit_type_list"
|
|
153
|
+
autoload :Alternative, "chemicalml/cml/schema24/alternative"
|
|
154
|
+
autoload :Arg, "chemicalml/cml/schema24/arg"
|
|
155
|
+
autoload :ComplexObject, "chemicalml/cml/schema24/complex_object"
|
|
156
|
+
autoload :Expression, "chemicalml/cml/schema24/expression"
|
|
157
|
+
autoload :Float, "chemicalml/cml/schema24/float"
|
|
158
|
+
autoload :FloatArray, "chemicalml/cml/schema24/float_array"
|
|
159
|
+
autoload :Integer, "chemicalml/cml/schema24/integer"
|
|
160
|
+
autoload :IntegerArray, "chemicalml/cml/schema24/integer_array"
|
|
161
|
+
autoload :Operator, "chemicalml/cml/schema24/operator"
|
|
162
|
+
autoload :RelatedEntry, "chemicalml/cml/schema24/related_entry"
|
|
163
|
+
autoload :String, "chemicalml/cml/schema24/string"
|
|
164
|
+
autoload :StringArray, "chemicalml/cml/schema24/string_array"
|
|
165
|
+
autoload :Tcell, "chemicalml/cml/schema24/tcell"
|
|
166
|
+
autoload :Trow, "chemicalml/cml/schema24/trow"
|
|
167
|
+
autoload :Annotation, "chemicalml/cml/schema24/annotation"
|
|
168
|
+
autoload :Appinfo, "chemicalml/cml/schema24/appinfo"
|
|
169
|
+
autoload :Enumeration, "chemicalml/cml/schema24/enumeration"
|
|
142
170
|
|
|
143
171
|
def self.schema
|
|
144
172
|
SCHEMA
|
data/lib/chemicalml/cml.rb
CHANGED
|
@@ -9,17 +9,15 @@ module Chemicalml
|
|
|
9
9
|
module Cml
|
|
10
10
|
# Structural modules (each in its own file, loaded independently).
|
|
11
11
|
autoload :Base, "chemicalml/cml/base"
|
|
12
|
-
autoload :ChildMappings, "chemicalml/cml/child_mappings"
|
|
13
12
|
autoload :Elements, "chemicalml/cml/elements"
|
|
14
13
|
autoload :Namespace, "chemicalml/cml/namespace"
|
|
15
14
|
autoload :Role, "chemicalml/cml/role"
|
|
16
15
|
autoload :Schema3, "chemicalml/cml/schema3"
|
|
17
16
|
autoload :Schema24, "chemicalml/cml/schema24"
|
|
18
|
-
autoload :Translator, "chemicalml/cml/translator"
|
|
19
17
|
autoload :Visitable, "chemicalml/cml/visitable"
|
|
20
18
|
autoload :WireClassRegistry, "chemicalml/cml/wire_class_registry"
|
|
21
19
|
|
|
22
|
-
# Backward-compatible aliases (Cml::Foo = Schema3::Foo). All
|
|
20
|
+
# Backward-compatible aliases (Cml::Foo = Schema3::Foo). All 121
|
|
23
21
|
# aliases load from a single file via autoload — the file loads
|
|
24
22
|
# lazily when the first alias is referenced, then defines all of
|
|
25
23
|
# them via const_set (aliasing existing Schema3 classes, not
|
|
@@ -40,10 +40,16 @@ module Chemicalml
|
|
|
40
40
|
# each class on the parent (schema) module, and register it. Pass
|
|
41
41
|
# `except:` to skip specific elements (used by Schema 2.4 which
|
|
42
42
|
# lacks `<module>`).
|
|
43
|
-
def register_elements!(except: [])
|
|
43
|
+
def register_elements!(except: [], only: nil)
|
|
44
44
|
parent = version_parent_module
|
|
45
45
|
skip = except.to_set
|
|
46
|
-
|
|
46
|
+
source =
|
|
47
|
+
if only
|
|
48
|
+
Chemicalml::Cml::Elements::SCHEMA24_ONLY
|
|
49
|
+
else
|
|
50
|
+
Chemicalml::Cml::Elements::ALL
|
|
51
|
+
end
|
|
52
|
+
source.each do |class_name, element_id|
|
|
47
53
|
next if skip.include?(class_name)
|
|
48
54
|
next unless parent.const_defined?(class_name)
|
|
49
55
|
|
|
@@ -27,13 +27,20 @@ module Chemicalml
|
|
|
27
27
|
|
|
28
28
|
def register(constraint_class)
|
|
29
29
|
constraints << constraint_class unless constraints.include?(constraint_class)
|
|
30
|
+
@coordinator = nil # invalidate cached coordinator
|
|
30
31
|
self
|
|
31
32
|
end
|
|
32
33
|
|
|
34
|
+
# Single-pass validation via Convention::Coordinator. The
|
|
35
|
+
# coordinator builds a role-dispatch table from the declared
|
|
36
|
+
# `applies_to` on each constraint, walks the tree once, and
|
|
37
|
+
# dispatches each node only to applicable constraints.
|
|
33
38
|
def validate(document)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
coordinator.validate(document)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def validate_report(document)
|
|
43
|
+
ValidationReport.new(validate(document))
|
|
37
44
|
end
|
|
38
45
|
|
|
39
46
|
def constraint_count
|
|
@@ -42,6 +49,13 @@ module Chemicalml
|
|
|
42
49
|
|
|
43
50
|
def reset_constraints!
|
|
44
51
|
@constraints = []
|
|
52
|
+
@coordinator = nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def coordinator
|
|
58
|
+
@coordinator ||= Coordinator.new(constraints)
|
|
45
59
|
end
|
|
46
60
|
end
|
|
47
61
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Compchem
|
|
6
|
+
module Constraints
|
|
7
|
+
# CompChem `array` value-container rules: MUST have `size`
|
|
8
|
+
# attribute (≥ 1); `dataType` MUST be integer or double;
|
|
9
|
+
# MUST have `units`.
|
|
10
|
+
class ArrayRules < Chemicalml::Convention::Constraint::NodeConstraint
|
|
11
|
+
applies_to Chemicalml::Cml::Role::Array
|
|
12
|
+
include ModulePredicates
|
|
13
|
+
|
|
14
|
+
ALLOWED_TYPES = %w[xsd:integer xsd:double].freeze
|
|
15
|
+
|
|
16
|
+
def check_node(node, path)
|
|
17
|
+
|
|
18
|
+
violations = []
|
|
19
|
+
if node.size.to_s.empty? || node.size.to_i < 1
|
|
20
|
+
violations << violation(path: path.join('/'),
|
|
21
|
+
message: 'array must have a size attribute (minimum 1)')
|
|
22
|
+
end
|
|
23
|
+
unless ALLOWED_TYPES.include?(node.data_type.to_s)
|
|
24
|
+
violations << violation(path: path.join('/'),
|
|
25
|
+
message: 'array dataType must be xsd:integer or xsd:double ' \
|
|
26
|
+
"(got #{node.data_type.inspect})")
|
|
27
|
+
end
|
|
28
|
+
if node.units.to_s.empty?
|
|
29
|
+
violations << violation(path: path.join('/'),
|
|
30
|
+
message: 'array must have units (even if dimensionless)')
|
|
31
|
+
end
|
|
32
|
+
violations
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def array?(node)
|
|
38
|
+
node.is_a?(Chemicalml::Cml::Role::Array)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Chemicalml
|
|
4
|
+
module Convention
|
|
5
|
+
module Compchem
|
|
6
|
+
module Constraints
|
|
7
|
+
# Co-constraint: if a calculation module is present inside a
|
|
8
|
+
# job, a finalization MUST also be present.
|
|
9
|
+
class CalculationRequiresFinalization < Chemicalml::Convention::Constraint::NodeConstraint
|
|
10
|
+
applies_to Chemicalml::Cml::Role::Module
|
|
11
|
+
include ModulePredicates
|
|
12
|
+
|
|
13
|
+
def check_node(node, path)
|
|
14
|
+
|
|
15
|
+
calculations = child_modules_with(node, 'compchem:calculation')
|
|
16
|
+
finalizations = child_modules_with(node, 'compchem:finalization')
|
|
17
|
+
return [] if calculations.empty?
|
|
18
|
+
return [] unless finalizations.empty?
|
|
19
|
+
|
|
20
|
+
[violation(path: path.join('/'),
|
|
21
|
+
message: 'job module has a calculation but no finalization ' \
|
|
22
|
+
'(finalization MUST be present when calculation is)')]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb
CHANGED
|
@@ -10,17 +10,17 @@ module Chemicalml
|
|
|
10
10
|
def check_node(node, path)
|
|
11
11
|
return [] unless compchem_root?(node)
|
|
12
12
|
|
|
13
|
-
job_lists = node.modules.select { |m| m.dict_ref ==
|
|
13
|
+
job_lists = node.modules.select { |m| m.dict_ref == 'compchem:jobList' }
|
|
14
14
|
return [] unless job_lists.empty?
|
|
15
15
|
|
|
16
|
-
[violation(path: path.join(
|
|
17
|
-
message:
|
|
16
|
+
[violation(path: path.join('/'),
|
|
17
|
+
message: 'compchem module must contain at least one jobList module')]
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
private
|
|
21
21
|
|
|
22
22
|
def compchem_root?(node)
|
|
23
|
-
module?(node) && node.convention ==
|
|
23
|
+
module?(node) && node.convention == 'convention:compchem'
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def module?(node)
|