diff --git a/dist/js/schema/material/builders/base/selector_parameters.json b/dist/js/schema/material/builders/base/selector_parameters.json new file mode 100644 index 000000000..c1c77fd33 --- /dev/null +++ b/dist/js/schema/material/builders/base/selector_parameters.json @@ -0,0 +1,15 @@ +{ + "$id": "material/builders/base/selector-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Selector Parameters Schema", + "description": "Base parameters for all builder selectors", + "type": "object", + "properties": { + "default_index": { + "description": "Default index for the selector", + "type": "integer", + "minimum": 0, + "default": 0 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/defects/point_defect_builder_parameters.json b/dist/js/schema/material/builders/defects/point_defect_builder_parameters.json new file mode 100644 index 000000000..3aa6ee59a --- /dev/null +++ b/dist/js/schema/material/builders/defects/point_defect_builder_parameters.json @@ -0,0 +1,14 @@ +{ + "$id": "material/builders/defects/point-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Builder Parameters Schema", + "description": "Parameters for the point defect builder", + "type": "object", + "properties": { + "center_defect": { + "description": "Whether to center the defect", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/defects/slab_defect_builder_parameters.json b/dist/js/schema/material/builders/defects/slab_defect_builder_parameters.json new file mode 100644 index 000000000..11d7f152f --- /dev/null +++ b/dist/js/schema/material/builders/defects/slab_defect_builder_parameters.json @@ -0,0 +1,22 @@ +{ + "$id": "material/builders/defects/slab-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Defect Builder Parameters Schema", + "description": "Parameters for the slab defect builder", + "type": "object", + "properties": { + "auto_add_vacuum": { + "description": "Whether to automatically add vacuum", + "type": "boolean", + "default": true + }, + "vacuum_thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json b/dist/js/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json new file mode 100644 index 000000000..f13f36158 --- /dev/null +++ b/dist/js/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json @@ -0,0 +1,35 @@ +{ + "$id": "material/builders/defects/voronoi-interstitial-point-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Voronoi Interstitial Point Defect Builder Parameters Schema", + "description": "Parameters for the Voronoi interstitial point defect builder", + "#comment": "According to https://github.com/materialsproject/pymatgen-analysis-defects/blob/e2cb285de8be07b38912ae1782285ef1f463a9a9/pymatgen/analysis/defects/generators.py#L343", + "type": "object", + "properties": { + "clustering_tol": { + "description": "Clustering tolerance for merging interstitial sites", + "type": "number", + "default": 0.5 + }, + "min_dist": { + "description": "Minimum distance between interstitial and nearest atom", + "type": "number", + "default": 0.9 + }, + "ltol": { + "description": "Tolerance for lattice matching", + "type": "number", + "default": 0.2 + }, + "stol": { + "description": "Tolerance for structure matching", + "type": "number", + "default": 0.3 + }, + "angle_tol": { + "description": "Angle tolerance for structure matching", + "type": "number", + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json new file mode 100644 index 000000000..4cdfcfd15 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json @@ -0,0 +1,19 @@ +{ + "$id": "material/builders/multi-material/interfaces/simple/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Simple Interface Builder Parameters Schema", + "description": "Parameters for the simple interface builder", + "type": "object", + "properties": { + "scale_film": { + "description": "Whether to scale the film to match the substrate", + "type": "boolean", + "default": true + }, + "create_slabs": { + "description": "Whether to create slabs from the configurations or use the bulk", + "type": "boolean", + "default": true + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.json new file mode 100644 index 000000000..3688ecfd7 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.json @@ -0,0 +1,44 @@ +{ + "$id": "material/builders/multi-material/interfaces/slab-grain-boundary-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Grain Boundary Builder Parameters Schema", + "description": "Parameters for the slab grain boundary builder", + "type": "object", + "properties": { + "strain_matching_parameters": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Parameters Schema", + "description": "Parameters for ZSL strain matching", + "$comment": "Described in https://pymatgen.org/pymatgen.analysis.interfaces.html#pymatgen.analysis.interfaces.zsl.ZSLGenerator", + "type": "object", + "properties": { + "max_area": { + "description": "Maximum area for strain matching", + "type": "number", + "default": 50 + }, + "max_area_ratio_tol": { + "description": "Maximum area ratio tolerance", + "type": "number", + "default": 0.09 + }, + "max_length_tol": { + "description": "Maximum length tolerance", + "type": "number", + "default": 0.03 + }, + "max_angle_tol": { + "description": "Maximum angle tolerance", + "type": "number", + "default": 0.01 + } + } + }, + "default_index": { + "description": "Default index for the selector", + "type": "integer", + "minimum": 0, + "default": 0 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json new file mode 100644 index 000000000..11e014d45 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json @@ -0,0 +1,17 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Strain Matching Interface Builder Parameters Schema", + "description": "Parameters for the strain matching interface builder", + "type": "object", + "properties": { + "strain_matching_parameters": { + "description": "Parameters for strain matching", + "type": [ + "object", + "null" + ], + "default": null + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json new file mode 100644 index 000000000..08dd84bd9 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json @@ -0,0 +1,38 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/zsl-strain-matching-interface-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Interface Builder Parameters Schema", + "description": "Parameters for the ZSL strain matching interface builder", + "type": "object", + "properties": { + "strain_matching_parameters": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Parameters Schema", + "description": "Parameters for ZSL strain matching", + "$comment": "Described in https://pymatgen.org/pymatgen.analysis.interfaces.html#pymatgen.analysis.interfaces.zsl.ZSLGenerator", + "type": "object", + "properties": { + "max_area": { + "description": "Maximum area for strain matching", + "type": "number", + "default": 50 + }, + "max_area_ratio_tol": { + "description": "Maximum area ratio tolerance", + "type": "number", + "default": 0.09 + }, + "max_length_tol": { + "description": "Maximum length tolerance", + "type": "number", + "default": 0.03 + }, + "max_angle_tol": { + "description": "Maximum angle tolerance", + "type": "number", + "default": 0.01 + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json new file mode 100644 index 000000000..9bedd9423 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json @@ -0,0 +1,30 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/zsl-strain-matching-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Parameters Schema", + "description": "Parameters for ZSL strain matching", + "$comment": "Described in https://pymatgen.org/pymatgen.analysis.interfaces.html#pymatgen.analysis.interfaces.zsl.ZSLGenerator", + "type": "object", + "properties": { + "max_area": { + "description": "Maximum area for strain matching", + "type": "number", + "default": 50 + }, + "max_area_ratio_tol": { + "description": "Maximum area ratio tolerance", + "type": "number", + "default": 0.09 + }, + "max_length_tol": { + "description": "Maximum length tolerance", + "type": "number", + "default": 0.03 + }, + "max_angle_tol": { + "description": "Maximum angle tolerance", + "type": "number", + "default": 0.01 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.json new file mode 100644 index 000000000..ce790e48d --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.json @@ -0,0 +1,45 @@ +{ + "$id": "material/builders/multi-material/interfaces/surface-grain-boundary-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Grain Boundary Builder Parameters Schema", + "description": "Parameters for creating a grain boundary between two surface phases", + "type": "object", + "properties": { + "edge_inclusion_tolerance": { + "description": "The tolerance to include atoms on the edge of each phase, in angstroms", + "type": "number", + "default": 1 + }, + "distance_tolerance": { + "description": "The distance tolerance to remove atoms that are too close, in angstroms", + "type": "number", + "default": 1 + }, + "max_supercell_matrix_int": { + "description": "The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically.", + "type": [ + "integer", + "null" + ], + "default": null + }, + "limit_max_int": { + "description": "The limit for the maximum integer for the transformation matrices when searching", + "type": [ + "integer", + "null" + ], + "default": 42 + }, + "angle_tolerance": { + "description": "The tolerance for the angle between the commensurate lattices and the target angle, in degrees.", + "type": "number", + "default": 0.1 + }, + "return_first_match": { + "description": "Whether to return the first match or all matches.", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json b/dist/js/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json new file mode 100644 index 000000000..c4dc16ba8 --- /dev/null +++ b/dist/js/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json @@ -0,0 +1,35 @@ +{ + "$id": "material/builders/multi-material/interfaces/twisted/commensurate-lattice-twisted-interface-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Commensurate Lattice Twisted Interface Builder Parameters Schema", + "description": "Parameters for the commensurate lattice interface builder", + "type": "object", + "properties": { + "max_supercell_matrix_int": { + "description": "The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically.", + "type": [ + "integer", + "null" + ], + "default": null + }, + "limit_max_int": { + "description": "The limit for the maximum integer for the transformation matrices when searching", + "type": [ + "integer", + "null" + ], + "default": 42 + }, + "angle_tolerance": { + "description": "The tolerance for the angle between the commensurate lattices and the target angle, in degrees.", + "type": "number", + "default": 0.1 + }, + "return_first_match": { + "description": "Whether to return the first match or all matches.", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/passivation/coordination_based/builder_parameters.json b/dist/js/schema/material/builders/passivation/coordination_based/builder_parameters.json new file mode 100644 index 000000000..39bcb561c --- /dev/null +++ b/dist/js/schema/material/builders/passivation/coordination_based/builder_parameters.json @@ -0,0 +1,34 @@ +{ + "$id": "material/builders/passivation/coordination-based/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Coordination Based Passivation Builder Parameters Schema", + "description": "Parameters for the CoordinationPassivationBuilder", + "type": "object", + "properties": { + "coordination_threshold": { + "description": "The coordination number threshold for an atom to be considered undercoordinated", + "type": "integer", + "default": 3 + }, + "bonds_to_passivate": { + "description": "The maximum number of bonds to passivate for each undercoordinated atom", + "type": "integer", + "default": 1 + }, + "symmetry_tolerance": { + "description": "The tolerance for symmetry comparison of vectors for bonds", + "type": "number", + "default": 0.1 + }, + "shadowing_radius": { + "description": "Radius around each surface atom to exclude underlying atoms from passivation", + "type": "number", + "default": 2.5 + }, + "depth": { + "description": "Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces", + "type": "number", + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/passivation/surface/builder_parameters.json b/dist/js/schema/material/builders/passivation/surface/builder_parameters.json new file mode 100644 index 000000000..b1b3574ad --- /dev/null +++ b/dist/js/schema/material/builders/passivation/surface/builder_parameters.json @@ -0,0 +1,19 @@ +{ + "$id": "material/builders/passivation/surface/builder_parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Passivation Builder Parameters Schema", + "description": "Parameters for the SurfacePassivationBuilder, defining how atoms near the surface are detected and passivated", + "type": "object", + "properties": { + "shadowing_radius": { + "description": "Radius around each surface atom to exclude underlying atoms from passivation", + "type": "number", + "default": 2.5 + }, + "depth": { + "description": "Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces", + "type": "number", + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json b/dist/js/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json new file mode 100644 index 000000000..4d4d09cc1 --- /dev/null +++ b/dist/js/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json @@ -0,0 +1,33 @@ +{ + "$id": "material/builders/single-material/two-dimensional/slab/pymatgen-slab-generator-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Pymatgen Slab Generator Parameters Schema", + "description": "Parameters for the Pymatgen slab generator. https://github.com/materialsproject/pymatgen/blob/585bb673c4aa222669c4b0d72ffeec3dbf092630/pymatgen/core/surface.py#L1187", + "type": "object", + "properties": { + "min_vacuum_size": { + "description": "Minimum size of the vacuum in layers or angstroms", + "type": [ + "integer", + "number" + ], + "minimum": 0, + "default": 1 + }, + "in_unit_planes": { + "description": "Whether to cleave in unit planes", + "type": "boolean", + "default": true + }, + "reorient_lattice": { + "description": "Whether to reorient the lattice", + "type": "boolean", + "default": true + }, + "symmetrize": { + "description": "Whether to symmetrize the slab", + "type": "boolean", + "default": true + } + } +} \ No newline at end of file diff --git a/dist/js/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json b/dist/js/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json new file mode 100644 index 000000000..71c1814f2 --- /dev/null +++ b/dist/js/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json @@ -0,0 +1,31 @@ +{ + "$id": "material/builders/single-material/two-dimensional/slab/selector-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Selector Parameters Schema", + "description": "Parameters for slab selection", + "type": "object", + "properties": { + "termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/base_defect_configuration.json b/dist/js/schema/materials_category/defects/base_defect_configuration.json new file mode 100644 index 000000000..462f60a2f --- /dev/null +++ b/dist/js/schema/materials_category/defects/base_defect_configuration.json @@ -0,0 +1,657 @@ +{ + "$id": "materials-category/defects/base-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Defect Configuration Schema", + "description": "Base configuration for all defect types", + "type": "object", + "required": [ + "crystal" + ], + "properties": { + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/enums.json b/dist/js/schema/materials_category/defects/enums.json new file mode 100644 index 000000000..f19ced3b1 --- /dev/null +++ b/dist/js/schema/materials_category/defects/enums.json @@ -0,0 +1,40 @@ +{ + "$id": "materials-category/defects/enums", + "$schema": "http://json-schema.org/draft-07/schema#", + "atomPlacementMethod": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + }, + "pointDefectType": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "slabDefectType": { + "enum": [ + "island", + "terrace" + ] + }, + "complexDefectType": { + "enum": [ + "pair" + ] + }, + "coordinatesShape": { + "enum": [ + "sphere", + "cylinder", + "rectangle", + "triangular_prism" + ] + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/one_dimensional/island_slab_defect_configuration.json b/dist/js/schema/materials_category/defects/one_dimensional/island_slab_defect_configuration.json new file mode 100644 index 000000000..473b06e5e --- /dev/null +++ b/dist/js/schema/materials_category/defects/one_dimensional/island_slab_defect_configuration.json @@ -0,0 +1,753 @@ +{ + "$id": "materials-category/defects/one-dimensional/island-slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Island Slab Defect Configuration Schema", + "description": "Configuration for an island defect on a slab surface", + "type": "object", + "required": [ + "crystal" + ], + "properties": { + "defect_type": { + "const": "island" + }, + "condition": { + "description": "Spatial condition defining the shape of the island", + "type": "object", + "required": [ + "shape" + ], + "properties": { + "shape": { + "enum": [ + "sphere", + "cylinder", + "rectangle", + "triangular_prism" + ] + }, + "center_position": { + "description": "Center position for symmetric shapes", + "type": "array", + "minItems": 2, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "radius": { + "description": "Radius for circular shapes", + "type": "number", + "minimum": 0 + }, + "min_z": { + "description": "Minimum z-coordinate in Angstroms", + "type": "number" + }, + "max_z": { + "description": "Maximum z-coordinate in Angstroms", + "type": "number" + }, + "min_coordinate": { + "description": "Minimum coordinates for box shapes", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "max_coordinate": { + "description": "Maximum coordinates for box shapes", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "position_on_surface_1": { + "description": "First vertex for triangular prism", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "position_on_surface_2": { + "description": "Second vertex for triangular prism", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "position_on_surface_3": { + "description": "Third vertex for triangular prism", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + } + } + }, + "number_of_added_layers": { + "description": "Number of layers to add to the slab", + "type": [ + "integer", + "number" + ], + "minimum": 0, + "default": 1 + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json b/dist/js/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json new file mode 100644 index 000000000..69bdde8d6 --- /dev/null +++ b/dist/js/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json @@ -0,0 +1,1352 @@ +{ + "$id": "materials-category/defects/one-dimensional/surface-grain-boundary-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Grain Boundary Configuration Schema", + "description": "Configuration for creating a surface grain boundary", + "type": "object", + "required": [ + "film" + ], + "properties": { + "gap": { + "description": "The gap between the two phases", + "type": "number", + "default": 0 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "film": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "substrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "twist_angle": { + "description": "Twist angle in degrees", + "type": "number", + "default": 0 + }, + "distance_z": { + "description": "Vertical distance between layers in Angstroms", + "type": "number", + "minimum": 0, + "default": 3 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json b/dist/js/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json new file mode 100644 index 000000000..ceeb7973a --- /dev/null +++ b/dist/js/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json @@ -0,0 +1,707 @@ +{ + "$id": "materials-category/defects/one-dimensional/terrace-slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Terrace Slab Defect Configuration Schema", + "description": "Configuration for a terrace defect on a slab surface", + "type": "object", + "required": [ + "crystal" + ], + "properties": { + "defect_type": { + "const": "terrace" + }, + "cut_direction": { + "description": "Direction of the cut as lattice vector", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 1, + 0, + 0 + ], + "items": { + "type": "integer" + } + }, + "pivot_coordinate": { + "description": "Pivot coordinate where the cut plane passes through", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 0.5, + 0.5, + 0.5 + ], + "items": { + "type": "number" + } + }, + "use_cartesian_coordinates": { + "description": "Whether to use Cartesian coordinates", + "type": "boolean", + "default": false + }, + "rotate_to_match_pbc": { + "description": "Whether to rotate the slab to match periodic boundary conditions", + "type": "boolean", + "default": true + }, + "number_of_added_layers": { + "description": "Number of layers to add to the slab", + "type": [ + "integer", + "number" + ], + "minimum": 0, + "default": 1 + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/slab_defect_configuration.json b/dist/js/schema/materials_category/defects/slab_defect_configuration.json new file mode 100644 index 000000000..0366b5383 --- /dev/null +++ b/dist/js/schema/materials_category/defects/slab_defect_configuration.json @@ -0,0 +1,666 @@ +{ + "$id": "materials-category/defects/slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Defect Configuration Schema", + "description": "Base configuration for defects in slab structures", + "type": "object", + "required": [ + "crystal" + ], + "properties": { + "number_of_added_layers": { + "description": "Number of layers to add to the slab", + "type": [ + "integer", + "number" + ], + "minimum": 0, + "default": 1 + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/two_dimensional/passivation_configuration.json b/dist/js/schema/materials_category/defects/two_dimensional/passivation_configuration.json new file mode 100644 index 000000000..dd4fbf588 --- /dev/null +++ b/dist/js/schema/materials_category/defects/two_dimensional/passivation_configuration.json @@ -0,0 +1,676 @@ +{ + "$id": "materials-category/defects/two-dimensional/passivation-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Passivation Configuration Schema", + "description": "Configuration for passivating a slab surface", + "type": "object", + "required": [ + "slab" + ], + "properties": { + "slab": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "passivant": { + "description": "The passivating element", + "type": "string", + "default": "H" + }, + "bond_length": { + "description": "The bond length between surface atoms and passivants", + "type": "number", + "minimum": 0, + "default": 1 + }, + "surface": { + "$comment": "The surface types used by passivation and surface analysis", + "enum": [ + "top", + "bottom", + "both" + ] + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json b/dist/js/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json new file mode 100644 index 000000000..90e3611e7 --- /dev/null +++ b/dist/js/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json @@ -0,0 +1,2331 @@ +{ + "$id": "materials-category/defects/two-dimensional/slab-grain-boundary-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Grain Boundary Configuration Schema", + "description": "Configuration for a grain boundary between two phases with different surfaces facing each other", + "type": "object", + "required": [ + "phase_1_configuration", + "phase_2_configuration", + "phase_1_termination", + "phase_2_termination", + "slab_configuration" + ], + "properties": { + "phase_1_configuration": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } + }, + "phase_2_configuration": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } + }, + "phase_1_termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + }, + "phase_2_termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + }, + "gap": { + "description": "The gap between the two phases, in Angstroms", + "type": "number", + "default": 3 + }, + "slab_configuration": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } + }, + "slab_termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/zero_dimensional/adatom_configuration.json b/dist/js/schema/materials_category/defects/zero_dimensional/adatom_configuration.json new file mode 100644 index 000000000..0258fb271 --- /dev/null +++ b/dist/js/schema/materials_category/defects/zero_dimensional/adatom_configuration.json @@ -0,0 +1,681 @@ +{ + "$id": "materials-category/defects/zero-dimensional/adatom-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Adatom Configuration Schema", + "description": "Base configuration for adatom defects on a surface", + "type": "object", + "required": [ + "chemical_element", + "crystal", + "distance_z", + "position_on_surface" + ], + "properties": { + "defect_type": { + "const": "adatom" + }, + "position_on_surface": { + "description": "Position on the surface in 2D crystal coordinates", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + }, + "chemical_element": { + "description": "Chemical element of the adatom", + "type": "string" + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json b/dist/js/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json new file mode 100644 index 000000000..6f1af907a --- /dev/null +++ b/dist/js/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json @@ -0,0 +1,3430 @@ +{ + "$id": "materials-category/defects/zero-dimensional/defect-pair-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Pair Configuration Schema", + "description": "Configuration for a pair of point defects", + "type": "object", + "required": [ + "crystal", + "primary_defect_configuration", + "secondary_defect_configuration" + ], + "properties": { + "defect_type": { + "enum": [ + "pair" + ] + }, + "primary_defect_configuration": { + "description": "Configuration for the first defect", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Configuration Schema", + "description": "Configuration for point defects in a crystal", + "type": "object", + "required": [ + "coordinate", + "crystal", + "defect_type" + ], + "properties": { + "defect_type": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "coordinate": { + "description": "The crystal coordinate of the defect", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 0, + 0, + 0 + ], + "items": { + "type": "number" + } + }, + "chemical_element": { + "description": "The chemical element for substitution or interstitial defects", + "type": "string" + }, + "use_cartesian_coordinates": { + "description": "Whether coordinates are in cartesian rather than fractional coordinates", + "type": "boolean", + "default": false + }, + "placement_method": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Adatom Configuration Schema", + "description": "Base configuration for adatom defects on a surface", + "type": "object", + "required": [ + "chemical_element", + "crystal", + "distance_z", + "position_on_surface" + ], + "properties": { + "defect_type": { + "const": "adatom" + }, + "position_on_surface": { + "description": "Position on the surface in 2D crystal coordinates", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + }, + "chemical_element": { + "description": "Chemical element of the adatom", + "type": "string" + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } + } + ] + }, + "secondary_defect_configuration": { + "description": "Configuration for the second defect", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Configuration Schema", + "description": "Configuration for point defects in a crystal", + "type": "object", + "required": [ + "coordinate", + "crystal", + "defect_type" + ], + "properties": { + "defect_type": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "coordinate": { + "description": "The crystal coordinate of the defect", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 0, + 0, + 0 + ], + "items": { + "type": "number" + } + }, + "chemical_element": { + "description": "The chemical element for substitution or interstitial defects", + "type": "string" + }, + "use_cartesian_coordinates": { + "description": "Whether coordinates are in cartesian rather than fractional coordinates", + "type": "boolean", + "default": false + }, + "placement_method": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Adatom Configuration Schema", + "description": "Base configuration for adatom defects on a surface", + "type": "object", + "required": [ + "chemical_element", + "crystal", + "distance_z", + "position_on_surface" + ], + "properties": { + "defect_type": { + "const": "adatom" + }, + "position_on_surface": { + "description": "Position on the surface in 2D crystal coordinates", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + }, + "chemical_element": { + "description": "Chemical element of the adatom", + "type": "string" + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } + } + ] + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json b/dist/js/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json new file mode 100644 index 000000000..0491131d5 --- /dev/null +++ b/dist/js/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json @@ -0,0 +1,699 @@ +{ + "$id": "materials-category/defects/zero-dimensional/point-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Configuration Schema", + "description": "Configuration for point defects in a crystal", + "type": "object", + "required": [ + "coordinate", + "crystal", + "defect_type" + ], + "properties": { + "defect_type": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "coordinate": { + "description": "The crystal coordinate of the defect", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 0, + 0, + 0 + ], + "items": { + "type": "number" + } + }, + "chemical_element": { + "description": "The chemical element for substitution or interstitial defects", + "type": "string" + }, + "use_cartesian_coordinates": { + "description": "Whether coordinates are in cartesian rather than fractional coordinates", + "type": "boolean", + "default": false + }, + "placement_method": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json b/dist/js/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json new file mode 100644 index 000000000..60d468848 --- /dev/null +++ b/dist/js/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json @@ -0,0 +1,724 @@ +{ + "$id": "materials-category/defects/zero-dimensional/slab-point-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Point Defect Configuration Schema", + "description": "Configuration for point defects on a slab surface", + "type": "object", + "required": [ + "coordinate", + "crystal", + "defect_type", + "distance_z", + "position_on_surface" + ], + "properties": { + "position_on_surface": { + "description": "Position on the slab surface in 2D crystal coordinates", + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "number" + } + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + }, + "number_of_added_layers": { + "description": "Number of layers to add to the slab", + "type": [ + "integer", + "number" + ], + "minimum": 0, + "default": 1 + }, + "crystal": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "defect_type": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "coordinate": { + "description": "The crystal coordinate of the defect", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 0, + 0, + 0 + ], + "items": { + "type": "number" + } + }, + "chemical_element": { + "description": "The chemical element for substitution or interstitial defects", + "type": "string" + }, + "use_cartesian_coordinates": { + "description": "Whether coordinates are in cartesian rather than fractional coordinates", + "type": "boolean", + "default": false + }, + "placement_method": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/multi_material/interfaces/configuration.json b/dist/js/schema/materials_category/multi_material/interfaces/configuration.json new file mode 100644 index 000000000..538c9abbc --- /dev/null +++ b/dist/js/schema/materials_category/multi_material/interfaces/configuration.json @@ -0,0 +1,1569 @@ +{ + "$id": "materials-category/multi-material/interfaces/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Interface Configuration Schema", + "description": "Configuration for an interface between two slabs", + "type": "object", + "required": [ + "film_configuration", + "substrate_configuration", + "film_termination", + "substrate_termination" + ], + "properties": { + "film_configuration": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } + }, + "substrate_configuration": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } + }, + "film_termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + }, + "substrate_termination": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } + }, + "distance_z": { + "description": "The distance between the film and substrate in Angstroms", + "type": "number", + "minimum": 0, + "default": 3 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json b/dist/js/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json new file mode 100644 index 000000000..58684a856 --- /dev/null +++ b/dist/js/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json @@ -0,0 +1,1349 @@ +{ + "$id": "materials-category/multi-material/interfaces/nanoribbon/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NanoRibbon Twisted Interface Configuration Schema", + "description": "Configuration for creating a twisted interface between two nanoribbons", + "type": "object", + "required": [ + "film" + ], + "properties": { + "ribbon_width": { + "description": "Width of the nanoribbon in unit cells", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "ribbon_length": { + "description": "Length of the nanoribbon in unit cells", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum_x": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "vacuum_y": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "film": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "substrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "twist_angle": { + "description": "Twist angle in degrees", + "type": "number", + "default": 0 + }, + "distance_z": { + "description": "Vertical distance between layers in Angstroms", + "type": "number", + "minimum": 0, + "default": 3 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/multi_material/interfaces/twisted/configuration.json b/dist/js/schema/materials_category/multi_material/interfaces/twisted/configuration.json new file mode 100644 index 000000000..52c527617 --- /dev/null +++ b/dist/js/schema/materials_category/multi_material/interfaces/twisted/configuration.json @@ -0,0 +1,1321 @@ +{ + "$id": "materials-category/multi-material/interfaces/twisted/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Twisted Interface Configuration Schema", + "description": "Configuration for creating a twisted interface between two layers", + "type": "object", + "required": [ + "film" + ], + "properties": { + "film": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "substrate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "twist_angle": { + "description": "Twist angle in degrees", + "type": "number", + "default": 0 + }, + "distance_z": { + "description": "Vertical distance between layers in Angstroms", + "type": "number", + "minimum": 0, + "default": 3 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/perturbation/configuration.json b/dist/js/schema/materials_category/perturbation/configuration.json new file mode 100644 index 000000000..0760a2258 --- /dev/null +++ b/dist/js/schema/materials_category/perturbation/configuration.json @@ -0,0 +1,852 @@ +{ + "$id": "materials-category/perturbation/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Perturbation Configuration Schema", + "description": "Configuration for applying geometric perturbation to a material", + "definitions": { + "perturbationFunctionHolder": { + "title": "Perturbation Function Holder", + "description": "Holds a mathematical function for geometric perturbation", + "type": "object", + "required": [ + "type", + "function", + "variables" + ], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "PerturbationFunctionHolder" + }, + "function": { + "description": "String representation of the mathematical function", + "type": "string" + }, + "variables": { + "description": "List of variable names used in the function", + "type": "array", + "default": [ + "x", + "y", + "z" + ], + "items": { + "type": "string" + } + } + } + }, + "sineWavePerturbationFunctionHolder": { + "title": "Sine Wave Perturbation Function Holder", + "description": "Holds a sine wave function for geometric perturbation", + "type": "object", + "required": [ + "type", + "function", + "variables" + ], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "SineWavePerturbationFunctionHolder" + }, + "amplitude": { + "description": "Amplitude of the sine wave", + "type": "number", + "default": 0.05 + }, + "wavelength": { + "description": "Wavelength of the sine wave", + "type": "number", + "default": 1 + }, + "phase": { + "description": "Phase of the sine wave", + "type": "number", + "default": 0 + }, + "axis": { + "description": "The axis along which the sine wave is applied", + "type": "string", + "enum": [ + "x", + "y", + "z" + ], + "default": "x" + }, + "function": { + "description": "String representation of the mathematical function", + "type": "string" + }, + "variables": { + "description": "List of variable names used in the function", + "type": "array", + "default": [ + "x", + "y", + "z" + ], + "items": { + "type": "string" + } + } + } + } + }, + "type": "object", + "required": [ + "material", + "perturbation_function" + ], + "properties": { + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "perturbation_function": { + "description": "The perturbation function to apply", + "oneOf": [ + { + "title": "Perturbation Function Holder", + "description": "Holds a mathematical function for geometric perturbation", + "type": "object", + "required": [ + "type", + "function", + "variables" + ], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "PerturbationFunctionHolder" + }, + "function": { + "description": "String representation of the mathematical function", + "type": "string" + }, + "variables": { + "description": "List of variable names used in the function", + "type": "array", + "default": [ + "x", + "y", + "z" + ], + "items": { + "type": "string" + } + } + } + }, + { + "title": "Sine Wave Perturbation Function Holder", + "description": "Holds a sine wave function for geometric perturbation", + "type": "object", + "required": [ + "type", + "function", + "variables" + ], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "SineWavePerturbationFunctionHolder" + }, + "amplitude": { + "description": "Amplitude of the sine wave", + "type": "number", + "default": 0.05 + }, + "wavelength": { + "description": "Wavelength of the sine wave", + "type": "number", + "default": 1 + }, + "phase": { + "description": "Phase of the sine wave", + "type": "number", + "default": 0 + }, + "axis": { + "description": "The axis along which the sine wave is applied", + "type": "string", + "enum": [ + "x", + "y", + "z" + ], + "default": "x" + }, + "function": { + "description": "String representation of the mathematical function", + "type": "string" + }, + "variables": { + "description": "List of variable names used in the function", + "type": "array", + "default": [ + "x", + "y", + "z" + ], + "items": { + "type": "string" + } + } + } + } + ] + }, + "use_cartesian_coordinates": { + "description": "Whether to use cartesian coordinates for perturbation", + "type": "boolean", + "default": true + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json b/dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json new file mode 100644 index 000000000..fd7afd54e --- /dev/null +++ b/dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json @@ -0,0 +1,749 @@ +{ + "$id": "materials-category/single-material/two-dimensional/slab/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": [ + "bulk" + ], + "properties": { + "bulk": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "miller_indices": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "thickness": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "xy_supercell_matrix": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json new file mode 100644 index 000000000..70aee271d --- /dev/null +++ b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json @@ -0,0 +1,683 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/ase-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ASE-Based Nanoparticle Configuration Schema", + "description": "Configuration for nanoparticles created using ASE constructors", + "type": "object", + "required": [ + "material", + "shape" + ], + "properties": { + "shape": { + "description": "Enum for supported nanoparticle shapes", + "type": "string", + "enum": [ + "icosahedron", + "octahedron", + "decahedron", + "simple_cubic", + "face_centered_cubic", + "body_centered_cubic", + "hexagonal_closed_packed", + "wulff_construction" + ] + }, + "parameters": { + "description": "Shape-specific parameters to pass to the ASE constructor", + "type": "object", + "additionalProperties": true + }, + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "vacuum_padding": { + "description": "Vacuum padding around the nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 10 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json new file mode 100644 index 000000000..c10940c4a --- /dev/null +++ b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json @@ -0,0 +1,663 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/base-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Nanoparticle Configuration Schema", + "description": "Base configuration for all nanoparticle types", + "type": "object", + "required": [ + "material" + ], + "properties": { + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "vacuum_padding": { + "description": "Vacuum padding around the nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 10 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json new file mode 100644 index 000000000..afb8a1f1e --- /dev/null +++ b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json @@ -0,0 +1,701 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/slab-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab-Based Nanoparticle Configuration Schema", + "description": "Configuration for nanoparticles created by filtering slabs", + "type": "object", + "required": [ + "material" + ], + "properties": { + "supercell_size": { + "description": "Size of the supercell in the xy-plane", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "orientation_z": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "vacuum_padding": { + "description": "Vacuum padding around the nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 10 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json new file mode 100644 index 000000000..3e901d8bc --- /dev/null +++ b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json @@ -0,0 +1,707 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/sphere-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Sphere Slab-Based Nanoparticle Configuration Schema", + "description": "Configuration for spherical nanoparticles created from slabs", + "type": "object", + "required": [ + "material" + ], + "properties": { + "radius": { + "description": "Radius of the spherical nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 + }, + "supercell_size": { + "description": "Size of the supercell in the xy-plane", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "orientation_z": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + }, + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "vacuum_padding": { + "description": "Vacuum padding around the nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 10 + } + } +} \ No newline at end of file diff --git a/dist/js/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json new file mode 100644 index 000000000..e19fe48bd --- /dev/null +++ b/dist/js/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json @@ -0,0 +1,690 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoribbon/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NanoRibbon Configuration Schema", + "description": "Configuration for building a nanoribbon from a material", + "type": "object", + "required": [ + "material", + "width", + "length" + ], + "properties": { + "material": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material schema", + "type": "object", + "required": [ + "basis", + "lattice" + ], + "properties": { + "formula": { + "description": "reduced chemical formula", + "type": "string" + }, + "unitCellFormula": { + "description": "chemical formula based on the number of atoms of each element in the supercell", + "type": "string" + }, + "basis": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "basis schema", + "type": "object", + "required": [ + "elements", + "coordinates" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic elements", + "description": "elements of atoms by ids, string, unitless", + "type": "object", + "required": [ + "id", + "value" + ], + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "string" + }, + "occurrence": { + "description": "Occurrence is for fractional occupations", + "type": "number" + }, + "oxidationState": { + "type": "number" + } + } + } + }, + "labels": { + "description": "Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment.", + "type": "array", + "items": { + "properties": { + "id": { + "type": "number" + }, + "value": { + "type": "number" + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic coordinate", + "description": "coordinates of atoms by ids, vector, unitless", + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "vector schema", + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] + } + } + } + }, + "name": { + "type": "string" + }, + "units": { + "type": "string" + }, + "bonds": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "bonds schema", + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "atomPair": { + "description": "indices of the two connected atoms", + "type": "array", + "minItems": 2, + "maxItems": 2, + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "atomic ids", + "items": { + "type": "object", + "properties": { + "id": { + "description": "integer id of this entry", + "type": "integer" + } + } + } + }, + "bondType": { + "type": "string", + "enum": [ + "single", + "double", + "triple", + "quadruple", + "aromatic", + "tautomeric", + "dative", + "other" + ] + } + } + } + } + } + }, + "lattice": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice schema", + "type": "object", + "required": [ + "a", + "alpha", + "b", + "beta", + "c", + "gamma", + "type" + ], + "properties": { + "name": { + "enum": [ + "lattice" + ] + }, + "vectors": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice explicit unit", + "type": "object", + "required": [ + "a", + "b", + "c" + ], + "properties": { + "alat": { + "description": "lattice parameter for fractional coordinates", + "type": "number", + "default": 1 + }, + "units": { + "enum": [ + "km", + "m", + "pm", + "nm", + "angstrom", + "a.u.", + "bohr", + "fractional", + "crystal", + "cartesian", + "alat" + ] + }, + "a": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "b": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + }, + "c": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "number" + } + } + } + }, + "type": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "lattice type schema", + "type": "string", + "enum": [ + "CUB", + "BCC", + "FCC", + "TET", + "MCL", + "ORC", + "ORCC", + "ORCF", + "ORCI", + "HEX", + "BCT", + "TRI", + "MCLC", + "RHL" + ] + }, + "units": { + "type": "object", + "properties": { + "length": { + "type": "string", + "enum": [ + "angstrom", + "bohr" + ] + }, + "angle": { + "type": "string", + "enum": [ + "degree", + "radian" + ] + } + } + }, + "a": { + "description": "length of the first lattice vector", + "type": "number" + }, + "b": { + "description": "length of the second lattice vector", + "type": "number" + }, + "c": { + "description": "length of the third lattice vector", + "type": "number" + }, + "alpha": { + "description": "angle between first and second lattice vector", + "type": "number" + }, + "beta": { + "description": "angle between second and third lattice vector", + "type": "number" + }, + "gamma": { + "description": "angle between first and third lattice vector", + "type": "number" + } + } + }, + "derivedProperties": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "derived properties schema", + "type": "array", + "items": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "volume schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "volume" + ] + }, + "units": { + "enum": [ + "angstrom^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "density schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "density" + ] + }, + "units": { + "enum": [ + "g/cm^3" + ] + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "symmetry schema", + "type": "object", + "properties": { + "pointGroupSymbol": { + "description": "point group symbol in Schoenflies notation", + "type": "string" + }, + "spaceGroupSymbol": { + "description": "space group symbol in Hermann–Mauguin notation", + "type": "string" + }, + "tolerance": { + "type": "object", + "description": "tolerance used for symmetry calculation", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "scalar schema", + "required": [ + "value" + ], + "properties": { + "units": { + "enum": [ + "angstrom" + ] + }, + "value": { + "type": "number" + } + } + }, + "name": { + "enum": [ + "symmetry" + ] + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "elemental-ratio", + "description": "ration of this element in the compound", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "elemental_ratio" + ] + }, + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "element": { + "type": "string", + "description": "the element this ratio is for" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "p_norm", + "description": "https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "p-norm" + ] + }, + "degree": { + "type": "integer", + "description": "degree of the dimensionality of the norm" + }, + "value": { + "type": "number" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi" + ] + }, + "value": { + "type": "string" + } + } + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InChI key representation schema", + "type": "object", + "required": [ + "value" + ], + "properties": { + "name": { + "enum": [ + "inchi_key" + ] + }, + "value": { + "type": "string" + } + } + } + ], + "discriminator": { + "propertyName": "name" + }, + "required": [ + "name" + ] + } + }, + "external": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "database source schema", + "description": "information about a database source", + "type": "object", + "required": [ + "id", + "source", + "origin" + ], + "properties": { + "id": { + "description": "ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "source": { + "description": "Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.", + "type": "string" + }, + "origin": { + "description": "Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).", + "type": "boolean" + }, + "data": { + "description": "Original response from external source.", + "type": "object" + }, + "doi": { + "description": "Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506", + "type": "string" + }, + "url": { + "description": "The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers", + "type": "string" + } + } + }, + "src": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "file source schema", + "description": "file source with the information inside", + "type": "object", + "required": [ + "filename", + "text", + "hash" + ], + "properties": { + "extension": { + "description": "file extension", + "type": "string" + }, + "filename": { + "description": "file name without extension", + "type": "string" + }, + "text": { + "description": "file content as raw text", + "type": "string" + }, + "hash": { + "description": "MD5 hash based on file content", + "type": "string" + } + } + }, + "scaledHash": { + "description": "Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).", + "type": "string" + }, + "icsdId": { + "description": "Corresponding ICSD id of the material", + "type": "integer" + }, + "isNonPeriodic": { + "description": "Whether to work in the finite molecular picture (usually with atomic orbital basis)", + "type": "boolean" + }, + "consistencyChecks": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "material consistency check schema", + "type": "object", + "description": "The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI.", + "required": [ + "key", + "name", + "severity", + "message" + ], + "properties": { + "name": { + "type": "string", + "enum": [ + "default", + "atomsTooClose", + "atomsOverlap" + ], + "description": "Name of the consistency check that is performed, which is listed in an enum." + }, + "key": { + "type": "string", + "description": "Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'" + }, + "severity": { + "enum": [ + "info", + "warning", + "error" + ], + "description": "Severity level of the problem, which is used in UI to differentiate." + }, + "message": { + "type": "string", + "description": "Message generated by the consistency check describing the problem." + } + } + } + }, + "_id": { + "description": "entity identity", + "type": "string" + }, + "slug": { + "description": "entity slug", + "type": "string" + }, + "systemName": { + "type": "string" + }, + "schemaVersion": { + "description": "entity's schema version. Used to distinct between different schemas.", + "type": "string", + "default": "2022.8.16" + }, + "name": { + "description": "entity name", + "type": "string" + }, + "isDefault": { + "description": "Identifies that entity is defaultable", + "type": "boolean", + "default": false + }, + "metadata": { + "type": "object" + } + } + }, + "width": { + "description": "The width of the nanoribbon in number of unit cells", + "type": "integer", + "minimum": 1 + }, + "length": { + "description": "The length of the nanoribbon in number of unit cells", + "type": "integer", + "minimum": 1 + }, + "vacuum_width": { + "description": "The width of the vacuum region in number of unit cells", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "vacuum_length": { + "description": "The length of the vacuum region in number of unit cells", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "edge_type": { + "description": "Enum for nanoribbon edge types", + "type": "string", + "enum": [ + "zigzag", + "armchair" + ], + "default": "zigzag" + } + } +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/enums.json b/dist/js/schema/reusable/material/slab/enums.json new file mode 100644 index 000000000..febc7acc5 --- /dev/null +++ b/dist/js/schema/reusable/material/slab/enums.json @@ -0,0 +1,12 @@ +{ + "$id": "reusable/material/slab/enums", + "$schema": "http://json-schema.org/draft-07/schema#", + "surfaceTypes": { + "$comment": "The surface types used by passivation and surface analysis", + "enum": [ + "top", + "bottom", + "both" + ] + } +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/miller_indices.json b/dist/js/schema/reusable/material/slab/miller_indices.json new file mode 100644 index 000000000..e42ad8371 --- /dev/null +++ b/dist/js/schema/reusable/material/slab/miller_indices.json @@ -0,0 +1,33 @@ +{ + "$id": "reusable/material/slab/miller-indices", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "default": [ + 0, + 0, + 1 + ], + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 number elements schema", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "array of 3 boolean elements schema", + "type": "array", + "items": { + "type": "boolean" + }, + "minItems": 3, + "maxItems": 3 + } + ] +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/repetitions.json b/dist/js/schema/reusable/material/slab/repetitions.json new file mode 100644 index 000000000..c46c2d94b --- /dev/null +++ b/dist/js/schema/reusable/material/slab/repetitions.json @@ -0,0 +1,18 @@ +{ + "$id": "reusable/material/slab/repetitions", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Crystal Repetitions Schema", + "description": "Number of unit cells to repeat in each direction for a crystal structure", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + 1, + 1, + 1 + ], + "items": { + "type": "integer", + "minimum": 1 + } +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/termination.json b/dist/js/schema/reusable/material/slab/termination.json new file mode 100644 index 000000000..8e7abe073 --- /dev/null +++ b/dist/js/schema/reusable/material/slab/termination.json @@ -0,0 +1,23 @@ +{ + "$id": "reusable/material/slab/termination", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": [ + "chemical_elements", + "space_group_symmetry_label" + ], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/thickness.json b/dist/js/schema/reusable/material/slab/thickness.json new file mode 100644 index 000000000..60767b88d --- /dev/null +++ b/dist/js/schema/reusable/material/slab/thickness.json @@ -0,0 +1,9 @@ +{ + "$id": "reusable/material/slab/thickness", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/slab/vacuum.json b/dist/js/schema/reusable/material/slab/vacuum.json new file mode 100644 index 000000000..3fd8171d4 --- /dev/null +++ b/dist/js/schema/reusable/material/slab/vacuum.json @@ -0,0 +1,9 @@ +{ + "$id": "reusable/material/slab/vacuum", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0, + "default": 5 +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/supercell_matrix_2d.json b/dist/js/schema/reusable/material/supercell_matrix_2d.json new file mode 100644 index 000000000..a67984adc --- /dev/null +++ b/dist/js/schema/reusable/material/supercell_matrix_2d.json @@ -0,0 +1,27 @@ +{ + "$id": "reusable/material/supercell_matrix_2d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "minItems": 2, + "maxItems": 2, + "default": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer" + } + } +} \ No newline at end of file diff --git a/dist/js/schema/reusable/material/supercell_matrix_3d.json b/dist/js/schema/reusable/material/supercell_matrix_3d.json new file mode 100644 index 000000000..318e8c6da --- /dev/null +++ b/dist/js/schema/reusable/material/supercell_matrix_3d.json @@ -0,0 +1,34 @@ +{ + "$id": "reusable/material/supercell_matrix_3d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 3D Schema", + "description": "3x3 matrix of integers for transforming a unit cell into a supercell", + "type": "array", + "minItems": 3, + "maxItems": 3, + "default": [ + [ + 1, + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0, + 1 + ] + ], + "items": { + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "integer" + } + } +} \ No newline at end of file diff --git a/dist/js/types.d.ts b/dist/js/types.d.ts index b34c10b24..c80c2d5f0 100644 --- a/dist/js/types.d.ts +++ b/dist/js/types.d.ts @@ -6083,6 +6083,303 @@ export interface JobSchema { isDefault?: boolean; metadata?: {}; } +/** Schema dist/js/schema/material/builders/base/selector_parameters.json */ +/** + * Base parameters for all builder selectors + */ +export interface BaseSelectorParametersSchema { + /** + * Default index for the selector + */ + default_index?: number; +} +/** Schema dist/js/schema/material/builders/defects/point_defect_builder_parameters.json */ +/** + * Parameters for the point defect builder + */ +export interface PointDefectBuilderParametersSchema { + /** + * Whether to center the defect + */ + center_defect?: boolean; +} +/** Schema dist/js/schema/material/builders/defects/slab_defect_builder_parameters.json */ +/** + * Parameters for the slab defect builder + */ +export interface SlabDefectBuilderParametersSchema { + /** + * Whether to automatically add vacuum + */ + auto_add_vacuum?: boolean; + /** + * Vacuum thickness in Angstroms + */ + vacuum_thickness?: number; +} +/** Schema dist/js/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json */ +/** + * Parameters for the Voronoi interstitial point defect builder + */ +export interface VoronoiInterstitialPointDefectBuilderParametersSchema { + /** + * Clustering tolerance for merging interstitial sites + */ + clustering_tol?: number; + /** + * Minimum distance between interstitial and nearest atom + */ + min_dist?: number; + /** + * Tolerance for lattice matching + */ + ltol?: number; + /** + * Tolerance for structure matching + */ + stol?: number; + /** + * Angle tolerance for structure matching + */ + angle_tol?: number; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json */ +/** + * Parameters for the simple interface builder + */ +export interface SimpleInterfaceBuilderParametersSchema { + /** + * Whether to scale the film to match the substrate + */ + scale_film?: boolean; + /** + * Whether to create slabs from the configurations or use the bulk + */ + create_slabs?: boolean; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.json */ +/** + * Parameters for the slab grain boundary builder + */ +export interface SlabGrainBoundaryBuilderParametersSchema { + /** + * Parameters for ZSL strain matching + */ + strain_matching_parameters?: { + /** + * Maximum area for strain matching + */ + max_area?: number; + /** + * Maximum area ratio tolerance + */ + max_area_ratio_tol?: number; + /** + * Maximum length tolerance + */ + max_length_tol?: number; + /** + * Maximum angle tolerance + */ + max_angle_tol?: number; + }; + /** + * Default index for the selector + */ + default_index?: number; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json */ +/** + * Parameters for the strain matching interface builder + */ +export interface StrainMatchingInterfaceBuilderParametersSchema { + /** + * Parameters for strain matching + */ + strain_matching_parameters?: {} | null; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json */ +/** + * Parameters for the ZSL strain matching interface builder + */ +export interface ZSLStrainMatchingInterfaceBuilderParametersSchema { + /** + * Parameters for ZSL strain matching + */ + strain_matching_parameters?: { + /** + * Maximum area for strain matching + */ + max_area?: number; + /** + * Maximum area ratio tolerance + */ + max_area_ratio_tol?: number; + /** + * Maximum length tolerance + */ + max_length_tol?: number; + /** + * Maximum angle tolerance + */ + max_angle_tol?: number; + }; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json */ +/** + * Parameters for ZSL strain matching + */ +export interface ZSLStrainMatchingParametersSchema { + /** + * Maximum area for strain matching + */ + max_area?: number; + /** + * Maximum area ratio tolerance + */ + max_area_ratio_tol?: number; + /** + * Maximum length tolerance + */ + max_length_tol?: number; + /** + * Maximum angle tolerance + */ + max_angle_tol?: number; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.json */ +/** + * Parameters for creating a grain boundary between two surface phases + */ +export interface SurfaceGrainBoundaryBuilderParametersSchema { + /** + * The tolerance to include atoms on the edge of each phase, in angstroms + */ + edge_inclusion_tolerance?: number; + /** + * The distance tolerance to remove atoms that are too close, in angstroms + */ + distance_tolerance?: number; + /** + * The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically. + */ + max_supercell_matrix_int?: number | null; + /** + * The limit for the maximum integer for the transformation matrices when searching + */ + limit_max_int?: number | null; + /** + * The tolerance for the angle between the commensurate lattices and the target angle, in degrees. + */ + angle_tolerance?: number; + /** + * Whether to return the first match or all matches. + */ + return_first_match?: boolean; +} +/** Schema dist/js/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json */ +/** + * Parameters for the commensurate lattice interface builder + */ +export interface CommensurateLatticeTwistedInterfaceBuilderParametersSchema { + /** + * The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically. + */ + max_supercell_matrix_int?: number | null; + /** + * The limit for the maximum integer for the transformation matrices when searching + */ + limit_max_int?: number | null; + /** + * The tolerance for the angle between the commensurate lattices and the target angle, in degrees. + */ + angle_tolerance?: number; + /** + * Whether to return the first match or all matches. + */ + return_first_match?: boolean; +} +/** Schema dist/js/schema/material/builders/passivation/coordination_based/builder_parameters.json */ +/** + * Parameters for the CoordinationPassivationBuilder + */ +export interface CoordinationBasedPassivationBuilderParametersSchema { + /** + * The coordination number threshold for an atom to be considered undercoordinated + */ + coordination_threshold?: number; + /** + * The maximum number of bonds to passivate for each undercoordinated atom + */ + bonds_to_passivate?: number; + /** + * The tolerance for symmetry comparison of vectors for bonds + */ + symmetry_tolerance?: number; + /** + * Radius around each surface atom to exclude underlying atoms from passivation + */ + shadowing_radius?: number; + /** + * Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces + */ + depth?: number; +} +/** Schema dist/js/schema/material/builders/passivation/surface/builder_parameters.json */ +/** + * Parameters for the SurfacePassivationBuilder, defining how atoms near the surface are detected and passivated + */ +export interface SurfacePassivationBuilderParametersSchema { + /** + * Radius around each surface atom to exclude underlying atoms from passivation + */ + shadowing_radius?: number; + /** + * Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces + */ + depth?: number; +} +/** Schema dist/js/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json */ +/** + * Parameters for the Pymatgen slab generator. https://github.com/materialsproject/pymatgen/blob/585bb673c4aa222669c4b0d72ffeec3dbf092630/pymatgen/core/surface.py#L1187 + */ +export interface PymatgenSlabGeneratorParametersSchema { + /** + * Minimum size of the vacuum in layers or angstroms + */ + min_vacuum_size?: number; + /** + * Whether to cleave in unit planes + */ + in_unit_planes?: boolean; + /** + * Whether to reorient the lattice + */ + reorient_lattice?: boolean; + /** + * Whether to symmetrize the slab + */ + symmetrize?: boolean; +} +/** Schema dist/js/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json */ +/** + * Parameters for slab selection + */ +export interface SlabSelectorParametersSchema { + /** + * Defines a specific termination of a slab + */ + termination?: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; +} /** Schema dist/js/schema/material/consistency_check.json */ /** * The output of consistency checks performed on data adhering to JSON schema, but inconsistent with scientific or logical rules, to show problems in UI. @@ -6202,144 +6499,9075 @@ export interface MaterialSchema { value: number; } | { /** - * point group symbol in Schoenflies notation + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; +} +/** Schema dist/js/schema/materials_category/defects/base_defect_configuration.json */ +/** + * Base configuration for all defect types + */ +export interface BaseDefectConfigurationSchema { + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/enums.json */ +export interface MaterialsCategoryDefectsEnums { + [k: string]: unknown; +} +/** Schema dist/js/schema/materials_category/defects/one_dimensional/island_slab_defect_configuration.json */ +/** + * Configuration for an island defect on a slab surface + */ +export interface IslandSlabDefectConfigurationSchema { + defect_type?: "island"; + /** + * Spatial condition defining the shape of the island + */ + condition?: { + shape: "sphere" | "cylinder" | "rectangle" | "triangular_prism"; + /** + * Center position for symmetric shapes + * + * @minItems 2 + * @maxItems 3 + */ + center_position?: [number, number] | [number, number, number]; + /** + * Radius for circular shapes + */ + radius?: number; + /** + * Minimum z-coordinate in Angstroms + */ + min_z?: number; + /** + * Maximum z-coordinate in Angstroms + */ + max_z?: number; + /** + * Minimum coordinates for box shapes + * + * @minItems 3 + * @maxItems 3 + */ + min_coordinate?: [number, number, number]; + /** + * Maximum coordinates for box shapes + * + * @minItems 3 + * @maxItems 3 + */ + max_coordinate?: [number, number, number]; + /** + * First vertex for triangular prism + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface_1?: [number, number]; + /** + * Second vertex for triangular prism + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface_2?: [number, number]; + /** + * Third vertex for triangular prism + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface_3?: [number, number]; + }; + /** + * Number of layers to add to the slab + */ + number_of_added_layers?: number; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json */ +/** + * Configuration for creating a surface grain boundary + */ +export interface SurfaceGrainBoundaryConfigurationSchema { + /** + * The gap between the two phases + */ + gap?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + film: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + substrate?: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Twist angle in degrees + */ + twist_angle?: number; + /** + * Vertical distance between layers in Angstroms + */ + distance_z?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; +} +/** Schema dist/js/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json */ +/** + * Configuration for a terrace defect on a slab surface + */ +export interface TerraceSlabDefectConfigurationSchema { + defect_type?: "terrace"; + /** + * Direction of the cut as lattice vector + * + * @minItems 3 + * @maxItems 3 + */ + cut_direction?: [number, number, number]; + /** + * Pivot coordinate where the cut plane passes through + * + * @minItems 3 + * @maxItems 3 + */ + pivot_coordinate?: [number, number, number]; + /** + * Whether to use Cartesian coordinates + */ + use_cartesian_coordinates?: boolean; + /** + * Whether to rotate the slab to match periodic boundary conditions + */ + rotate_to_match_pbc?: boolean; + /** + * Number of layers to add to the slab + */ + number_of_added_layers?: number; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/slab_defect_configuration.json */ +/** + * Base configuration for defects in slab structures + */ +export interface SlabDefectConfigurationSchema { + /** + * Number of layers to add to the slab + */ + number_of_added_layers?: number; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/two_dimensional/passivation_configuration.json */ +/** + * Configuration for passivating a slab surface + */ +export interface PassivationConfigurationSchema { + slab: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * The passivating element + */ + passivant?: string; + /** + * The bond length between surface atoms and passivants + */ + bond_length?: number; + surface?: "top" | "bottom" | "both"; +} +/** Schema dist/js/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json */ +/** + * Configuration for a grain boundary between two phases with different surfaces facing each other + */ +export interface SlabGrainBoundaryConfigurationSchema { + /** + * Configuration for creating a slab from a bulk material + */ + phase_1_configuration: { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; + }; + /** + * Configuration for creating a slab from a bulk material + */ + phase_2_configuration: { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; + }; + /** + * Defines a specific termination of a slab + */ + phase_1_termination: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; + /** + * Defines a specific termination of a slab + */ + phase_2_termination: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; + /** + * The gap between the two phases, in Angstroms + */ + gap?: number; + /** + * Configuration for creating a slab from a bulk material + */ + slab_configuration: { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; + }; + /** + * Defines a specific termination of a slab + */ + slab_termination?: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; +} +/** Schema dist/js/schema/materials_category/defects/zero_dimensional/adatom_configuration.json */ +/** + * Base configuration for adatom defects on a surface + */ +export interface AdatomConfigurationSchema { + defect_type?: "adatom"; + /** + * Position on the surface in 2D crystal coordinates + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface: [number, number]; + /** + * Distance from the surface in Angstroms + */ + distance_z: number; + /** + * Chemical element of the adatom + */ + chemical_element: string; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json */ +/** + * Configuration for a pair of point defects + */ +export interface PointDefectPairConfigurationSchema { + defect_type?: "pair"; + /** + * Configuration for the first defect + */ + primary_defect_configuration: { + defect_type: "vacancy" | "substitution" | "interstitial" | "adatom"; + /** + * The crystal coordinate of the defect + * + * @minItems 3 + * @maxItems 3 + */ + coordinate: [number, number, number]; + /** + * The chemical element for substitution or interstitial defects + */ + chemical_element?: string; + /** + * Whether coordinates are in cartesian rather than fractional coordinates + */ + use_cartesian_coordinates?: boolean; + placement_method?: "coordinate" | "closest_site" | "equidistant" | "crystal_site" | "voronoi_site"; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + } | { + defect_type?: "adatom"; + /** + * Position on the surface in 2D crystal coordinates + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface: [number, number]; + /** + * Distance from the surface in Angstroms + */ + distance_z: number; + /** + * Chemical element of the adatom + */ + chemical_element: string; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + }; + /** + * Configuration for the second defect + */ + secondary_defect_configuration: { + defect_type: "vacancy" | "substitution" | "interstitial" | "adatom"; + /** + * The crystal coordinate of the defect + * + * @minItems 3 + * @maxItems 3 + */ + coordinate: [number, number, number]; + /** + * The chemical element for substitution or interstitial defects + */ + chemical_element?: string; + /** + * Whether coordinates are in cartesian rather than fractional coordinates + */ + use_cartesian_coordinates?: boolean; + placement_method?: "coordinate" | "closest_site" | "equidistant" | "crystal_site" | "voronoi_site"; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + } | { + defect_type?: "adatom"; + /** + * Position on the surface in 2D crystal coordinates + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface: [number, number]; + /** + * Distance from the surface in Angstroms + */ + distance_z: number; + /** + * Chemical element of the adatom + */ + chemical_element: string; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + }; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json */ +/** + * Configuration for point defects in a crystal + */ +export interface PointDefectConfigurationSchema { + defect_type: "vacancy" | "substitution" | "interstitial" | "adatom"; + /** + * The crystal coordinate of the defect + * + * @minItems 3 + * @maxItems 3 + */ + coordinate: [number, number, number]; + /** + * The chemical element for substitution or interstitial defects + */ + chemical_element?: string; + /** + * Whether coordinates are in cartesian rather than fractional coordinates + */ + use_cartesian_coordinates?: boolean; + placement_method?: "coordinate" | "closest_site" | "equidistant" | "crystal_site" | "voronoi_site"; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; +} +/** Schema dist/js/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json */ +/** + * Configuration for point defects on a slab surface + */ +export interface SlabPointDefectConfigurationSchema { + /** + * Position on the slab surface in 2D crystal coordinates + * + * @minItems 2 + * @maxItems 2 + */ + position_on_surface: [number, number]; + /** + * Distance from the surface in Angstroms + */ + distance_z: number; + /** + * Number of layers to add to the slab + */ + number_of_added_layers?: number; + crystal: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + defect_type: "vacancy" | "substitution" | "interstitial" | "adatom"; + /** + * The crystal coordinate of the defect + * + * @minItems 3 + * @maxItems 3 + */ + coordinate: [number, number, number]; + /** + * The chemical element for substitution or interstitial defects + */ + chemical_element?: string; + /** + * Whether coordinates are in cartesian rather than fractional coordinates + */ + use_cartesian_coordinates?: boolean; + placement_method?: "coordinate" | "closest_site" | "equidistant" | "crystal_site" | "voronoi_site"; +} +/** Schema dist/js/schema/materials_category/multi_material/interfaces/configuration.json */ +/** + * Configuration for an interface between two slabs + */ +export interface InterfaceConfigurationSchema { + /** + * Configuration for creating a slab from a bulk material + */ + film_configuration: { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; + }; + /** + * Configuration for creating a slab from a bulk material + */ + substrate_configuration: { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; + }; + /** + * Defines a specific termination of a slab + */ + film_termination: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; + /** + * Defines a specific termination of a slab + */ + substrate_termination: { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; + }; + /** + * The distance between the film and substrate in Angstroms + */ + distance_z?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; +} +/** Schema dist/js/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json */ +/** + * Configuration for creating a twisted interface between two nanoribbons + */ +export interface NanoRibbonTwistedInterfaceConfigurationSchema { + /** + * Width of the nanoribbon in unit cells + */ + ribbon_width?: number; + /** + * Length of the nanoribbon in unit cells + */ + ribbon_length?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum_x?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum_y?: number; + film: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + substrate?: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Twist angle in degrees + */ + twist_angle?: number; + /** + * Vertical distance between layers in Angstroms + */ + distance_z?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; +} +/** Schema dist/js/schema/materials_category/multi_material/interfaces/twisted/configuration.json */ +/** + * Configuration for creating a twisted interface between two layers + */ +export interface TwistedInterfaceConfigurationSchema { + film: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + substrate?: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Twist angle in degrees + */ + twist_angle?: number; + /** + * Vertical distance between layers in Angstroms + */ + distance_z?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; +} +/** Schema dist/js/schema/materials_category/perturbation/configuration.json */ +/** + * Configuration for applying geometric perturbation to a material + */ +export interface PerturbationConfigurationSchema { + material: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * The perturbation function to apply + */ + perturbation_function: { + /** + * The type of function holder + */ + type: "PerturbationFunctionHolder"; + /** + * String representation of the mathematical function + */ + function: string; + /** + * List of variable names used in the function + */ + variables: string[]; + } | { + /** + * The type of function holder + */ + type: "SineWavePerturbationFunctionHolder"; + /** + * Amplitude of the sine wave + */ + amplitude?: number; + /** + * Wavelength of the sine wave + */ + wavelength?: number; + /** + * Phase of the sine wave + */ + phase?: number; + /** + * The axis along which the sine wave is applied + */ + axis?: "x" | "y" | "z"; + /** + * String representation of the mathematical function + */ + function: string; + /** + * List of variable names used in the function + */ + variables: string[]; + }; + /** + * Whether to use cartesian coordinates for perturbation + */ + use_cartesian_coordinates?: boolean; +} +/** + * Holds a mathematical function for geometric perturbation + * + * This interface was referenced by `PerturbationConfigurationSchema`'s JSON-Schema + * via the `definition` "perturbationFunctionHolder". + */ +export interface PerturbationFunctionHolder { + /** + * The type of function holder + */ + type: "PerturbationFunctionHolder"; + /** + * String representation of the mathematical function + */ + function: string; + /** + * List of variable names used in the function + */ + variables: string[]; +} +/** + * Holds a sine wave function for geometric perturbation + * + * This interface was referenced by `PerturbationConfigurationSchema`'s JSON-Schema + * via the `definition` "sineWavePerturbationFunctionHolder". + */ +export interface SineWavePerturbationFunctionHolder { + /** + * The type of function holder + */ + type: "SineWavePerturbationFunctionHolder"; + /** + * Amplitude of the sine wave + */ + amplitude?: number; + /** + * Wavelength of the sine wave + */ + wavelength?: number; + /** + * Phase of the sine wave + */ + phase?: number; + /** + * The axis along which the sine wave is applied + */ + axis?: "x" | "y" | "z"; + /** + * String representation of the mathematical function + */ + function: string; + /** + * List of variable names used in the function + */ + variables: string[]; +} +/** Schema dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json */ +/** + * Configuration for creating a slab from a bulk material + */ +export interface SlabConfigurationSchema { + bulk: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Miller indices for crystallographic plane designation + */ + miller_indices?: [number, number, number] | [boolean, boolean, boolean]; + /** + * Number of atomic layers in a structural component + */ + thickness?: number; + /** + * Vacuum thickness in Angstroms + */ + vacuum?: number; + /** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ + xy_supercell_matrix?: [[number, number], [number, number]]; + /** + * Whether to use conventional cell + */ + use_conventional_cell?: boolean; + /** + * Whether to make z-axis orthogonal + */ + use_orthogonal_z?: boolean; + /** + * Whether to make the slab primitive + */ + make_primitive?: boolean; +} +/** Schema dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json */ +/** + * Configuration for nanoparticles created using ASE constructors + */ +export interface ASEBasedNanoparticleConfigurationSchema { + /** + * Enum for supported nanoparticle shapes + */ + shape: "icosahedron" | "octahedron" | "decahedron" | "simple_cubic" | "face_centered_cubic" | "body_centered_cubic" | "hexagonal_closed_packed" | "wulff_construction"; + /** + * Shape-specific parameters to pass to the ASE constructor + */ + parameters?: { + [k: string]: unknown; + }; + material: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Vacuum padding around the nanoparticle in Angstroms + */ + vacuum_padding?: number; +} +/** Schema dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json */ +/** + * Base configuration for all nanoparticle types + */ +export interface BaseNanoparticleConfigurationSchema { + material: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Vacuum padding around the nanoparticle in Angstroms + */ + vacuum_padding?: number; +} +/** Schema dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json */ +/** + * Configuration for nanoparticles created by filtering slabs + */ +export interface SlabBasedNanoparticleConfigurationSchema { + /** + * Size of the supercell in the xy-plane + */ + supercell_size?: number; + /** + * Miller indices for crystallographic plane designation + */ + orientation_z?: [number, number, number] | [boolean, boolean, boolean]; + material: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material + */ + icsdId?: number; + /** + * Whether to work in the finite molecular picture (usually with atomic orbital basis) + */ + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; + /** + * entity identity + */ + _id?: string; + /** + * entity slug + */ + slug?: string; + systemName?: string; + /** + * entity's schema version. Used to distinct between different schemas. + */ + schemaVersion?: string; + /** + * entity name + */ + name?: string; + /** + * Identifies that entity is defaultable + */ + isDefault?: boolean; + metadata?: {}; + }; + /** + * Vacuum padding around the nanoparticle in Angstroms + */ + vacuum_padding?: number; +} +/** Schema dist/js/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json */ +/** + * Configuration for spherical nanoparticles created from slabs + */ +export interface SphereSlabBasedNanoparticleConfigurationSchema { + /** + * Radius of the spherical nanoparticle in Angstroms + */ + radius?: number; + /** + * Size of the supercell in the xy-plane + */ + supercell_size?: number; + /** + * Miller indices for crystallographic plane designation + */ + orientation_z?: [number, number, number] | [boolean, boolean, boolean]; + material: { + /** + * reduced chemical formula + */ + formula?: string; + /** + * chemical formula based on the number of atoms of each element in the supercell + */ + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; + /** + * information about a database source + */ + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; + /** + * file source with the information inside + */ + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; + /** + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + */ + scaledHash?: string; + /** + * Corresponding ICSD id of the material */ - pointGroupSymbol?: string; + icsdId?: number; /** - * space group symbol in Hermann–Mauguin notation + * Whether to work in the finite molecular picture (usually with atomic orbital basis) */ - spaceGroupSymbol?: string; + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; /** - * tolerance used for symmetry calculation + * entity identity */ - tolerance?: { - units?: "angstrom"; - value: number; - }; - name?: "symmetry"; - } | { - name?: "elemental_ratio"; - value: number; + _id?: string; /** - * the element this ratio is for + * entity slug */ - element?: string; - } | { - name?: "p-norm"; + slug?: string; + systemName?: string; /** - * degree of the dimensionality of the norm + * entity's schema version. Used to distinct between different schemas. */ - degree?: number; - value: number; - } | { - name?: "inchi"; - value: string; - } | { - name?: "inchi_key"; - value: string; - })[]; - /** - * information about a database source - */ - external?: { + schemaVersion?: string; /** - * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + * entity name */ - id: string | number; + name?: string; /** - * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + * Identifies that entity is defaultable */ - source: string; + isDefault?: boolean; + metadata?: {}; + }; + /** + * Vacuum padding around the nanoparticle in Angstroms + */ + vacuum_padding?: number; +} +/** Schema dist/js/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json */ +/** + * Configuration for building a nanoribbon from a material + */ +export interface NanoRibbonConfigurationSchema { + material: { /** - * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + * reduced chemical formula */ - origin: boolean; + formula?: string; /** - * Original response from external source. + * chemical formula based on the number of atoms of each element in the supercell */ - data?: {}; + unitCellFormula?: string; + basis: { + elements: { + id: number; + value: string; + /** + * Occurrence is for fractional occupations + */ + occurrence?: number; + oxidationState?: number; + }[]; + /** + * Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + */ + labels?: { + id?: number; + value?: number; + }[]; + coordinates: { + id?: number; + value?: [number, number, number] | [boolean, boolean, boolean]; + }[]; + name?: string; + units?: string; + bonds?: { + /** + * indices of the two connected atoms + * + * @minItems 2 + * @maxItems 2 + */ + atomPair?: [ + { + /** + * integer id of this entry + */ + id?: number; + }, + { + /** + * integer id of this entry + */ + id?: number; + } + ]; + bondType?: "single" | "double" | "triple" | "quadruple" | "aromatic" | "tautomeric" | "dative" | "other"; + }[]; + }; + lattice: { + name?: "lattice"; + vectors?: { + /** + * lattice parameter for fractional coordinates + */ + alat?: number; + units?: "km" | "m" | "pm" | "nm" | "angstrom" | "a.u." | "bohr" | "fractional" | "crystal" | "cartesian" | "alat"; + /** + * @minItems 3 + * @maxItems 3 + */ + a: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + b: [number, number, number]; + /** + * @minItems 3 + * @maxItems 3 + */ + c: [number, number, number]; + }; + type: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL"; + units?: { + length?: "angstrom" | "bohr"; + angle?: "degree" | "radian"; + }; + /** + * length of the first lattice vector + */ + a: number; + /** + * length of the second lattice vector + */ + b: number; + /** + * length of the third lattice vector + */ + c: number; + /** + * angle between first and second lattice vector + */ + alpha: number; + /** + * angle between second and third lattice vector + */ + beta: number; + /** + * angle between first and third lattice vector + */ + gamma: number; + }; + derivedProperties?: ({ + name?: "volume"; + units?: "angstrom^3"; + value: number; + } | { + name?: "density"; + units?: "g/cm^3"; + value: number; + } | { + /** + * point group symbol in Schoenflies notation + */ + pointGroupSymbol?: string; + /** + * space group symbol in Hermann–Mauguin notation + */ + spaceGroupSymbol?: string; + /** + * tolerance used for symmetry calculation + */ + tolerance?: { + units?: "angstrom"; + value: number; + }; + name?: "symmetry"; + } | { + name?: "elemental_ratio"; + value: number; + /** + * the element this ratio is for + */ + element?: string; + } | { + name?: "p-norm"; + /** + * degree of the dimensionality of the norm + */ + degree?: number; + value: number; + } | { + name?: "inchi"; + value: string; + } | { + name?: "inchi_key"; + value: string; + })[]; /** - * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + * information about a database source */ - doi?: string; + external?: { + /** + * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + */ + id: string | number; + /** + * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + */ + source: string; + /** + * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + */ + origin: boolean; + /** + * Original response from external source. + */ + data?: {}; + /** + * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + */ + doi?: string; + /** + * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + */ + url?: string; + }; /** - * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + * file source with the information inside */ - url?: string; - }; - /** - * file source with the information inside - */ - src?: { + src?: { + /** + * file extension + */ + extension?: string; + /** + * file name without extension + */ + filename: string; + /** + * file content as raw text + */ + text: string; + /** + * MD5 hash based on file content + */ + hash: string; + }; /** - * file extension + * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). */ - extension?: string; + scaledHash?: string; /** - * file name without extension + * Corresponding ICSD id of the material */ - filename: string; + icsdId?: number; /** - * file content as raw text + * Whether to work in the finite molecular picture (usually with atomic orbital basis) */ - text: string; + isNonPeriodic?: boolean; + consistencyChecks?: { + /** + * Name of the consistency check that is performed, which is listed in an enum. + */ + name: "default" | "atomsTooClose" | "atomsOverlap"; + /** + * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + */ + key: string; + /** + * Severity level of the problem, which is used in UI to differentiate. + */ + severity: "info" | "warning" | "error"; + /** + * Message generated by the consistency check describing the problem. + */ + message: string; + }[]; /** - * MD5 hash based on file content + * entity identity */ - hash: string; - }; - /** - * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). - */ - scaledHash?: string; - /** - * Corresponding ICSD id of the material - */ - icsdId?: number; - /** - * Whether to work in the finite molecular picture (usually with atomic orbital basis) - */ - isNonPeriodic?: boolean; - consistencyChecks?: { + _id?: string; /** - * Name of the consistency check that is performed, which is listed in an enum. + * entity slug */ - name: "default" | "atomsTooClose" | "atomsOverlap"; + slug?: string; + systemName?: string; /** - * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + * entity's schema version. Used to distinct between different schemas. */ - key: string; + schemaVersion?: string; /** - * Severity level of the problem, which is used in UI to differentiate. + * entity name */ - severity: "info" | "warning" | "error"; + name?: string; /** - * Message generated by the consistency check describing the problem. + * Identifies that entity is defaultable */ - message: string; - }[]; + isDefault?: boolean; + metadata?: {}; + }; /** - * entity identity + * The width of the nanoribbon in number of unit cells */ - _id?: string; + width: number; /** - * entity slug + * The length of the nanoribbon in number of unit cells */ - slug?: string; - systemName?: string; + length: number; /** - * entity's schema version. Used to distinct between different schemas. + * The width of the vacuum region in number of unit cells */ - schemaVersion?: string; + vacuum_width?: number; /** - * entity name + * The length of the vacuum region in number of unit cells */ - name?: string; + vacuum_length?: number; /** - * Identifies that entity is defaultable + * Enum for nanoribbon edge types */ - isDefault?: boolean; - metadata?: {}; + edge_type?: "zigzag" | "armchair"; } /** Schema dist/js/schema/method/categorized_method.json */ export interface CategorizedMethod { @@ -17350,6 +26578,63 @@ export interface TheSourceOfAPropertyThisCouldBeAnArticleASimulationOnExabyteAnE }[]; }; } +/** Schema dist/js/schema/reusable/material/slab/enums.json */ +export interface ReusableMaterialSlabEnums { + [k: string]: unknown; +} +/** Schema dist/js/schema/reusable/material/slab/miller_indices.json */ +/** + * Miller indices for crystallographic plane designation + */ +export type MillerIndicesSchema = [number, number, number] | [boolean, boolean, boolean]; +/** Schema dist/js/schema/reusable/material/slab/repetitions.json */ +/** + * Number of unit cells to repeat in each direction for a crystal structure + * + * @minItems 3 + * @maxItems 3 + */ +export type CrystalRepetitionsSchema = [number, number, number]; +/** Schema dist/js/schema/reusable/material/slab/termination.json */ +/** + * Defines a specific termination of a slab + */ +export interface TerminationSchema { + /** + * Chemical elements at the termination + */ + chemical_elements: string; + /** + * Space group symmetry designation for the termination + */ + space_group_symmetry_label: string; +} +/** Schema dist/js/schema/reusable/material/slab/thickness.json */ +/** + * Number of atomic layers in a structural component + */ +export type ThicknessSchema = number; +/** Schema dist/js/schema/reusable/material/slab/vacuum.json */ +/** + * Vacuum thickness in Angstroms + */ +export type VacuumSchema = number; +/** Schema dist/js/schema/reusable/material/supercell_matrix_2d.json */ +/** + * Supercell matrix for xy plane transformations + * + * @minItems 2 + * @maxItems 2 + */ +export type SupercellMatrix2DSchema = [[number, number], [number, number]]; +/** Schema dist/js/schema/reusable/material/supercell_matrix_3d.json */ +/** + * 3x3 matrix of integers for transforming a unit cell into a supercell + * + * @minItems 3 + * @maxItems 3 + */ +export type SupercellMatrix3DSchema = [[number, number, number], [number, number, number], [number, number, number]]; /** Schema dist/js/schema/software/application.json */ export interface ApplicationSchemaBase { /** diff --git a/pyproject.toml b/pyproject.toml index 09d189fa1..c39b84936 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ dependencies = [ [project.optional-dependencies] dev = [ - "datamodel-code-generator>=0.25.5" + "datamodel-code-generator==0.25.5" ] tests = [ "coverage[toml]>=5.3", diff --git a/schema/core/reusable/material/repetitions.json b/schema/core/reusable/material/repetitions.json new file mode 100644 index 000000000..6558f5173 --- /dev/null +++ b/schema/core/reusable/material/repetitions.json @@ -0,0 +1,18 @@ +{ + "$id": "reusable/material/slab/repetitions", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Crystal Repetitions Schema", + "description": "Number of unit cells to repeat in each direction for a crystal structure", + "type": "array", + "items": { + "type": "integer", + "minimum": 1 + }, + "minItems": 3, + "maxItems": 3, + "default": [ + 1, + 1, + 1 + ] +} diff --git a/schema/core/reusable/material/slab/enums.json b/schema/core/reusable/material/slab/enums.json new file mode 100644 index 000000000..7a65480bb --- /dev/null +++ b/schema/core/reusable/material/slab/enums.json @@ -0,0 +1,12 @@ +{ + "$id": "reusable/material/slab/enums", + "$schema": "http://json-schema.org/draft-07/schema#", + "surfaceTypes": { + "$comment": "The surface types used by passivation and surface analysis", + "enum": [ + "top", + "bottom", + "both" + ] + } +} diff --git a/schema/core/reusable/material/slab/miller_indices.json b/schema/core/reusable/material/slab/miller_indices.json new file mode 100644 index 000000000..7594d0fdc --- /dev/null +++ b/schema/core/reusable/material/slab/miller_indices.json @@ -0,0 +1,16 @@ +{ + "$id": "reusable/material/slab/miller-indices", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Miller Indices Schema", + "description": "Miller indices for crystallographic plane designation", + "allOf": [ + { + "$ref": "../../../abstract/vector.json" + } + ], + "default": [ + 0, + 0, + 1 + ] +} diff --git a/schema/core/reusable/material/slab/termination.json b/schema/core/reusable/material/slab/termination.json new file mode 100644 index 000000000..fb343c201 --- /dev/null +++ b/schema/core/reusable/material/slab/termination.json @@ -0,0 +1,20 @@ +{ + "$id": "reusable/material/slab/termination", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Termination Schema", + "description": "Defines a specific termination of a slab", + "type": "object", + "required": ["chemical_elements", "space_group_symmetry_label"], + "properties": { + "chemical_elements": { + "title": "Chemical Elements", + "description": "Chemical elements at the termination", + "type": "string" + }, + "space_group_symmetry_label": { + "title": "Space Group Symmetry Label", + "description": "Space group symmetry designation for the termination", + "type": "string" + } + } +} diff --git a/schema/core/reusable/material/slab/thickness.json b/schema/core/reusable/material/slab/thickness.json new file mode 100644 index 000000000..a10cb9dc1 --- /dev/null +++ b/schema/core/reusable/material/slab/thickness.json @@ -0,0 +1,9 @@ +{ + "$id": "reusable/material/slab/thickness", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Thickness Schema", + "description": "Number of atomic layers in a structural component", + "type": "integer", + "minimum": 1, + "default": 1 +} diff --git a/schema/core/reusable/material/slab/vacuum.json b/schema/core/reusable/material/slab/vacuum.json new file mode 100644 index 000000000..220055fa7 --- /dev/null +++ b/schema/core/reusable/material/slab/vacuum.json @@ -0,0 +1,9 @@ +{ + "$id": "reusable/material/slab/vacuum", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Vacuum Schema", + "description": "Vacuum thickness in Angstroms", + "type": "number", + "minimum": 0.0, + "default": 5.0 +} diff --git a/schema/core/reusable/material/supercell_matrix_2d.json b/schema/core/reusable/material/supercell_matrix_2d.json new file mode 100644 index 000000000..51be057c2 --- /dev/null +++ b/schema/core/reusable/material/supercell_matrix_2d.json @@ -0,0 +1,21 @@ +{ + "$id": "reusable/material/supercell_matrix_2d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 2D Schema", + "description": "Supercell matrix for xy plane transformations", + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 2, + "maxItems": 2 + }, + "minItems": 2, + "maxItems": 2, + "default": [ + [1, 0], + [0, 1] + ] +} diff --git a/schema/core/reusable/material/supercell_matrix_3d.json b/schema/core/reusable/material/supercell_matrix_3d.json new file mode 100644 index 000000000..e9a556ed4 --- /dev/null +++ b/schema/core/reusable/material/supercell_matrix_3d.json @@ -0,0 +1,34 @@ +{ + "$id": "reusable/material/supercell_matrix_3d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Supercell Matrix 3D Schema", + "description": "3x3 matrix of integers for transforming a unit cell into a supercell", + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 3, + "maxItems": 3 + }, + "minItems": 3, + "maxItems": 3, + "default": [ + [ + 1, + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0, + 1 + ] + ] +} diff --git a/schema/material/builders/base/selector_parameters.json b/schema/material/builders/base/selector_parameters.json new file mode 100644 index 000000000..3c2981087 --- /dev/null +++ b/schema/material/builders/base/selector_parameters.json @@ -0,0 +1,15 @@ +{ + "$id": "material/builders/base/selector-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Selector Parameters Schema", + "description": "Base parameters for all builder selectors", + "type": "object", + "properties": { + "default_index": { + "description": "Default index for the selector", + "type": "integer", + "minimum": 0, + "default": 0 + } + } +} diff --git a/schema/material/builders/defects/point_defect_builder_parameters.json b/schema/material/builders/defects/point_defect_builder_parameters.json new file mode 100644 index 000000000..826a0f3a7 --- /dev/null +++ b/schema/material/builders/defects/point_defect_builder_parameters.json @@ -0,0 +1,14 @@ +{ + "$id": "material/builders/defects/point-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Builder Parameters Schema", + "description": "Parameters for the point defect builder", + "type": "object", + "properties": { + "center_defect": { + "description": "Whether to center the defect", + "type": "boolean", + "default": false + } + } +} diff --git a/schema/material/builders/defects/slab_defect_builder_parameters.json b/schema/material/builders/defects/slab_defect_builder_parameters.json new file mode 100644 index 000000000..36f507e5a --- /dev/null +++ b/schema/material/builders/defects/slab_defect_builder_parameters.json @@ -0,0 +1,17 @@ +{ + "$id": "material/builders/defects/slab-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Defect Builder Parameters Schema", + "description": "Parameters for the slab defect builder", + "type": "object", + "properties": { + "auto_add_vacuum": { + "description": "Whether to automatically add vacuum", + "type": "boolean", + "default": true + }, + "vacuum_thickness": { + "$ref": "../../../core/reusable/material/slab/vacuum.json" + } + } +} diff --git a/schema/material/builders/defects/slab_grain_boundary_builder_parameters.json b/schema/material/builders/defects/slab_grain_boundary_builder_parameters.json new file mode 100644 index 000000000..5b0a90d63 --- /dev/null +++ b/schema/material/builders/defects/slab_grain_boundary_builder_parameters.json @@ -0,0 +1,18 @@ +{ + "$id": "material/builders/multi-material/interfaces/slab-grain-boundary-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Grain Boundary Builder Parameters Schema", + "description": "Parameters for the slab grain boundary builder", + "type": "object", + "allOf": [ + { + "$ref": "../base/selector_parameters.json" + } + ], + "properties": { + "strain_matching_parameters": { + "description": "Parameters for ZSL strain matching", + "$ref": "../multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json" + } + } +} diff --git a/schema/material/builders/defects/surface_grain_boundary_builder_parameters.json b/schema/material/builders/defects/surface_grain_boundary_builder_parameters.json new file mode 100644 index 000000000..5e99b0a34 --- /dev/null +++ b/schema/material/builders/defects/surface_grain_boundary_builder_parameters.json @@ -0,0 +1,24 @@ +{ + "$id": "material/builders/multi-material/interfaces/surface-grain-boundary-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Grain Boundary Builder Parameters Schema", + "description": "Parameters for creating a grain boundary between two surface phases", + "type": "object", + "allOf": [ + { + "$ref": "../multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json" + } + ], + "properties": { + "edge_inclusion_tolerance": { + "description": "The tolerance to include atoms on the edge of each phase, in angstroms", + "type": "number", + "default": 1.0 + }, + "distance_tolerance": { + "description": "The distance tolerance to remove atoms that are too close, in angstroms", + "type": "number", + "default": 1.0 + } + } +} diff --git a/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json b/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json new file mode 100644 index 000000000..aeac15573 --- /dev/null +++ b/schema/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json @@ -0,0 +1,35 @@ +{ + "$id": "material/builders/defects/voronoi-interstitial-point-defect-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Voronoi Interstitial Point Defect Builder Parameters Schema", + "description": "Parameters for the Voronoi interstitial point defect builder", + "#comment": "According to https://github.com/materialsproject/pymatgen-analysis-defects/blob/e2cb285de8be07b38912ae1782285ef1f463a9a9/pymatgen/analysis/defects/generators.py#L343", + "type": "object", + "properties": { + "clustering_tol": { + "description": "Clustering tolerance for merging interstitial sites", + "type": "number", + "default": 0.5 + }, + "min_dist": { + "description": "Minimum distance between interstitial and nearest atom", + "type": "number", + "default": 0.9 + }, + "ltol": { + "description": "Tolerance for lattice matching", + "type": "number", + "default": 0.2 + }, + "stol": { + "description": "Tolerance for structure matching", + "type": "number", + "default": 0.3 + }, + "angle_tol": { + "description": "Angle tolerance for structure matching", + "type": "number", + "default": 5 + } + } +} diff --git a/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json b/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json new file mode 100644 index 000000000..702935d79 --- /dev/null +++ b/schema/material/builders/multi_material/interfaces/simple/builder_parameters.json @@ -0,0 +1,19 @@ +{ + "$id": "material/builders/multi-material/interfaces/simple/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Simple Interface Builder Parameters Schema", + "description": "Parameters for the simple interface builder", + "type": "object", + "properties": { + "scale_film": { + "description": "Whether to scale the film to match the substrate", + "type": "boolean", + "default": true + }, + "create_slabs": { + "description": "Whether to create slabs from the configurations or use the bulk", + "type": "boolean", + "default": true + } + } +} diff --git a/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json b/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json new file mode 100644 index 000000000..c0abb0e82 --- /dev/null +++ b/schema/material/builders/multi_material/interfaces/strain_matching/builder_parameters.json @@ -0,0 +1,15 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Strain Matching Interface Builder Parameters Schema", + "description": "Parameters for the strain matching interface builder", + "type": "object", + "properties": { + "strain_matching_parameters": { + "description": "Parameters for strain matching", + "type": ["object", "null"], + "default": null + } + } +} + diff --git a/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json b/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json new file mode 100644 index 000000000..35181ebf8 --- /dev/null +++ b/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json @@ -0,0 +1,13 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/zsl-strain-matching-interface-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Interface Builder Parameters Schema", + "description": "Parameters for the ZSL strain matching interface builder", + "type": "object", + "properties": { + "strain_matching_parameters": { + "description": "Parameters for ZSL strain matching", + "$ref": "zsl_strain_matching_parameters.json" + } + } +} diff --git a/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json b/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json new file mode 100644 index 000000000..442cbdb56 --- /dev/null +++ b/schema/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json @@ -0,0 +1,31 @@ +{ + "$id": "material/builders/multi-material/interfaces/strain-matching/zsl-strain-matching-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ZSL Strain Matching Parameters Schema", + "description": "Parameters for ZSL strain matching", + "$comment": "Described in https://pymatgen.org/pymatgen.analysis.interfaces.html#pymatgen.analysis.interfaces.zsl.ZSLGenerator", + "type": "object", + "properties": { + "max_area": { + "description": "Maximum area for strain matching", + "type": "number", + "default": 50.0 + }, + "max_area_ratio_tol": { + "description": "Maximum area ratio tolerance", + "type": "number", + "default": 0.09 + }, + "max_length_tol": { + "description": "Maximum length tolerance", + "type": "number", + "default": 0.03 + }, + "max_angle_tol": { + "description": "Maximum angle tolerance", + "type": "number", + "default": 0.01 + } + } +} + diff --git a/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json b/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json new file mode 100644 index 000000000..7e7f2e1a0 --- /dev/null +++ b/schema/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json @@ -0,0 +1,29 @@ +{ + "$id": "material/builders/multi-material/interfaces/twisted/commensurate-lattice-twisted-interface-builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Commensurate Lattice Twisted Interface Builder Parameters Schema", + "description": "Parameters for the commensurate lattice interface builder", + "type": "object", + "properties": { + "max_supercell_matrix_int": { + "description": "The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically.", + "type": ["integer", "null"], + "default": null + }, + "limit_max_int": { + "description": "The limit for the maximum integer for the transformation matrices when searching", + "type": ["integer", "null"], + "default": 42 + }, + "angle_tolerance": { + "description": "The tolerance for the angle between the commensurate lattices and the target angle, in degrees.", + "type": "number", + "default": 0.1 + }, + "return_first_match": { + "description": "Whether to return the first match or all matches.", + "type": "boolean", + "default": false + } + } +} diff --git a/schema/material/builders/passivation/coordination_based/builder_parameters.json b/schema/material/builders/passivation/coordination_based/builder_parameters.json new file mode 100644 index 000000000..baa477234 --- /dev/null +++ b/schema/material/builders/passivation/coordination_based/builder_parameters.json @@ -0,0 +1,29 @@ +{ + "$id": "material/builders/passivation/coordination-based/builder-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Coordination Based Passivation Builder Parameters Schema", + "description": "Parameters for the CoordinationPassivationBuilder", + "type": "object", + "allOf": [ + { + "$ref": "../surface/builder_parameters.json" + } + ], + "properties": { + "coordination_threshold": { + "description": "The coordination number threshold for an atom to be considered undercoordinated", + "type": "integer", + "default": 3 + }, + "bonds_to_passivate": { + "description": "The maximum number of bonds to passivate for each undercoordinated atom", + "type": "integer", + "default": 1 + }, + "symmetry_tolerance": { + "description": "The tolerance for symmetry comparison of vectors for bonds", + "type": "number", + "default": 0.1 + } + } +} diff --git a/schema/material/builders/passivation/surface/builder_parameters.json b/schema/material/builders/passivation/surface/builder_parameters.json new file mode 100644 index 000000000..c841baa05 --- /dev/null +++ b/schema/material/builders/passivation/surface/builder_parameters.json @@ -0,0 +1,19 @@ +{ + "$id": "material/builders/passivation/surface/builder_parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Passivation Builder Parameters Schema", + "description": "Parameters for the SurfacePassivationBuilder, defining how atoms near the surface are detected and passivated", + "type": "object", + "properties": { + "shadowing_radius": { + "description": "Radius around each surface atom to exclude underlying atoms from passivation", + "type": "number", + "default": 2.5 + }, + "depth": { + "description": "Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces", + "type": "number", + "default": 5.0 + } + } +} diff --git a/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json b/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json new file mode 100644 index 000000000..75f261bcf --- /dev/null +++ b/schema/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json @@ -0,0 +1,30 @@ +{ + "$id": "material/builders/single-material/two-dimensional/slab/pymatgen-slab-generator-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Pymatgen Slab Generator Parameters Schema", + "description": "Parameters for the Pymatgen slab generator. https://github.com/materialsproject/pymatgen/blob/585bb673c4aa222669c4b0d72ffeec3dbf092630/pymatgen/core/surface.py#L1187", + "type": "object", + "properties": { + "min_vacuum_size": { + "description": "Minimum size of the vacuum in layers or angstroms", + "type": ["integer", "number"], + "minimum": 0, + "default": 1 + }, + "in_unit_planes": { + "description": "Whether to cleave in unit planes", + "type": "boolean", + "default": true + }, + "reorient_lattice": { + "description": "Whether to reorient the lattice", + "type": "boolean", + "default": true + }, + "symmetrize": { + "description": "Whether to symmetrize the slab", + "type": "boolean", + "default": true + } + } +} diff --git a/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json b/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json new file mode 100644 index 000000000..b0c4deff6 --- /dev/null +++ b/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json @@ -0,0 +1,12 @@ +{ + "$id": "material/builders/single-material/two-dimensional/slab/selector-parameters", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Selector Parameters Schema", + "description": "Parameters for slab selection", + "type": "object", + "properties": { + "termination": { + "$ref": "../../../../../core/reusable/material/slab/termination.json" + } + } +} diff --git a/schema/materials_category/defects/base_defect_configuration.json b/schema/materials_category/defects/base_defect_configuration.json new file mode 100644 index 000000000..42b4d747d --- /dev/null +++ b/schema/materials_category/defects/base_defect_configuration.json @@ -0,0 +1,14 @@ +{ + "$id": "materials-category/defects/base-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Defect Configuration Schema", + "description": "Base configuration for all defect types", + "type": "object", + "required": ["crystal"], + "properties": { + "crystal": { + "description": "The base crystal material for the defect", + "$ref": "../../material.json" + } + } +} diff --git a/schema/materials_category/defects/enums.json b/schema/materials_category/defects/enums.json new file mode 100644 index 000000000..fa07cd8bc --- /dev/null +++ b/schema/materials_category/defects/enums.json @@ -0,0 +1,41 @@ +{ + "$id": "materials-category/defects/enums", + "$schema": "http://json-schema.org/draft-07/schema#", + "atomPlacementMethod": { + "enum": [ + "coordinate", + "closest_site", + "equidistant", + "crystal_site", + "voronoi_site" + ] + }, + + "pointDefectType": { + "enum": [ + "vacancy", + "substitution", + "interstitial", + "adatom" + ] + }, + "slabDefectType": { + "enum": [ + "island", + "terrace" + ] + }, + "complexDefectType": { + "enum": [ + "pair" + ] + }, + "coordinatesShape": { + "enum": [ + "sphere", + "cylinder", + "rectangle", + "triangular_prism" + ] + } +} diff --git a/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json b/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json new file mode 100644 index 000000000..0df4554ad --- /dev/null +++ b/schema/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json @@ -0,0 +1,24 @@ +{ + "$id": "materials-category/defects/one-dimensional/surface-grain-boundary-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Surface Grain Boundary Configuration Schema", + "description": "Configuration for creating a surface grain boundary", + "type": "object", + "allOf": [ + { + "$ref": "../../multi_material/interfaces/twisted/configuration.json", + "$comment": "This is equivalent to the configuration for twisted interface created with commensurate lattices" + } + ], + "properties": { + "gap": { + "description": "The gap between the two phases", + "type": "number", + "default": 0.0 + }, + "xy_supercell_matrix": { + "description": "The supercell matrix for the xy plane", + "$ref": "../../../core/reusable/material/supercell_matrix_2d.json" + } + } +} diff --git a/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json b/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json new file mode 100644 index 000000000..e5220f768 --- /dev/null +++ b/schema/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json @@ -0,0 +1,47 @@ +{ + "$id": "materials-category/defects/one-dimensional/terrace-slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Terrace Slab Defect Configuration Schema", + "description": "Configuration for a terrace defect on a slab surface", + "type": "object", + "allOf": [ + { + "$ref": "../slab_defect_configuration.json" + } + ], + "properties": { + "defect_type": { + "const": "terrace" + }, + "cut_direction": { + "description": "Direction of the cut as lattice vector", + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 3, + "maxItems": 3, + "default": [1, 0, 0] + }, + "pivot_coordinate": { + "description": "Pivot coordinate where the cut plane passes through", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3, + "default": [0.5, 0.5, 0.5] + }, + "use_cartesian_coordinates": { + "description": "Whether to use Cartesian coordinates", + "type": "boolean", + "default": false + }, + "rotate_to_match_pbc": { + "description": "Whether to rotate the slab to match periodic boundary conditions", + "type": "boolean", + "default": true + } + } +} diff --git a/schema/materials_category/defects/slab_defect_configuration.json b/schema/materials_category/defects/slab_defect_configuration.json new file mode 100644 index 000000000..df2ca04c1 --- /dev/null +++ b/schema/materials_category/defects/slab_defect_configuration.json @@ -0,0 +1,20 @@ +{ + "$id": "materials-category/defects/slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Defect Configuration Schema", + "description": "Base configuration for defects in slab structures", + "type": "object", + "allOf": [ + { + "$ref": "base_defect_configuration.json" + } + ], + "properties": { + "number_of_added_layers": { + "description": "Number of layers to add to the slab", + "type": ["integer", "number"], + "minimum": 0, + "default": 1 + } + } +} diff --git a/schema/materials_category/defects/two_dimensional/island_slab_defect_configuration.json b/schema/materials_category/defects/two_dimensional/island_slab_defect_configuration.json new file mode 100644 index 000000000..6f94c3a39 --- /dev/null +++ b/schema/materials_category/defects/two_dimensional/island_slab_defect_configuration.json @@ -0,0 +1,94 @@ +{ + "$id": "materials-category/defects/one-dimensional/island-slab-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Island Slab Defect Configuration Schema", + "description": "Configuration for an island defect on a slab surface", + "type": "object", + "allOf": [ + { + "$ref": "../slab_defect_configuration.json" + } + ], + "properties": { + "defect_type": { + "const": "island" + }, + "condition": { + "description": "Spatial condition defining the shape of the island", + "type": "object", + "required": ["shape"], + "properties": { + "shape": { + "$ref": "../enums.json#/coordinatesShape" + }, + "center_position": { + "description": "Center position for symmetric shapes", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 3 + }, + "radius": { + "description": "Radius for circular shapes", + "type": "number", + "minimum": 0 + }, + "min_z": { + "description": "Minimum z-coordinate in Angstroms", + "type": "number" + }, + "max_z": { + "description": "Maximum z-coordinate in Angstroms", + "type": "number" + }, + "min_coordinate": { + "description": "Minimum coordinates for box shapes", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + "max_coordinate": { + "description": "Maximum coordinates for box shapes", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + "position_on_surface_1": { + "description": "First vertex for triangular prism", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "position_on_surface_2": { + "description": "Second vertex for triangular prism", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "position_on_surface_3": { + "description": "Third vertex for triangular prism", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + } + } + } + } +} diff --git a/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json b/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json new file mode 100644 index 000000000..0075c9d2c --- /dev/null +++ b/schema/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json @@ -0,0 +1,45 @@ +{ + "$id": "materials-category/defects/two-dimensional/slab-grain-boundary-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Grain Boundary Configuration Schema", + "description": "Configuration for a grain boundary between two phases with different surfaces facing each other", + "type": "object", + "required": [ + "phase_1_configuration", + "phase_2_configuration", + "phase_1_termination", + "phase_2_termination", + "slab_configuration" + ], + "properties": { + "phase_1_configuration": { + "description": "The configuration of the first phase", + "$ref": "../../single_material/two_dimensional/slab/configuration.json" + }, + "phase_2_configuration": { + "description": "The configuration of the second phase", + "$ref": "../../single_material/two_dimensional/slab/configuration.json" + }, + "phase_1_termination": { + "description": "The termination of the first phase", + "$ref": "../../../core/reusable/material/slab/termination.json" + }, + "phase_2_termination": { + "description": "The termination of the second phase", + "$ref": "../../../core/reusable/material/slab/termination.json" + }, + "gap": { + "description": "The gap between the two phases, in Angstroms", + "type": "number", + "default": 3.0 + }, + "slab_configuration": { + "description": "The configuration of the grain boundary slab", + "$ref": "../../single_material/two_dimensional/slab/configuration.json" + }, + "slab_termination": { + "description": "The termination of the grain boundary slab", + "$ref": "../../../core/reusable/material/slab/termination.json" + } + } +} diff --git a/schema/materials_category/defects/zero_dimensional/adatom_configuration.json b/schema/materials_category/defects/zero_dimensional/adatom_configuration.json new file mode 100644 index 000000000..bc98e17b9 --- /dev/null +++ b/schema/materials_category/defects/zero_dimensional/adatom_configuration.json @@ -0,0 +1,36 @@ +{ + "$id": "materials-category/defects/zero-dimensional/adatom-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Adatom Configuration Schema", + "description": "Base configuration for adatom defects on a surface", + "type": "object", + "allOf": [ + { + "$ref": "../base_defect_configuration.json" + } + ], + "required": ["position_on_surface", "distance_z", "chemical_element"], + "properties": { + "defect_type": { + "const": "adatom" + }, + "position_on_surface": { + "description": "Position on the surface in 2D crystal coordinates", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + }, + "chemical_element": { + "description": "Chemical element of the adatom", + "type": "string" + } + } +} diff --git a/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json b/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json new file mode 100644 index 000000000..d2d099984 --- /dev/null +++ b/schema/materials_category/defects/zero_dimensional/defect_pair_configuration.json @@ -0,0 +1,41 @@ +{ + "$id": "materials-category/defects/zero-dimensional/defect-pair-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Pair Configuration Schema", + "description": "Configuration for a pair of point defects", + "type": "object", + "allOf": [ + { + "$ref": "../base_defect_configuration.json" + } + ], + "required": ["primary_defect_configuration", "secondary_defect_configuration"], + "properties": { + "defect_type": { + "$ref": "../enums.json#/complexDefectType", + "default": "pair" + }, + "primary_defect_configuration": { + "description": "Configuration for the first defect", + "oneOf": [ + { + "$ref": "point_defect_configuration.json" + }, + { + "$ref": "adatom_configuration.json" + } + ] + }, + "secondary_defect_configuration": { + "description": "Configuration for the second defect", + "oneOf": [ + { + "$ref": "point_defect_configuration.json" + }, + { + "$ref": "adatom_configuration.json" + } + ] + } + } +} diff --git a/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json b/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json new file mode 100644 index 000000000..afe3903bf --- /dev/null +++ b/schema/materials_category/defects/zero_dimensional/point_defect_configuration.json @@ -0,0 +1,42 @@ +{ + "$id": "materials-category/defects/zero-dimensional/point-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Point Defect Configuration Schema", + "description": "Configuration for point defects in a crystal", + "type": "object", + "allOf": [ + { + "$ref": "../base_defect_configuration.json" + } + ], + "required": ["defect_type", "coordinate"], + "properties": { + "defect_type": { + "description": "The type of point defect", + "$ref": "../enums.json#/pointDefectType" + }, + "coordinate": { + "description": "The crystal coordinate of the defect", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3, + "default": [0, 0, 0] + }, + "chemical_element": { + "description": "The chemical element for substitution or interstitial defects", + "type": "string" + }, + "use_cartesian_coordinates": { + "description": "Whether coordinates are in cartesian rather than fractional coordinates", + "type": "boolean", + "default": false + }, + "placement_method": { + "description": "Method used to place the atom", + "$ref": "../enums.json#/atomPlacementMethod" + } + } +} diff --git a/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json b/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json new file mode 100644 index 000000000..f2667cb68 --- /dev/null +++ b/schema/materials_category/defects/zero_dimensional/slab_point_defect_configuration.json @@ -0,0 +1,32 @@ +{ + "$id": "materials-category/defects/zero-dimensional/slab-point-defect-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab Point Defect Configuration Schema", + "description": "Configuration for point defects on a slab surface", + "type": "object", + "allOf": [ + { + "$ref": "../slab_defect_configuration.json" + }, + { + "$ref": "point_defect_configuration.json" + } + ], + "required": ["position_on_surface", "distance_z"], + "properties": { + "position_on_surface": { + "description": "Position on the slab surface in 2D crystal coordinates", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "distance_z": { + "description": "Distance from the surface in Angstroms", + "type": "number", + "minimum": 0 + } + } +} diff --git a/schema/materials_category/multi_material/interfaces/configuration.json b/schema/materials_category/multi_material/interfaces/configuration.json new file mode 100644 index 000000000..3b1a9c2f2 --- /dev/null +++ b/schema/materials_category/multi_material/interfaces/configuration.json @@ -0,0 +1,40 @@ +{ + "$id": "materials-category/multi-material/interfaces/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Interface Configuration Schema", + "description": "Configuration for an interface between two slabs", + "type": "object", + "required": [ + "film_configuration", + "substrate_configuration", + "film_termination", + "substrate_termination" + ], + "properties": { + "film_configuration": { + "description": "The configuration of the film slab", + "$ref": "../../single_material/two_dimensional/slab/configuration.json" + }, + "substrate_configuration": { + "description": "The configuration of the substrate slab", + "$ref": "../../single_material/two_dimensional/slab/configuration.json" + }, + "film_termination": { + "description": "The termination of the film", + "$ref": "../../../core/reusable/material/slab/termination.json" + }, + "substrate_termination": { + "description": "The termination of the substrate", + "$ref": "../../../core/reusable/material/slab/termination.json" + }, + "distance_z": { + "description": "The distance between the film and substrate in Angstroms", + "type": "number", + "minimum": 0, + "default": 3.0 + }, + "vacuum": { + "$ref": "../../../core/reusable/material/slab/vacuum.json" + } + } +} diff --git a/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json b/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json new file mode 100644 index 000000000..c06e7ef1d --- /dev/null +++ b/schema/materials_category/multi_material/interfaces/nanoribbon/configuration.json @@ -0,0 +1,34 @@ +{ + "$id": "materials-category/multi-material/interfaces/nanoribbon/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NanoRibbon Twisted Interface Configuration Schema", + "description": "Configuration for creating a twisted interface between two nanoribbons", + "type": "object", + "allOf": [ + { + "$ref": "../twisted/configuration.json" + } + ], + "properties": { + "ribbon_width": { + "description": "Width of the nanoribbon in unit cells", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "ribbon_length": { + "description": "Length of the nanoribbon in unit cells", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "vacuum_x": { + "$ref": "../../../../core/reusable/material/slab/vacuum.json", + "description": "Vacuum along x on both sides, in Angstroms" + }, + "vacuum_y": { + "$ref": "../../../../core/reusable/material/slab/vacuum.json", + "description": "Vacuum along y on both sides, in Angstroms" + } + } +} diff --git a/schema/materials_category/multi_material/interfaces/twisted/configuration.json b/schema/materials_category/multi_material/interfaces/twisted/configuration.json new file mode 100644 index 000000000..c931de4c6 --- /dev/null +++ b/schema/materials_category/multi_material/interfaces/twisted/configuration.json @@ -0,0 +1,33 @@ +{ + "$id": "materials-category/multi-material/interfaces/twisted/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Twisted Interface Configuration Schema", + "description": "Configuration for creating a twisted interface between two layers", + "type": "object", + "required": ["film"], + "properties": { + "film": { + "description": "The film material", + "$ref": "../../../../material.json" + }, + "substrate": { + "description": "The substrate material", + "$comment": "Substrate is optional, in case of absence, copy of film is used instead", + "$ref": "../../../../material.json" + }, + "twist_angle": { + "description": "Twist angle in degrees", + "type": "number", + "default": 0.0 + }, + "distance_z": { + "description": "Vertical distance between layers in Angstroms", + "type": "number", + "minimum": 0, + "default": 3.0 + }, + "vacuum": { + "$ref": "../../../../core/reusable/material/slab/vacuum.json" + } + } +} diff --git a/schema/materials_category/passivation/configuration.json b/schema/materials_category/passivation/configuration.json new file mode 100644 index 000000000..d888f3472 --- /dev/null +++ b/schema/materials_category/passivation/configuration.json @@ -0,0 +1,32 @@ +{ + "$id": "materials-category/defects/two-dimensional/passivation-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Passivation Configuration Schema", + "description": "Configuration for passivating a slab surface", + "type": "object", + "required": [ + "slab" + ], + "properties": { + "slab": { + "description": "The slab material to be passivated", + "$ref": "../../material.json" + }, + "passivant": { + "description": "The passivating element", + "type": "string", + "default": "H" + }, + "bond_length": { + "description": "The bond length between surface atoms and passivants", + "type": "number", + "minimum": 0, + "default": 1.0 + }, + "surface": { + "description": "Which surface(s) to passivate", + "$ref": "../../core/reusable/material/slab/enums.json#/surfaceTypes", + "default": "both" + } + } +} diff --git a/schema/materials_category/perturbation/configuration.json b/schema/materials_category/perturbation/configuration.json new file mode 100644 index 000000000..16c10d191 --- /dev/null +++ b/schema/materials_category/perturbation/configuration.json @@ -0,0 +1,95 @@ +{ + "$id": "materials-category/perturbation/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Perturbation Configuration Schema", + "description": "Configuration for applying geometric perturbation to a material", + "definitions": { + "perturbationFunctionHolder": { + "title": "Perturbation Function Holder", + "description": "Holds a mathematical function for geometric perturbation", + "type": "object", + "required": ["type", "function", "variables"], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "PerturbationFunctionHolder" + }, + "function": { + "description": "String representation of the mathematical function", + "type": "string" + }, + "variables": { + "description": "List of variable names used in the function", + "type": "array", + "items": { + "type": "string" + }, + "default": ["x", "y", "z"] + } + } + }, + "sineWavePerturbationFunctionHolder": { + "title": "Sine Wave Perturbation Function Holder", + "description": "Holds a sine wave function for geometric perturbation", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/perturbationFunctionHolder" + } + ], + "properties": { + "type": { + "description": "The type of function holder", + "type": "string", + "const": "SineWavePerturbationFunctionHolder" + }, + "amplitude": { + "description": "Amplitude of the sine wave", + "type": "number", + "default": 0.05 + }, + "wavelength": { + "description": "Wavelength of the sine wave", + "type": "number", + "default": 1 + }, + "phase": { + "description": "Phase of the sine wave", + "type": "number", + "default": 0 + }, + "axis": { + "description": "The axis along which the sine wave is applied", + "type": "string", + "enum": ["x", "y", "z"], + "default": "x" + } + } + } + }, + "type": "object", + "required": ["material", "perturbation_function"], + "properties": { + "material": { + "description": "The material to be perturbed", + "$ref": "../../material.json" + }, + "perturbation_function": { + "description": "The perturbation function to apply", + "oneOf": [ + { + "$ref": "#/definitions/perturbationFunctionHolder" + }, + { + "$ref": "#/definitions/sineWavePerturbationFunctionHolder" + } + ] + }, + "use_cartesian_coordinates": { + "description": "Whether to use cartesian coordinates for perturbation", + "type": "boolean", + "default": true + } + } +} diff --git a/schema/materials_category/single_material/two_dimensional/slab/configuration.json b/schema/materials_category/single_material/two_dimensional/slab/configuration.json new file mode 100644 index 000000000..9b7234abf --- /dev/null +++ b/schema/materials_category/single_material/two_dimensional/slab/configuration.json @@ -0,0 +1,43 @@ +{ + "$id": "materials-category/single-material/two-dimensional/slab/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SlabConfiguration Schema", + "description": "Configuration for creating a slab from a bulk material", + "type": "object", + "required": ["bulk"], + "properties": { + "bulk": { + "$ref": "../../../../material.json" + }, + "miller_indices": { + "$ref": "../../../../core/reusable/material/slab/miller_indices.json" + }, + "thickness": { + "$ref": "../../../../core/reusable/material/slab/thickness.json" + }, + "vacuum": { + "$ref": "../../../../core/reusable/material/slab/vacuum.json" + }, + "xy_supercell_matrix": { + "$ref": "../../../../core/reusable/material/supercell_matrix_2d.json" + }, + "use_conventional_cell": { + "title": "Use Conventional Cell", + "description": "Whether to use conventional cell", + "type": "boolean", + "default": true + }, + "use_orthogonal_z": { + "title": "Use Orthogonal Z", + "description": "Whether to make z-axis orthogonal", + "type": "boolean", + "default": false + }, + "make_primitive": { + "title": "Make Primitive", + "description": "Whether to make the slab primitive", + "type": "boolean", + "default": false + } + } +} diff --git a/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json b/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json new file mode 100644 index 000000000..452fb375a --- /dev/null +++ b/schema/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json @@ -0,0 +1,36 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/ase-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ASE-Based Nanoparticle Configuration Schema", + "description": "Configuration for nanoparticles created using ASE constructors", + "type": "object", + "allOf": [ + { + "$ref": "../base_configuration.json" + } + ], + "required": [ + "shape" + ], + "properties": { + "shape": { + "description": "Enum for supported nanoparticle shapes", + "type": "string", + "enum": [ + "icosahedron", + "octahedron", + "decahedron", + "simple_cubic", + "face_centered_cubic", + "body_centered_cubic", + "hexagonal_closed_packed", + "wulff_construction" + ] + }, + "parameters": { + "description": "Shape-specific parameters to pass to the ASE constructor", + "type": "object", + "additionalProperties": true + } + } +} diff --git a/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json b/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json new file mode 100644 index 000000000..b3133fd0e --- /dev/null +++ b/schema/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json @@ -0,0 +1,20 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/base-configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Base Nanoparticle Configuration Schema", + "description": "Base configuration for all nanoparticle types", + "type": "object", + "required": ["material"], + "properties": { + "material": { + "description": "The base material for the nanoparticle", + "$ref": "../../../../material.json" + }, + "vacuum_padding": { + "description": "Vacuum padding around the nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 10.0 + } + } +} diff --git a/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json b/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json new file mode 100644 index 000000000..3fef9df20 --- /dev/null +++ b/schema/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json @@ -0,0 +1,24 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/slab-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Slab-Based Nanoparticle Configuration Schema", + "description": "Configuration for nanoparticles created by filtering slabs", + "type": "object", + "allOf": [ + { + "$ref": "../base_configuration.json" + } + ], + "properties": { + "supercell_size": { + "description": "Size of the supercell in the xy-plane", + "type": "integer", + "minimum": 1, + "default": 1 + }, + "orientation_z": { + "description": "Orientation of the crystallographic axis in the z-direction", + "$ref": "../../../../../core/reusable/material/slab/miller_indices.json" + } + } +} diff --git a/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json b/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json new file mode 100644 index 000000000..32eca2092 --- /dev/null +++ b/schema/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json @@ -0,0 +1,20 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoparticle/sphere-based/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Sphere Slab-Based Nanoparticle Configuration Schema", + "description": "Configuration for spherical nanoparticles created from slabs", + "type": "object", + "allOf": [ + { + "$ref": "../slab_based/configuration.json" + } + ], + "properties": { + "radius": { + "description": "Radius of the spherical nanoparticle in Angstroms", + "type": "number", + "minimum": 0, + "default": 5.0 + } + } +} diff --git a/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json b/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json new file mode 100644 index 000000000..c494765d9 --- /dev/null +++ b/schema/materials_category/single_material/zero_dimensional/nanoribbon/configuration.json @@ -0,0 +1,49 @@ +{ + "$id": "materials-category/single-material/zero-dimensional/nanoribbon/configuration", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "NanoRibbon Configuration Schema", + "description": "Configuration for building a nanoribbon from a material", + "type": "object", + "required": [ + "material", + "width", + "length" + ], + "properties": { + "material": { + "description": "The material to build the nanoribbon from", + "$ref": "../../../../material.json" + }, + "width": { + "description": "The width of the nanoribbon in number of unit cells", + "type": "integer", + "minimum": 1 + }, + "length": { + "description": "The length of the nanoribbon in number of unit cells", + "type": "integer", + "minimum": 1 + }, + "vacuum_width": { + "description": "The width of the vacuum region in number of unit cells", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "vacuum_length": { + "description": "The length of the vacuum region in number of unit cells", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "edge_type": { + "description": "Enum for nanoribbon edge types", + "type": "string", + "enum": [ + "zigzag", + "armchair" + ], + "default": "zigzag" + } + } +} diff --git a/src/py/mat3ra/esse/models/__init__.py b/src/py/mat3ra/esse/models/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/__init__.py +++ b/src/py/mat3ra/esse/models/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/__init__.py b/src/py/mat3ra/esse/models/core/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/core/__init__.py +++ b/src/py/mat3ra/esse/models/core/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/abstract/__init__.py b/src/py/mat3ra/esse/models/core/abstract/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/core/abstract/__init__.py +++ b/src/py/mat3ra/esse/models/core/abstract/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/abstract/point.py b/src/py/mat3ra/esse/models/core/abstract/point.py index dad3e606c..bfc23aaf2 100644 --- a/src/py/mat3ra/esse/models/core/abstract/point.py +++ b/src/py/mat3ra/esse/models/core/abstract/point.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/abstract/point.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/abstract/vector.py b/src/py/mat3ra/esse/models/core/abstract/vector.py index d109f24df..0ccc7b62c 100644 --- a/src/py/mat3ra/esse/models/core/abstract/vector.py +++ b/src/py/mat3ra/esse/models/core/abstract/vector.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/abstract/vector.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/__init__.py b/src/py/mat3ra/esse/models/core/primitive/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/core/primitive/__init__.py +++ b/src/py/mat3ra/esse/models/core/primitive/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/primitive/array_of_3_booleans.py b/src/py/mat3ra/esse/models/core/primitive/array_of_3_booleans.py index 847933ba1..5fbc5c1c2 100644 --- a/src/py/mat3ra/esse/models/core/primitive/array_of_3_booleans.py +++ b/src/py/mat3ra/esse/models/core/primitive/array_of_3_booleans.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/array_of_3_booleans.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/array_of_3_numbers.py b/src/py/mat3ra/esse/models/core/primitive/array_of_3_numbers.py index 25b44ce52..22791733e 100644 --- a/src/py/mat3ra/esse/models/core/primitive/array_of_3_numbers.py +++ b/src/py/mat3ra/esse/models/core/primitive/array_of_3_numbers.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/array_of_3_numbers.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/array_of_ids.py b/src/py/mat3ra/esse/models/core/primitive/array_of_ids.py index b620bb169..1c8fbf672 100644 --- a/src/py/mat3ra/esse/models/core/primitive/array_of_ids.py +++ b/src/py/mat3ra/esse/models/core/primitive/array_of_ids.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/array_of_ids.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/array_of_strings.py b/src/py/mat3ra/esse/models/core/primitive/array_of_strings.py index 80bc9238d..e317b42a2 100644 --- a/src/py/mat3ra/esse/models/core/primitive/array_of_strings.py +++ b/src/py/mat3ra/esse/models/core/primitive/array_of_strings.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/array_of_strings.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/axis.py b/src/py/mat3ra/esse/models/core/primitive/axis.py index 12d185b5a..9e283f99d 100644 --- a/src/py/mat3ra/esse/models/core/primitive/axis.py +++ b/src/py/mat3ra/esse/models/core/primitive/axis.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/axis.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/group_info.py b/src/py/mat3ra/esse/models/core/primitive/group_info.py index c8b076c3c..0b1e30229 100644 --- a/src/py/mat3ra/esse/models/core/primitive/group_info.py +++ b/src/py/mat3ra/esse/models/core/primitive/group_info.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/group_info.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/integer_one_or_zero.py b/src/py/mat3ra/esse/models/core/primitive/integer_one_or_zero.py index d62278265..065e95692 100644 --- a/src/py/mat3ra/esse/models/core/primitive/integer_one_or_zero.py +++ b/src/py/mat3ra/esse/models/core/primitive/integer_one_or_zero.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/integer_one_or_zero.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/integer_positive_single_digit.py b/src/py/mat3ra/esse/models/core/primitive/integer_positive_single_digit.py index 52feed010..a0e078506 100644 --- a/src/py/mat3ra/esse/models/core/primitive/integer_positive_single_digit.py +++ b/src/py/mat3ra/esse/models/core/primitive/integer_positive_single_digit.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/integer_positive_single_digit.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/linked_list/__init__.py b/src/py/mat3ra/esse/models/core/primitive/linked_list/__init__.py index 0f984c77e..ddf5ebc43 100644 --- a/src/py/mat3ra/esse/models/core/primitive/linked_list/__init__.py +++ b/src/py/mat3ra/esse/models/core/primitive/linked_list/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/linked_list.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/linked_list/base_node.py b/src/py/mat3ra/esse/models/core/primitive/linked_list/base_node.py index 28e00c7d3..14b59e936 100644 --- a/src/py/mat3ra/esse/models/core/primitive/linked_list/base_node.py +++ b/src/py/mat3ra/esse/models/core/primitive/linked_list/base_node.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/linked_list/base_node.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node.py b/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node.py index ce98bd781..1c214e903 100644 --- a/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node.py +++ b/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/linked_list/named_node.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node_in_group.py b/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node_in_group.py index 7ecd064ef..bf24b1f0f 100644 --- a/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node_in_group.py +++ b/src/py/mat3ra/esse/models/core/primitive/linked_list/named_node_in_group.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/linked_list/named_node_in_group.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/linked_list/node_with_type.py b/src/py/mat3ra/esse/models/core/primitive/linked_list/node_with_type.py index a12e030c1..de440efd3 100644 --- a/src/py/mat3ra/esse/models/core/primitive/linked_list/node_with_type.py +++ b/src/py/mat3ra/esse/models/core/primitive/linked_list/node_with_type.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/linked_list/node_with_type.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/scalar.py b/src/py/mat3ra/esse/models/core/primitive/scalar.py index dbf7394af..9e8c72cf0 100644 --- a/src/py/mat3ra/esse/models/core/primitive/scalar.py +++ b/src/py/mat3ra/esse/models/core/primitive/scalar.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/scalar.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/slugified_entry.py b/src/py/mat3ra/esse/models/core/primitive/slugified_entry.py index e7b48216d..6792f08c9 100644 --- a/src/py/mat3ra/esse/models/core/primitive/slugified_entry.py +++ b/src/py/mat3ra/esse/models/core/primitive/slugified_entry.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/slugified_entry.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/slugified_entry_or_slug.py b/src/py/mat3ra/esse/models/core/primitive/slugified_entry_or_slug.py index b537cf88a..1ab207d1c 100644 --- a/src/py/mat3ra/esse/models/core/primitive/slugified_entry_or_slug.py +++ b/src/py/mat3ra/esse/models/core/primitive/slugified_entry_or_slug.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/slugified_entry_or_slug.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/primitive/string.py b/src/py/mat3ra/esse/models/core/primitive/string.py index b920c315c..faa1ea880 100644 --- a/src/py/mat3ra/esse/models/core/primitive/string.py +++ b/src/py/mat3ra/esse/models/core/primitive/string.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/primitive/string.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/__init__.py b/src/py/mat3ra/esse/models/core/reference/__init__.py index e0ae2c257..9ed436fad 100644 --- a/src/py/mat3ra/esse/models/core/reference/__init__.py +++ b/src/py/mat3ra/esse/models/core/reference/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/exabyte.py b/src/py/mat3ra/esse/models/core/reference/exabyte.py index e40286cd8..07f235519 100644 --- a/src/py/mat3ra/esse/models/core/reference/exabyte.py +++ b/src/py/mat3ra/esse/models/core/reference/exabyte.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/exabyte.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/experiment/__init__.py b/src/py/mat3ra/esse/models/core/reference/experiment/__init__.py index c8645cc4f..4c758d4b2 100644 --- a/src/py/mat3ra/esse/models/core/reference/experiment/__init__.py +++ b/src/py/mat3ra/esse/models/core/reference/experiment/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/experiment.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/experiment/condition.py b/src/py/mat3ra/esse/models/core/reference/experiment/condition.py index 0def1a0dc..7b433e10c 100644 --- a/src/py/mat3ra/esse/models/core/reference/experiment/condition.py +++ b/src/py/mat3ra/esse/models/core/reference/experiment/condition.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/experiment/condition.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/experiment/location.py b/src/py/mat3ra/esse/models/core/reference/experiment/location.py index 7ae18d64f..639a0e8dd 100644 --- a/src/py/mat3ra/esse/models/core/reference/experiment/location.py +++ b/src/py/mat3ra/esse/models/core/reference/experiment/location.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/experiment/location.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/literature/__init__.py b/src/py/mat3ra/esse/models/core/reference/literature/__init__.py index 9f33941b1..ca1ffe734 100644 --- a/src/py/mat3ra/esse/models/core/reference/literature/__init__.py +++ b/src/py/mat3ra/esse/models/core/reference/literature/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/literature.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/literature/name.py b/src/py/mat3ra/esse/models/core/reference/literature/name.py index 152c77ed9..bb6722d13 100644 --- a/src/py/mat3ra/esse/models/core/reference/literature/name.py +++ b/src/py/mat3ra/esse/models/core/reference/literature/name.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/literature/name.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/literature/pages.py b/src/py/mat3ra/esse/models/core/reference/literature/pages.py index 5d20d5357..0db8b5519 100644 --- a/src/py/mat3ra/esse/models/core/reference/literature/pages.py +++ b/src/py/mat3ra/esse/models/core/reference/literature/pages.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/literature/pages.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/modeling/__init__.py b/src/py/mat3ra/esse/models/core/reference/modeling/__init__.py index 47dc98b42..6866be7df 100644 --- a/src/py/mat3ra/esse/models/core/reference/modeling/__init__.py +++ b/src/py/mat3ra/esse/models/core/reference/modeling/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/modeling.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reference/modeling/exabyte.py b/src/py/mat3ra/esse/models/core/reference/modeling/exabyte.py index df0875011..141dbed36 100644 --- a/src/py/mat3ra/esse/models/core/reference/modeling/exabyte.py +++ b/src/py/mat3ra/esse/models/core/reference/modeling/exabyte.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reference/modeling/exabyte.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/__init__.py b/src/py/mat3ra/esse/models/core/reusable/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/core/reusable/__init__.py +++ b/src/py/mat3ra/esse/models/core/reusable/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data/__init__.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data/__init__.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital.py index 27c3120ed..63af2e3ca 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data/per_orbital.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital_pair.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital_pair.py index aef9d3492..4f49c7cf5 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital_pair.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data/per_orbital_pair.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data/per_orbital_pair.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_number.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_number.py index baca4df26..9890836e2 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_number.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_number.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data/value_number.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_string.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_string.py index 71c2fd5b0..3d638e51e 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_string.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data/value_string.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data/value_string.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_numeric.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_numeric.py index 0fc326a13..c15804b1d 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_numeric.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_numeric.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data_per_orbital_numeric.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_pair_numeric.py b/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_pair_numeric.py index 495dc506d..f10a44d8e 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_pair_numeric.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_data_per_orbital_pair_numeric.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_data_per_orbital_pair_numeric.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_orbital.py b/src/py/mat3ra/esse/models/core/reusable/atomic_orbital.py index 4a0d884ca..f1c3b70d0 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_orbital.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_orbital.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_orbital.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_scalars.py b/src/py/mat3ra/esse/models/core/reusable/atomic_scalars.py index 4bccfbebc..ecc58ec9c 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_scalars.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_scalars.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_scalars.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_strings.py b/src/py/mat3ra/esse/models/core/reusable/atomic_strings.py index fcdd1a1ab..47fe23c80 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_strings.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_strings.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_strings.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/atomic_vectors.py b/src/py/mat3ra/esse/models/core/reusable/atomic_vectors.py index a2884fbb7..12762b29c 100644 --- a/src/py/mat3ra/esse/models/core/reusable/atomic_vectors.py +++ b/src/py/mat3ra/esse/models/core/reusable/atomic_vectors.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/atomic_vectors.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/band_gap.py b/src/py/mat3ra/esse/models/core/reusable/band_gap.py index 0b0b1c25a..ca569de96 100644 --- a/src/py/mat3ra/esse/models/core/reusable/band_gap.py +++ b/src/py/mat3ra/esse/models/core/reusable/band_gap.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/band_gap.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/categories.py b/src/py/mat3ra/esse/models/core/reusable/categories.py index 90456ae5d..a574df44a 100644 --- a/src/py/mat3ra/esse/models/core/reusable/categories.py +++ b/src/py/mat3ra/esse/models/core/reusable/categories.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/categories.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/category_path.py b/src/py/mat3ra/esse/models/core/reusable/category_path.py index ef4a90ecc..5f823099b 100644 --- a/src/py/mat3ra/esse/models/core/reusable/category_path.py +++ b/src/py/mat3ra/esse/models/core/reusable/category_path.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/category_path.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/dielectric_tensor_component.py b/src/py/mat3ra/esse/models/core/reusable/dielectric_tensor_component.py index ae75a2619..a64e51400 100644 --- a/src/py/mat3ra/esse/models/core/reusable/dielectric_tensor_component.py +++ b/src/py/mat3ra/esse/models/core/reusable/dielectric_tensor_component.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/dielectric_tensor_component.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/energy.py b/src/py/mat3ra/esse/models/core/reusable/energy.py index 8aa54bc29..e003de142 100644 --- a/src/py/mat3ra/esse/models/core/reusable/energy.py +++ b/src/py/mat3ra/esse/models/core/reusable/energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -20,11 +20,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units23(Enum): +class Units123(Enum): eV_A_2 = "eV/A^2" class EnergySchema(BaseModel): name: str - units: Union[Units, Units23] + units: Union[Units, Units123] value: float diff --git a/src/py/mat3ra/esse/models/core/reusable/file_metadata.py b/src/py/mat3ra/esse/models/core/reusable/file_metadata.py index d90bb3b07..6f3fd840c 100644 --- a/src/py/mat3ra/esse/models/core/reusable/file_metadata.py +++ b/src/py/mat3ra/esse/models/core/reusable/file_metadata.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/file_metadata.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/frequency_function_matrix.py b/src/py/mat3ra/esse/models/core/reusable/frequency_function_matrix.py index a5834b07c..79045a246 100644 --- a/src/py/mat3ra/esse/models/core/reusable/frequency_function_matrix.py +++ b/src/py/mat3ra/esse/models/core/reusable/frequency_function_matrix.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/frequency_function_matrix.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/core/reusable/object_storage_container_data.py b/src/py/mat3ra/esse/models/core/reusable/object_storage_container_data.py index c5153ad20..81c296e5c 100644 --- a/src/py/mat3ra/esse/models/core/reusable/object_storage_container_data.py +++ b/src/py/mat3ra/esse/models/core/reusable/object_storage_container_data.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: core/reusable/object_storage_container_data.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/definitions/__init__.py b/src/py/mat3ra/esse/models/definitions/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/definitions/__init__.py +++ b/src/py/mat3ra/esse/models/definitions/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/definitions/constants.py b/src/py/mat3ra/esse/models/definitions/constants.py index e50a2d77a..26b99519d 100644 --- a/src/py/mat3ra/esse/models/definitions/constants.py +++ b/src/py/mat3ra/esse/models/definitions/constants.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: definitions/constants.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/definitions/units.py b/src/py/mat3ra/esse/models/definitions/units.py index 89642c2c4..1ebe049a5 100644 --- a/src/py/mat3ra/esse/models/definitions/units.py +++ b/src/py/mat3ra/esse/models/definitions/units.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: definitions/units.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/element.py b/src/py/mat3ra/esse/models/element.py index 365194d62..33a9a7334 100644 --- a/src/py/mat3ra/esse/models/element.py +++ b/src/py/mat3ra/esse/models/element.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: element.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -33,20 +33,20 @@ class AtomicRadius(BaseModel): value: float -class Name24(Enum): +class Name204(Enum): electronegativity = "electronegativity" class Electronegativity(BaseModel): - name: Optional[Name24] = None + name: Optional[Name204] = None value: float -class Name25(Enum): +class Name205(Enum): ionization_potential = "ionization_potential" -class Units21(Enum): +class Units121(Enum): kJ_mol = "kJ/mol" eV = "eV" J_mol = "J/mol" @@ -57,8 +57,8 @@ class Units21(Enum): class IonizationPotential(BaseModel): - name: Optional[Name25] = None - units: Optional[Units21] = None + name: Optional[Name205] = None + units: Optional[Units121] = None value: float diff --git a/src/py/mat3ra/esse/models/in_memory_entity/__init__.py b/src/py/mat3ra/esse/models/in_memory_entity/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/__init__.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/in_memory_entity/base.py b/src/py/mat3ra/esse/models/in_memory_entity/base.py index a2899cf16..5c382c241 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/base.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/base.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/base.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/defaultable.py b/src/py/mat3ra/esse/models/in_memory_entity/defaultable.py index 17de58798..a930c52db 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/defaultable.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/defaultable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/defaultable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/has_consistency_check_has_metadata_named_defaultable.py b/src/py/mat3ra/esse/models/in_memory_entity/has_consistency_check_has_metadata_named_defaultable.py index a91ebb202..cac97f593 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/has_consistency_check_has_metadata_named_defaultable.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/has_consistency_check_has_metadata_named_defaultable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/has_consistency_check_has_metadata_named_defaultable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/named.py b/src/py/mat3ra/esse/models/in_memory_entity/named.py index 637846f1c..08611eece 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/named.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/named.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/named.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable.py b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable.py index ede5f975f..e8f324aa2 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/named_defaultable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_has_metadata.py b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_has_metadata.py index 55b4f5c30..1bcbdf03b 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_has_metadata.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_has_metadata.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/named_defaultable_has_metadata.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_runtime_items.py b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_runtime_items.py index 0d9f32e20..406e835e9 100644 --- a/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_runtime_items.py +++ b/src/py/mat3ra/esse/models/in_memory_entity/named_defaultable_runtime_items.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: in_memory_entity/named_defaultable_runtime_items.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/job/__init__.py b/src/py/mat3ra/esse/models/job/__init__.py index 0dcb25ad8..f3f7f6edb 100644 --- a/src/py/mat3ra/esse/models/job/__init__.py +++ b/src/py/mat3ra/esse/models/job/__init__.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: job.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, conint +from typing_extensions import Literal class Type(Enum): @@ -708,7 +709,7 @@ class ExecutionUnitSchemaBase(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -781,7 +782,7 @@ class AssignmentUnitSchema(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -889,7 +890,7 @@ class ProcessingUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -1723,7 +1724,7 @@ class ExecutionUnitSchemaBase2(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -1796,7 +1797,7 @@ class AssignmentUnitSchema2(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -1904,7 +1905,7 @@ class ProcessingUnitSchema1(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -2010,7 +2011,7 @@ class MapUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -2088,7 +2089,7 @@ class SubworkflowUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ diff --git a/src/py/mat3ra/esse/models/job/base.py b/src/py/mat3ra/esse/models/job/base.py index 37a742940..0e9acf4bf 100644 --- a/src/py/mat3ra/esse/models/job/base.py +++ b/src/py/mat3ra/esse/models/job/base.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: job/base.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/job/compute.py b/src/py/mat3ra/esse/models/job/compute.py index 91f277b49..cb79abc01 100644 --- a/src/py/mat3ra/esse/models/job/compute.py +++ b/src/py/mat3ra/esse/models/job/compute.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: job/compute.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/material/__init__.py b/src/py/mat3ra/esse/models/material/__init__.py index 1a247a6b3..37bf58288 100644 --- a/src/py/mat3ra/esse/models/material/__init__.py +++ b/src/py/mat3ra/esse/models/material/__init__.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: material.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal class AtomicElements(BaseModel): @@ -42,7 +43,7 @@ class BasisSchema(BaseModel): labels: Optional[List[AtomicLabel]] = [] -class Units40(Enum): +class Units145(Enum): km = "km" m = "m" cm = "cm" @@ -60,7 +61,7 @@ class LatticeExplicitUnit(BaseModel): """ lattice parameter for fractional coordinates """ - units: Optional[Units40] = None + units: Optional[Units145] = None a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") @@ -135,40 +136,40 @@ class Name(Enum): volume = "volume" -class Units41(Enum): +class Units146(Enum): angstrom_3 = "angstrom^3" class VolumeSchema(BaseModel): name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] - units: Optional[Units41] = None + units: Optional[Units146] = None value: float -class Name46(Enum): +class Name235(Enum): density = "density" -class Units42(Enum): +class Units147(Enum): g_cm_3 = "g/cm^3" class DensitySchema(BaseModel): name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] - units: Optional[Units42] = None + units: Optional[Units147] = None value: float -class Units43(Enum): +class Units148(Enum): angstrom = "angstrom" class ScalarSchema(BaseModel): - units: Optional[Units43] = None + units: Optional[Units148] = None value: float -class Name47(Enum): +class Name236(Enum): symmetry = "symmetry" @@ -188,7 +189,7 @@ class SymmetrySchema(BaseModel): name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] -class Name48(Enum): +class Name237(Enum): elemental_ratio = "elemental_ratio" @@ -201,7 +202,7 @@ class ElementalRatio(BaseModel): """ -class Name49(Enum): +class Name238(Enum): p_norm = "p-norm" @@ -214,7 +215,7 @@ class PNorm(BaseModel): value: float -class Name50(Enum): +class Name239(Enum): inchi = "inchi" @@ -223,7 +224,7 @@ class InChIRepresentationSchema(BaseModel): value: str -class Name51(Enum): +class Name240(Enum): inchi_key = "inchi_key" @@ -302,7 +303,7 @@ class FileSourceSchema(BaseModel): """ -class Name52(Enum): +class Name241(Enum): default = "default" atomsTooClose = "atomsTooClose" atomsOverlap = "atomsOverlap" @@ -315,7 +316,7 @@ class Severity(Enum): class MaterialConsistencyCheckSchema(BaseModel): - name: Name52 + name: Name241 """ Name of the consistency check that is performed, which is listed in an enum. """ diff --git a/src/py/mat3ra/esse/models/material/builders/__init__.py b/src/py/mat3ra/esse/models/material/builders/__init__.py new file mode 100644 index 000000000..ea61d81d8 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/__init__.py @@ -0,0 +1,5 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/material/builders/base/__init__.py b/src/py/mat3ra/esse/models/material/builders/base/__init__.py new file mode 100644 index 000000000..ea61d81d8 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/base/__init__.py @@ -0,0 +1,5 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/material/builders/base/selector_parameters.py b/src/py/mat3ra/esse/models/material/builders/base/selector_parameters.py new file mode 100644 index 000000000..f58f85cc8 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/base/selector_parameters.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: material/builders/base/selector_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel, conint + + +class BaseSelectorParametersSchema(BaseModel): + default_index: Optional[conint(ge=0)] = 0 + """ + Default index for the selector + """ diff --git a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/__init__.py b/src/py/mat3ra/esse/models/material/builders/defects/__init__.py similarity index 71% rename from src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/__init__.py rename to src/py/mat3ra/esse/models/material/builders/defects/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/__init__.py +++ b/src/py/mat3ra/esse/models/material/builders/defects/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/defects/point_defect_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/defects/point_defect_builder_parameters.py new file mode 100644 index 000000000..bb785509c --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/defects/point_defect_builder_parameters.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: material/builders/defects/point_defect_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class PointDefectBuilderParametersSchema(BaseModel): + center_defect: Optional[bool] = False + """ + Whether to center the defect + """ diff --git a/src/py/mat3ra/esse/models/material/builders/defects/slab_defect_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/defects/slab_defect_builder_parameters.py new file mode 100644 index 000000000..0d659b396 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/defects/slab_defect_builder_parameters.py @@ -0,0 +1,20 @@ +# generated by datamodel-codegen: +# filename: material/builders/defects/slab_defect_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel, Field, confloat + + +class SlabDefectBuilderParametersSchema(BaseModel): + auto_add_vacuum: Optional[bool] = True + """ + Whether to automatically add vacuum + """ + vacuum_thickness: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.py new file mode 100644 index 000000000..5c33fd963 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.py @@ -0,0 +1,32 @@ +# generated by datamodel-codegen: +# filename: material/builders/defects/voronoi_interstitial_point_defect_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class VoronoiInterstitialPointDefectBuilderParametersSchema(BaseModel): + clustering_tol: Optional[float] = 0.5 + """ + Clustering tolerance for merging interstitial sites + """ + min_dist: Optional[float] = 0.9 + """ + Minimum distance between interstitial and nearest atom + """ + ltol: Optional[float] = 0.2 + """ + Tolerance for lattice matching + """ + stol: Optional[float] = 0.3 + """ + Tolerance for structure matching + """ + angle_tol: Optional[float] = 5 + """ + Angle tolerance for structure matching + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/__init__.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/__init__.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/__init__.py new file mode 100644 index 000000000..ea61d81d8 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/__init__.py @@ -0,0 +1,5 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/builder_parameters.py new file mode 100644 index 000000000..d533cc37e --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/simple/builder_parameters.py @@ -0,0 +1,20 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/simple/builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class SimpleInterfaceBuilderParametersSchema(BaseModel): + scale_film: Optional[bool] = True + """ + Whether to scale the film to match the substrate + """ + create_slabs: Optional[bool] = True + """ + Whether to create slabs from the configurations or use the bulk + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.py new file mode 100644 index 000000000..3b444173e --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.py @@ -0,0 +1,41 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/slab_grain_boundary_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel, Field, conint + + +class ZSLStrainMatchingParametersSchema(BaseModel): + max_area: Optional[float] = 50 + """ + Maximum area for strain matching + """ + max_area_ratio_tol: Optional[float] = 0.09 + """ + Maximum area ratio tolerance + """ + max_length_tol: Optional[float] = 0.03 + """ + Maximum length tolerance + """ + max_angle_tol: Optional[float] = 0.01 + """ + Maximum angle tolerance + """ + + +class SlabGrainBoundaryBuilderParametersSchema(BaseModel): + strain_matching_parameters: Optional[ZSLStrainMatchingParametersSchema] = Field( + None, title="ZSL Strain Matching Parameters Schema" + ) + """ + Parameters for ZSL strain matching + """ + default_index: Optional[conint(ge=0)] = 0 + """ + Default index for the selector + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/__init__.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/builder_parameters.py new file mode 100644 index 000000000..1d2210eae --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/builder_parameters.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/strain_matching/builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Any, Dict, Optional + +from pydantic import BaseModel + + +class StrainMatchingInterfaceBuilderParametersSchema(BaseModel): + strain_matching_parameters: Optional[Dict[str, Any]] = None + """ + Parameters for strain matching + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.py new file mode 100644 index 000000000..4d6065eb6 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.py @@ -0,0 +1,37 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_interface_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel, Field + + +class ZSLStrainMatchingParametersSchema(BaseModel): + max_area: Optional[float] = 50 + """ + Maximum area for strain matching + """ + max_area_ratio_tol: Optional[float] = 0.09 + """ + Maximum area ratio tolerance + """ + max_length_tol: Optional[float] = 0.03 + """ + Maximum length tolerance + """ + max_angle_tol: Optional[float] = 0.01 + """ + Maximum angle tolerance + """ + + +class ZSLStrainMatchingInterfaceBuilderParametersSchema(BaseModel): + strain_matching_parameters: Optional[ZSLStrainMatchingParametersSchema] = Field( + None, title="ZSL Strain Matching Parameters Schema" + ) + """ + Parameters for ZSL strain matching + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.py new file mode 100644 index 000000000..d25614de1 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.py @@ -0,0 +1,28 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/strain_matching/zsl_strain_matching_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class ZSLStrainMatchingParametersSchema(BaseModel): + max_area: Optional[float] = 50 + """ + Maximum area for strain matching + """ + max_area_ratio_tol: Optional[float] = 0.09 + """ + Maximum area ratio tolerance + """ + max_length_tol: Optional[float] = 0.03 + """ + Maximum length tolerance + """ + max_angle_tol: Optional[float] = 0.01 + """ + Maximum angle tolerance + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.py new file mode 100644 index 000000000..50418b651 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.py @@ -0,0 +1,36 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/surface_grain_boundary_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class SurfaceGrainBoundaryBuilderParametersSchema(BaseModel): + edge_inclusion_tolerance: Optional[float] = 1 + """ + The tolerance to include atoms on the edge of each phase, in angstroms + """ + distance_tolerance: Optional[float] = 1 + """ + The distance tolerance to remove atoms that are too close, in angstroms + """ + max_supercell_matrix_int: Optional[int] = None + """ + The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically. + """ + limit_max_int: Optional[int] = 42 + """ + The limit for the maximum integer for the transformation matrices when searching + """ + angle_tolerance: Optional[float] = 0.1 + """ + The tolerance for the angle between the commensurate lattices and the target angle, in degrees. + """ + return_first_match: Optional[bool] = False + """ + Whether to return the first match or all matches. + """ diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/__init__.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.py new file mode 100644 index 000000000..bb2163aa0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.py @@ -0,0 +1,28 @@ +# generated by datamodel-codegen: +# filename: material/builders/multi_material/interfaces/twisted/commensurate_lattice_twisted_interface_builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class CommensurateLatticeTwistedInterfaceBuilderParametersSchema(BaseModel): + max_supercell_matrix_int: Optional[int] = None + """ + The maximum integer for the transformation matrices. If not provided, it will be determined based on the target angle and the lattice vectors automatically. + """ + limit_max_int: Optional[int] = 42 + """ + The limit for the maximum integer for the transformation matrices when searching + """ + angle_tolerance: Optional[float] = 0.1 + """ + The tolerance for the angle between the commensurate lattices and the target angle, in degrees. + """ + return_first_match: Optional[bool] = False + """ + Whether to return the first match or all matches. + """ diff --git a/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/__init__.py b/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/builder_parameters.py new file mode 100644 index 000000000..cacbb7074 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/passivation/coordination_based/builder_parameters.py @@ -0,0 +1,32 @@ +# generated by datamodel-codegen: +# filename: material/builders/passivation/coordination_based/builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class CoordinationBasedPassivationBuilderParametersSchema(BaseModel): + coordination_threshold: Optional[int] = 3 + """ + The coordination number threshold for an atom to be considered undercoordinated + """ + bonds_to_passivate: Optional[int] = 1 + """ + The maximum number of bonds to passivate for each undercoordinated atom + """ + symmetry_tolerance: Optional[float] = 0.1 + """ + The tolerance for symmetry comparison of vectors for bonds + """ + shadowing_radius: Optional[float] = 2.5 + """ + Radius around each surface atom to exclude underlying atoms from passivation + """ + depth: Optional[float] = 5 + """ + Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces + """ diff --git a/src/py/mat3ra/esse/models/material/builders/passivation/surface/__init__.py b/src/py/mat3ra/esse/models/material/builders/passivation/surface/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/passivation/surface/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/passivation/surface/builder_parameters.py b/src/py/mat3ra/esse/models/material/builders/passivation/surface/builder_parameters.py new file mode 100644 index 000000000..48c0977fe --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/passivation/surface/builder_parameters.py @@ -0,0 +1,20 @@ +# generated by datamodel-codegen: +# filename: material/builders/passivation/surface/builder_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class SurfacePassivationBuilderParametersSchema(BaseModel): + shadowing_radius: Optional[float] = 2.5 + """ + Radius around each surface atom to exclude underlying atoms from passivation + """ + depth: Optional[float] = 5 + """ + Depth from the topmost (or bottommost) atom into the material to consider for passivation, accounting for features like islands, adatoms, and terraces + """ diff --git a/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/__init__.py b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.py b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.py new file mode 100644 index 000000000..7b4ec3f26 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.py @@ -0,0 +1,28 @@ +# generated by datamodel-codegen: +# filename: material/builders/single_material/two_dimensional/slab/pymatgen_slab_generator_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional, Union + +from pydantic import BaseModel, confloat, conint + + +class PymatgenSlabGeneratorParametersSchema(BaseModel): + min_vacuum_size: Optional[Union[conint(ge=0), confloat(ge=0.0)]] = 1 + """ + Minimum size of the vacuum in layers or angstroms + """ + in_unit_planes: Optional[bool] = True + """ + Whether to cleave in unit planes + """ + reorient_lattice: Optional[bool] = True + """ + Whether to reorient the lattice + """ + symmetrize: Optional[bool] = True + """ + Whether to symmetrize the slab + """ diff --git a/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/selector_parameters.py b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/selector_parameters.py new file mode 100644 index 000000000..b5d2f0df9 --- /dev/null +++ b/src/py/mat3ra/esse/models/material/builders/single_material/two_dimensional/slab/selector_parameters.py @@ -0,0 +1,27 @@ +# generated by datamodel-codegen: +# filename: material/builders/single_material/two_dimensional/slab/selector_parameters.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel, Field + + +class TerminationSchema(BaseModel): + chemical_elements: str = Field(..., title="Chemical Elements") + """ + Chemical elements at the termination + """ + space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label") + """ + Space group symmetry designation for the termination + """ + + +class SlabSelectorParametersSchema(BaseModel): + termination: Optional[TerminationSchema] = Field(None, title="Termination Schema") + """ + Defines a specific termination of a slab + """ diff --git a/src/py/mat3ra/esse/models/material/consistency_check.py b/src/py/mat3ra/esse/models/material/consistency_check.py index 4a9f97026..928159cd6 100644 --- a/src/py/mat3ra/esse/models/material/consistency_check.py +++ b/src/py/mat3ra/esse/models/material/consistency_check.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: material/consistency_check.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/material/conventional.py b/src/py/mat3ra/esse/models/material/conventional.py index fb93d1c86..b864a68f3 100644 --- a/src/py/mat3ra/esse/models/material/conventional.py +++ b/src/py/mat3ra/esse/models/material/conventional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: material/conventional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/materials_category/defects/__init__.py b/src/py/mat3ra/esse/models/materials_category/defects/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/defects/base_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/base_defect_configuration.py new file mode 100644 index 000000000..1eff187df --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/base_defect_configuration.py @@ -0,0 +1,424 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/base_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units20(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units20] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name26(Enum): + volume = "volume" + + +class Units21(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units21] = None + value: float + + +class Name27(Enum): + density = "density" + + +class Units22(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units22] = None + value: float + + +class Units23(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units23] = None + value: float + + +class Name28(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name29(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name30(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name31(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name32(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name33(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name33 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class BaseDefectConfigurationSchema(BaseModel): + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/enums.py b/src/py/mat3ra/esse/models/materials_category/defects/enums.py new file mode 100644 index 000000000..7ed57ba3d --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/enums.py @@ -0,0 +1,13 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/enums.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Any + +from pydantic import RootModel + + +class ESSE(RootModel[Any]): + root: Any diff --git a/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/__init__.py b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/island_slab_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/island_slab_defect_configuration.py new file mode 100644 index 000000000..1b5a79b5d --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/island_slab_defect_configuration.py @@ -0,0 +1,480 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/one_dimensional/island_slab_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class Shape(Enum): + sphere = "sphere" + cylinder = "cylinder" + rectangle = "rectangle" + triangular_prism = "triangular_prism" + + +class Condition(BaseModel): + shape: Shape + center_position: Optional[List[float]] = Field(None, max_length=3, min_length=2) + """ + Center position for symmetric shapes + """ + radius: Optional[confloat(ge=0.0)] = None + """ + Radius for circular shapes + """ + min_z: Optional[float] = None + """ + Minimum z-coordinate in Angstroms + """ + max_z: Optional[float] = None + """ + Maximum z-coordinate in Angstroms + """ + min_coordinate: Optional[List[float]] = Field(None, max_length=3, min_length=3) + """ + Minimum coordinates for box shapes + """ + max_coordinate: Optional[List[float]] = Field(None, max_length=3, min_length=3) + """ + Maximum coordinates for box shapes + """ + position_on_surface_1: Optional[List[float]] = Field(None, max_length=2, min_length=2) + """ + First vertex for triangular prism + """ + position_on_surface_2: Optional[List[float]] = Field(None, max_length=2, min_length=2) + """ + Second vertex for triangular prism + """ + position_on_surface_3: Optional[List[float]] = Field(None, max_length=2, min_length=2) + """ + Third vertex for triangular prism + """ + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units137(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units137] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name224(Enum): + volume = "volume" + + +class Units138(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units138] = None + value: float + + +class Name225(Enum): + density = "density" + + +class Units139(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units139] = None + value: float + + +class Units140(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units140] = None + value: float + + +class Name226(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name227(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name228(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name229(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name230(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name231(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name231 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class IslandSlabDefectConfigurationSchema(BaseModel): + defect_type: Literal["island"] = "island" + condition: Optional[Condition] = None + """ + Spatial condition defining the shape of the island + """ + number_of_added_layers: Optional[Union[conint(ge=0), confloat(ge=0.0)]] = 1 + """ + Number of layers to add to the slab + """ + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.py new file mode 100644 index 000000000..cf2b72e31 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/surface_grain_boundary_configuration.py @@ -0,0 +1,746 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/one_dimensional/surface_grain_boundary_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class SupercellMatrix2DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units197(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units197] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name325(Enum): + volume = "volume" + + +class Units198(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units198] = None + value: float + + +class Name326(Enum): + density = "density" + + +class Units199(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units199] = None + value: float + + +class Units200(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units200] = None + value: float + + +class Name327(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name328(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name329(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name330(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name331(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name332(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name332 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class BondsSchemaItem30(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema31(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem30]] = Field(None, title="bonds schema") + + +class Name333(Enum): + lattice = "lattice" + + +class Units201(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit32(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units201] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units202(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema31(BaseModel): + name: Optional[Name333] = None + vectors: Optional[LatticeExplicitUnit32] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units202] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name334(Enum): + volume = "volume" + + +class Units203(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema31(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units203] = None + value: float + + +class Name335(Enum): + density = "density" + + +class Units204(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema32(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units204] = None + value: float + + +class Units205(Enum): + angstrom = "angstrom" + + +class ScalarSchema33(BaseModel): + units: Optional[Units205] = None + value: float + + +class Name336(Enum): + symmetry = "symmetry" + + +class SymmetrySchema31(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema33] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name337(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio32(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name338(Enum): + p_norm = "p-norm" + + +class PNorm32(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name339(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema32(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name340(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema32(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema32( + RootModel[ + Union[ + VolumeSchema31, + DensitySchema32, + SymmetrySchema31, + ElementalRatio32, + PNorm32, + InChIRepresentationSchema32, + InChIKeyRepresentationSchema32, + ] + ] +): + root: Union[ + VolumeSchema31, + DensitySchema32, + SymmetrySchema31, + ElementalRatio32, + PNorm32, + InChIRepresentationSchema32, + InChIKeyRepresentationSchema32, + ] = Field(..., discriminator="name") + + +class Name341(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema31(BaseModel): + name: Name341 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema30(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema31 = Field(..., title="basis schema") + lattice: LatticeSchema31 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema32]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema31]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SurfaceGrainBoundaryConfigurationSchema(BaseModel): + gap: Optional[float] = 0 + """ + The gap between the two phases + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + film: MaterialSchema = Field(..., title="material schema") + substrate: Optional[MaterialSchema30] = Field(None, title="material schema") + twist_angle: Optional[float] = 0 + """ + Twist angle in degrees + """ + distance_z: Optional[confloat(ge=0.0)] = 3 + """ + Vertical distance between layers in Angstroms + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.py new file mode 100644 index 000000000..880e266da --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/one_dimensional/terrace_slab_defect_configuration.py @@ -0,0 +1,445 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/one_dimensional/terrace_slab_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units208(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units208] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name344(Enum): + volume = "volume" + + +class Units209(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units209] = None + value: float + + +class Name345(Enum): + density = "density" + + +class Units210(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units210] = None + value: float + + +class Units211(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units211] = None + value: float + + +class Name346(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name347(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name348(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name349(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name350(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name351(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name351 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class TerraceSlabDefectConfigurationSchema(BaseModel): + defect_type: Literal["terrace"] = "terrace" + cut_direction: Optional[List[int]] = Field([1, 0, 0], max_length=3, min_length=3) + """ + Direction of the cut as lattice vector + """ + pivot_coordinate: Optional[List[float]] = Field([0.5, 0.5, 0.5], max_length=3, min_length=3) + """ + Pivot coordinate where the cut plane passes through + """ + use_cartesian_coordinates: Optional[bool] = False + """ + Whether to use Cartesian coordinates + """ + rotate_to_match_pbc: Optional[bool] = True + """ + Whether to rotate the slab to match periodic boundary conditions + """ + number_of_added_layers: Optional[Union[conint(ge=0), confloat(ge=0.0)]] = 1 + """ + Number of layers to add to the slab + """ + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/slab_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/slab_defect_configuration.py new file mode 100644 index 000000000..49bc93b20 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/slab_defect_configuration.py @@ -0,0 +1,428 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/slab_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units169(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units169] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name277(Enum): + volume = "volume" + + +class Units170(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units170] = None + value: float + + +class Name278(Enum): + density = "density" + + +class Units171(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units171] = None + value: float + + +class Units172(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units172] = None + value: float + + +class Name279(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name280(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name281(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name282(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name283(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name284(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name284 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SlabDefectConfigurationSchema(BaseModel): + number_of_added_layers: Optional[Union[conint(ge=0), confloat(ge=0.0)]] = 1 + """ + Number of layers to add to the slab + """ + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/__init__.py b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/passivation_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/passivation_configuration.py new file mode 100644 index 000000000..0f4c1f100 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/passivation_configuration.py @@ -0,0 +1,439 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/two_dimensional/passivation_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units150(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units150] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name249(Enum): + volume = "volume" + + +class Units151(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units151] = None + value: float + + +class Name250(Enum): + density = "density" + + +class Units152(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units152] = None + value: float + + +class Units153(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units153] = None + value: float + + +class Name251(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name252(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name253(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name254(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name255(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name256(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name256 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class Surface(Enum): + top = "top" + bottom = "bottom" + both = "both" + + +class PassivationConfigurationSchema(BaseModel): + slab: MaterialSchema = Field(..., title="material schema") + passivant: Optional[str] = "H" + """ + The passivating element + """ + bond_length: Optional[confloat(ge=0.0)] = 1 + """ + The bond length between surface atoms and passivants + """ + surface: Optional[Surface] = None diff --git a/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.py new file mode 100644 index 000000000..71cf6a536 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/two_dimensional/slab_grain_boundary_configuration.py @@ -0,0 +1,1161 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/two_dimensional/slab_grain_boundary_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units174(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units174] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name286(Enum): + volume = "volume" + + +class Units175(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units175] = None + value: float + + +class Name287(Enum): + density = "density" + + +class Units176(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units176] = None + value: float + + +class Units177(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units177] = None + value: float + + +class Name288(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name289(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name290(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name291(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name292(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name293(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name293 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SupercellMatrix2DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class SlabConfigurationSchema(BaseModel): + bulk: MaterialSchema = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ + + +class BondsSchemaItem26(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema27(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem26]] = Field(None, title="bonds schema") + + +class Name294(Enum): + lattice = "lattice" + + +class Units178(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit28(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units178] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units179(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema27(BaseModel): + name: Optional[Name294] = None + vectors: Optional[LatticeExplicitUnit28] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units179] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name295(Enum): + volume = "volume" + + +class Units180(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema27(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units180] = None + value: float + + +class Name296(Enum): + density = "density" + + +class Units181(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema28(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units181] = None + value: float + + +class Units182(Enum): + angstrom = "angstrom" + + +class ScalarSchema29(BaseModel): + units: Optional[Units182] = None + value: float + + +class Name297(Enum): + symmetry = "symmetry" + + +class SymmetrySchema27(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema29] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name298(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio28(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name299(Enum): + p_norm = "p-norm" + + +class PNorm28(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name300(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema28(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name301(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema28(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema28( + RootModel[ + Union[ + VolumeSchema27, + DensitySchema28, + SymmetrySchema27, + ElementalRatio28, + PNorm28, + InChIRepresentationSchema28, + InChIKeyRepresentationSchema28, + ] + ] +): + root: Union[ + VolumeSchema27, + DensitySchema28, + SymmetrySchema27, + ElementalRatio28, + PNorm28, + InChIRepresentationSchema28, + InChIKeyRepresentationSchema28, + ] = Field(..., discriminator="name") + + +class Name302(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema27(BaseModel): + name: Name302 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema26(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema27 = Field(..., title="basis schema") + lattice: LatticeSchema27 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema28]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema27]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SlabConfigurationSchema4(BaseModel): + bulk: MaterialSchema26 = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ + + +class TerminationSchema(BaseModel): + chemical_elements: str = Field(..., title="Chemical Elements") + """ + Chemical elements at the termination + """ + space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label") + """ + Space group symmetry designation for the termination + """ + + +class BondsSchemaItem27(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema28(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem27]] = Field(None, title="bonds schema") + + +class Name303(Enum): + lattice = "lattice" + + +class Units183(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit29(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units183] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units184(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema28(BaseModel): + name: Optional[Name303] = None + vectors: Optional[LatticeExplicitUnit29] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units184] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name304(Enum): + volume = "volume" + + +class Units185(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema28(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units185] = None + value: float + + +class Name305(Enum): + density = "density" + + +class Units186(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema29(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units186] = None + value: float + + +class Units187(Enum): + angstrom = "angstrom" + + +class ScalarSchema30(BaseModel): + units: Optional[Units187] = None + value: float + + +class Name306(Enum): + symmetry = "symmetry" + + +class SymmetrySchema28(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema30] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name307(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio29(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name308(Enum): + p_norm = "p-norm" + + +class PNorm29(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name309(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema29(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name310(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema29(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema29( + RootModel[ + Union[ + VolumeSchema28, + DensitySchema29, + SymmetrySchema28, + ElementalRatio29, + PNorm29, + InChIRepresentationSchema29, + InChIKeyRepresentationSchema29, + ] + ] +): + root: Union[ + VolumeSchema28, + DensitySchema29, + SymmetrySchema28, + ElementalRatio29, + PNorm29, + InChIRepresentationSchema29, + InChIKeyRepresentationSchema29, + ] = Field(..., discriminator="name") + + +class Name311(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema28(BaseModel): + name: Name311 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema27(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema28 = Field(..., title="basis schema") + lattice: LatticeSchema28 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema29]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema28]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SlabConfigurationSchema5(BaseModel): + bulk: MaterialSchema27 = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ + + +class SlabGrainBoundaryConfigurationSchema(BaseModel): + phase_1_configuration: SlabConfigurationSchema = Field(..., title="SlabConfiguration Schema") + """ + Configuration for creating a slab from a bulk material + """ + phase_2_configuration: SlabConfigurationSchema4 = Field(..., title="SlabConfiguration Schema") + """ + Configuration for creating a slab from a bulk material + """ + phase_1_termination: TerminationSchema = Field(..., title="Termination Schema") + """ + Defines a specific termination of a slab + """ + phase_2_termination: TerminationSchema = Field(..., title="Termination Schema") + """ + Defines a specific termination of a slab + """ + gap: Optional[float] = 3 + """ + The gap between the two phases, in Angstroms + """ + slab_configuration: SlabConfigurationSchema5 = Field(..., title="SlabConfiguration Schema") + """ + Configuration for creating a slab from a bulk material + """ + slab_termination: Optional[TerminationSchema] = Field(None, title="Termination Schema") + """ + Defines a specific termination of a slab + """ diff --git a/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/__init__.py b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/adatom_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/adatom_configuration.py new file mode 100644 index 000000000..16c727151 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/adatom_configuration.py @@ -0,0 +1,437 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/zero_dimensional/adatom_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units1(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units1] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name1(Enum): + volume = "volume" + + +class Units2(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units2] = None + value: float + + +class Name2(Enum): + density = "density" + + +class Units3(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units3] = None + value: float + + +class Units4(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units4] = None + value: float + + +class Name3(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name4(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name5(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name6(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name7(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name8(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name8 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class AdatomConfigurationSchema(BaseModel): + defect_type: Literal["adatom"] = "adatom" + position_on_surface: List[float] = Field(..., max_length=2, min_length=2) + """ + Position on the surface in 2D crystal coordinates + """ + distance_z: confloat(ge=0.0) + """ + Distance from the surface in Angstroms + """ + chemical_element: str + """ + Chemical element of the adatom + """ + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/defect_pair_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/defect_pair_configuration.py new file mode 100644 index 000000000..16c06a18c --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/defect_pair_configuration.py @@ -0,0 +1,1690 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/zero_dimensional/defect_pair_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class DefectType(Enum): + pair = "pair" + + +class DefectType1(Enum): + vacancy = "vacancy" + substitution = "substitution" + interstitial = "interstitial" + adatom = "adatom" + + +class PlacementMethod(Enum): + coordinate = "coordinate" + closest_site = "closest_site" + equidistant = "equidistant" + crystal_site = "crystal_site" + voronoi_site = "voronoi_site" + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units87(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units87] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name146(Enum): + volume = "volume" + + +class Units88(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units88] = None + value: float + + +class Name147(Enum): + density = "density" + + +class Units89(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units89] = None + value: float + + +class Units90(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units90] = None + value: float + + +class Name148(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name149(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name150(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name151(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name152(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name153(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name153 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class PointDefectConfigurationSchema(BaseModel): + defect_type: DefectType1 + coordinate: Optional[List[float]] = Field([0, 0, 0], max_length=3, min_length=3) + """ + The crystal coordinate of the defect + """ + chemical_element: Optional[str] = None + """ + The chemical element for substitution or interstitial defects + """ + use_cartesian_coordinates: Optional[bool] = False + """ + Whether coordinates are in cartesian rather than fractional coordinates + """ + placement_method: Optional[PlacementMethod] = None + crystal: MaterialSchema = Field(..., title="material schema") + + +class BondsSchemaItem17(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema17(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem17]] = Field(None, title="bonds schema") + + +class Name154(Enum): + lattice = "lattice" + + +class Units91(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit16(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units91] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units92(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema16(BaseModel): + name: Optional[Name154] = None + vectors: Optional[LatticeExplicitUnit16] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units92] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name155(Enum): + volume = "volume" + + +class Units93(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema16(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units93] = None + value: float + + +class Name156(Enum): + density = "density" + + +class Units94(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema16(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units94] = None + value: float + + +class Units95(Enum): + angstrom = "angstrom" + + +class ScalarSchema17(BaseModel): + units: Optional[Units95] = None + value: float + + +class Name157(Enum): + symmetry = "symmetry" + + +class SymmetrySchema16(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema17] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name158(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio16(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name159(Enum): + p_norm = "p-norm" + + +class PNorm16(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name160(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema16(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name161(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema16(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema16( + RootModel[ + Union[ + VolumeSchema16, + DensitySchema16, + SymmetrySchema16, + ElementalRatio16, + PNorm16, + InChIRepresentationSchema16, + InChIKeyRepresentationSchema16, + ] + ] +): + root: Union[ + VolumeSchema16, + DensitySchema16, + SymmetrySchema16, + ElementalRatio16, + PNorm16, + InChIRepresentationSchema16, + InChIKeyRepresentationSchema16, + ] = Field(..., discriminator="name") + + +class Name162(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema17(BaseModel): + name: Name162 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema16(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema17 = Field(..., title="basis schema") + lattice: LatticeSchema16 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema16]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema17]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class AdatomConfigurationSchema(BaseModel): + defect_type: Literal["adatom"] = "adatom" + position_on_surface: List[float] = Field(..., max_length=2, min_length=2) + """ + Position on the surface in 2D crystal coordinates + """ + distance_z: confloat(ge=0.0) + """ + Distance from the surface in Angstroms + """ + chemical_element: str + """ + Chemical element of the adatom + """ + crystal: MaterialSchema16 = Field(..., title="material schema") + + +class BondsSchemaItem18(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema18(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem18]] = Field(None, title="bonds schema") + + +class Name163(Enum): + lattice = "lattice" + + +class Units96(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit17(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units96] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units97(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema17(BaseModel): + name: Optional[Name163] = None + vectors: Optional[LatticeExplicitUnit17] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units97] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name164(Enum): + volume = "volume" + + +class Units98(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema17(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units98] = None + value: float + + +class Name165(Enum): + density = "density" + + +class Units99(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema17(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units99] = None + value: float + + +class Units100(Enum): + angstrom = "angstrom" + + +class ScalarSchema18(BaseModel): + units: Optional[Units100] = None + value: float + + +class Name166(Enum): + symmetry = "symmetry" + + +class SymmetrySchema17(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema18] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name167(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio17(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name168(Enum): + p_norm = "p-norm" + + +class PNorm17(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name169(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema17(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name170(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema17(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema17( + RootModel[ + Union[ + VolumeSchema17, + DensitySchema17, + SymmetrySchema17, + ElementalRatio17, + PNorm17, + InChIRepresentationSchema17, + InChIKeyRepresentationSchema17, + ] + ] +): + root: Union[ + VolumeSchema17, + DensitySchema17, + SymmetrySchema17, + ElementalRatio17, + PNorm17, + InChIRepresentationSchema17, + InChIKeyRepresentationSchema17, + ] = Field(..., discriminator="name") + + +class Name171(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema18(BaseModel): + name: Name171 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema17(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema18 = Field(..., title="basis schema") + lattice: LatticeSchema17 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema17]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema18]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class PointDefectConfigurationSchema1(BaseModel): + defect_type: DefectType1 + coordinate: Optional[List[float]] = Field([0, 0, 0], max_length=3, min_length=3) + """ + The crystal coordinate of the defect + """ + chemical_element: Optional[str] = None + """ + The chemical element for substitution or interstitial defects + """ + use_cartesian_coordinates: Optional[bool] = False + """ + Whether coordinates are in cartesian rather than fractional coordinates + """ + placement_method: Optional[PlacementMethod] = None + crystal: MaterialSchema17 = Field(..., title="material schema") + + +class BondsSchemaItem19(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema19(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem19]] = Field(None, title="bonds schema") + + +class Name172(Enum): + lattice = "lattice" + + +class Units101(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit18(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units101] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units102(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema18(BaseModel): + name: Optional[Name172] = None + vectors: Optional[LatticeExplicitUnit18] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units102] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name173(Enum): + volume = "volume" + + +class Units103(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema18(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units103] = None + value: float + + +class Name174(Enum): + density = "density" + + +class Units104(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema18(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units104] = None + value: float + + +class Units105(Enum): + angstrom = "angstrom" + + +class ScalarSchema19(BaseModel): + units: Optional[Units105] = None + value: float + + +class Name175(Enum): + symmetry = "symmetry" + + +class SymmetrySchema18(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema19] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name176(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio18(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name177(Enum): + p_norm = "p-norm" + + +class PNorm18(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name178(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema18(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name179(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema18(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema18( + RootModel[ + Union[ + VolumeSchema18, + DensitySchema18, + SymmetrySchema18, + ElementalRatio18, + PNorm18, + InChIRepresentationSchema18, + InChIKeyRepresentationSchema18, + ] + ] +): + root: Union[ + VolumeSchema18, + DensitySchema18, + SymmetrySchema18, + ElementalRatio18, + PNorm18, + InChIRepresentationSchema18, + InChIKeyRepresentationSchema18, + ] = Field(..., discriminator="name") + + +class Name180(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema19(BaseModel): + name: Name180 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema18(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema19 = Field(..., title="basis schema") + lattice: LatticeSchema18 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema18]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema19]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class AdatomConfigurationSchema2(BaseModel): + defect_type: Literal["adatom"] = "adatom" + position_on_surface: List[float] = Field(..., max_length=2, min_length=2) + """ + Position on the surface in 2D crystal coordinates + """ + distance_z: confloat(ge=0.0) + """ + Distance from the surface in Angstroms + """ + chemical_element: str + """ + Chemical element of the adatom + """ + crystal: MaterialSchema18 = Field(..., title="material schema") + + +class BondsSchemaItem20(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema20(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem20]] = Field(None, title="bonds schema") + + +class Name181(Enum): + lattice = "lattice" + + +class Units106(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit19(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units106] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units107(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema19(BaseModel): + name: Optional[Name181] = None + vectors: Optional[LatticeExplicitUnit19] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units107] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name182(Enum): + volume = "volume" + + +class Units108(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema19(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units108] = None + value: float + + +class Name183(Enum): + density = "density" + + +class Units109(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema19(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units109] = None + value: float + + +class Units110(Enum): + angstrom = "angstrom" + + +class ScalarSchema20(BaseModel): + units: Optional[Units110] = None + value: float + + +class Name184(Enum): + symmetry = "symmetry" + + +class SymmetrySchema19(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema20] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name185(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio19(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name186(Enum): + p_norm = "p-norm" + + +class PNorm19(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name187(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema19(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name188(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema19(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema19( + RootModel[ + Union[ + VolumeSchema19, + DensitySchema19, + SymmetrySchema19, + ElementalRatio19, + PNorm19, + InChIRepresentationSchema19, + InChIKeyRepresentationSchema19, + ] + ] +): + root: Union[ + VolumeSchema19, + DensitySchema19, + SymmetrySchema19, + ElementalRatio19, + PNorm19, + InChIRepresentationSchema19, + InChIKeyRepresentationSchema19, + ] = Field(..., discriminator="name") + + +class Name189(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema20(BaseModel): + name: Name189 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema19(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema20 = Field(..., title="basis schema") + lattice: LatticeSchema19 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema19]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema20]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class PointDefectPairConfigurationSchema(BaseModel): + defect_type: Optional[DefectType] = None + primary_defect_configuration: Union[PointDefectConfigurationSchema, AdatomConfigurationSchema] + """ + Configuration for the first defect + """ + secondary_defect_configuration: Union[PointDefectConfigurationSchema1, AdatomConfigurationSchema2] + """ + Configuration for the second defect + """ + crystal: MaterialSchema19 = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/point_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/point_defect_configuration.py new file mode 100644 index 000000000..6275efe73 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/point_defect_configuration.py @@ -0,0 +1,453 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/zero_dimensional/point_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class DefectType(Enum): + vacancy = "vacancy" + substitution = "substitution" + interstitial = "interstitial" + adatom = "adatom" + + +class PlacementMethod(Enum): + coordinate = "coordinate" + closest_site = "closest_site" + equidistant = "equidistant" + crystal_site = "crystal_site" + voronoi_site = "voronoi_site" + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units159(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units159] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name260(Enum): + volume = "volume" + + +class Units160(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units160] = None + value: float + + +class Name261(Enum): + density = "density" + + +class Units161(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units161] = None + value: float + + +class Units162(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units162] = None + value: float + + +class Name262(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name263(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name264(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name265(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name266(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name267(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name267 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class PointDefectConfigurationSchema(BaseModel): + defect_type: DefectType + coordinate: Optional[List[float]] = Field([0, 0, 0], max_length=3, min_length=3) + """ + The crystal coordinate of the defect + """ + chemical_element: Optional[str] = None + """ + The chemical element for substitution or interstitial defects + """ + use_cartesian_coordinates: Optional[bool] = False + """ + Whether coordinates are in cartesian rather than fractional coordinates + """ + placement_method: Optional[PlacementMethod] = None + crystal: MaterialSchema = Field(..., title="material schema") diff --git a/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/slab_point_defect_configuration.py b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/slab_point_defect_configuration.py new file mode 100644 index 000000000..6f07f7f1b --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/defects/zero_dimensional/slab_point_defect_configuration.py @@ -0,0 +1,465 @@ +# generated by datamodel-codegen: +# filename: materials_category/defects/zero_dimensional/slab_point_defect_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units189(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units189] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name313(Enum): + volume = "volume" + + +class Units190(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units190] = None + value: float + + +class Name314(Enum): + density = "density" + + +class Units191(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units191] = None + value: float + + +class Units192(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units192] = None + value: float + + +class Name315(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name316(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name317(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name318(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name319(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name320(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name320 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class DefectType(Enum): + vacancy = "vacancy" + substitution = "substitution" + interstitial = "interstitial" + adatom = "adatom" + + +class PlacementMethod(Enum): + coordinate = "coordinate" + closest_site = "closest_site" + equidistant = "equidistant" + crystal_site = "crystal_site" + voronoi_site = "voronoi_site" + + +class SlabPointDefectConfigurationSchema(BaseModel): + position_on_surface: List[float] = Field(..., max_length=2, min_length=2) + """ + Position on the slab surface in 2D crystal coordinates + """ + distance_z: confloat(ge=0.0) + """ + Distance from the surface in Angstroms + """ + number_of_added_layers: Optional[Union[conint(ge=0), confloat(ge=0.0)]] = 1 + """ + Number of layers to add to the slab + """ + crystal: MaterialSchema = Field(..., title="material schema") + defect_type: DefectType + coordinate: Optional[List[float]] = Field([0, 0, 0], max_length=3, min_length=3) + """ + The crystal coordinate of the defect + """ + chemical_element: Optional[str] = None + """ + The chemical element for substitution or interstitial defects + """ + use_cartesian_coordinates: Optional[bool] = False + """ + Whether coordinates are in cartesian rather than fractional coordinates + """ + placement_method: Optional[PlacementMethod] = None diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/__init__.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/configuration.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/configuration.py new file mode 100644 index 000000000..f6ff5e586 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/configuration.py @@ -0,0 +1,828 @@ +# generated by datamodel-codegen: +# filename: materials_category/multi_material/interfaces/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units27(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units27] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name36(Enum): + volume = "volume" + + +class Units28(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units28] = None + value: float + + +class Name37(Enum): + density = "density" + + +class Units29(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units29] = None + value: float + + +class Units30(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units30] = None + value: float + + +class Name38(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name39(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name40(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name41(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name42(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name43(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name43 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SupercellMatrix2DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class SlabConfigurationSchema(BaseModel): + bulk: MaterialSchema = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ + + +class BondsSchemaItem5(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema5(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem5]] = Field(None, title="bonds schema") + + +class Name44(Enum): + lattice = "lattice" + + +class Units31(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit4(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units31] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units32(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema4(BaseModel): + name: Optional[Name44] = None + vectors: Optional[LatticeExplicitUnit4] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units32] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name45(Enum): + volume = "volume" + + +class Units33(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema4(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units33] = None + value: float + + +class Name46(Enum): + density = "density" + + +class Units34(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema4(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units34] = None + value: float + + +class Units35(Enum): + angstrom = "angstrom" + + +class ScalarSchema5(BaseModel): + units: Optional[Units35] = None + value: float + + +class Name47(Enum): + symmetry = "symmetry" + + +class SymmetrySchema4(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema5] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name48(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio4(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name49(Enum): + p_norm = "p-norm" + + +class PNorm4(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name50(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema4(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name51(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema4(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema4( + RootModel[ + Union[ + VolumeSchema4, + DensitySchema4, + SymmetrySchema4, + ElementalRatio4, + PNorm4, + InChIRepresentationSchema4, + InChIKeyRepresentationSchema4, + ] + ] +): + root: Union[ + VolumeSchema4, + DensitySchema4, + SymmetrySchema4, + ElementalRatio4, + PNorm4, + InChIRepresentationSchema4, + InChIKeyRepresentationSchema4, + ] = Field(..., discriminator="name") + + +class Name52(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema4(BaseModel): + name: Name52 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema4(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema5 = Field(..., title="basis schema") + lattice: LatticeSchema4 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema4]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema4]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SlabConfigurationSchema1(BaseModel): + bulk: MaterialSchema4 = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ + + +class TerminationSchema(BaseModel): + chemical_elements: str = Field(..., title="Chemical Elements") + """ + Chemical elements at the termination + """ + space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label") + """ + Space group symmetry designation for the termination + """ + + +class InterfaceConfigurationSchema(BaseModel): + film_configuration: SlabConfigurationSchema = Field(..., title="SlabConfiguration Schema") + """ + Configuration for creating a slab from a bulk material + """ + substrate_configuration: SlabConfigurationSchema1 = Field(..., title="SlabConfiguration Schema") + """ + Configuration for creating a slab from a bulk material + """ + film_termination: TerminationSchema = Field(..., title="Termination Schema") + """ + Defines a specific termination of a slab + """ + substrate_termination: TerminationSchema = Field(..., title="Termination Schema") + """ + Defines a specific termination of a slab + """ + distance_z: Optional[confloat(ge=0.0)] = 3 + """ + The distance between the film and substrate in Angstroms + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/__init__.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/configuration.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/configuration.py new file mode 100644 index 000000000..1e0c37948 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/nanoribbon/configuration.py @@ -0,0 +1,745 @@ +# generated by datamodel-codegen: +# filename: materials_category/multi_material/interfaces/nanoribbon/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units37(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units37] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name54(Enum): + volume = "volume" + + +class Units38(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units38] = None + value: float + + +class Name55(Enum): + density = "density" + + +class Units39(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units39] = None + value: float + + +class Units40(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units40] = None + value: float + + +class Name56(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name57(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name58(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name59(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name60(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name61(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name61 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class BondsSchemaItem7(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema7(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem7]] = Field(None, title="bonds schema") + + +class Name62(Enum): + lattice = "lattice" + + +class Units41(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit6(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units41] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units42(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema6(BaseModel): + name: Optional[Name62] = None + vectors: Optional[LatticeExplicitUnit6] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units42] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name63(Enum): + volume = "volume" + + +class Units43(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema6(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units43] = None + value: float + + +class Name64(Enum): + density = "density" + + +class Units44(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema6(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units44] = None + value: float + + +class Units45(Enum): + angstrom = "angstrom" + + +class ScalarSchema7(BaseModel): + units: Optional[Units45] = None + value: float + + +class Name65(Enum): + symmetry = "symmetry" + + +class SymmetrySchema6(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema7] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name66(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio6(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name67(Enum): + p_norm = "p-norm" + + +class PNorm6(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name68(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema6(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name69(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema6(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema6( + RootModel[ + Union[ + VolumeSchema6, + DensitySchema6, + SymmetrySchema6, + ElementalRatio6, + PNorm6, + InChIRepresentationSchema6, + InChIKeyRepresentationSchema6, + ] + ] +): + root: Union[ + VolumeSchema6, + DensitySchema6, + SymmetrySchema6, + ElementalRatio6, + PNorm6, + InChIRepresentationSchema6, + InChIKeyRepresentationSchema6, + ] = Field(..., discriminator="name") + + +class Name70(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema6(BaseModel): + name: Name70 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema6(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema7 = Field(..., title="basis schema") + lattice: LatticeSchema6 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema6]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema6]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class NanoRibbonTwistedInterfaceConfigurationSchema(BaseModel): + ribbon_width: Optional[conint(ge=1)] = 1 + """ + Width of the nanoribbon in unit cells + """ + ribbon_length: Optional[conint(ge=1)] = 1 + """ + Length of the nanoribbon in unit cells + """ + vacuum_x: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + vacuum_y: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + film: MaterialSchema = Field(..., title="material schema") + substrate: Optional[MaterialSchema6] = Field(None, title="material schema") + twist_angle: Optional[float] = 0 + """ + Twist angle in degrees + """ + distance_z: Optional[confloat(ge=0.0)] = 3 + """ + Vertical distance between layers in Angstroms + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/__init__.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/configuration.py b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/configuration.py new file mode 100644 index 000000000..359616cd0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/multi_material/interfaces/twisted/configuration.py @@ -0,0 +1,729 @@ +# generated by datamodel-codegen: +# filename: materials_category/multi_material/interfaces/twisted/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units47(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units47] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name72(Enum): + volume = "volume" + + +class Units48(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units48] = None + value: float + + +class Name73(Enum): + density = "density" + + +class Units49(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units49] = None + value: float + + +class Units50(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units50] = None + value: float + + +class Name74(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name75(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name76(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name77(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name78(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name79(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name79 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class BondsSchemaItem9(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema9(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem9]] = Field(None, title="bonds schema") + + +class Name80(Enum): + lattice = "lattice" + + +class Units51(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit8(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units51] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class Units52(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema8(BaseModel): + name: Optional[Name80] = None + vectors: Optional[LatticeExplicitUnit8] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units52] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name81(Enum): + volume = "volume" + + +class Units53(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema8(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units53] = None + value: float + + +class Name82(Enum): + density = "density" + + +class Units54(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema8(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units54] = None + value: float + + +class Units55(Enum): + angstrom = "angstrom" + + +class ScalarSchema9(BaseModel): + units: Optional[Units55] = None + value: float + + +class Name83(Enum): + symmetry = "symmetry" + + +class SymmetrySchema8(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema9] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name84(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio8(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name85(Enum): + p_norm = "p-norm" + + +class PNorm8(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name86(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema8(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name87(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema8(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema8( + RootModel[ + Union[ + VolumeSchema8, + DensitySchema8, + SymmetrySchema8, + ElementalRatio8, + PNorm8, + InChIRepresentationSchema8, + InChIKeyRepresentationSchema8, + ] + ] +): + root: Union[ + VolumeSchema8, + DensitySchema8, + SymmetrySchema8, + ElementalRatio8, + PNorm8, + InChIRepresentationSchema8, + InChIKeyRepresentationSchema8, + ] = Field(..., discriminator="name") + + +class Name88(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class MaterialConsistencyCheckSchema8(BaseModel): + name: Name88 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema8(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema9 = Field(..., title="basis schema") + lattice: LatticeSchema8 = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema8]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema8]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class TwistedInterfaceConfigurationSchema(BaseModel): + film: MaterialSchema = Field(..., title="material schema") + substrate: Optional[MaterialSchema8] = Field(None, title="material schema") + twist_angle: Optional[float] = 0 + """ + Twist angle in degrees + """ + distance_z: Optional[confloat(ge=0.0)] = 3 + """ + Vertical distance between layers in Angstroms + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/perturbation/__init__.py b/src/py/mat3ra/esse/models/materials_category/perturbation/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/perturbation/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/perturbation/configuration.py b/src/py/mat3ra/esse/models/materials_category/perturbation/configuration.py new file mode 100644 index 000000000..1aa45fb05 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/perturbation/configuration.py @@ -0,0 +1,515 @@ +# generated by datamodel-codegen: +# filename: materials_category/perturbation/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units57(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units57] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name90(Enum): + volume = "volume" + + +class Units58(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units58] = None + value: float + + +class Name91(Enum): + density = "density" + + +class Units59(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units59] = None + value: float + + +class Units60(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units60] = None + value: float + + +class Name92(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name93(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name94(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name95(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name96(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name97(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name97 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class PerturbationFunctionHolder(BaseModel): + type: Literal["PerturbationFunctionHolder"] + """ + The type of function holder + """ + function: str + """ + String representation of the mathematical function + """ + variables: Optional[List[str]] = ["x", "y", "z"] + """ + List of variable names used in the function + """ + + +class Axis(Enum): + x = "x" + y = "y" + z = "z" + + +class SineWavePerturbationFunctionHolder(BaseModel): + type: Literal["SineWavePerturbationFunctionHolder"] + """ + The type of function holder + """ + amplitude: Optional[float] = 0.05 + """ + Amplitude of the sine wave + """ + wavelength: Optional[float] = 1 + """ + Wavelength of the sine wave + """ + phase: Optional[float] = 0 + """ + Phase of the sine wave + """ + axis: Optional[Axis] = "x" + """ + The axis along which the sine wave is applied + """ + function: str + """ + String representation of the mathematical function + """ + variables: Optional[List[str]] = ["x", "y", "z"] + """ + List of variable names used in the function + """ + + +class PerturbationConfigurationSchema(BaseModel): + material: MaterialSchema = Field(..., title="material schema") + perturbation_function: Union[PerturbationFunctionHolder, SineWavePerturbationFunctionHolder] + """ + The perturbation function to apply + """ + use_cartesian_coordinates: Optional[bool] = True + """ + Whether to use cartesian coordinates for perturbation + """ + + +class SineWavePerturbationFunctionHolder1(BaseModel): + type: Literal["SineWavePerturbationFunctionHolder"] + """ + The type of function holder + """ + amplitude: Optional[float] = 0.05 + """ + Amplitude of the sine wave + """ + wavelength: Optional[float] = 1 + """ + Wavelength of the sine wave + """ + phase: Optional[float] = 0 + """ + Phase of the sine wave + """ + axis: Optional[Axis] = "x" + """ + The axis along which the sine wave is applied + """ + function: str + """ + String representation of the mathematical function + """ + variables: Optional[List[str]] = ["x", "y", "z"] + """ + List of variable names used in the function + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/__init__.py new file mode 100644 index 000000000..ea61d81d8 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/__init__.py @@ -0,0 +1,5 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py new file mode 100644 index 000000000..6c9987478 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py @@ -0,0 +1,461 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/two_dimensional/slab/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units82(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units82] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name135(Enum): + volume = "volume" + + +class Units83(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units83] = None + value: float + + +class Name136(Enum): + density = "density" + + +class Units84(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units84] = None + value: float + + +class Units85(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units85] = None + value: float + + +class Name137(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name138(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name139(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name140(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name141(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name142(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name142 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SupercellMatrix2DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class SlabConfigurationSchema(BaseModel): + bulk: MaterialSchema = Field(..., title="material schema") + miller_indices: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + thickness: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ + vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ + xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ + use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell") + """ + Whether to use conventional cell + """ + use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z") + """ + Whether to make z-axis orthogonal + """ + make_primitive: Optional[bool] = Field(False, title="Make Primitive") + """ + Whether to make the slab primitive + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.py new file mode 100644 index 000000000..481e265a4 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.py @@ -0,0 +1,447 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/zero_dimensional/nanoparticle/ase_based/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class Shape(Enum): + icosahedron = "icosahedron" + octahedron = "octahedron" + decahedron = "decahedron" + simple_cubic = "simple_cubic" + face_centered_cubic = "face_centered_cubic" + body_centered_cubic = "body_centered_cubic" + hexagonal_closed_packed = "hexagonal_closed_packed" + wulff_construction = "wulff_construction" + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units67(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units67] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name108(Enum): + volume = "volume" + + +class Units68(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units68] = None + value: float + + +class Name109(Enum): + density = "density" + + +class Units69(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units69] = None + value: float + + +class Units70(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units70] = None + value: float + + +class Name110(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name111(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name112(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name113(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name114(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name115(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name115 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class ASEBasedNanoparticleConfigurationSchema(BaseModel): + shape: Shape + """ + Enum for supported nanoparticle shapes + """ + parameters: Optional[Dict[str, Any]] = None + """ + Shape-specific parameters to pass to the ASE constructor + """ + material: MaterialSchema = Field(..., title="material schema") + vacuum_padding: Optional[confloat(ge=0.0)] = 10 + """ + Vacuum padding around the nanoparticle in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.py new file mode 100644 index 000000000..d123a5e57 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.py @@ -0,0 +1,428 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/zero_dimensional/nanoparticle/base_configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units15(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units15] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name17(Enum): + volume = "volume" + + +class Units16(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units16] = None + value: float + + +class Name18(Enum): + density = "density" + + +class Units17(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units17] = None + value: float + + +class Units18(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units18] = None + value: float + + +class Name19(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name20(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name21(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name22(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name23(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name24(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name24 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class BaseNanoparticleConfigurationSchema(BaseModel): + material: MaterialSchema = Field(..., title="material schema") + vacuum_padding: Optional[confloat(ge=0.0)] = 10 + """ + Vacuum padding around the nanoparticle in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.py new file mode 100644 index 000000000..30d894361 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.py @@ -0,0 +1,436 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/zero_dimensional/nanoparticle/slab_based/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units62(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units62] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name99(Enum): + volume = "volume" + + +class Units63(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units63] = None + value: float + + +class Name100(Enum): + density = "density" + + +class Units64(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units64] = None + value: float + + +class Units65(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units65] = None + value: float + + +class Name101(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name102(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name103(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name104(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name105(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name106(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name106 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SlabBasedNanoparticleConfigurationSchema(BaseModel): + supercell_size: Optional[conint(ge=1)] = 1 + """ + Size of the supercell in the xy-plane + """ + orientation_z: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + material: MaterialSchema = Field(..., title="material schema") + vacuum_padding: Optional[confloat(ge=0.0)] = 10 + """ + Vacuum padding around the nanoparticle in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.py new file mode 100644 index 000000000..a986d1a18 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.py @@ -0,0 +1,440 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/zero_dimensional/nanoparticle/sphere_based/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units72(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units72] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name117(Enum): + volume = "volume" + + +class Units73(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units73] = None + value: float + + +class Name118(Enum): + density = "density" + + +class Units74(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units74] = None + value: float + + +class Units75(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units75] = None + value: float + + +class Name119(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name120(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name121(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name122(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name123(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name124(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name124 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class SphereSlabBasedNanoparticleConfigurationSchema(BaseModel): + radius: Optional[confloat(ge=0.0)] = 5 + """ + Radius of the spherical nanoparticle in Angstroms + """ + supercell_size: Optional[conint(ge=1)] = 1 + """ + Size of the supercell in the xy-plane + """ + orientation_z: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ + material: MaterialSchema = Field(..., title="material schema") + vacuum_padding: Optional[confloat(ge=0.0)] = 10 + """ + Vacuum padding around the nanoparticle in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/__init__.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/configuration.py b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/configuration.py new file mode 100644 index 000000000..74adbf8fa --- /dev/null +++ b/src/py/mat3ra/esse/models/materials_category/single_material/zero_dimensional/nanoribbon/configuration.py @@ -0,0 +1,449 @@ +# generated by datamodel-codegen: +# filename: materials_category/single_material/zero_dimensional/nanoribbon/configuration.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +from pydantic import BaseModel, Field, RootModel, confloat, conint +from typing_extensions import Literal + + +class AtomicElements(BaseModel): + id: float + value: str + occurrence: Optional[float] = None + """ + Occurrence is for fractional occupations + """ + oxidationState: Optional[float] = None + + +class Label(BaseModel): + id: Optional[float] = None + value: Optional[float] = None + + +class AtomicCoordinate(BaseModel): + id: Optional[float] = None + value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema") + + +class AtomicId(BaseModel): + id: Optional[int] = None + """ + integer id of this entry + """ + + +class BondType(Enum): + single = "single" + double = "double" + triple = "triple" + quadruple = "quadruple" + aromatic = "aromatic" + tautomeric = "tautomeric" + dative = "dative" + other = "other" + + +class BondsSchemaItem(BaseModel): + atomPair: Optional[List[AtomicId]] = Field(None, max_length=2, min_length=2, title="atomic ids") + """ + indices of the two connected atoms + """ + bondType: Optional[BondType] = None + + +class BasisSchema(BaseModel): + elements: List[AtomicElements] + labels: Optional[List[Label]] = None + """ + Optional numeric label (e.g., 1, 2, as in Fe1, Fe2) to distinguish same atomic species to attach different spin magnetic moment. + """ + coordinates: List[AtomicCoordinate] + name: Optional[str] = None + units: Optional[str] = None + bonds: Optional[List[BondsSchemaItem]] = Field(None, title="bonds schema") + + +class Name(Enum): + lattice = "lattice" + + +class Units(Enum): + km = "km" + m = "m" + pm = "pm" + nm = "nm" + angstrom = "angstrom" + a_u_ = "a.u." + bohr = "bohr" + fractional = "fractional" + crystal = "crystal" + cartesian = "cartesian" + alat = "alat" + + +class LatticeExplicitUnit(BaseModel): + alat: Optional[float] = 1 + """ + lattice parameter for fractional coordinates + """ + units: Optional[Units] = None + a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema") + + +class LatticeTypeSchema(Enum): + CUB = "CUB" + BCC = "BCC" + FCC = "FCC" + TET = "TET" + MCL = "MCL" + ORC = "ORC" + ORCC = "ORCC" + ORCF = "ORCF" + ORCI = "ORCI" + HEX = "HEX" + BCT = "BCT" + TRI = "TRI" + MCLC = "MCLC" + RHL = "RHL" + + +class Length(Enum): + angstrom = "angstrom" + bohr = "bohr" + + +class Angle(Enum): + degree = "degree" + radian = "radian" + + +class Units77(BaseModel): + length: Optional[Length] = None + angle: Optional[Angle] = None + + +class LatticeSchema(BaseModel): + name: Optional[Name] = None + vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit") + type: LatticeTypeSchema = Field(..., title="lattice type schema") + units: Optional[Units77] = None + a: float + """ + length of the first lattice vector + """ + b: float + """ + length of the second lattice vector + """ + c: float + """ + length of the third lattice vector + """ + alpha: float + """ + angle between first and second lattice vector + """ + beta: float + """ + angle between second and third lattice vector + """ + gamma: float + """ + angle between first and third lattice vector + """ + + +class Name126(Enum): + volume = "volume" + + +class Units78(Enum): + angstrom_3 = "angstrom^3" + + +class VolumeSchema(BaseModel): + name: Literal["0#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units78] = None + value: float + + +class Name127(Enum): + density = "density" + + +class Units79(Enum): + g_cm_3 = "g/cm^3" + + +class DensitySchema(BaseModel): + name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] + units: Optional[Units79] = None + value: float + + +class Units80(Enum): + angstrom = "angstrom" + + +class ScalarSchema(BaseModel): + units: Optional[Units80] = None + value: float + + +class Name128(Enum): + symmetry = "symmetry" + + +class SymmetrySchema(BaseModel): + pointGroupSymbol: Optional[str] = None + """ + point group symbol in Schoenflies notation + """ + spaceGroupSymbol: Optional[str] = None + """ + space group symbol in Hermann–Mauguin notation + """ + tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema") + """ + tolerance used for symmetry calculation + """ + name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] + + +class Name129(Enum): + elemental_ratio = "elemental_ratio" + + +class ElementalRatio(BaseModel): + name: Literal["3#-datamodel-code-generator-#-object-#-special-#"] + value: confloat(ge=0.0, le=1.0) + element: Optional[str] = None + """ + the element this ratio is for + """ + + +class Name130(Enum): + p_norm = "p-norm" + + +class PNorm(BaseModel): + name: Literal["4#-datamodel-code-generator-#-object-#-special-#"] + degree: Optional[int] = None + """ + degree of the dimensionality of the norm + """ + value: float + + +class Name131(Enum): + inchi = "inchi" + + +class InChIRepresentationSchema(BaseModel): + name: Literal["5#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class Name132(Enum): + inchi_key = "inchi_key" + + +class InChIKeyRepresentationSchema(BaseModel): + name: Literal["6#-datamodel-code-generator-#-object-#-special-#"] + value: str + + +class DerivedPropertiesSchema( + RootModel[ + Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] + ] +): + root: Union[ + VolumeSchema, + DensitySchema, + SymmetrySchema, + ElementalRatio, + PNorm, + InChIRepresentationSchema, + InChIKeyRepresentationSchema, + ] = Field(..., discriminator="name") + + +class DatabaseSourceSchema(BaseModel): + id: Union[str, float] + """ + ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32 + """ + source: str + """ + Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc. + """ + origin: bool + """ + Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch). + """ + data: Optional[Dict[str, Any]] = None + """ + Original response from external source. + """ + doi: Optional[str] = None + """ + Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506 + """ + url: Optional[str] = None + """ + The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers + """ + + +class FileSourceSchema(BaseModel): + extension: Optional[str] = None + """ + file extension + """ + filename: str + """ + file name without extension + """ + text: str + """ + file content as raw text + """ + hash: str + """ + MD5 hash based on file content + """ + + +class Name133(Enum): + default = "default" + atomsTooClose = "atomsTooClose" + atomsOverlap = "atomsOverlap" + + +class Severity(Enum): + info = "info" + warning = "warning" + error = "error" + + +class MaterialConsistencyCheckSchema(BaseModel): + name: Name133 + """ + Name of the consistency check that is performed, which is listed in an enum. + """ + key: str + """ + Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1' + """ + severity: Severity + """ + Severity level of the problem, which is used in UI to differentiate. + """ + message: str + """ + Message generated by the consistency check describing the problem. + """ + + +class MaterialSchema(BaseModel): + formula: Optional[str] = None + """ + reduced chemical formula + """ + unitCellFormula: Optional[str] = None + """ + chemical formula based on the number of atoms of each element in the supercell + """ + basis: BasisSchema = Field(..., title="basis schema") + lattice: LatticeSchema = Field(..., title="lattice schema") + derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema") + external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema") + """ + information about a database source + """ + src: Optional[FileSourceSchema] = Field(None, title="file source schema") + """ + file source with the information inside + """ + scaledHash: Optional[str] = None + """ + Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure). + """ + icsdId: Optional[int] = None + """ + Corresponding ICSD id of the material + """ + isNonPeriodic: Optional[bool] = None + """ + Whether to work in the finite molecular picture (usually with atomic orbital basis) + """ + consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None + field_id: Optional[str] = Field(None, alias="_id") + """ + entity identity + """ + slug: Optional[str] = None + """ + entity slug + """ + systemName: Optional[str] = None + schemaVersion: Optional[str] = "2022.8.16" + """ + entity's schema version. Used to distinct between different schemas. + """ + name: Optional[str] = None + """ + entity name + """ + isDefault: Optional[bool] = False + """ + Identifies that entity is defaultable + """ + metadata: Optional[Dict[str, Any]] = None + + +class EdgeType(Enum): + zigzag = "zigzag" + armchair = "armchair" + + +class NanoRibbonConfigurationSchema(BaseModel): + material: MaterialSchema = Field(..., title="material schema") + width: conint(ge=1) + """ + The width of the nanoribbon in number of unit cells + """ + length: conint(ge=1) + """ + The length of the nanoribbon in number of unit cells + """ + vacuum_width: Optional[conint(ge=0)] = 3 + """ + The width of the vacuum region in number of unit cells + """ + vacuum_length: Optional[conint(ge=0)] = 0 + """ + The length of the vacuum region in number of unit cells + """ + edge_type: Optional[EdgeType] = "zigzag" + """ + Enum for nanoribbon edge types + """ diff --git a/src/py/mat3ra/esse/models/method/__init__.py b/src/py/mat3ra/esse/models/method/__init__.py index 63816c5f4..699a2ece9 100644 --- a/src/py/mat3ra/esse/models/method/__init__.py +++ b/src/py/mat3ra/esse/models/method/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: method.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/method/categorized_method.py b/src/py/mat3ra/esse/models/method/categorized_method.py index 3cc2cf7ac..3b69e646d 100644 --- a/src/py/mat3ra/esse/models/method/categorized_method.py +++ b/src/py/mat3ra/esse/models/method/categorized_method.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: method/categorized_method.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/method/method_parameters.py b/src/py/mat3ra/esse/models/method/method_parameters.py index f19813481..d82fa5f8a 100644 --- a/src/py/mat3ra/esse/models/method/method_parameters.py +++ b/src/py/mat3ra/esse/models/method/method_parameters.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: method/method_parameters.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/method/unit_method.py b/src/py/mat3ra/esse/models/method/unit_method.py index 278ff7223..d0c06174c 100644 --- a/src/py/mat3ra/esse/models/method/unit_method.py +++ b/src/py/mat3ra/esse/models/method/unit_method.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: method/unit_method.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/__init__.py index c47e56d1a..90814512c 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/diff.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/enum_options.py index da1e8492c..8ae4bf576 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/diff/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/fd.py b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/fd.py index c3816f9a2..8563d7582 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/diff/fd.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/diff/fd.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/diff/fd.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/__init__.py index fb12ef782..33b7e4f5f 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/enum_options.py index bf025ed0c..eb462c05c 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/__init__.py index d351efd96..67c7b80ef 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/enum_options.py index bc89b8fc2..01e145b2e 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/hybrid.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/hybrid.py index 415cdbf68..788ddc1ac 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/hybrid.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/hybrid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/hybrid.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/nstruct.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/nstruct.py index 1557c43b5..467f0dcc2 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/nstruct.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/nstruct.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/nstruct.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/__init__.py index 299b8b73d..e25697a67 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/struct.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/cartesian.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/cartesian.py index 1284ba3c3..475215f6d 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/cartesian.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/cartesian.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/struct/cartesian.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/enum_options.py index 8c64965d9..c27e4d89b 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/discr/mesh/struct/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/discr/mesh/struct/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/enum_options.py index c022aead4..7616b11e9 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/__init__.py index 85a4dfa18..f164e518c 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/basisexp.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/basisexp.py index a0f93ac25..0cbf12774 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/basisexp.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/basisexp.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/basisexp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/enum_options.py index 5c777b2c9..f645309fa 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/__init__.py index 326639a2f..7ae8071b8 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/ipol.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/enum_options.py index 89f29cc62..2ae89a260 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/ipol/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/lin.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/lin.py index 1ea7f55a8..f6839b26f 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/lin.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/lin.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/ipol/lin.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/poly.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/poly.py index e26514b6c..442e8505a 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/poly.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/poly.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/ipol/poly.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/spline.py b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/spline.py index 90096ea82..db9d153f8 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/spline.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/fapprx/ipol/spline.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/fapprx/ipol/spline.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/__init__.py index 3a4d0f658..c97931e90 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/__init__.py index 19e63d4f5..338a87a2f 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/analytic.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/enum_options.py index 193d8586c..f33c0d4af 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/analytic/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/volume.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/volume.py index ce9cb1afe..420567a99 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/volume.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/analytic/volume.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/analytic/volume.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/__init__.py index ce9951a39..5153172da 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/diffeq.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/enum_options.py index 14d093df1..6e13ce0e0 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/diffeq/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order1.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order1.py index 2fce22dcb..74630111f 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order1.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order1.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/diffeq/order1.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order2.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order2.py index b03c3b66b..b77a02034 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order2.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/diffeq/order2.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/diffeq/order2.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/enum_options.py index 1dfe4a9bf..8613a1446 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/__init__.py index f9c500a67..231715140 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/numquad.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/enum_options.py index 9cfba371d..082bf8215 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/numquad/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/gauss.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/gauss.py index c73847bc0..992c106cd 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/gauss.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/gauss.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/numquad/gauss.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/newcot.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/newcot.py index 27129e835..b3d5d22b1 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/newcot.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/numquad/newcot.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/numquad/newcot.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/__init__.py index d28d5e331..5a00dd319 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/transf.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/enum_options.py index 229aa576d..fb0733ef4 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/transf/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/fourier.py b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/fourier.py index 2c8277db0..d6bd9f296 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/fourier.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/intgr/transf/fourier.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/intgr/transf/fourier.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/__init__.py index 3af62a4c2..dab0aab43 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/dcomp.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/dcomp.py index 3d945680a..d4c6bb9cf 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/dcomp.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/dcomp.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/dcomp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/__init__.py index e95d01be6..6908a98bc 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/diag.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/davidson.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/davidson.py index 32f2a5bab..3a9c1cb9b 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/davidson.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/davidson.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/diag/davidson.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/enum_options.py index f29334de6..79cafbdf0 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/diag/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/diag/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/enum_options.py index a72b88038..6c0fcd463 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/lintra.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/lintra.py index e3dbb580a..ec899d491 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/lintra.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/lintra.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/lintra.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/matf.py b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/matf.py index a0941d8fd..1afbfff2c 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/matf.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/linalg/matf.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/linalg/matf.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/__init__.py index 08582d1df..d7f5a926a 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/__init__.py index c8ca62909..b930c73fa 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/bracket.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/bracket.py index fd006e983..71aa83fbc 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/bracket.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/bracket.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/bracket.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/enum_options.py index e131fa68d..cd634c076 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/local.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/local.py index 1360650bf..4d9497d47 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/local.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/local.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/local.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order1.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order1.py index 83c08356d..ad08837cb 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order1.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order1.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/order1.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order2.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order2.py index ad7f6fc0b..be747abc6 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order2.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/order2.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/order2.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/__init__.py index 32c266c32..df12b0b17 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/ordern.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/cg.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/cg.py index 11db0fa46..beb46118f 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/cg.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/cg.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/ordern/cg.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/enum_options.py index ef0eabc22..372a8318b 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/diff/ordern/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/diff/ordern/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/enum_options.py index 1d961755b..74f90b0e2 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/__init__.py index a91e9b42f..7367b088a 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/ndiff.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/direct.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/direct.py index 8d7b74974..f8971eebc 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/direct.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/direct.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/ndiff/direct.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/enum_options.py index 7de22f2ce..9633eafe3 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/ndiff/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/pop.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/pop.py index 03d6e1f7f..b84a1c3b7 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/pop.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/pop.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/ndiff/pop.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/stoch.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/stoch.py index 3e3ec9712..223a18d64 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/stoch.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/ndiff/stoch.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/ndiff/stoch.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/__init__.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/__init__.py index 0f9c1f286..0b1fd6906 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/root.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/bracket.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/bracket.py index 82c417ee5..1ddf20da8 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/bracket.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/bracket.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/root/bracket.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/enum_options.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/enum_options.py index 2edccaf1c..9f781abf1 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/root/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/iter.py b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/iter.py index 54218e927..1e5062905 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/iter.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/opt/root/iter.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/opt/root/iter.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/mathematical/regression.py b/src/py/mat3ra/esse/models/methods_category/mathematical/regression.py index 1b3246490..b7310ca42 100644 --- a/src/py/mat3ra/esse/models/methods_category/mathematical/regression.py +++ b/src/py/mat3ra/esse/models/methods_category/mathematical/regression.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/mathematical/regression.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/__init__.py b/src/py/mat3ra/esse/models/methods_category/physical/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_category/physical/enum_options.py b/src/py/mat3ra/esse/models/methods_category/physical/enum_options.py index a872255eb..843e8d6c5 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/__init__.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/__init__.py index 3e057f567..2f7fe5e96 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/enum_options.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/enum_options.py index fcd4ff9fe..0f84111c6 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/__init__.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/__init__.py index fa4b33f23..ffe04e39a 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/__init__.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/__init__.py index 0ca2c5b17..c36a1c348 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/__init__.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/ao.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/dunning.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/dunning.py index 988f4dd89..8ca3d0c31 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/dunning.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/dunning.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/ao/dunning.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/other.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/other.py index 24341d79a..6f6fc3917 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/other.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/other.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/ao/other.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/pople.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/pople.py index e5cb4d651..234070af3 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/pople.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/ao/pople.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/ao/pople.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/enum_options.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/enum_options.py index 3444bb012..8bb2fcd9a 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/psp.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/psp.py index 42d85dad0..eeaa89200 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/psp.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/psp.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/psp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/pw.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/pw.py index 5b7f62962..075386a81 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/pw.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/pw.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/pw.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/smearing.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/smearing.py index c79889556..bbb16a5e5 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/smearing.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/smearing.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/smearing.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/tetrahedron.py b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/tetrahedron.py index 65a4ebce4..ba490ed11 100644 --- a/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/tetrahedron.py +++ b/src/py/mat3ra/esse/models/methods_category/physical/qm/wf/tetrahedron.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_category/physical/qm/wf/tetrahedron.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/legacy/__init__.py b/src/py/mat3ra/esse/models/methods_directory/legacy/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/legacy/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/legacy/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/legacy/localorbital.py b/src/py/mat3ra/esse/models/methods_directory/legacy/localorbital.py index 801c67d6b..47431ffe1 100644 --- a/src/py/mat3ra/esse/models/methods_directory/legacy/localorbital.py +++ b/src/py/mat3ra/esse/models/methods_directory/legacy/localorbital.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/legacy/localorbital.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/legacy/pseudopotential.py b/src/py/mat3ra/esse/models/methods_directory/legacy/pseudopotential.py index 62d965280..417d5b1f7 100644 --- a/src/py/mat3ra/esse/models/methods_directory/legacy/pseudopotential.py +++ b/src/py/mat3ra/esse/models/methods_directory/legacy/pseudopotential.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/legacy/pseudopotential.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/legacy/regression.py b/src/py/mat3ra/esse/models/methods_directory/legacy/regression.py index c03aae6fb..5e4c653d4 100644 --- a/src/py/mat3ra/esse/models/methods_directory/legacy/regression.py +++ b/src/py/mat3ra/esse/models/methods_directory/legacy/regression.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/legacy/regression.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/legacy/unknown.py b/src/py/mat3ra/esse/models/methods_directory/legacy/unknown.py index ff376c4be..55b9b0fa9 100644 --- a/src/py/mat3ra/esse/models/methods_directory/legacy/unknown.py +++ b/src/py/mat3ra/esse/models/methods_directory/legacy/unknown.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/legacy/unknown.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/__init__.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/cg.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/cg.py index 3904f63ca..c3a45e95d 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/cg.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/cg.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/cg.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/davidson.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/davidson.py index e62871845..090d9e483 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/davidson.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/davidson.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/davidson.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/__init__.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/__init__.py index f57759a03..f17bde935 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/data.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/data.py index acd1eea66..a8d8696b7 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/data.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/data.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/data.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/dataset.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/dataset.py index 2fbfe1719..f441bde65 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/dataset.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/dataset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/dataset.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/__init__.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/data_per_property.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/data_per_property.py index cc8379633..32c97c0fc 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/data_per_property.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/kernel_ridge/data_per_property.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/kernel_ridge/data_per_property.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/__init__.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/data_per_property.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/data_per_property.py index 6c2886791..df9a2a0d9 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/data_per_property.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/linear/data_per_property.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/linear/data_per_property.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/per_feature_item.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/per_feature_item.py index 080156256..7dcc9243b 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/per_feature_item.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/per_feature_item.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/per_feature_item.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision.py index 712a97f3b..ed2be143a 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/precision.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision_per_property.py b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision_per_property.py index 17a3f2f64..323aaddb7 100644 --- a/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision_per_property.py +++ b/src/py/mat3ra/esse/models/methods_directory/mathematical/regression/precision_per_property.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/mathematical/regression/precision_per_property.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/__init__.py b/src/py/mat3ra/esse/models/methods_directory/physical/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/ao/__init__.py b/src/py/mat3ra/esse/models/methods_directory/physical/ao/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/ao/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/ao/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/ao/dunning.py b/src/py/mat3ra/esse/models/methods_directory/physical/ao/dunning.py index 21a985951..81e65a155 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/ao/dunning.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/ao/dunning.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/ao/dunning.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/ao/enum_options.py b/src/py/mat3ra/esse/models/methods_directory/physical/ao/enum_options.py index 0082393e5..6d20fd307 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/ao/enum_options.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/ao/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/ao/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/ao/other.py b/src/py/mat3ra/esse/models/methods_directory/physical/ao/other.py index d4c30f0fb..0d1b1904a 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/ao/other.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/ao/other.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/ao/other.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/ao/pople.py b/src/py/mat3ra/esse/models/methods_directory/physical/ao/pople.py index 53d197e2f..3df75d7f6 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/ao/pople.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/ao/pople.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/ao/pople.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/psp/__init__.py b/src/py/mat3ra/esse/models/methods_directory/physical/psp/__init__.py index a13a93c01..a30d8bc4c 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/psp/__init__.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/psp/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/psp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/psp/file.py b/src/py/mat3ra/esse/models/methods_directory/physical/psp/file.py index ff0412927..57c38e271 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/psp/file.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/psp/file.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/psp/file.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/psp/file_data_item.py b/src/py/mat3ra/esse/models/methods_directory/physical/psp/file_data_item.py index da97be45e..6ec8b9865 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/psp/file_data_item.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/psp/file_data_item.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/psp/file_data_item.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/pw.py b/src/py/mat3ra/esse/models/methods_directory/physical/pw.py index a6bc09917..f16ea2d58 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/pw.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/pw.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/pw.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/smearing.py b/src/py/mat3ra/esse/models/methods_directory/physical/smearing.py index d44a8275e..ccde3a122 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/smearing.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/smearing.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/smearing.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/methods_directory/physical/tetrahedron.py b/src/py/mat3ra/esse/models/methods_directory/physical/tetrahedron.py index 28f47e3ae..370790a52 100644 --- a/src/py/mat3ra/esse/models/methods_directory/physical/tetrahedron.py +++ b/src/py/mat3ra/esse/models/methods_directory/physical/tetrahedron.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: methods_directory/physical/tetrahedron.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/__init__.py b/src/py/mat3ra/esse/models/model/__init__.py index e9fc87cc7..7abb8d7b9 100644 --- a/src/py/mat3ra/esse/models/model/__init__.py +++ b/src/py/mat3ra/esse/models/model/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/categorized_model.py b/src/py/mat3ra/esse/models/model/categorized_model.py index e611baed7..27e83b004 100644 --- a/src/py/mat3ra/esse/models/model/categorized_model.py +++ b/src/py/mat3ra/esse/models/model/categorized_model.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/categorized_model.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/__init__.py b/src/py/mat3ra/esse/models/model/mixins/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/model/mixins/__init__.py +++ b/src/py/mat3ra/esse/models/model/mixins/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/__init__.py b/src/py/mat3ra/esse/models/model/mixins/dft/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/__init__.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/double_hybrid_functional.py b/src/py/mat3ra/esse/models/model/mixins/dft/double_hybrid_functional.py index 3ea64805f..89dffa498 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/double_hybrid_functional.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/double_hybrid_functional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/double_hybrid_functional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/enum_options.py b/src/py/mat3ra/esse/models/model/mixins/dft/enum_options.py index 6e5a00ec8..e3a767118 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/enum_options.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/gga_functional.py b/src/py/mat3ra/esse/models/model/mixins/dft/gga_functional.py index 03c6b8c4a..ad8828578 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/gga_functional.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/gga_functional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/gga_functional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/hybrid_functional.py b/src/py/mat3ra/esse/models/model/mixins/dft/hybrid_functional.py index 6fc49bbf6..de6f24ce0 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/hybrid_functional.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/hybrid_functional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/hybrid_functional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/lda_functional.py b/src/py/mat3ra/esse/models/model/mixins/dft/lda_functional.py index 88e9f28c7..3a704a0a1 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/lda_functional.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/lda_functional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/lda_functional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dft/mgga_functional.py b/src/py/mat3ra/esse/models/model/mixins/dft/mgga_functional.py index 801a5b4e3..18b86a8c6 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dft/mgga_functional.py +++ b/src/py/mat3ra/esse/models/model/mixins/dft/mgga_functional.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dft/mgga_functional.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/dispersion_correction.py b/src/py/mat3ra/esse/models/model/mixins/dispersion_correction.py index fc32da5e3..cd97094bf 100644 --- a/src/py/mat3ra/esse/models/model/mixins/dispersion_correction.py +++ b/src/py/mat3ra/esse/models/model/mixins/dispersion_correction.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/dispersion_correction.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/enum_options.py b/src/py/mat3ra/esse/models/model/mixins/enum_options.py index f903e33ab..b27a4dc31 100644 --- a/src/py/mat3ra/esse/models/model/mixins/enum_options.py +++ b/src/py/mat3ra/esse/models/model/mixins/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/hubbard.py b/src/py/mat3ra/esse/models/model/mixins/hubbard.py index 3d44d1b5b..0844e8dcc 100644 --- a/src/py/mat3ra/esse/models/model/mixins/hubbard.py +++ b/src/py/mat3ra/esse/models/model/mixins/hubbard.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/hubbard.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/spin_orbit_coupling.py b/src/py/mat3ra/esse/models/model/mixins/spin_orbit_coupling.py index 7574ff899..cb1d79d70 100644 --- a/src/py/mat3ra/esse/models/model/mixins/spin_orbit_coupling.py +++ b/src/py/mat3ra/esse/models/model/mixins/spin_orbit_coupling.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/spin_orbit_coupling.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/mixins/spin_polarization.py b/src/py/mat3ra/esse/models/model/mixins/spin_polarization.py index 5d6ba2cae..0b7b4076f 100644 --- a/src/py/mat3ra/esse/models/model/mixins/spin_polarization.py +++ b/src/py/mat3ra/esse/models/model/mixins/spin_polarization.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/mixins/spin_polarization.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/model_parameters.py b/src/py/mat3ra/esse/models/model/model_parameters.py index f5791c05c..cd4245782 100644 --- a/src/py/mat3ra/esse/models/model/model_parameters.py +++ b/src/py/mat3ra/esse/models/model/model_parameters.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/model_parameters.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/model/model_without_method.py b/src/py/mat3ra/esse/models/model/model_without_method.py index 2cc2be864..70d272716 100644 --- a/src/py/mat3ra/esse/models/model/model_without_method.py +++ b/src/py/mat3ra/esse/models/model/model_without_method.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: model/model_without_method.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/__init__.py b/src/py/mat3ra/esse/models/models_category/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/models_category/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/models_category/enum_options.py b/src/py/mat3ra/esse/models/models_category/enum_options.py index 7db1abb8a..b7a52e83e 100644 --- a/src/py/mat3ra/esse/models/models_category/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/__init__.py b/src/py/mat3ra/esse/models/models_category/pb/__init__.py index 7c93861c6..7b02dd131 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/pb/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/enum_options.py b/src/py/mat3ra/esse/models/models_category/pb/enum_options.py index b63f0f856..11cc5a11a 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/pb/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/__init__.py b/src/py/mat3ra/esse/models/models_category/pb/qm/__init__.py index a410c7c2f..b3eca9937 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/__init__.py b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/__init__.py index 0e2e1196a..2a086fac4 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/abin.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/enum_options.py b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/enum_options.py index 27a78ed8b..2423d2d89 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/abin/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/gw.py b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/gw.py index 90df3b0a6..9928cac33 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/abin/gw.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/abin/gw.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/abin/gw.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/__init__.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/__init__.py index dc3319917..08070ece7 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/enum_options.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/enum_options.py index 463511212..440bc7e4c 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/__init__.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/__init__.py index b57e8d823..27554cfa8 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/double_hybrid.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/double_hybrid.py index b46a09c40..68548599f 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/double_hybrid.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/double_hybrid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/double_hybrid.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/enum_options.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/enum_options.py index 118c356f4..dc7cb764c 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/gga.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/gga.py index 006c63520..d59846428 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/gga.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/gga.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/gga.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/hybrid.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/hybrid.py index 7648baf0e..abe7424a3 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/hybrid.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/hybrid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/hybrid.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/lda.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/lda.py index 621c673d1..d5c678763 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/lda.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/lda.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/lda.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/mgga.py b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/mgga.py index 432366ef8..aac94dd3c 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/mgga.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/dft/ksdft/mgga.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/dft/ksdft/mgga.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/enum_options.py b/src/py/mat3ra/esse/models/models_category/pb/qm/enum_options.py index 4ed5f5040..1a02956a1 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/pb/qm/semp.py b/src/py/mat3ra/esse/models/models_category/pb/qm/semp.py index f5bd12572..8b064326c 100644 --- a/src/py/mat3ra/esse/models/models_category/pb/qm/semp.py +++ b/src/py/mat3ra/esse/models/models_category/pb/qm/semp.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/pb/qm/semp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/__init__.py b/src/py/mat3ra/esse/models/models_category/st/__init__.py index 5e09db9a0..c89ad8ce9 100644 --- a/src/py/mat3ra/esse/models/models_category/st/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/st/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/det/__init__.py b/src/py/mat3ra/esse/models/models_category/st/det/__init__.py index 06c5ecfa4..67aadc2ce 100644 --- a/src/py/mat3ra/esse/models/models_category/st/det/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/st/det/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/det.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/det/enum_options.py b/src/py/mat3ra/esse/models/models_category/st/det/enum_options.py index a97a54522..7dcb1552c 100644 --- a/src/py/mat3ra/esse/models/models_category/st/det/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/st/det/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/det/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/det/ml/__init__.py b/src/py/mat3ra/esse/models/models_category/st/det/ml/__init__.py index af7e0a4df..907150378 100644 --- a/src/py/mat3ra/esse/models/models_category/st/det/ml/__init__.py +++ b/src/py/mat3ra/esse/models/models_category/st/det/ml/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/det/ml.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/det/ml/enum_options.py b/src/py/mat3ra/esse/models/models_category/st/det/ml/enum_options.py index 11b68b5dd..75b08cf5c 100644 --- a/src/py/mat3ra/esse/models/models_category/st/det/ml/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/st/det/ml/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/det/ml/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/det/ml/re.py b/src/py/mat3ra/esse/models/models_category/st/det/ml/re.py index 91abc1caa..e562435e6 100644 --- a/src/py/mat3ra/esse/models/models_category/st/det/ml/re.py +++ b/src/py/mat3ra/esse/models/models_category/st/det/ml/re.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/det/ml/re.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_category/st/enum_options.py b/src/py/mat3ra/esse/models/models_category/st/enum_options.py index 65e76fa60..10955bf24 100644 --- a/src/py/mat3ra/esse/models/models_category/st/enum_options.py +++ b/src/py/mat3ra/esse/models/models_category/st/enum_options.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_category/st/enum_options.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/__init__.py b/src/py/mat3ra/esse/models/models_directory/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/models_directory/__init__.py +++ b/src/py/mat3ra/esse/models/models_directory/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/models_directory/double_hybrid.py b/src/py/mat3ra/esse/models/models_directory/double_hybrid.py index 3a9e2f43a..6c7ecc2c7 100644 --- a/src/py/mat3ra/esse/models/models_directory/double_hybrid.py +++ b/src/py/mat3ra/esse/models/models_directory/double_hybrid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/double_hybrid.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/gga.py b/src/py/mat3ra/esse/models/models_directory/gga.py index a26d3865b..2b459ac97 100644 --- a/src/py/mat3ra/esse/models/models_directory/gga.py +++ b/src/py/mat3ra/esse/models/models_directory/gga.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/gga.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/gw.py b/src/py/mat3ra/esse/models/models_directory/gw.py index 6b9218d06..163998d76 100644 --- a/src/py/mat3ra/esse/models/models_directory/gw.py +++ b/src/py/mat3ra/esse/models/models_directory/gw.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/gw.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/hybrid.py b/src/py/mat3ra/esse/models/models_directory/hybrid.py index d2b9ca268..c010e3902 100644 --- a/src/py/mat3ra/esse/models/models_directory/hybrid.py +++ b/src/py/mat3ra/esse/models/models_directory/hybrid.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/hybrid.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/lda.py b/src/py/mat3ra/esse/models/models_directory/lda.py index d5f8ac8b1..7db979be0 100644 --- a/src/py/mat3ra/esse/models/models_directory/lda.py +++ b/src/py/mat3ra/esse/models/models_directory/lda.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/lda.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/legacy/__init__.py b/src/py/mat3ra/esse/models/models_directory/legacy/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/models_directory/legacy/__init__.py +++ b/src/py/mat3ra/esse/models/models_directory/legacy/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/models_directory/legacy/dft.py b/src/py/mat3ra/esse/models/models_directory/legacy/dft.py index 34ce79232..3a21d0177 100644 --- a/src/py/mat3ra/esse/models/models_directory/legacy/dft.py +++ b/src/py/mat3ra/esse/models/models_directory/legacy/dft.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/legacy/dft.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/legacy/ml.py b/src/py/mat3ra/esse/models/models_directory/legacy/ml.py index 98d083a89..92ef2fb0a 100644 --- a/src/py/mat3ra/esse/models/models_directory/legacy/ml.py +++ b/src/py/mat3ra/esse/models/models_directory/legacy/ml.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/legacy/ml.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/legacy/unknown.py b/src/py/mat3ra/esse/models/models_directory/legacy/unknown.py index b590e09f7..808ee0b5e 100644 --- a/src/py/mat3ra/esse/models/models_directory/legacy/unknown.py +++ b/src/py/mat3ra/esse/models/models_directory/legacy/unknown.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/legacy/unknown.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/mgga.py b/src/py/mat3ra/esse/models/models_directory/mgga.py index ad206bfd5..004077549 100644 --- a/src/py/mat3ra/esse/models/models_directory/mgga.py +++ b/src/py/mat3ra/esse/models/models_directory/mgga.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/mgga.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/models_directory/re.py b/src/py/mat3ra/esse/models/models_directory/re.py index fdd26c572..1499da8f5 100644 --- a/src/py/mat3ra/esse/models/models_directory/re.py +++ b/src/py/mat3ra/esse/models/models_directory/re.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: models_directory/re.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/project.py b/src/py/mat3ra/esse/models/project.py index cb1b9e7d5..c9fac5d98 100644 --- a/src/py/mat3ra/esse/models/project.py +++ b/src/py/mat3ra/esse/models/project.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: project.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/__init__.py b/src/py/mat3ra/esse/models/properties_directory/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/derived_properties.py b/src/py/mat3ra/esse/models/properties_directory/derived_properties.py index 2d9bbb738..24d2fd1a7 100644 --- a/src/py/mat3ra/esse/models/properties_directory/derived_properties.py +++ b/src/py/mat3ra/esse/models/properties_directory/derived_properties.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: properties_directory/derived_properties.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, Union +from typing import List, Optional, Union from pydantic import BaseModel, Field, RootModel, confloat +from typing_extensions import Literal class Name(Enum): @@ -24,30 +25,30 @@ class VolumeSchema(BaseModel): value: float -class Name13(Enum): +class Name193(Enum): density = "density" -class Units15(Enum): +class Units115(Enum): g_cm_3 = "g/cm^3" class DensitySchema(BaseModel): name: Literal["1#-datamodel-code-generator-#-object-#-special-#"] - units: Optional[Units15] = None + units: Optional[Units115] = None value: float -class Units16(Enum): +class Units116(Enum): angstrom = "angstrom" class ScalarSchema(BaseModel): - units: Optional[Units16] = None + units: Optional[Units116] = None value: float -class Name14(Enum): +class Name194(Enum): symmetry = "symmetry" @@ -67,7 +68,7 @@ class SymmetrySchema(BaseModel): name: Literal["2#-datamodel-code-generator-#-object-#-special-#"] -class Name15(Enum): +class Name195(Enum): elemental_ratio = "elemental_ratio" @@ -80,7 +81,7 @@ class ElementalRatio(BaseModel): """ -class Name16(Enum): +class Name196(Enum): p_norm = "p-norm" @@ -93,7 +94,7 @@ class PNorm(BaseModel): value: float -class Name17(Enum): +class Name197(Enum): inchi = "inchi" @@ -102,7 +103,7 @@ class InChIRepresentationSchema(BaseModel): value: str -class Name18(Enum): +class Name198(Enum): inchi_key = "inchi_key" @@ -111,7 +112,7 @@ class InChIKeyRepresentationSchema(BaseModel): value: str -class DerivedPropertiesSchema1( +class DerivedPropertiesSchema( RootModel[ Union[ VolumeSchema, @@ -135,5 +136,5 @@ class DerivedPropertiesSchema1( ] = Field(..., discriminator="name") -class DerivedPropertiesSchema(RootModel[List[DerivedPropertiesSchema1]]): - root: List[DerivedPropertiesSchema1] = Field(..., title="derived properties schema") +class DerivedPropertiesSchema20(RootModel[List[DerivedPropertiesSchema]]): + root: List[DerivedPropertiesSchema] = Field(..., title="derived properties schema") diff --git a/src/py/mat3ra/esse/models/properties_directory/electronic_configuration.py b/src/py/mat3ra/esse/models/properties_directory/electronic_configuration.py index 62be2f436..303940ca9 100644 --- a/src/py/mat3ra/esse/models/properties_directory/electronic_configuration.py +++ b/src/py/mat3ra/esse/models/properties_directory/electronic_configuration.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/electronic_configuration.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/elemental/__init__.py b/src/py/mat3ra/esse/models/properties_directory/elemental/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/elemental/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/elemental/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/elemental/atomic_radius.py b/src/py/mat3ra/esse/models/properties_directory/elemental/atomic_radius.py index 9c200ea0b..131e5d3e9 100644 --- a/src/py/mat3ra/esse/models/properties_directory/elemental/atomic_radius.py +++ b/src/py/mat3ra/esse/models/properties_directory/elemental/atomic_radius.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/elemental/atomic_radius.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/elemental/electronegativity.py b/src/py/mat3ra/esse/models/properties_directory/elemental/electronegativity.py index 5e001830d..98ebe1f28 100644 --- a/src/py/mat3ra/esse/models/properties_directory/elemental/electronegativity.py +++ b/src/py/mat3ra/esse/models/properties_directory/elemental/electronegativity.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/elemental/electronegativity.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/elemental/ionization_potential.py b/src/py/mat3ra/esse/models/properties_directory/elemental/ionization_potential.py index b8e5896cf..b26013b1f 100644 --- a/src/py/mat3ra/esse/models/properties_directory/elemental/ionization_potential.py +++ b/src/py/mat3ra/esse/models/properties_directory/elemental/ionization_potential.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/elemental/ionization_potential.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/__init__.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py index 2389b7eb1..e76dbb939 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/average_potential_profile.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -38,11 +38,11 @@ class AxisSchema(BaseModel): """ -class Label1(Enum): +class Label2(Enum): energy = "energy" -class Units4(Enum): +class Units9(Enum): kJ_mol = "kJ/mol" eV = "eV" J_mol = "J/mol" @@ -53,11 +53,11 @@ class Units4(Enum): class AxisSchema3(BaseModel): - label: Label1 + label: Label2 """ label of an axis object """ - units: Optional[Units4] = None + units: Optional[Units9] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py index 03479d88a..ea3fd2249 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/band_gaps.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_structure.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_structure.py index 5465e6643..0c250df39 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_structure.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/band_structure.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/band_structure.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -30,11 +30,11 @@ class AxisSchema(BaseModel): """ -class Label3(Enum): +class Label4(Enum): energy = "energy" -class Units8(Enum): +class Units13(Enum): kJ_mol = "kJ/mol" eV = "eV" J_mol = "J/mol" @@ -45,11 +45,11 @@ class Units8(Enum): class AxisSchema6(BaseModel): - label: Label3 + label: Label4 """ label of an axis object """ - units: Optional[Units8] = None + units: Optional[Units13] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/charge_density_profile.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/charge_density_profile.py index 0181b3b6e..49959273a 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/charge_density_profile.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/charge_density_profile.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/charge_density_profile.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -25,7 +25,7 @@ class AxisSchema(BaseModel): """ -class Label5(Enum): +class Label8(Enum): charge_density = "charge density" @@ -34,7 +34,7 @@ class Units(Enum): class AxisSchema8(BaseModel): - label: Label5 + label: Label8 """ label of an axis object """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py index b741ac58c..99fbb130e 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/density_of_states.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -35,20 +35,20 @@ class AxisSchema(BaseModel): """ -class Label7(Enum): +class Label27(Enum): density_of_states = "density of states" -class Units13(Enum): +class Units113(Enum): states_unitcell = "states/unitcell" class AxisSchema10(BaseModel): - label: Label7 + label: Label27 """ label of an axis object """ - units: Optional[Units13] = None + units: Optional[Units113] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/dielectric_tensor.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/dielectric_tensor.py index 9d9822535..882036d58 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/dielectric_tensor.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/dielectric_tensor.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/dielectric_tensor.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/file_content.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/file_content.py index 2a7338663..bb4215839 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/file_content.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/file_content.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/file_content.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_u.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_u.py index 44d6be2a3..a128f8bb9 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_u.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_u.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/hubbard_u.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v.py index c5cd9bca4..d80719568 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/hubbard_v.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v_nn.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v_nn.py index 354185341..c3a02c5be 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v_nn.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/hubbard_v_nn.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/hubbard_v_nn.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py index d2d41cb11..126590e22 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/phonon_dispersions.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -30,22 +30,22 @@ class AxisSchema(BaseModel): """ -class Label9(Enum): +class Label31(Enum): frequency = "frequency" -class Units45(Enum): +class Units155(Enum): cm_1 = "cm-1" THz = "THz" meV = "meV" class AxisSchema12(BaseModel): - label: Label9 + label: Label31 """ label of an axis object """ - units: Optional[Units45] = None + units: Optional[Units155] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py index 880de6a2c..0b9b6bf7f 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/phonon_dos.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -31,22 +31,22 @@ class AxisSchema(BaseModel): """ -class Label11(Enum): +class Label33(Enum): Phonon_DOS = "Phonon DOS" -class Units47(Enum): +class Units157(Enum): states_cm_1 = "states/cm-1" states_THz = "states/THz" states_meV = "states/meV" class AxisSchema14(BaseModel): - label: Label11 + label: Label33 """ label of an axis object """ - units: Optional[Units47] = None + units: Optional[Units157] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/potential_profile.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/potential_profile.py index d628b9055..a5b223177 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/potential_profile.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/potential_profile.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/potential_profile.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -25,7 +25,7 @@ class AxisSchema(BaseModel): """ -class Label13(Enum): +class Label36(Enum): energy = "energy" @@ -40,7 +40,7 @@ class Units(Enum): class AxisSchema16(BaseModel): - label: Label13 + label: Label36 """ label of an axis object """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/reaction_energy_profile.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/reaction_energy_profile.py index 6c02d5e3e..51d195fa0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/reaction_energy_profile.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/reaction_energy_profile.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/reaction_energy_profile.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -25,7 +25,7 @@ class AxisSchema(BaseModel): """ -class Label15(Enum): +class Label38(Enum): energy = "energy" @@ -40,7 +40,7 @@ class Units(Enum): class AxisSchema18(BaseModel): - label: Label15 + label: Label38 """ label of an axis object """ diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py index f93dab0c6..04304f621 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py @@ -1,17 +1,17 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/stress_tensor.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Any, List, Optional from pydantic import BaseModel, Field, RootModel -class ArrayOf3NumberElementsSchema(RootModel[List[float]]): - root: List[float] = Field(..., title="array of 3 number elements schema") +class ArrayOf3NumberElementsSchema(RootModel[List[Any]]): + root: List[Any] = Field(..., title="array of 3 number elements schema") class Name(Enum): diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py index bb470a758..b3746e539 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/total_energy_contributions.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -19,115 +19,115 @@ class ScalarSchema(BaseModel): value: float -class Name75(Enum): +class Name354(Enum): harris_foulkes = "harris_foulkes" -class ScalarSchema6(BaseModel): - name: Optional[Name75] = None +class ScalarSchema37(BaseModel): + name: Optional[Name354] = None value: float -class Name76(Enum): +class Name355(Enum): one_electron = "one_electron" -class ScalarSchema7(BaseModel): - name: Optional[Name76] = None +class ScalarSchema38(BaseModel): + name: Optional[Name355] = None value: float -class Name77(Enum): +class Name356(Enum): hartree = "hartree" -class ScalarSchema8(BaseModel): - name: Optional[Name77] = None +class ScalarSchema39(BaseModel): + name: Optional[Name356] = None value: float -class Name78(Enum): +class Name357(Enum): exchange = "exchange" -class ScalarSchema9(BaseModel): - name: Optional[Name78] = None +class ScalarSchema40(BaseModel): + name: Optional[Name357] = None value: float -class Name79(Enum): +class Name358(Enum): exchange_correlation = "exchange_correlation" -class ScalarSchema10(BaseModel): - name: Optional[Name79] = None +class ScalarSchema41(BaseModel): + name: Optional[Name358] = None value: float -class Name80(Enum): +class Name359(Enum): ewald = "ewald" -class ScalarSchema11(BaseModel): - name: Optional[Name80] = None +class ScalarSchema42(BaseModel): + name: Optional[Name359] = None value: float -class Name81(Enum): +class Name360(Enum): alphaZ = "alphaZ" -class ScalarSchema12(BaseModel): - name: Optional[Name81] = None +class ScalarSchema43(BaseModel): + name: Optional[Name360] = None value: float -class Name82(Enum): +class Name361(Enum): atomic_energy = "atomic_energy" -class ScalarSchema13(BaseModel): - name: Optional[Name82] = None +class ScalarSchema44(BaseModel): + name: Optional[Name361] = None value: float -class Name83(Enum): +class Name362(Enum): eigenvalues = "eigenvalues" -class ScalarSchema14(BaseModel): - name: Optional[Name83] = None +class ScalarSchema45(BaseModel): + name: Optional[Name362] = None value: float -class Name84(Enum): +class Name363(Enum): PAW_double_counting_correction_2 = "PAW_double-counting_correction_2" -class ScalarSchema15(BaseModel): - name: Optional[Name84] = None +class ScalarSchema46(BaseModel): + name: Optional[Name363] = None value: float -class Name85(Enum): +class Name364(Enum): PAW_double_counting_correction_3 = "PAW_double-counting_correction_3" -class ScalarSchema16(BaseModel): - name: Optional[Name85] = None +class ScalarSchema47(BaseModel): + name: Optional[Name364] = None value: float -class Name86(Enum): +class Name365(Enum): hartree_fock = "hartree_fock" -class ScalarSchema17(BaseModel): - name: Optional[Name86] = None +class ScalarSchema48(BaseModel): + name: Optional[Name365] = None value: float -class Name87(Enum): +class Name366(Enum): total_energy_contributions = "total_energy_contributions" @@ -146,53 +146,53 @@ class TotalEnergyContributionsSchema(BaseModel): """ product of temperature and configurational entropy """ - harrisFoulkes: Optional[ScalarSchema6] = Field(None, title="scalar schema") + harrisFoulkes: Optional[ScalarSchema37] = Field(None, title="scalar schema") """ non self-consitent energy based on an input charge density """ - oneElectron: Optional[ScalarSchema7] = Field(None, title="scalar schema") + oneElectron: Optional[ScalarSchema38] = Field(None, title="scalar schema") """ kinetic + pseudopotential energy """ - hartree: Optional[ScalarSchema8] = Field(None, title="scalar schema") + hartree: Optional[ScalarSchema39] = Field(None, title="scalar schema") """ energy due to coulomb potential """ - exchange: Optional[ScalarSchema9] = Field(None, title="scalar schema") + exchange: Optional[ScalarSchema40] = Field(None, title="scalar schema") """ exchange energy """ - exchangeCorrelation: Optional[ScalarSchema10] = Field(None, title="scalar schema") + exchangeCorrelation: Optional[ScalarSchema41] = Field(None, title="scalar schema") """ exchange and correlation energy per particle """ - ewald: Optional[ScalarSchema11] = Field(None, title="scalar schema") + ewald: Optional[ScalarSchema42] = Field(None, title="scalar schema") """ summation of interaction energies at long length scales due to coloumbic interactions """ - alphaZ: Optional[ScalarSchema12] = Field(None, title="scalar schema") + alphaZ: Optional[ScalarSchema43] = Field(None, title="scalar schema") """ divergent electrostatic ion interaction in compensating electron gas """ - atomicEnergy: Optional[ScalarSchema13] = Field(None, title="scalar schema") + atomicEnergy: Optional[ScalarSchema44] = Field(None, title="scalar schema") """ kinetic energy of wavefunctions in the atomic limit """ - eigenvalues: Optional[ScalarSchema14] = Field(None, title="scalar schema") + eigenvalues: Optional[ScalarSchema45] = Field(None, title="scalar schema") """ sum of one electron energies of kinetic, electrostatic, and exchange correlation """ - PAWDoubleCounting2: Optional[ScalarSchema15] = Field(None, title="scalar schema") + PAWDoubleCounting2: Optional[ScalarSchema46] = Field(None, title="scalar schema") """ double counting correction 2 """ - PAWDoubleCounting3: Optional[ScalarSchema16] = Field(None, title="scalar schema") + PAWDoubleCounting3: Optional[ScalarSchema47] = Field(None, title="scalar schema") """ double counting correction 3 """ - hartreeFock: Optional[ScalarSchema17] = Field(None, title="scalar schema") + hartreeFock: Optional[ScalarSchema48] = Field(None, title="scalar schema") """ hartree-fock contribution """ - name: Optional[Name87] = None + name: Optional[Name366] = None units: Optional[Units] = None diff --git a/src/py/mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py b/src/py/mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py index e347cb992..727fafa0f 100644 --- a/src/py/mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +++ b/src/py/mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/non_scalar/vibrational_spectrum.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -32,13 +32,13 @@ class AxisSchema(BaseModel): """ -class Label17(Enum): +class Label48(Enum): Intensity = "Intensity" Absorbance = "Absorbance" Absorption_coefficient = "Absorption coefficient" -class Units64(Enum): +class Units219(Enum): field_debye_angstrom__2 = "(debye/angstrom)^2" km_mol = "km/mol" m_mol = "m/mol" @@ -46,11 +46,11 @@ class Units64(Enum): class AxisSchema20(BaseModel): - label: Label17 + label: Label48 """ label of an axis object """ - units: Optional[Units64] = None + units: Optional[Units219] = None """ units for an axis """ diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/__init__.py b/src/py/mat3ra/esse/models/properties_directory/scalar/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/electron_affinity.py b/src/py/mat3ra/esse/models/properties_directory/scalar/electron_affinity.py index 42563212d..34d24a365 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/electron_affinity.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/electron_affinity.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units18(Enum): +class Units118(Enum): eV_A_2 = "eV/A^2" class ElectronAffinitySchema(BaseModel): name: Name - units: Union[Units, Units18] + units: Union[Units, Units118] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/fermi_energy.py b/src/py/mat3ra/esse/models/properties_directory/scalar/fermi_energy.py index 542da5f7e..35c741c40 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/fermi_energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/fermi_energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units25(Enum): +class Units125(Enum): eV_A_2 = "eV/A^2" class FermiEnergySchema(BaseModel): name: Name - units: Union[Units, Units25] + units: Union[Units, Units125] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/formation_energy.py b/src/py/mat3ra/esse/models/properties_directory/scalar/formation_energy.py index 4143aaada..00639673c 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/formation_energy.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/formation_energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/formation_energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units27(Enum): +class Units127(Enum): eV_A_2 = "eV/A^2" class FormationEnergySchema(BaseModel): name: Name - units: Union[Units, Units27] + units: Union[Units, Units127] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/ionization_potential.py b/src/py/mat3ra/esse/models/properties_directory/scalar/ionization_potential.py index 79f64ee87..94585c6f5 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/ionization_potential.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/ionization_potential.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units35(Enum): +class Units135(Enum): eV_A_2 = "eV/A^2" class IonizationPotentialSchema(BaseModel): name: Name - units: Union[Units, Units35] + units: Union[Units, Units135] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/pressure.py b/src/py/mat3ra/esse/models/properties_directory/scalar/pressure.py index 471fd50fb..9679ef290 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/pressure.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/pressure.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/pressure.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py b/src/py/mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py index 89141d4e2..602ed0fc8 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/reaction_energy_barrier.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units51(Enum): +class Units166(Enum): eV_A_2 = "eV/A^2" class ReactionEnergyBarrierSchema(BaseModel): name: Name - units: Union[Units, Units51] + units: Union[Units, Units166] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/surface_energy.py b/src/py/mat3ra/esse/models/properties_directory/scalar/surface_energy.py index 802d0260f..86076c9c7 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/surface_energy.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/surface_energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/surface_energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units55(Enum): +class Units195(Enum): eV_A_2 = "eV/A^2" class SurfaceEnergySchema(BaseModel): name: Name - units: Union[Units, Units55] + units: Union[Units, Units195] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/total_energy.py b/src/py/mat3ra/esse/models/properties_directory/scalar/total_energy.py index 0af495163..a7d0a0c9b 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/total_energy.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/total_energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/total_energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units58(Enum): +class Units213(Enum): eV_A_2 = "eV/A^2" class TotalEnergySchema(BaseModel): name: Name - units: Union[Units, Units58] + units: Union[Units, Units213] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/total_force.py b/src/py/mat3ra/esse/models/properties_directory/scalar/total_force.py index de62a6f88..1f176ddbc 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/total_force.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/total_force.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/total_force.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py b/src/py/mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py index ac50a9b47..cd53ec6ef 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/valence_band_offset.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units62(Enum): +class Units217(Enum): eV_A_2 = "eV/A^2" class ValenceBandOffsetSchema(BaseModel): name: Name - units: Union[Units, Units62] + units: Union[Units, Units217] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py b/src/py/mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py index 5b94c6cd4..7696477b2 100644 --- a/src/py/mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +++ b/src/py/mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/scalar/zero_point_energy.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -24,11 +24,11 @@ class Units(Enum): eV_atom = "eV/atom" -class Units67(Enum): +class Units222(Enum): eV_A_2 = "eV/A^2" class ZeroPointEnergySchema(BaseModel): name: Name - units: Union[Units, Units67] + units: Union[Units, Units222] value: float diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/__init__.py b/src/py/mat3ra/esse/models/properties_directory/structural/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/atomic_forces.py b/src/py/mat3ra/esse/models/properties_directory/structural/atomic_forces.py index 91aa61bdb..c56b5bc6e 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/atomic_forces.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/atomic_forces.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/atomic_forces.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/__init__.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/__init__.py index a4385cbd8..878c180a7 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py index 59497750c..6028dd547 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/atomic_constraints.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py index bd8d020fd..46f2338dc 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/atomic_coordinate.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py index be478ff5c..7a500041a 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/atomic_coordinates.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py index 5e227978a..eb345f10f 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/atomic_element.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py index ba75da5ea..bc8287c84 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/atomic_label.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/basis/bonds.py b/src/py/mat3ra/esse/models/properties_directory/structural/basis/bonds.py index a59e69b76..b8d905d6e 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/basis/bonds.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/basis/bonds.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/basis/bonds.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/density.py b/src/py/mat3ra/esse/models/properties_directory/structural/density.py index 2f55c455f..5f45cf947 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/density.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/density.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/density.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/elemental_ratio.py b/src/py/mat3ra/esse/models/properties_directory/structural/elemental_ratio.py index 361a46ef4..dd847a6b1 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/elemental_ratio.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/elemental_ratio.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/elemental_ratio.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/inchi.py b/src/py/mat3ra/esse/models/properties_directory/structural/inchi.py index 27adce072..96530bdbc 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/inchi.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/inchi.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/inchi.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/inchi_key.py b/src/py/mat3ra/esse/models/properties_directory/structural/inchi_key.py index ed763cec0..d08a538dc 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/inchi_key.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/inchi_key.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/inchi_key.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/__init__.py b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/__init__.py index 928493f9c..773026964 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/lattice.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_bravais.py b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_bravais.py index 9da7d28f1..30d8d08e7 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_bravais.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_bravais.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/lattice/lattice_bravais.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py index 5940de127..7b79e07f5 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/lattice/lattice_vectors.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_enum.py b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_enum.py index 16cb2dd8e..9e1a0731d 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_enum.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_enum.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/lattice/type_enum.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_extended_enum.py b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_extended_enum.py index 1e55db812..ea6115f94 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_extended_enum.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/lattice/type_extended_enum.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/lattice/type_extended_enum.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/magnetic_moments.py b/src/py/mat3ra/esse/models/properties_directory/structural/magnetic_moments.py index 9cba15ddb..2c761a36b 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/magnetic_moments.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/magnetic_moments.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/magnetic_moments.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/molecular_pattern.py b/src/py/mat3ra/esse/models/properties_directory/structural/molecular_pattern.py index a737f95e8..2792bd6a7 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/molecular_pattern.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/molecular_pattern.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -37,12 +37,12 @@ class FunctionalGroupPatternSchema(BaseModel): """ -class Name55(Enum): +class Name244(Enum): ring = "ring" class RingPatternSchema(BaseModel): - name: Optional[Name55] = None + name: Optional[Name244] = None atoms: Optional[List[AtomicId]] = Field(None, title="atomic ids") """ array of objects containing integer id each @@ -50,12 +50,12 @@ class RingPatternSchema(BaseModel): isAromatic: Optional[bool] = None -class Name56(Enum): +class Name245(Enum): special_bond = "special_bond" class SpecialBondPatternSchema(BaseModel): - name: Optional[Name56] = None + name: Optional[Name245] = None atoms: Optional[List[AtomicId]] = Field(None, title="atomic ids") """ array of objects containing integer id each diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/p_norm.py b/src/py/mat3ra/esse/models/properties_directory/structural/p_norm.py index 2673873e3..13d972f4f 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/p_norm.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/p_norm.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/p_norm.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/__init__.py b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py index 9c6375d2c..6c9e6fcb5 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/patterns/functional_group.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/ring.py b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/ring.py index b59abb5d8..b3ba11b39 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/ring.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/ring.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/patterns/ring.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py index 2d63cf30c..3110016a9 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/patterns/special_bond.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/symmetry.py b/src/py/mat3ra/esse/models/properties_directory/structural/symmetry.py index 1474e02ec..3b9d14e73 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/symmetry.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/symmetry.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/symmetry.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/structural/volume.py b/src/py/mat3ra/esse/models/properties_directory/structural/volume.py index 05630d885..7de641785 100644 --- a/src/py/mat3ra/esse/models/properties_directory/structural/volume.py +++ b/src/py/mat3ra/esse/models/properties_directory/structural/volume.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/structural/volume.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/__init__.py b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/__init__.py +++ b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/electronic.py b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/electronic.py index b42d78bbc..49290d9a8 100644 --- a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/electronic.py +++ b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/electronic.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/workflow/convergence/electronic.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py index 0c8d20412..828c01538 100644 --- a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +++ b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/workflow/convergence/ionic.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -18,14 +18,14 @@ class Units(Enum): eV = "eV" -class Units32(Enum): +class Units132(Enum): eV = "eV" rydberg = "rydberg" hartree = "hartree" class Electronic(BaseModel): - units: Optional[Units32] = None + units: Optional[Units132] = None """ units for force tolerance """ diff --git a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/kpoint.py b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/kpoint.py index d34e2a251..9ae707f59 100644 --- a/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/kpoint.py +++ b/src/py/mat3ra/esse/models/properties_directory/workflow/convergence/kpoint.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: properties_directory/workflow/convergence/kpoint.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/__init__.py b/src/py/mat3ra/esse/models/property/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/property/__init__.py +++ b/src/py/mat3ra/esse/models/property/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/__init__.py b/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/__init__.py +++ b/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py b/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py index e964b087d..6517b7367 100644 --- a/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py +++ b/src/py/mat3ra/esse/models/property/base/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: property/base.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/__init__.py b/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/__init__.py +++ b/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py b/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py index e0a9cf12f..91262c12b 100644 --- a/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py +++ b/src/py/mat3ra/esse/models/property/meta/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: property/meta.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/__init__.py b/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/__init__.py +++ b/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py b/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py index 1bab29028..3f7e810d0 100644 --- a/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py +++ b/src/py/mat3ra/esse/models/property/raw/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: property/raw.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/__init__.py b/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/__init__.py +++ b/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py b/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py index 02bd84de4..e4fda2341 100644 --- a/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py +++ b/src/py/mat3ra/esse/models/property/source/The_source_of_a_property/field_This_could_be_an_article__a_simulation_on_Exabyte__an_external_simulation__etc.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: property/source.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/reusable/material/__init__.py b/src/py/mat3ra/esse/models/reusable/material/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/__init__.py b/src/py/mat3ra/esse/models/reusable/material/slab/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/enums.py b/src/py/mat3ra/esse/models/reusable/material/slab/enums.py new file mode 100644 index 000000000..f6f5f1994 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/enums.py @@ -0,0 +1,13 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/enums.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Any + +from pydantic import RootModel + + +class ESSE(RootModel[Any]): + root: Any diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/miller_indices.py b/src/py/mat3ra/esse/models/reusable/material/slab/miller_indices.py new file mode 100644 index 000000000..8c48dbbb9 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/miller_indices.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/miller_indices.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import List, Optional, Union + +from pydantic import Field, RootModel + + +class ESSE(RootModel[Optional[Union[List[float], List[bool]]]]): + root: Optional[Union[List[float], List[bool]]] = Field([0, 0, 1], title="Miller Indices Schema") + """ + Miller indices for crystallographic plane designation + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/repetitions.py b/src/py/mat3ra/esse/models/reusable/material/slab/repetitions.py new file mode 100644 index 000000000..0903af065 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/repetitions.py @@ -0,0 +1,25 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/repetitions.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import List, Optional + +from pydantic import Field, RootModel, conint + + +class CrystalRepetitionsSchemaItem(RootModel[conint(ge=1)]): + root: conint(ge=1) + + +class CrystalRepetitionsSchema(RootModel[Optional[List[CrystalRepetitionsSchemaItem]]]): + root: Optional[List[CrystalRepetitionsSchemaItem]] = Field( + default_factory=lambda: [CrystalRepetitionsSchemaItem.model_validate(v) for v in [1, 1, 1]], + max_length=3, + min_length=3, + title="Crystal Repetitions Schema", + ) + """ + Number of unit cells to repeat in each direction for a crystal structure + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/termination.py b/src/py/mat3ra/esse/models/reusable/material/slab/termination.py new file mode 100644 index 000000000..7fe1b7a2c --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/termination.py @@ -0,0 +1,18 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/termination.json +# version: 0.25.5 + +from __future__ import annotations + +from pydantic import BaseModel, Field + + +class TerminationSchema(BaseModel): + chemical_elements: str = Field(..., title="Chemical Elements") + """ + Chemical elements at the termination + """ + space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label") + """ + Space group symmetry designation for the termination + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/thickness.py b/src/py/mat3ra/esse/models/reusable/material/slab/thickness.py new file mode 100644 index 000000000..278cc27ed --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/thickness.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/thickness.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import Field, RootModel, conint + + +class ThicknessSchema(RootModel[Optional[conint(ge=1)]]): + root: Optional[conint(ge=1)] = Field(1, title="Thickness Schema") + """ + Number of atomic layers in a structural component + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/slab/vacuum.py b/src/py/mat3ra/esse/models/reusable/material/slab/vacuum.py new file mode 100644 index 000000000..82508fdf6 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/slab/vacuum.py @@ -0,0 +1,16 @@ +# generated by datamodel-codegen: +# filename: reusable/material/slab/vacuum.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Optional + +from pydantic import Field, RootModel, confloat + + +class VacuumSchema(RootModel[Optional[confloat(ge=0.0)]]): + root: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Schema") + """ + Vacuum thickness in Angstroms + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_2d.py b/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_2d.py new file mode 100644 index 000000000..4f7157a04 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_2d.py @@ -0,0 +1,25 @@ +# generated by datamodel-codegen: +# filename: reusable/material/supercell_matrix_2d.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Any, List, Optional + +from pydantic import Field, RootModel + + +class SupercellMatrix2DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class SupercellMatrix2DSchema(RootModel[Optional[List[SupercellMatrix2DSchemaItem]]]): + root: Optional[List[SupercellMatrix2DSchemaItem]] = Field( + default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]], + max_length=2, + min_length=2, + title="Supercell Matrix 2D Schema", + ) + """ + Supercell matrix for xy plane transformations + """ diff --git a/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_3d.py b/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_3d.py new file mode 100644 index 000000000..c5f3658a1 --- /dev/null +++ b/src/py/mat3ra/esse/models/reusable/material/supercell_matrix_3d.py @@ -0,0 +1,27 @@ +# generated by datamodel-codegen: +# filename: reusable/material/supercell_matrix_3d.json +# version: 0.25.5 + +from __future__ import annotations + +from typing import Any, List, Optional + +from pydantic import Field, RootModel + + +class SupercellMatrix3DSchemaItem(RootModel[List[Any]]): + root: List[Any] + + +class SupercellMatrix3DSchema(RootModel[Optional[List[SupercellMatrix3DSchemaItem]]]): + root: Optional[List[SupercellMatrix3DSchemaItem]] = Field( + default_factory=lambda: [ + SupercellMatrix3DSchemaItem.model_validate(v) for v in [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + ], + max_length=3, + min_length=3, + title="Supercell Matrix 3D Schema", + ) + """ + 3x3 matrix of integers for transforming a unit cell into a supercell + """ diff --git a/src/py/mat3ra/esse/models/software/__init__.py b/src/py/mat3ra/esse/models/software/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software/__init__.py +++ b/src/py/mat3ra/esse/models/software/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software/application.py b/src/py/mat3ra/esse/models/software/application.py index 28e12dcae..3f161f846 100644 --- a/src/py/mat3ra/esse/models/software/application.py +++ b/src/py/mat3ra/esse/models/software/application.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software/application.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software/executable.py b/src/py/mat3ra/esse/models/software/executable.py index d0b4d32ea..97797e3d3 100644 --- a/src/py/mat3ra/esse/models/software/executable.py +++ b/src/py/mat3ra/esse/models/software/executable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software/executable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software/flavor.py b/src/py/mat3ra/esse/models/software/flavor.py index aafeb95a7..554a1b3e2 100644 --- a/src/py/mat3ra/esse/models/software/flavor.py +++ b/src/py/mat3ra/esse/models/software/flavor.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software/flavor.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software/template.py b/src/py/mat3ra/esse/models/software/template.py index 59d2174ce..57bd19abf 100644 --- a/src/py/mat3ra/esse/models/software/template.py +++ b/src/py/mat3ra/esse/models/software/template.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software/template.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/ml/exabyteml.py b/src/py/mat3ra/esse/models/software_directory/ml/exabyteml.py index 9a3c49471..89340698e 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/exabyteml.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/exabyteml.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/exabyteml.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/__init__.py index 435d3f6a5..fa7a4dc3b 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/execution.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/__init__.py index 1f5385052..ea61d81d8 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/__init__.py @@ -1,3 +1,5 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 + +from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/cross_validate.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/cross_validate.py index 9e735a9aa..8d78b9db3 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/cross_validate.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/cross_validate.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/execution/evaluate/cross_validate.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/initialize.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/initialize.py index c9d8e6ded..5cad75966 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/initialize.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/initialize.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/execution/initialize.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/score.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/score.py index c8808d954..99c10c556 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/score.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/score.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/execution/score.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/train.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/train.py index 9112531a7..beb0e31e4 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/train.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/execution/train.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/execution/train.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/__init__.py index 745075e47..29ae2bea7 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/__init__.py index f3fed6cce..a6b55a42c 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing/data_transformation.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/manipulation.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/manipulation.py index dc9cba998..e38c13c4b 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/manipulation.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/manipulation.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing/data_transformation/manipulation.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/scale_and_reduce.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/scale_and_reduce.py index 764aa05b2..495abd34f 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/scale_and_reduce.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/data_transformation/scale_and_reduce.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing/data_transformation/scale_and_reduce.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/__init__.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/__init__.py index df3ea7160..7938ef0a9 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing/feature_selection.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/filter_based.py b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/filter_based.py index 38def86cb..5526e01fe 100644 --- a/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/filter_based.py +++ b/src/py/mat3ra/esse/models/software_directory/ml/unit/processing/feature_selection/filter_based.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/ml/unit/processing/feature_selection/filter_based.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/__init__.py b/src/py/mat3ra/esse/models/software_directory/modeling/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/deepmd.py b/src/py/mat3ra/esse/models/software_directory/modeling/deepmd.py index ba5a8ddbc..b58bfc4f4 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/deepmd.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/deepmd.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/deepmd.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/espresso/__init__.py b/src/py/mat3ra/esse/models/software_directory/modeling/espresso/__init__.py index 87ae9d341..deec534b3 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/espresso/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/espresso/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/espresso.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/espresso/arguments.py b/src/py/mat3ra/esse/models/software_directory/modeling/espresso/arguments.py index a12eb5475..01d15c69c 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/espresso/arguments.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/espresso/arguments.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/espresso/arguments.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/nwchem.py b/src/py/mat3ra/esse/models/software_directory/modeling/nwchem.py index c2be6c3cd..65bf16620 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/nwchem.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/nwchem.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/nwchem.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/unit/__init__.py b/src/py/mat3ra/esse/models/software_directory/modeling/unit/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/unit/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/unit/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/unit/execution.py b/src/py/mat3ra/esse/models/software_directory/modeling/unit/execution.py index 900489ede..cb3623ae3 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/unit/execution.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/unit/execution.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/unit/execution.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/modeling/vasp.py b/src/py/mat3ra/esse/models/software_directory/modeling/vasp.py index 4d053a925..45a9712f3 100644 --- a/src/py/mat3ra/esse/models/software_directory/modeling/vasp.py +++ b/src/py/mat3ra/esse/models/software_directory/modeling/vasp.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/modeling/vasp.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/__init__.py b/src/py/mat3ra/esse/models/software_directory/scripting/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/jupyter_lab.py b/src/py/mat3ra/esse/models/software_directory/scripting/jupyter_lab.py index 77a9d5964..e3ca39c57 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/jupyter_lab.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/jupyter_lab.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/scripting/jupyter_lab.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/python.py b/src/py/mat3ra/esse/models/software_directory/scripting/python.py index ea36ed9eb..f71fd120c 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/python.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/python.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/scripting/python.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/shell.py b/src/py/mat3ra/esse/models/software_directory/scripting/shell.py index 73a355653..89fdc2492 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/shell.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/shell.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/scripting/shell.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/unit/__init__.py b/src/py/mat3ra/esse/models/software_directory/scripting/unit/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/unit/__init__.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/unit/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/software_directory/scripting/unit/execution.py b/src/py/mat3ra/esse/models/software_directory/scripting/unit/execution.py index 83081d5fd..8970cd1e5 100644 --- a/src/py/mat3ra/esse/models/software_directory/scripting/unit/execution.py +++ b/src/py/mat3ra/esse/models/software_directory/scripting/unit/execution.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: software_directory/scripting/unit/execution.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/__init__.py b/src/py/mat3ra/esse/models/system/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/system/__init__.py +++ b/src/py/mat3ra/esse/models/system/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/system/_material.py b/src/py/mat3ra/esse/models/system/_material.py index f79fbf3ad..e310ef19c 100644 --- a/src/py/mat3ra/esse/models/system/_material.py +++ b/src/py/mat3ra/esse/models/system/_material.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/_material.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/_parent_job.py b/src/py/mat3ra/esse/models/system/_parent_job.py index 9270b0f8d..6588105d5 100644 --- a/src/py/mat3ra/esse/models/system/_parent_job.py +++ b/src/py/mat3ra/esse/models/system/_parent_job.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/_parent_job.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/_project.py b/src/py/mat3ra/esse/models/system/_project.py index c7a0e53fb..93c233f87 100644 --- a/src/py/mat3ra/esse/models/system/_project.py +++ b/src/py/mat3ra/esse/models/system/_project.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/_project.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/bankable.py b/src/py/mat3ra/esse/models/system/bankable.py index b8c9cc5f5..9b624b847 100644 --- a/src/py/mat3ra/esse/models/system/bankable.py +++ b/src/py/mat3ra/esse/models/system/bankable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/bankable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/consistency_check.py b/src/py/mat3ra/esse/models/system/consistency_check.py index 6fea57979..c348d27f6 100644 --- a/src/py/mat3ra/esse/models/system/consistency_check.py +++ b/src/py/mat3ra/esse/models/system/consistency_check.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/consistency_check.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/creator.py b/src/py/mat3ra/esse/models/system/creator.py index 7928e4414..f68dcf823 100644 --- a/src/py/mat3ra/esse/models/system/creator.py +++ b/src/py/mat3ra/esse/models/system/creator.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/creator.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/creator_account.py b/src/py/mat3ra/esse/models/system/creator_account.py index 9f1df7416..9dc21949c 100644 --- a/src/py/mat3ra/esse/models/system/creator_account.py +++ b/src/py/mat3ra/esse/models/system/creator_account.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/creator_account.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/database_source.py b/src/py/mat3ra/esse/models/system/database_source.py index b7fbbe18b..62e30e855 100644 --- a/src/py/mat3ra/esse/models/system/database_source.py +++ b/src/py/mat3ra/esse/models/system/database_source.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/database_source.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/defaultable.py b/src/py/mat3ra/esse/models/system/defaultable.py index 541ffbbd7..c6799b639 100644 --- a/src/py/mat3ra/esse/models/system/defaultable.py +++ b/src/py/mat3ra/esse/models/system/defaultable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/defaultable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/description.py b/src/py/mat3ra/esse/models/system/description.py index e4f9e6d9d..251e7e9b4 100644 --- a/src/py/mat3ra/esse/models/system/description.py +++ b/src/py/mat3ra/esse/models/system/description.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/description.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/entity_reference.py b/src/py/mat3ra/esse/models/system/entity_reference.py index 0f74693ba..76341b031 100644 --- a/src/py/mat3ra/esse/models/system/entity_reference.py +++ b/src/py/mat3ra/esse/models/system/entity_reference.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/entity_reference.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/file_source.py b/src/py/mat3ra/esse/models/system/file_source.py index 8e88767bc..aaab63b36 100644 --- a/src/py/mat3ra/esse/models/system/file_source.py +++ b/src/py/mat3ra/esse/models/system/file_source.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/file_source.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/has_consistency_check.py b/src/py/mat3ra/esse/models/system/has_consistency_check.py index 9326d7870..376dd33d1 100644 --- a/src/py/mat3ra/esse/models/system/has_consistency_check.py +++ b/src/py/mat3ra/esse/models/system/has_consistency_check.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/has_consistency_check.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/history.py b/src/py/mat3ra/esse/models/system/history.py index 47093050a..88beb5a72 100644 --- a/src/py/mat3ra/esse/models/system/history.py +++ b/src/py/mat3ra/esse/models/system/history.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/history.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/iframe_message.py b/src/py/mat3ra/esse/models/system/iframe_message.py index 3d3191bbb..807b73c8e 100644 --- a/src/py/mat3ra/esse/models/system/iframe_message.py +++ b/src/py/mat3ra/esse/models/system/iframe_message.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/iframe_message.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/in_set.py b/src/py/mat3ra/esse/models/system/in_set.py index dd5f26115..62bf16d07 100644 --- a/src/py/mat3ra/esse/models/system/in_set.py +++ b/src/py/mat3ra/esse/models/system/in_set.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/in_set.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/is_multi_material.py b/src/py/mat3ra/esse/models/system/is_multi_material.py index fadab66ea..bc4ea903f 100644 --- a/src/py/mat3ra/esse/models/system/is_multi_material.py +++ b/src/py/mat3ra/esse/models/system/is_multi_material.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/is_multi_material.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/is_outdated.py b/src/py/mat3ra/esse/models/system/is_outdated.py index a54b2e327..1c4fd77cb 100644 --- a/src/py/mat3ra/esse/models/system/is_outdated.py +++ b/src/py/mat3ra/esse/models/system/is_outdated.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/is_outdated.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/job_extended.py b/src/py/mat3ra/esse/models/system/job_extended.py index 048337e3c..778ff19b0 100644 --- a/src/py/mat3ra/esse/models/system/job_extended.py +++ b/src/py/mat3ra/esse/models/system/job_extended.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/job_extended.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/message.py b/src/py/mat3ra/esse/models/system/message.py index dd2b9707a..9f67b8541 100644 --- a/src/py/mat3ra/esse/models/system/message.py +++ b/src/py/mat3ra/esse/models/system/message.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/message.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/metadata.py b/src/py/mat3ra/esse/models/system/metadata.py index 15b53eefb..f04d57658 100644 --- a/src/py/mat3ra/esse/models/system/metadata.py +++ b/src/py/mat3ra/esse/models/system/metadata.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/metadata.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/name.py b/src/py/mat3ra/esse/models/system/name.py index e55c9b8b5..5e5837e66 100644 --- a/src/py/mat3ra/esse/models/system/name.py +++ b/src/py/mat3ra/esse/models/system/name.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/name.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/owner.py b/src/py/mat3ra/esse/models/system/owner.py index 2e206257d..7918904bc 100644 --- a/src/py/mat3ra/esse/models/system/owner.py +++ b/src/py/mat3ra/esse/models/system/owner.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/owner.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/path.py b/src/py/mat3ra/esse/models/system/path.py index 13e86c32b..76d057585 100644 --- a/src/py/mat3ra/esse/models/system/path.py +++ b/src/py/mat3ra/esse/models/system/path.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/path.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/path_entity.py b/src/py/mat3ra/esse/models/system/path_entity.py index 9fe00aaa9..c0b91a840 100644 --- a/src/py/mat3ra/esse/models/system/path_entity.py +++ b/src/py/mat3ra/esse/models/system/path_entity.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/path_entity.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/schema_version.py b/src/py/mat3ra/esse/models/system/schema_version.py index a8f36da1e..b4a3e4f62 100644 --- a/src/py/mat3ra/esse/models/system/schema_version.py +++ b/src/py/mat3ra/esse/models/system/schema_version.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/schema_version.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/scope.py b/src/py/mat3ra/esse/models/system/scope.py index f993fd3ac..62a924e84 100644 --- a/src/py/mat3ra/esse/models/system/scope.py +++ b/src/py/mat3ra/esse/models/system/scope.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/scope.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/set.py b/src/py/mat3ra/esse/models/system/set.py index 21597c5a4..0add59ce5 100644 --- a/src/py/mat3ra/esse/models/system/set.py +++ b/src/py/mat3ra/esse/models/system/set.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/set.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/sharing.py b/src/py/mat3ra/esse/models/system/sharing.py index 300402aae..e9c163453 100644 --- a/src/py/mat3ra/esse/models/system/sharing.py +++ b/src/py/mat3ra/esse/models/system/sharing.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/sharing.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/soft_removable.py b/src/py/mat3ra/esse/models/system/soft_removable.py index 5314b3023..de4eae2e8 100644 --- a/src/py/mat3ra/esse/models/system/soft_removable.py +++ b/src/py/mat3ra/esse/models/system/soft_removable.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/soft_removable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/status.py b/src/py/mat3ra/esse/models/system/status.py index b97ad5c78..e95a7b491 100644 --- a/src/py/mat3ra/esse/models/system/status.py +++ b/src/py/mat3ra/esse/models/system/status.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/status.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/tags.py b/src/py/mat3ra/esse/models/system/tags.py index c9c8087a1..138ec4993 100644 --- a/src/py/mat3ra/esse/models/system/tags.py +++ b/src/py/mat3ra/esse/models/system/tags.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/tags.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/system/timestampable.py b/src/py/mat3ra/esse/models/system/timestampable.py index 297ffd85e..4168a068d 100644 --- a/src/py/mat3ra/esse/models/system/timestampable.py +++ b/src/py/mat3ra/esse/models/system/timestampable.py @@ -1,21 +1,20 @@ # generated by datamodel-codegen: # filename: system/timestampable.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations -from datetime import datetime from typing import Optional -from pydantic import BaseModel +from pydantic import AwareDatetime, BaseModel class TimestampableEntitySchema(BaseModel): - createdAt: Optional[datetime] = None + createdAt: Optional[AwareDatetime] = None """ entity creation time """ - updatedAt: Optional[datetime] = None + updatedAt: Optional[AwareDatetime] = None """ entity last modification time """ diff --git a/src/py/mat3ra/esse/models/system/use_values.py b/src/py/mat3ra/esse/models/system/use_values.py index 771bbcba1..7f465e2fb 100644 --- a/src/py/mat3ra/esse/models/system/use_values.py +++ b/src/py/mat3ra/esse/models/system/use_values.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: system/use_values.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/__init__.py b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/__init__.py new file mode 100644 index 000000000..074bbb9d0 --- /dev/null +++ b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/__init__.py @@ -0,0 +1,3 @@ +# generated by datamodel-codegen: +# filename: schema +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/atoms.py b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/atoms.py similarity index 86% rename from src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/atoms.py rename to src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/atoms.py index a00875d9a..e2d681738 100644 --- a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/atoms.py +++ b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/atoms.py @@ -1,16 +1,16 @@ # generated by datamodel-codegen: # filename: 3pse/db/nist_jarvis/2024.3.13/atoms.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations -from typing import List, Optional +from typing import Any, List, Optional from pydantic import BaseModel, ConfigDict, Field, RootModel -class ArrayOf3NumberElementsSchema(RootModel[List[float]]): - root: List[float] = Field(..., title="array of 3 number elements schema") +class ArrayOf3NumberElementsSchema(RootModel[List[Any]]): + root: List[Any] = Field(..., title="array of 3 number elements schema") class NISTJARVISAtomsSchema(BaseModel): diff --git a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/db_entry.py b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/db_entry.py similarity index 89% rename from src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/db_entry.py rename to src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/db_entry.py index 5f83b889f..a273f07fb 100644 --- a/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024_3.13/db_entry.py +++ b/src/py/mat3ra/esse/models/third_party/db/nist_jarvis/2024.3.13/db_entry.py @@ -1,16 +1,16 @@ # generated by datamodel-codegen: # filename: 3pse/db/nist_jarvis/2024.3.13/db_entry.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations -from typing import List, Optional +from typing import Any, List, Optional from pydantic import BaseModel, ConfigDict, Field, RootModel -class ArrayOf3NumberElementsSchema(RootModel[List[float]]): - root: List[float] = Field(..., title="array of 3 number elements schema") +class ArrayOf3NumberElementsSchema(RootModel[List[Any]]): + root: List[Any] = Field(..., title="array of 3 number elements schema") class NISTJARVISAtomsSchema(BaseModel): diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/__init__.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/__init__.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/__init__.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/__init__.py index 1f5385052..6f4fc34ef 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/__init__.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/__init__.py @@ -1,3 +1,1990 @@ # generated by datamodel-codegen: -# filename: schema -# version: 0.28.5 +# filename: 3pse/file/applications/espresso/7.2/pw.x.json +# version: 0.25.5 + +from __future__ import annotations + +from enum import Enum +from typing import List, Optional, Union + +from pydantic import BaseModel, ConfigDict, Field, RootModel, confloat, conint + + +class Calculation(Enum): + scf = "scf" + nscf = "nscf" + bands = "bands" + relax = "relax" + md = "md" + vc_relax = "vc-relax" + vc_md = "vc-md" + + +class Verbosity(Enum): + high = "high" + low = "low" + debug = "debug" + medium = "medium" + minimal = "minimal" + default = "default" + + +class RestartMode(Enum): + from_scratch = "from_scratch" + restart = "restart" + + +class DiskIo(Enum): + high = "high" + medium = "medium" + low = "low" + nowf = "nowf" + none = "none" + + +class ControlSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + calculation: Optional[Calculation] = "scf" + """ + A string describing the task to be performed + """ + title: Optional[str] = "" + """ + reprinted on output. + """ + verbosity: Optional[Verbosity] = "low" + """ + Currently two verbosity levels are implemented: high, low. 'debug' and 'medium' have the same effect as 'high'; 'default' and 'minimal' as 'low' + """ + restart_mode: Optional[RestartMode] = "from_scratch" + wf_collect: Optional[bool] = None + """ + OBSOLETE - NO LONGER IMPLEMENTED + """ + nstep: Optional[float] = 1 + """ + Default: 1 if calculation == 'scf', 'nscf', 'bands'; 50 for the other cases; Number of molecular-dynamics or structural optimization steps performed in this run. If set to 0, the code performs a quick "dry run", stopping just after initialization. This is useful to check for input correctness and to have the summary printed. NOTE: in MD calculations, the code will perform "nstep" steps even if restarting from a previously interrupted calculation. + """ + iprint: Optional[float] = None + """ + band energies are written every iprint iterations + """ + tstress: Optional[bool] = False + """ + calculate stress. It is set to .TRUE. automatically if calculation == 'vc-md' or 'vc-relax' + """ + tprnfor: Optional[bool] = None + """ + calculate forces. It is set to .TRUE. automatically if calculation == 'relax','md','vc-md' + """ + dt: Optional[float] = 20 + """ + time step for molecular dynamics, in Rydberg atomic units (1 a.u.=4.8378 * 10^-17 s : beware, the CP code uses Hartree atomic units, half that much!!!) + """ + outdir: Optional[str] = None + """ + input, temporary, output files are found in this directory, see also wfcdir + """ + wfcdir: Optional[str] = None + """ + This directory specifies where to store files generated by each processor (*.wfc{N}, *.igk{N}, etc.). Useful for machines without a parallel file system: set wfcdir to a local file system, while outdir should be a parallel or network file system, visible to all processors. Beware: in order to restart from interrupted runs, or to perform further calculations using the produced data files, you may need to copy files to outdir. Works only for pw.x. + """ + prefix: Optional[str] = "pwscf" + """ + prepended to input/output filenames: prefix.wfc, prefix.rho, etc. + """ + lkpoint_dir: Optional[bool] = None + """ + OBSOLETE - NO LONGER IMPLEMENTED + """ + max_seconds: Optional[float] = 10000000 + """ + Jobs stops after max_seconds CPU time. Use this option in conjunction with option restart_mode if you need to split a job too long to complete into shorter jobs that fit into your batch queues. + """ + etot_conv_thr: Optional[float] = 0.0001 + """ + Convergence threshold on total energy (a.u) for ionic minimization: the convergence criterion is satisfied when the total energy changes less than etot_conv_thr between two consecutive scf steps. Note that etot_conv_thr is extensive, like the total energy. See also forc_conv_thr - both criteria must be satisfied + """ + forc_conv_thr: Optional[float] = 0.001 + """ + Convergence threshold on forces (a.u) for ionic minimization: the convergence criterion is satisfied when all components of all forces are smaller than forc_conv_thr. See also etot_conv_thr - both criteria must be satisfied + """ + disk_io: Optional[DiskIo] = None + """ + Specifies the amount of disk I/O activity: (only for binary files and xml data file in data directory; other files printed at each molecular dynamics / structural optimization step are not controlled by this option ) + """ + pseudo_dir: Optional[str] = None + """ + directory containing pseudopotential files. Default: value of the $ESPRESSO_PSEUDO environment variable if set; '$HOME/espresso/pseudo/' otherwise + """ + tefield: Optional[bool] = False + """ + If .TRUE. a saw-like potential simulating an electric field is added to the bare ionic potential. See variables edir, eamp, emaxpos, eopreg for the form and size of the added potential. + """ + dipfield: Optional[bool] = False + """ + If .TRUE. and tefield==.TRUE. a dipole correction is also added to the bare ionic potential - implements the recipe of L. Bengtsson, PRB 59, 12301 (1999). See variables edir, emaxpos, eopreg for the form of the correction. Must be used ONLY in a slab geometry, for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE. + """ + lelfield: Optional[bool] = False + """ + If .TRUE. a homogeneous finite electric field described through the modern theory of the polarization is applied. This is different from tefield == .true. ! + """ + nberrycyc: Optional[int] = 1 + """ + In the case of a finite electric field ( lelfield == .TRUE. ) it defines the number of iterations for converging the wavefunctions in the electric field Hamiltonian, for each external iteration on the charge density + """ + lorbm: Optional[bool] = False + """ + If .TRUE. perform orbital magnetization calculation. + """ + lberry: Optional[bool] = False + """ + If .TRUE. perform a Berry phase calculation. See the header of PW/src/bp_c_phase.f90 for documentation + """ + gdir: Optional[float] = None + """ + For Berry phase calculation: direction of the k-point strings in reciprocal space. Allowed values: 1, 2, 3 1=first, 2=second, 3=third reciprocal lattice vector For calculations with finite electric fields (lelfield==.true.) "gdir" is the direction of the field. + """ + nppstr: Optional[float] = None + """ + For Berry phase calculation: number of k-points to be calculated along each symmetry-reduced string. The same for calculation with finite electric fields (lelfield==.true.). + """ + gate: Optional[bool] = False + """ + In the case of charged cells (tot_charge .ne. 0) setting gate = .TRUE. represents the counter charge (i.e. -tot_charge) not by a homogeneous background charge but with a charged plate, which is placed at zgate (see below). Details of the gate potential can be found in T. Brumme, M. Calandra, F. Mauri; PRB 89, 245406 (2014). Note, that in systems which are not symmetric with respect to the plate, one needs to enable the dipole correction! (dipfield=.true.). Currently, symmetry can be used with gate=.true. but carefully check that no symmetry is included which maps z to -z even if in principle one could still use them for symmetric systems (i.e. no dipole correction). For nosym=.false. verbosity is set to 'high'. Note: this option was called "monopole" in v6.0 and 6.1 of pw.x + """ + twochem: Optional[bool] = False + """ + IF .TRUE. , a two chemical potential calculation for the simulation of photoexcited systems is performed, constraining a fraction of the electrons in the conduction manifold. + """ + lfcp: Optional[bool] = False + """ + If .TRUE. perform a constant bias potential (constant-mu) calculation for a system with ESM method. See the header of PW/src/fcp_module.f90 for documentation. To perform the calculation, you must set a namelist FCP. + """ + trism: Optional[bool] = False + """ + If .TRUE. perform a 3D-RISM-SCF calculation [for details see H.Sato et al., JCP 112, 9463 (2000), doi:10.1063/1.481564]. The solvent's distributions are calculated by 3D-RISM, though solute is treated as SCF. The charge density and the atomic positions are optimized, simultaneously with the solvents. To perform the calculation, you must set a namelist RISM and a card SOLVENTS. If assume_isolated = 'esm' and esm_bc = 'bc1', Laue-RISM is calculated instead of 3D-RISM and coupled with ESM method (i.e. ESM-RISM). [for details see S.Nishihara and M.Otani, PRB 96, 115429 (2017)]. The default of mixing_beta is 0.2 for both 3D-RISM and Laue-RISM. For structural relaxation with BFGS, ignore_wolfe is always .TRUE. . + """ + + +class Occupations(Enum): + smearing = "smearing" + tetrahedra = "tetrahedra" + tetrahedra_lin = "tetrahedra_lin" + tetrahedra_opt = "tetrahedra_opt" + fixed = "fixed" + from_input = "from_input" + + +class Smearing(Enum): + gaussian = "gaussian" + gauss = "gauss" + methfessel_paxton = "methfessel-paxton" + m_p = "m-p" + mp = "mp" + marzari_vanderbilt = "marzari-vanderbilt" + cold = "cold" + m_v = "m-v" + mv = "mv" + fermi_dirac = "fermi-dirac" + f_d = "f-d" + fd = "fd" + + +class PolType(Enum): + e = "e" + h = "h" + + +class ExxdivTreatment(Enum): + gygi_baldereschi = "gygi-baldereschi" + vcut_spherical = "vcut_spherical" + vcut_ws = "vcut_ws" + none = "none" + + +class HubbardOccItem(RootModel[conint(ge=1)]): + root: conint(ge=1) + + +class HubbardOccItem1(RootModel[conint(ge=1, le=3)]): + root: conint(ge=1, le=3) + + +class ConstrainedMagnetization(Enum): + none = "none" + total = "total" + atomic = "atomic" + total_direction = "total direction" + atomic_direction = "atomic direction" + + +class AssumeIsolated(Enum): + none = "none" + makov_payne = "makov-payne" + m_p = "m-p" + mp = "mp" + martyna_tuckerman = "martyna-tuckerman" + m_t = "m-t" + mt = "mt" + esm = "esm" + field_2D = "2D" + + +class EsmBc(Enum): + pbc = "pbc" + bc1 = "bc1" + bc2 = "bc2" + bc3 = "bc3" + + +class VdwCorr(Enum): + none = "none" + grimme_d2 = "grimme-d2" + Grimme_D2 = "Grimme-D2" + DFT_D = "DFT-D" + dft_d = "dft-d" + grimme_d3 = "grimme-d3" + Grimme_D3 = "Grimme-D3" + DFT_D3 = "DFT-D3" + dft_d3 = "dft-d3" + TS = "TS" + ts = "ts" + ts_vdw = "ts-vdw" + ts_vdW = "ts-vdW" + tkatchenko_scheffler = "tkatchenko-scheffler" + MBD = "MBD" + mbd = "mbd" + many_body_dispersion = "many-body-dispersion" + mbd_vdw = "mbd_vdw" + XDM = "XDM" + xdm = "xdm" + + +class SystemSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ibrav: int + nat: int + """ + number of atoms in the unit cell (ALL atoms, except if space_group is set, in which case, INEQUIVALENT atoms) + """ + ntyp: int + """ + number of types of atoms in the unit cell + """ + nbnd: Optional[int] = None + """ + Default: for an insulator, nbnd = number of valence bands (nbnd = # of electrons /2); for a metal, 20% more (minimum 4 more) + """ + nbnd_cond: Optional[int] = None + """ + Default: nbnd_cond = nbnd - # of electrons / 2 in the collinear case; nbnd_cond = nbnd - # of electrons in the noncollinear case. + """ + tot_charge: Optional[float] = 0 + starting_charge: Optional[float] = 0 + """ + starting charge on atomic type 'i', to create starting potential with startingpot = 'atomic'. + """ + tot_magnetization: Optional[float] = -10000 + """ + Total majority spin charge - minority spin charge. Used to impose a specific total electronic magnetization. If unspecified then tot_magnetization variable is ignored and the amount of electronic magnetization is determined during the self-consistent cycle. + """ + starting_magnetization: Optional[List[confloat(ge=-1.0, le=1.0)]] = None + ecutwfc: float + """ + kinetic energy cutoff (Ry) for wavefunctions + """ + ecutrho: Optional[float] = None + """ + Kinetic energy cutoff (Ry) for charge density and potential For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. Default: 4 * ecutwfc + """ + ecutfock: Optional[float] = None + """ + Kinetic energy cutoff (Ry) for the exact exchange operator in EXX type calculations. By default this is the same as ecutrho but in some EXX calculations, a significant speed-up can be obtained by reducing ecutfock, at the expense of some loss in accuracy. Must be .gt. ecutwfc. Not implemented for stress calculation and for US-PP and PAW pseudopotentials. + """ + nr1: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr2: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr3: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr1s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nr2s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nr3s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nosym: Optional[bool] = False + nosym_evc: Optional[bool] = False + noinv: Optional[bool] = False + """ + if (.TRUE.) disable the usage of k => -k symmetry (time reversal) in k-point generation + """ + no_t_rev: Optional[bool] = False + """ + if (.TRUE.) disable the usage of magnetic symmetry operations that consist in a rotation + time reversal. + """ + force_symmorphic: Optional[bool] = False + """ + if (.TRUE.) force the symmetry group to be symmorphic by disabling symmetry operations having an associated fractionary translation + """ + use_all_frac: Optional[bool] = False + occupations: Optional[Occupations] = None + one_atom_occupations: Optional[bool] = False + starting_spin_angle: Optional[bool] = False + degauss_cond: Optional[float] = 0 + """ + value of the gaussian spreading (Ry) for brillouin-zone integration in the conduction manifold in a two-chemical potential calculation (twochem=.true.). + """ + nelec_cond: Optional[float] = 0 + """ + Number of electrons placed in the conduction manifold in a two-chemical potential calculation (twochem=.true.). Of the total # of electrons nelec, nelec-nelec_cond will occupy the valence manifold and nelec_cond will be constrained in the conduction manifold. + """ + degauss: Optional[float] = 0 + """ + value of the gaussian spreading (Ry) for brillouin-zone integration in metals. + """ + smearing: Optional[Smearing] = "gaussian" + nspin: Optional[int] = 1 + sic_gamma: Optional[float] = 0 + """ + Strength of the gammaDFT potential. + """ + pol_type: Optional[PolType] = None + """ + Type of polaron in gammaDFT. + """ + sic_energy: Optional[bool] = False + """ + Enable the calculation of the total energy in gammaDFT. When .true., a preliminary calculation is performed to calculate the electron density in the absence of the polaron. When .false., the total energy printed in output should not be considered. For structural relaxations, it is recommended to use .false. to avoid doubling the computational cost. + """ + sci_vb: Optional[float] = 0 + """ + Valence band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. + """ + sci_cb: Optional[float] = 0 + """ + Conduction band band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. + """ + noncolin: Optional[bool] = False + """ + if .true. the program will perform a noncollinear calculation. + """ + ecfixed: Optional[float] = 0 + qcutz: Optional[float] = 0 + q2sigma: Optional[float] = 0.1 + input_dft: Optional[str] = None + """ + Exchange-correlation functional: eg 'PBE', 'BLYP' etc See Modules/funct.f90 for allowed values. Overrides the value read from pseudopotential files. Use with care and if you know what you are doing! + """ + ace: Optional[bool] = True + """ + Use Adaptively Compressed Exchange operator as in Lin Lin, J. Chem. Theory Comput. 2016, 12, 2242--2249, doi:10.1021/acs.jctc.6b00092 + """ + exx_fraction: Optional[float] = None + """ + Fraction of EXX for hybrid functional calculations. In the case of input_dft='PBE0', the default value is 0.25, while for input_dft='B3LYP' the exx_fraction default value is 0.20. + """ + screening_parameter: Optional[float] = 0.106 + """ + screening_parameter for HSE like hybrid functionals. + """ + exxdiv_treatment: Optional[ExxdivTreatment] = "gygi-baldereschi" + x_gamma_extrapolation: Optional[bool] = True + """ + Specific for EXX. If .true., extrapolate the G=0 term of the potential + """ + ecutvcut: Optional[float] = None + """ + Reciprocal space cutoff for correcting Coulomb potential divergencies at small q vectors. + """ + nqx1: Optional[int] = 0 + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + nqx2: Optional[int] = None + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + nqx3: Optional[int] = None + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + localization_thr: Optional[float] = 0 + """ + Overlap threshold over which the exchange integral over a pair of localized orbitals is included in the evaluation of EXX operator. Any value greater than 0.0 triggers the SCDM localization and the evaluation on EXX using the localized orbitals. Very small value of the threshold should yield the same result as the default EXX evaluation + """ + Hubbard_occ: Optional[List[List[Union[HubbardOccItem, HubbardOccItem1, float]]]] = None + Hubbard_alpha: Optional[List[float]] = None + Hubbard_beta: Optional[List[float]] = None + starting_ns_eigenvalue: Optional[List[List[List[float]]]] = None + dmft: Optional[bool] = False + """ + If true, nscf calculation will exit in restart mode, scf calculation will restart from there if DMFT updates are provided as hdf5 archive. Scf calculation should be used only with electron_maxstep = 1. + """ + dmft_prefix: Optional[str] = None + """ + prepended to hdf5 archive: dmft_prefix.h5 + """ + ensemble_energies: Optional[bool] = False + """ + If ensemble_energies = .true., an ensemble of xc energies is calculated non-selfconsistently for perturbed exchange-enhancement factors and LDA vs. PBE correlation ratios after each converged electronic ground state calculation. + """ + edir: Optional[int] = None + """ + The direction of the electric field or dipole correction is parallel to the bg(:,edir) reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points; edir = 1, 2 or 3. Used only if tefield is .TRUE. + """ + emaxpos: Optional[float] = 0.5 + """ + Position of the maximum of the saw-like potential along crystal axis edir, within the unit cell (see below), 0 < emaxpos < 1 Used only if tefield is .TRUE. + """ + eopreg: Optional[float] = 0.1 + """ + Zone in the unit cell where the saw-like potential decreases. ( see below, 0 < eopreg < 1 ). Used only if tefield is .TRUE. + """ + eamp: Optional[float] = 0.001 + angle1: Optional[List[float]] = Field(None, max_length=1, min_length=1) + """ + The angle expressed in degrees between the initial magnetization and the z-axis. For noncollinear calculations only; index i runs over the atom types. + """ + angle2: Optional[List[float]] = Field(None, max_length=1, min_length=1) + """ + The angle expressed in degrees between the projection of the initial magnetization on x-y plane and the x-axis. For noncollinear calculations only. + """ + lforcet: Optional[bool] = None + """ + When starting a non collinear calculation using an existing density file from a collinear lsda calculation assumes previous density points in z direction and rotates it in the direction described by angle1 and angle2 variables for atomic type 1 + """ + constrained_magnetization: Optional[ConstrainedMagnetization] = "none" + """ + Used to perform constrained calculations in magnetic systems. + """ + fixed_magnetization: Optional[List[float]] = Field(None, max_length=3, min_length=3) + lambda_: Optional[float] = Field(1, alias="lambda") + """ + parameter used for constrained_magnetization calculations N.B.: if the scf calculation does not converge, try to reduce lambda to obtain convergence, then restart the run with a larger lambda + """ + report: Optional[int] = -1 + """ + determines when atomic magnetic moments are printed on output + """ + lspinorb: Optional[bool] = None + """ + if .TRUE. the noncollinear code can use a pseudopotential with spin-orbit. + """ + assume_isolated: Optional[AssumeIsolated] = "none" + """ + Used to perform calculation assuming the system to be isolated (a molecule or a cluster in a 3D supercell) + """ + esm_bc: Optional[EsmBc] = "pbc" + """ + If assume_isolated = 'esm', determines the boundary conditions used for either side of the slab. + """ + esm_w: Optional[float] = 0 + """ + If assume_isolated = 'esm', determines the position offset [in a.u.] of the start of the effective screening region, measured relative to the cell edge. (ESM region begins at z = +/- [L_z/2 + esm_w] ). + """ + esm_efield: Optional[float] = 0 + """ + If assume_isolated = 'esm' and esm_bc = 'bc2', gives the magnitude of the electric field [Ry/a.u.] to be applied between semi-infinite ESM electrodes. + """ + esm_nfit: Optional[int] = 4 + """ + If assume_isolated = 'esm', gives the number of z-grid points for the polynomial fit along the cell edge. + """ + lgcscf: Optional[bool] = False + """ + If .TRUE. perform a constant bias potential (constant-mu) calculation with Grand-Canonical SCF. + """ + gcscf_mu: Optional[float] = None + """ + The target Fermi energy (eV) of GC-SCF. One can start with appropriate total charge of the system by giving tot_charge + """ + gcscf_conv_thr: Optional[float] = 0.01 + """ + Convergence threshold of Fermi energy (eV) for GC-SCF. + """ + gcscf_beta: Optional[float] = 0.05 + """ + Mixing factor for GC-SCF. Larger values are recommended, if systems with small DOS on Fermi surface as graphite. + """ + vdw_corr: Optional[VdwCorr] = "none" + """ + Type of Van der Waals correction + """ + london: Optional[bool] = False + """ + OBSOLESCENT, same as vdw_corr='DFT-D' + """ + london_s6: Optional[float] = 0.75 + """ + global scaling parameter for DFT-D. Default is good for PBE. + """ + london_c6: Optional[float] = None + """ + atomic C6 coefficient of each atom type + """ + london_rvdw: Optional[float] = None + """ + atomic vdw radii of each atom type + """ + london_rcut: Optional[float] = 200 + """ + cutoff radius (a.u.) for dispersion interactions + """ + dftd3_version: Optional[conint(ge=2, le=6)] = 3 + """ + Version of Grimme implementation of Grimme-D3 + """ + dftd3_threebody: Optional[bool] = True + """ + Turn three-body terms in Grimme-D3 on. If .false. two-body contributions only are computed, using two-body parameters of Grimme-D3. If dftd3_version=2, three-body contribution is always disabled. + """ + ts_vdw_econv_thr: Optional[float] = 1e-06 + """ + Optional: controls the convergence of the vdW energy (and forces). The default value is a safe choice, likely too safe, but you do not gain much in increasing it + """ + ts_vdw_isolated: Optional[bool] = False + """ + Optional: set it to .TRUE. when computing the Tkatchenko-Scheffler vdW energy or the Many-Body dispersion (MBD) energy for an isolated (non-periodic) system. + """ + xdm: Optional[bool] = False + """ + OBSOLESCENT, same as vdw_corr='xdm' + """ + xdm_a1: Optional[float] = 0.6836 + """ + Damping function parameter a1 (adimensional) + """ + xdm_a2: Optional[float] = 1.5045 + """ + Damping function parameter a2 (angstrom) + """ + space_group: Optional[int] = 0 + """ + The number of the space group of the crystal, as given in the International Tables of Crystallography A (ITA) + """ + uniqueb: Optional[bool] = False + """ + Used only for monoclinic lattices + """ + origin_choice: Optional[int] = 1 + """ + Used only for space groups that in the ITA allow the use of two different origins + """ + rhombohedral: Optional[bool] = True + """ + Used only for rhombohedral space groups. + """ + zgate: Optional[float] = 0.5 + """ + used only if gate = .TRUE. + """ + relaxz: Optional[bool] = False + """ + used only if gate = .TRUE. + """ + block: Optional[bool] = False + """ + used only if gate = .TRUE. + """ + block_1: Optional[float] = 0.45 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + block_2: Optional[float] = 0.55 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + block_height: Optional[float] = 0.1 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + nextffield: Optional[int] = 0 + """ + Number of activated external ionic force fields. + """ + celldm: Optional[List[float]] = Field(None, max_length=6, min_length=6) + + +class HubbardOccItem2(RootModel[conint(ge=1)]): + root: conint(ge=1) + + +class HubbardOccItem3(RootModel[conint(ge=1, le=3)]): + root: conint(ge=1, le=3) + + +class SystemSchema1(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ibrav: int + nat: int + """ + number of atoms in the unit cell (ALL atoms, except if space_group is set, in which case, INEQUIVALENT atoms) + """ + ntyp: int + """ + number of types of atoms in the unit cell + """ + nbnd: Optional[int] = None + """ + Default: for an insulator, nbnd = number of valence bands (nbnd = # of electrons /2); for a metal, 20% more (minimum 4 more) + """ + nbnd_cond: Optional[int] = None + """ + Default: nbnd_cond = nbnd - # of electrons / 2 in the collinear case; nbnd_cond = nbnd - # of electrons in the noncollinear case. + """ + tot_charge: Optional[float] = 0 + starting_charge: Optional[float] = 0 + """ + starting charge on atomic type 'i', to create starting potential with startingpot = 'atomic'. + """ + tot_magnetization: Optional[float] = -10000 + """ + Total majority spin charge - minority spin charge. Used to impose a specific total electronic magnetization. If unspecified then tot_magnetization variable is ignored and the amount of electronic magnetization is determined during the self-consistent cycle. + """ + starting_magnetization: Optional[List[confloat(ge=-1.0, le=1.0)]] = None + ecutwfc: float + """ + kinetic energy cutoff (Ry) for wavefunctions + """ + ecutrho: Optional[float] = None + """ + Kinetic energy cutoff (Ry) for charge density and potential For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. Default: 4 * ecutwfc + """ + ecutfock: Optional[float] = None + """ + Kinetic energy cutoff (Ry) for the exact exchange operator in EXX type calculations. By default this is the same as ecutrho but in some EXX calculations, a significant speed-up can be obtained by reducing ecutfock, at the expense of some loss in accuracy. Must be .gt. ecutwfc. Not implemented for stress calculation and for US-PP and PAW pseudopotentials. + """ + nr1: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr2: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr3: Optional[int] = None + """ + Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) + """ + nr1s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nr2s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nr3s: Optional[int] = None + """ + Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) + """ + nosym: Optional[bool] = False + nosym_evc: Optional[bool] = False + noinv: Optional[bool] = False + """ + if (.TRUE.) disable the usage of k => -k symmetry (time reversal) in k-point generation + """ + no_t_rev: Optional[bool] = False + """ + if (.TRUE.) disable the usage of magnetic symmetry operations that consist in a rotation + time reversal. + """ + force_symmorphic: Optional[bool] = False + """ + if (.TRUE.) force the symmetry group to be symmorphic by disabling symmetry operations having an associated fractionary translation + """ + use_all_frac: Optional[bool] = False + occupations: Optional[Occupations] = None + one_atom_occupations: Optional[bool] = False + starting_spin_angle: Optional[bool] = False + degauss_cond: Optional[float] = 0 + """ + value of the gaussian spreading (Ry) for brillouin-zone integration in the conduction manifold in a two-chemical potential calculation (twochem=.true.). + """ + nelec_cond: Optional[float] = 0 + """ + Number of electrons placed in the conduction manifold in a two-chemical potential calculation (twochem=.true.). Of the total # of electrons nelec, nelec-nelec_cond will occupy the valence manifold and nelec_cond will be constrained in the conduction manifold. + """ + degauss: Optional[float] = 0 + """ + value of the gaussian spreading (Ry) for brillouin-zone integration in metals. + """ + smearing: Optional[Smearing] = "gaussian" + nspin: Optional[int] = 1 + sic_gamma: Optional[float] = 0 + """ + Strength of the gammaDFT potential. + """ + pol_type: Optional[PolType] = None + """ + Type of polaron in gammaDFT. + """ + sic_energy: Optional[bool] = False + """ + Enable the calculation of the total energy in gammaDFT. When .true., a preliminary calculation is performed to calculate the electron density in the absence of the polaron. When .false., the total energy printed in output should not be considered. For structural relaxations, it is recommended to use .false. to avoid doubling the computational cost. + """ + sci_vb: Optional[float] = 0 + """ + Valence band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. + """ + sci_cb: Optional[float] = 0 + """ + Conduction band band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. + """ + noncolin: Optional[bool] = False + """ + if .true. the program will perform a noncollinear calculation. + """ + ecfixed: Optional[float] = 0 + qcutz: Optional[float] = 0 + q2sigma: Optional[float] = 0.1 + input_dft: Optional[str] = None + """ + Exchange-correlation functional: eg 'PBE', 'BLYP' etc See Modules/funct.f90 for allowed values. Overrides the value read from pseudopotential files. Use with care and if you know what you are doing! + """ + ace: Optional[bool] = True + """ + Use Adaptively Compressed Exchange operator as in Lin Lin, J. Chem. Theory Comput. 2016, 12, 2242--2249, doi:10.1021/acs.jctc.6b00092 + """ + exx_fraction: Optional[float] = None + """ + Fraction of EXX for hybrid functional calculations. In the case of input_dft='PBE0', the default value is 0.25, while for input_dft='B3LYP' the exx_fraction default value is 0.20. + """ + screening_parameter: Optional[float] = 0.106 + """ + screening_parameter for HSE like hybrid functionals. + """ + exxdiv_treatment: Optional[ExxdivTreatment] = "gygi-baldereschi" + x_gamma_extrapolation: Optional[bool] = True + """ + Specific for EXX. If .true., extrapolate the G=0 term of the potential + """ + ecutvcut: Optional[float] = None + """ + Reciprocal space cutoff for correcting Coulomb potential divergencies at small q vectors. + """ + nqx1: Optional[int] = 0 + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + nqx2: Optional[int] = None + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + nqx3: Optional[int] = None + """ + Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. + """ + localization_thr: Optional[float] = 0 + """ + Overlap threshold over which the exchange integral over a pair of localized orbitals is included in the evaluation of EXX operator. Any value greater than 0.0 triggers the SCDM localization and the evaluation on EXX using the localized orbitals. Very small value of the threshold should yield the same result as the default EXX evaluation + """ + Hubbard_occ: Optional[List[List[Union[HubbardOccItem2, HubbardOccItem3, float]]]] = None + Hubbard_alpha: Optional[List[float]] = None + Hubbard_beta: Optional[List[float]] = None + starting_ns_eigenvalue: Optional[List[List[List[float]]]] = None + dmft: Optional[bool] = False + """ + If true, nscf calculation will exit in restart mode, scf calculation will restart from there if DMFT updates are provided as hdf5 archive. Scf calculation should be used only with electron_maxstep = 1. + """ + dmft_prefix: Optional[str] = None + """ + prepended to hdf5 archive: dmft_prefix.h5 + """ + ensemble_energies: Optional[bool] = False + """ + If ensemble_energies = .true., an ensemble of xc energies is calculated non-selfconsistently for perturbed exchange-enhancement factors and LDA vs. PBE correlation ratios after each converged electronic ground state calculation. + """ + edir: Optional[int] = None + """ + The direction of the electric field or dipole correction is parallel to the bg(:,edir) reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points; edir = 1, 2 or 3. Used only if tefield is .TRUE. + """ + emaxpos: Optional[float] = 0.5 + """ + Position of the maximum of the saw-like potential along crystal axis edir, within the unit cell (see below), 0 < emaxpos < 1 Used only if tefield is .TRUE. + """ + eopreg: Optional[float] = 0.1 + """ + Zone in the unit cell where the saw-like potential decreases. ( see below, 0 < eopreg < 1 ). Used only if tefield is .TRUE. + """ + eamp: Optional[float] = 0.001 + angle1: Optional[List[float]] = Field(None, max_length=1, min_length=1) + """ + The angle expressed in degrees between the initial magnetization and the z-axis. For noncollinear calculations only; index i runs over the atom types. + """ + angle2: Optional[List[float]] = Field(None, max_length=1, min_length=1) + """ + The angle expressed in degrees between the projection of the initial magnetization on x-y plane and the x-axis. For noncollinear calculations only. + """ + lforcet: Optional[bool] = None + """ + When starting a non collinear calculation using an existing density file from a collinear lsda calculation assumes previous density points in z direction and rotates it in the direction described by angle1 and angle2 variables for atomic type 1 + """ + constrained_magnetization: Optional[ConstrainedMagnetization] = "none" + """ + Used to perform constrained calculations in magnetic systems. + """ + fixed_magnetization: Optional[List[float]] = Field(None, max_length=3, min_length=3) + lambda_: Optional[float] = Field(1, alias="lambda") + """ + parameter used for constrained_magnetization calculations N.B.: if the scf calculation does not converge, try to reduce lambda to obtain convergence, then restart the run with a larger lambda + """ + report: Optional[int] = -1 + """ + determines when atomic magnetic moments are printed on output + """ + lspinorb: Optional[bool] = None + """ + if .TRUE. the noncollinear code can use a pseudopotential with spin-orbit. + """ + assume_isolated: Optional[AssumeIsolated] = "none" + """ + Used to perform calculation assuming the system to be isolated (a molecule or a cluster in a 3D supercell) + """ + esm_bc: Optional[EsmBc] = "pbc" + """ + If assume_isolated = 'esm', determines the boundary conditions used for either side of the slab. + """ + esm_w: Optional[float] = 0 + """ + If assume_isolated = 'esm', determines the position offset [in a.u.] of the start of the effective screening region, measured relative to the cell edge. (ESM region begins at z = +/- [L_z/2 + esm_w] ). + """ + esm_efield: Optional[float] = 0 + """ + If assume_isolated = 'esm' and esm_bc = 'bc2', gives the magnitude of the electric field [Ry/a.u.] to be applied between semi-infinite ESM electrodes. + """ + esm_nfit: Optional[int] = 4 + """ + If assume_isolated = 'esm', gives the number of z-grid points for the polynomial fit along the cell edge. + """ + lgcscf: Optional[bool] = False + """ + If .TRUE. perform a constant bias potential (constant-mu) calculation with Grand-Canonical SCF. + """ + gcscf_mu: Optional[float] = None + """ + The target Fermi energy (eV) of GC-SCF. One can start with appropriate total charge of the system by giving tot_charge + """ + gcscf_conv_thr: Optional[float] = 0.01 + """ + Convergence threshold of Fermi energy (eV) for GC-SCF. + """ + gcscf_beta: Optional[float] = 0.05 + """ + Mixing factor for GC-SCF. Larger values are recommended, if systems with small DOS on Fermi surface as graphite. + """ + vdw_corr: Optional[VdwCorr] = "none" + """ + Type of Van der Waals correction + """ + london: Optional[bool] = False + """ + OBSOLESCENT, same as vdw_corr='DFT-D' + """ + london_s6: Optional[float] = 0.75 + """ + global scaling parameter for DFT-D. Default is good for PBE. + """ + london_c6: Optional[float] = None + """ + atomic C6 coefficient of each atom type + """ + london_rvdw: Optional[float] = None + """ + atomic vdw radii of each atom type + """ + london_rcut: Optional[float] = 200 + """ + cutoff radius (a.u.) for dispersion interactions + """ + dftd3_version: Optional[conint(ge=2, le=6)] = 3 + """ + Version of Grimme implementation of Grimme-D3 + """ + dftd3_threebody: Optional[bool] = True + """ + Turn three-body terms in Grimme-D3 on. If .false. two-body contributions only are computed, using two-body parameters of Grimme-D3. If dftd3_version=2, three-body contribution is always disabled. + """ + ts_vdw_econv_thr: Optional[float] = 1e-06 + """ + Optional: controls the convergence of the vdW energy (and forces). The default value is a safe choice, likely too safe, but you do not gain much in increasing it + """ + ts_vdw_isolated: Optional[bool] = False + """ + Optional: set it to .TRUE. when computing the Tkatchenko-Scheffler vdW energy or the Many-Body dispersion (MBD) energy for an isolated (non-periodic) system. + """ + xdm: Optional[bool] = False + """ + OBSOLESCENT, same as vdw_corr='xdm' + """ + xdm_a1: Optional[float] = 0.6836 + """ + Damping function parameter a1 (adimensional) + """ + xdm_a2: Optional[float] = 1.5045 + """ + Damping function parameter a2 (angstrom) + """ + space_group: Optional[int] = 0 + """ + The number of the space group of the crystal, as given in the International Tables of Crystallography A (ITA) + """ + uniqueb: Optional[bool] = False + """ + Used only for monoclinic lattices + """ + origin_choice: Optional[int] = 1 + """ + Used only for space groups that in the ITA allow the use of two different origins + """ + rhombohedral: Optional[bool] = True + """ + Used only for rhombohedral space groups. + """ + zgate: Optional[float] = 0.5 + """ + used only if gate = .TRUE. + """ + relaxz: Optional[bool] = False + """ + used only if gate = .TRUE. + """ + block: Optional[bool] = False + """ + used only if gate = .TRUE. + """ + block_1: Optional[float] = 0.45 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + block_2: Optional[float] = 0.55 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + block_height: Optional[float] = 0.1 + """ + used only if gate = .TRUE. and block = .TRUE. + """ + nextffield: Optional[int] = 0 + """ + Number of activated external ionic force fields. + """ + A: Optional[float] = None + B: Optional[float] = None + C: Optional[float] = None + cosAB: Optional[float] = None + cosAC: Optional[float] = None + cosBC: Optional[float] = None + + +class MixingMode(Enum): + plain = "plain" + TF = "TF" + local_TF = "local-TF" + + +class Diagonalization(Enum): + david = "david" + cg = "cg" + ppcg = "ppcg" + paro = "paro" + ParO = "ParO" + rmm_davidson = "rmm-davidson" + rmm_paro = "rmm-paro" + + +class EfieldPhase(Enum): + read = "read" + write = "write" + none = "none" + + +class Startingpot(Enum): + atomic = "atomic" + file = "file" + + +class Startingwfc(Enum): + atomic = "atomic" + atomic_random = "atomic+random" + random = "random" + file = "file" + + +class ElectronsSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + electron_maxstep: Optional[int] = 100 + """ + maximum number of iterations in a scf step. If exact exchange is active, this will affect the inner loops. + """ + exx_maxstep: Optional[int] = 100 + """ + maximum number of outer iterations in a scf calculation with exact exchange. + """ + scf_must_converge: Optional[bool] = True + """ + If .false. do not stop molecular dynamics or ionic relaxation when electron_maxstep is reached. Use with care. + """ + conv_thr: Optional[float] = None + adaptive_thr: Optional[bool] = False + """ + If .TRUE. this turns on the use of an adaptive conv_thr for the inner scf loops when using EXX. + """ + conv_thr_init: Optional[float] = None + """ + When adaptive_thr = .TRUE. this is the convergence threshold used for the first scf cycle. + """ + conv_thr_multi: Optional[float] = None + """ + When adaptive_thr = .TRUE. the convergence threshold for each scf cycle is given by: max( conv_thr, conv_thr_multi * dexx ) + """ + mixing_mode: Optional[MixingMode] = "plain" + mixing_beta: Optional[float] = None + """ + mixing factor for self-consistency + """ + mixing_ndim: Optional[int] = 8 + """ + number of iterations used in mixing scheme + """ + mixing_fixed_ns: Optional[int] = 0 + """ + For DFT+U : number of iterations with fixed ns ( ns is the atomic density appearing in the Hubbard term ). + """ + diagonalization: Optional[Diagonalization] = "david" + diago_thr_init: Optional[float] = None + """ + Convergence threshold (ethr) for iterative diagonalization (the check is on eigenvalue convergence). + """ + diago_cg_maxiter: Optional[int] = None + """ + For conjugate gradient diagonalization: max number of iterations + """ + diago_ppcg_maxiter: Optional[int] = None + """ + For ppcg diagonalization: max number of iterations + """ + diago_david_ndim: Optional[int] = 2 + """ + For Davidson diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed). + """ + diago_rmm_ndim: Optional[int] = 4 + """ + For RMM-DIIS diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed). + """ + diago_rmm_conv: Optional[bool] = False + """ + If .TRUE., RMM-DIIS is performed up to converge. If .FALSE., RMM-DIIS is performed only once. + """ + diago_gs_nblock: Optional[int] = 16 + """ + For RMM-DIIS diagonalization: blocking size of Gram-Schmidt orthogonalization + """ + diago_full_acc: Optional[bool] = False + """ + If .TRUE. all the empty states are diagonalized at the same level of accuracy of the occupied ones. Otherwise the empty states are diagonalized using a larger threshold (this should not affect total energy, forces, and other ground-state properties). + """ + efield: Optional[float] = None + """ + Amplitude of the finite electric field (in Ry a.u.; 1 a.u. = 36.3609*10^10 V/m). Used only if lelfield==.TRUE. and if k-points (K_POINTS card) are not automatic. + """ + efield_cart: Optional[List[float]] = Field( + None, max_length=3, min_length=3, title="array of 3 number elements schema" + ) + efield_phase: Optional[EfieldPhase] = "none" + startingpot: Optional[Startingpot] = None + startingwfc: Optional[Startingwfc] = "atomic+random" + tqr: Optional[bool] = False + """ + If .true., use a real-space algorithm for augmentation charges of ultrasoft pseudopotentials and PAWsets. Faster but numerically less accurate than the default G-space algorithm. Use with care and after testing! + """ + real_space: Optional[bool] = False + """ + If .true., exploit real-space localization to compute matrix elements for nonlocal projectors. Faster and in principle better scaling than the default G-space algorithm, but numerically less accurate, may lead to some loss of translational invariance. Use with care and after testing! + """ + + +class IonPositions(Enum): + default = "default" + from_input = "from_input" + + +class IonVelocities(Enum): + default = "default" + from_input = "from_input" + + +class PotExtrapolation(Enum): + none = "none" + atomic = "atomic" + first_order = "first_order" + second_order = "second_order" + + +class WfcExtrapolation(Enum): + none = "none" + first_order = "first_order" + second_order = "second_order" + + +class IonTemperature(Enum): + rescaling = "rescaling" + rescale_v = "rescale-v" + rescale_T = "rescale-T" + reduce_T = "reduce-T" + berendsen = "berendsen" + andersen = "andersen" + svr = "svr" + initial = "initial" + not_controlled = "not_controlled" + + +class IonDynamics(Enum): + bfgs = "bfgs" + damp = "damp" + fire = "fire" + + +class IonsSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ion_positions: Optional[IonPositions] = "default" + ion_velocities: Optional[IonVelocities] = "default" + pot_extrapolation: Optional[PotExtrapolation] = "atomic" + """ + Used to extrapolate the potential from preceding ionic steps. + """ + wfc_extrapolation: Optional[WfcExtrapolation] = "none" + """ + Used to extrapolate the wavefunctions from preceding ionic steps. + """ + remove_rigid_rot: Optional[bool] = False + """ + This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. + """ + ion_temperature: Optional[IonTemperature] = "not_controlled" + tempw: Optional[float] = 300 + """ + Starting temperature (Kelvin) in MD runs target temperature for most thermostats. + """ + tolp: Optional[float] = 100 + """ + Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. + """ + delta_t: Optional[float] = 1 + nraise: Optional[int] = 1 + refold_pos: Optional[bool] = False + """ + This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. + """ + upscale: Optional[float] = 100 + """ + Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. + """ + bfgs_ndim: Optional[int] = 1 + """ + Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. + """ + trust_radius_max: Optional[float] = 0.8 + """ + Maximum ionic displacement in the structural relaxation. (bfgs only) + """ + trust_radius_min: Optional[float] = 0.001 + """ + Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) + """ + trust_radius_ini: Optional[float] = 0.5 + """ + Initial ionic displacement in the structural relaxation. (bfgs only) + """ + w_1: Optional[float] = 0.01 + w_2: Optional[float] = 0.5 + """ + Parameters used in line search based on the Wolfe conditions. (bfgs only) + """ + fire_alpha_init: Optional[float] = 0.2 + """ + Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 + """ + fire_falpha: Optional[float] = 0.99 + """ + Scaling of the alpha mixing parameter for steps with P > 0; + """ + fire_nmin: Optional[int] = 5 + """ + Minimum number of steps with P > 0 before increase of dt + """ + fire_f_inc: Optional[float] = 1.1 + """ + Factor for increasing dt + """ + fire_f_dec: Optional[float] = 0.5 + """ + Factor for decreasing dt + """ + fire_dtmax: Optional[float] = 10 + """ + Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt + """ + ion_dynamics: Optional[IonDynamics] = "bfgs" + """ + CASE: calculation == 'relax' + """ + + +class IonDynamics5(Enum): + verlet = "verlet" + langevin = "langevin" + langevin_smc = "langevin-smc" + + +class IonsSchema5(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ion_positions: Optional[IonPositions] = "default" + ion_velocities: Optional[IonVelocities] = "default" + pot_extrapolation: Optional[PotExtrapolation] = "atomic" + """ + Used to extrapolate the potential from preceding ionic steps. + """ + wfc_extrapolation: Optional[WfcExtrapolation] = "none" + """ + Used to extrapolate the wavefunctions from preceding ionic steps. + """ + remove_rigid_rot: Optional[bool] = False + """ + This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. + """ + ion_temperature: Optional[IonTemperature] = "not_controlled" + tempw: Optional[float] = 300 + """ + Starting temperature (Kelvin) in MD runs target temperature for most thermostats. + """ + tolp: Optional[float] = 100 + """ + Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. + """ + delta_t: Optional[float] = 1 + nraise: Optional[int] = 1 + refold_pos: Optional[bool] = False + """ + This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. + """ + upscale: Optional[float] = 100 + """ + Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. + """ + bfgs_ndim: Optional[int] = 1 + """ + Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. + """ + trust_radius_max: Optional[float] = 0.8 + """ + Maximum ionic displacement in the structural relaxation. (bfgs only) + """ + trust_radius_min: Optional[float] = 0.001 + """ + Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) + """ + trust_radius_ini: Optional[float] = 0.5 + """ + Initial ionic displacement in the structural relaxation. (bfgs only) + """ + w_1: Optional[float] = 0.01 + w_2: Optional[float] = 0.5 + """ + Parameters used in line search based on the Wolfe conditions. (bfgs only) + """ + fire_alpha_init: Optional[float] = 0.2 + """ + Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 + """ + fire_falpha: Optional[float] = 0.99 + """ + Scaling of the alpha mixing parameter for steps with P > 0; + """ + fire_nmin: Optional[int] = 5 + """ + Minimum number of steps with P > 0 before increase of dt + """ + fire_f_inc: Optional[float] = 1.1 + """ + Factor for increasing dt + """ + fire_f_dec: Optional[float] = 0.5 + """ + Factor for decreasing dt + """ + fire_dtmax: Optional[float] = 10 + """ + Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt + """ + ion_dynamics: Optional[IonDynamics5] = "verlet" + """ + CASE: calculation == 'md' + """ + + +class IonDynamics6(Enum): + bfgs = "bfgs" + damp = "damp" + + +class IonsSchema6(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ion_positions: Optional[IonPositions] = "default" + ion_velocities: Optional[IonVelocities] = "default" + pot_extrapolation: Optional[PotExtrapolation] = "atomic" + """ + Used to extrapolate the potential from preceding ionic steps. + """ + wfc_extrapolation: Optional[WfcExtrapolation] = "none" + """ + Used to extrapolate the wavefunctions from preceding ionic steps. + """ + remove_rigid_rot: Optional[bool] = False + """ + This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. + """ + ion_temperature: Optional[IonTemperature] = "not_controlled" + tempw: Optional[float] = 300 + """ + Starting temperature (Kelvin) in MD runs target temperature for most thermostats. + """ + tolp: Optional[float] = 100 + """ + Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. + """ + delta_t: Optional[float] = 1 + nraise: Optional[int] = 1 + refold_pos: Optional[bool] = False + """ + This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. + """ + upscale: Optional[float] = 100 + """ + Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. + """ + bfgs_ndim: Optional[int] = 1 + """ + Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. + """ + trust_radius_max: Optional[float] = 0.8 + """ + Maximum ionic displacement in the structural relaxation. (bfgs only) + """ + trust_radius_min: Optional[float] = 0.001 + """ + Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) + """ + trust_radius_ini: Optional[float] = 0.5 + """ + Initial ionic displacement in the structural relaxation. (bfgs only) + """ + w_1: Optional[float] = 0.01 + w_2: Optional[float] = 0.5 + """ + Parameters used in line search based on the Wolfe conditions. (bfgs only) + """ + fire_alpha_init: Optional[float] = 0.2 + """ + Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 + """ + fire_falpha: Optional[float] = 0.99 + """ + Scaling of the alpha mixing parameter for steps with P > 0; + """ + fire_nmin: Optional[int] = 5 + """ + Minimum number of steps with P > 0 before increase of dt + """ + fire_f_inc: Optional[float] = 1.1 + """ + Factor for increasing dt + """ + fire_f_dec: Optional[float] = 0.5 + """ + Factor for decreasing dt + """ + fire_dtmax: Optional[float] = 10 + """ + Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt + """ + ion_dynamics: Optional[IonDynamics6] = "bfgs" + """ + CASE: calculation == 'vc-relax' + """ + + +class IonDynamics7(Enum): + beeman = "beeman" + + +class IonsSchema7(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + ion_positions: Optional[IonPositions] = "default" + ion_velocities: Optional[IonVelocities] = "default" + pot_extrapolation: Optional[PotExtrapolation] = "atomic" + """ + Used to extrapolate the potential from preceding ionic steps. + """ + wfc_extrapolation: Optional[WfcExtrapolation] = "none" + """ + Used to extrapolate the wavefunctions from preceding ionic steps. + """ + remove_rigid_rot: Optional[bool] = False + """ + This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. + """ + ion_temperature: Optional[IonTemperature] = "not_controlled" + tempw: Optional[float] = 300 + """ + Starting temperature (Kelvin) in MD runs target temperature for most thermostats. + """ + tolp: Optional[float] = 100 + """ + Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. + """ + delta_t: Optional[float] = 1 + nraise: Optional[int] = 1 + refold_pos: Optional[bool] = False + """ + This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. + """ + upscale: Optional[float] = 100 + """ + Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. + """ + bfgs_ndim: Optional[int] = 1 + """ + Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. + """ + trust_radius_max: Optional[float] = 0.8 + """ + Maximum ionic displacement in the structural relaxation. (bfgs only) + """ + trust_radius_min: Optional[float] = 0.001 + """ + Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) + """ + trust_radius_ini: Optional[float] = 0.5 + """ + Initial ionic displacement in the structural relaxation. (bfgs only) + """ + w_1: Optional[float] = 0.01 + w_2: Optional[float] = 0.5 + """ + Parameters used in line search based on the Wolfe conditions. (bfgs only) + """ + fire_alpha_init: Optional[float] = 0.2 + """ + Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 + """ + fire_falpha: Optional[float] = 0.99 + """ + Scaling of the alpha mixing parameter for steps with P > 0; + """ + fire_nmin: Optional[int] = 5 + """ + Minimum number of steps with P > 0 before increase of dt + """ + fire_f_inc: Optional[float] = 1.1 + """ + Factor for increasing dt + """ + fire_f_dec: Optional[float] = 0.5 + """ + Factor for decreasing dt + """ + fire_dtmax: Optional[float] = 10 + """ + Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt + """ + ion_dynamics: Optional[IonDynamics7] = "beeman" + """ + CASE: calculation == 'vc-md' + """ + + +class CellDofree(Enum): + all = "all" + ibrav = "ibrav" + a = "a" + b = "b" + c = "c" + fixa = "fixa" + fixb = "fixb" + fixc = "fixc" + x = "x" + y = "y" + xy = "xy" + xz = "xz" + xyz = "xyz" + shape = "shape" + volume = "volume" + field_2Dxy = "2Dxy" + field_2Dshape = "2Dshape" + epitaxial_ab = "epitaxial_ab" + epitaxial_ac = "epitaxial_ac" + epitaxial_bc = "epitaxial_bc" + + +class CellDynamics(Enum): + none = "none" + sd = "sd" + damp_pr = "damp-pr" + damp_w = "damp-w" + bfgs = "bfgs" + + +class CellSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + press: Optional[float] = 0 + """ + Target pressure [KBar] in a variable-cell md or relaxation run. + """ + wmass: Optional[float] = None + """ + Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD + """ + cell_factor: Optional[float] = None + """ + Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise + """ + press_conv_thr: Optional[float] = 0.5 + """ + Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well). + """ + cell_dofree: Optional[CellDofree] = "all" + """ + Select which of the cell parameters should be moved + """ + cell_dynamics: Optional[CellDynamics] = "bfgs" + """ + CASE ( calculation == 'vc-relax' ) + """ + + +class CellDynamics3(Enum): + none = "none" + pr = "pr" + w = "w" + + +class CellSchema3(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + press: Optional[float] = 0 + """ + Target pressure [KBar] in a variable-cell md or relaxation run. + """ + wmass: Optional[float] = None + """ + Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD + """ + cell_factor: Optional[float] = None + """ + Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise + """ + press_conv_thr: Optional[float] = 0.5 + """ + Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well). + """ + cell_dofree: Optional[CellDofree] = "all" + """ + Select which of the cell parameters should be moved + """ + cell_dynamics: Optional[CellDynamics3] = None + """ + CASE ( calculation == 'vc-md' ) + """ + + +class Value(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + X: Optional[str] = None + """ + label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters) + """ + Mass_X: Optional[float] = None + """ + mass of the atomic species [amu: mass of C = 12]. Used only when performing Molecular Dynamics run or structural optimization runs using Damped MD. Not actually used in all other cases (but stored in data files, so phonon calculations will use these values unless other values are provided) + """ + PseudoPot_X: Optional[str] = None + """ + PseudoPot_X + """ + + +class AtomicSpeciesSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + values: Optional[List[Value]] = None + + +class CardOption(Enum): + alat = "alat" + bohr = "bohr" + angstrom = "angstrom" + crystal = "crystal" + crystal_sg = "crystal_sg" + + +class Value5(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + X: Optional[str] = None + """ + label of the atom as specified in ATOMIC_SPECIES + """ + x: float + """ + atomic positions + """ + y: float + """ + atomic positions + """ + z: float + """ + atomic positions + """ + if_pos_1_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(1)", title="integer one or zero") + if_pos_2_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(2)", title="integer one or zero") + if_pos_3_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(3)", title="integer one or zero") + + +class AtomicPositionsSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + card_option: Optional[CardOption] = "alat" + values: Optional[List[Value5]] = None + + +class CardOption5(Enum): + tpiba = "tpiba" + automatic = "automatic" + crystal = "crystal" + gamma = "gamma" + tpiba_b = "tpiba_b" + crystal_b = "crystal_b" + tpiba_c = "tpiba_c" + crystal_c = "crystal_c" + + +class Value6(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + nks: Optional[int] = None + """ + Number of supplied special k-points. + """ + xk_x: Optional[float] = None + xk_y: Optional[float] = None + xk_z: Optional[float] = None + wk: Optional[float] = None + + +class Values(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + nk1: Optional[int] = None + """ + Number of supplied special k-points. + """ + nk2: Optional[int] = None + """ + Number of supplied special k-points. + """ + nk3: Optional[int] = None + """ + Number of supplied special k-points. + """ + sk1: Optional[int] = None + """ + Number of supplied special k-points. + """ + sk2: Optional[int] = None + """ + Number of supplied special k-points. + """ + sk3: Optional[int] = None + """ + Number of supplied special k-points. + """ + + +class KPointsSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + card_option: Optional[CardOption5] = None + values: Optional[Union[List[Value6], Values]] = None + + +class CardOption6(Enum): + alat = "alat" + bohr = "bohr" + angstrom = "angstrom" + + +class Values8(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + v1: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") + v2: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") + v3: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") + + +class CellParametersSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + card_option: Optional[CardOption6] = None + """ + label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters) + """ + values: Optional[Values8] = None + + +class CardOption7(Enum): + atomic = "atomic" + ortho_atomic = "ortho-atomic" + norm_atomic = "norm-atomic" + wf = "wf" + pseudo = "pseudo" + + +class U(Enum): + U = "U" + + +class Values9(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + U: Optional[U] = None + """ + string constant "U"; indicates the specs for the U parameter will be given + """ + label: Optional[str] = None + """ + label of the atom (as defined in ATOMIC_SPECIES) + """ + manifold: Optional[str] = None + """ + specs of the manifold (e.g., 3d, 2p...) + """ + u_val: Optional[float] = None + """ + value of the U parameter (in eV) + """ + + +class J0(Enum): + J0 = "J0" + + +class Values10(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + J0: Optional[J0] = None + """ + string constant "J0"; indicates the specs for the J0 parameter will be given + """ + label: Optional[str] = None + """ + label of the atom (as defined in ATOMIC_SPECIES) + """ + manifold: Optional[str] = None + """ + specs of the manifold (e.g., 3d, 2p...) + """ + j0_val: Optional[float] = None + """ + value of the J0 parameter (in eV) + """ + + +class ParamType(Enum): + U = "U" + J = "J" + B = "B" + E2 = "E2" + E3 = "E3" + + +class Value7(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + paramType: Optional[ParamType] = None + """ + character describing the type of Hubbard parameter allowed values: U, J and either B (for d-orbitals) or E2 and E3 (for f-orbitals) + """ + label: Optional[str] = None + """ + label of the atom (as defined in ATOMIC_SPECIES) + """ + manifold: Optional[str] = None + """ + specs of the manifold (e.g., 3d, 2p...) + """ + paramValue: Optional[float] = None + """ + value of the J0 parameter (in eV) + """ + + +class Values11(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + U: Optional[U] = None + """ + string constant "U"; indicates the specs for the U parameter will be given + """ + label: Optional[str] = None + """ + label of the atom (as defined in ATOMIC_SPECIES) + """ + manifold: Optional[str] = None + """ + specs of the manifold (e.g., 3d, 2p...) + """ + u_val: Optional[float] = None + """ + value of the U parameter (in eV) + """ + + +class Values12(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + J0: Optional[J0] = None + """ + string constant "J0"; indicates the specs for the J0 parameter will be given + """ + label: Optional[str] = None + """ + label of the atom (as defined in ATOMIC_SPECIES) + """ + manifold: Optional[str] = None + """ + specs of the manifold (e.g., 3d, 2p...) + """ + j0_val: Optional[float] = None + """ + value of the J0 parameter (in eV) + """ + + +class V(Enum): + V = "V" + + +class Values13(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + V: Optional[V] = None + """ + string constant "V"; indicates the specs for the V parameter will be given + """ + label_I_: Optional[str] = Field(None, alias="label(I)") + """ + label of the atom I (as defined in ATOMIC_SPECIES) + """ + manifold_I_: Optional[str] = Field(None, alias="manifold(I)") + """ + specs of the manifold for atom I (e.g., 3d, 2p...) + """ + label_J_: Optional[str] = Field(None, alias="label(J)") + """ + label of the atom J (as defined in ATOMIC_SPECIES) + """ + manifold_J_: Optional[str] = Field(None, alias="manifold(J)") + """ + specs of the manifold for atom J (e.g., 3d, 2p...) + """ + I: Optional[int] = None + """ + index of the atom I + """ + J: Optional[int] = None + """ + index of the atom J + """ + v_val_I_J_: Optional[float] = Field(None, alias="v_val(I,J)") + """ + value of the V parameter for the atom pair I,J (in eV) + """ + + +class HubbardSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + card_option: Optional[CardOption7] = None + values: Optional[Union[List[Union[Values9, Values10]], List[Value7], List[Union[Values11, Values12, Values13]]]] = ( + None + ) + + +class PwxMainSchema(BaseModel): + model_config = ConfigDict( + extra="forbid", + ) + field_CONTROL: Optional[ControlSchema] = Field(None, alias="&CONTROL", title="control schema") + field_SYSTEM: Optional[Union[SystemSchema, SystemSchema1]] = Field(None, alias="&SYSTEM", title="system schema") + field_ELECTRONS: Optional[ElectronsSchema] = Field(None, alias="&ELECTRONS", title="electrons schema") + field_IONS: Optional[Union[IonsSchema, IonsSchema5, IonsSchema6, IonsSchema7]] = Field(None, alias="&IONS") + field_CELL: Optional[Union[CellSchema, CellSchema3]] = Field(None, alias="&CELL") + ATOMIC_SPECIES: Optional[AtomicSpeciesSchema] = Field(None, title="atomic species schema") + ATOMIC_POSITIONS: Optional[AtomicPositionsSchema] = Field(None, title="atomic positions schema") + """ + https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1493 + """ + K_POINTS: Optional[KPointsSchema] = Field(None, title="k points schema") + CELL_PARAMETERS: Optional[CellParametersSchema] = Field(None, title="cell parameters schema") + HUBBARD: Optional[HubbardSchema] = Field(None, title="hubbard schema") diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_positions.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_positions.py index 02eda077e..d130969de 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_positions.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_positions.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/atomic_positions.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_species.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_species.py index a88b6fabb..758368cb7 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_species.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/atomic_species.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/atomic_species.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell.py index 415fa570b..b35ce9d53 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/cell.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell_parameters.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell_parameters.py index 61d5be36f..f16d28ca0 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell_parameters.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/cell_parameters.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/cell_parameters.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/control.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/control.py index e743d3f24..c20b279f3 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/control.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/control.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/control.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/electrons.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/electrons.py index ff7ff3858..e2b512449 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/electrons.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/electrons.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/electrons.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/hubbard.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/hubbard.py index e789befd1..23b472c61 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/hubbard.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/hubbard.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/hubbard.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations @@ -26,7 +26,7 @@ class Values(BaseModel): model_config = ConfigDict( extra="forbid", ) - U_1: Optional[U] = Field(None, alias="U") + U: Optional[U] = None """ string constant "U"; indicates the specs for the U parameter will be given """ @@ -52,7 +52,7 @@ class Values2(BaseModel): model_config = ConfigDict( extra="forbid", ) - J0_1: Optional[J0] = Field(None, alias="J0") + J0: Optional[J0] = None """ string constant "J0"; indicates the specs for the J0 parameter will be given """ @@ -104,7 +104,7 @@ class Values3(BaseModel): model_config = ConfigDict( extra="forbid", ) - U_1: Optional[U] = Field(None, alias="U") + U: Optional[U] = None """ string constant "U"; indicates the specs for the U parameter will be given """ @@ -126,7 +126,7 @@ class Values4(BaseModel): model_config = ConfigDict( extra="forbid", ) - J0_1: Optional[J0] = Field(None, alias="J0") + J0: Optional[J0] = None """ string constant "J0"; indicates the specs for the J0 parameter will be given """ @@ -152,7 +152,7 @@ class Values5(BaseModel): model_config = ConfigDict( extra="forbid", ) - V_1: Optional[V] = Field(None, alias="V") + V: Optional[V] = None """ string constant "V"; indicates the specs for the V parameter will be given """ diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/ions.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/ions.py index cc4e89eb9..3587c79fa 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/ions.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/ions.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/ions.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/k_points.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/k_points.py index b60532b16..1d139d820 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/k_points.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/k_points.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/k_points.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/system.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/system.py index 8b22f1b49..c2b0c162d 100644 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/system.py +++ b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw.x/system.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: 3pse/file/applications/espresso/7.2/pw.x/system.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw_x.py b/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw_x.py deleted file mode 100644 index 7aa24e879..000000000 --- a/src/py/mat3ra/esse/models/third_party/file/applications/espresso/7.2/pw_x.py +++ /dev/null @@ -1,1990 +0,0 @@ -# generated by datamodel-codegen: -# filename: 3pse/file/applications/espresso/7.2/pw.x.json -# version: 0.28.5 - -from __future__ import annotations - -from enum import Enum -from typing import List, Optional, Union - -from pydantic import BaseModel, ConfigDict, Field, RootModel, confloat, conint - - -class Calculation(Enum): - scf = "scf" - nscf = "nscf" - bands = "bands" - relax = "relax" - md = "md" - vc_relax = "vc-relax" - vc_md = "vc-md" - - -class Verbosity(Enum): - high = "high" - low = "low" - debug = "debug" - medium = "medium" - minimal = "minimal" - default = "default" - - -class RestartMode(Enum): - from_scratch = "from_scratch" - restart = "restart" - - -class DiskIo(Enum): - high = "high" - medium = "medium" - low = "low" - nowf = "nowf" - none = "none" - - -class ControlSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - calculation: Optional[Calculation] = "scf" - """ - A string describing the task to be performed - """ - title: Optional[str] = "" - """ - reprinted on output. - """ - verbosity: Optional[Verbosity] = "low" - """ - Currently two verbosity levels are implemented: high, low. 'debug' and 'medium' have the same effect as 'high'; 'default' and 'minimal' as 'low' - """ - restart_mode: Optional[RestartMode] = "from_scratch" - wf_collect: Optional[bool] = None - """ - OBSOLETE - NO LONGER IMPLEMENTED - """ - nstep: Optional[float] = 1 - """ - Default: 1 if calculation == 'scf', 'nscf', 'bands'; 50 for the other cases; Number of molecular-dynamics or structural optimization steps performed in this run. If set to 0, the code performs a quick "dry run", stopping just after initialization. This is useful to check for input correctness and to have the summary printed. NOTE: in MD calculations, the code will perform "nstep" steps even if restarting from a previously interrupted calculation. - """ - iprint: Optional[float] = None - """ - band energies are written every iprint iterations - """ - tstress: Optional[bool] = False - """ - calculate stress. It is set to .TRUE. automatically if calculation == 'vc-md' or 'vc-relax' - """ - tprnfor: Optional[bool] = None - """ - calculate forces. It is set to .TRUE. automatically if calculation == 'relax','md','vc-md' - """ - dt: Optional[float] = 20 - """ - time step for molecular dynamics, in Rydberg atomic units (1 a.u.=4.8378 * 10^-17 s : beware, the CP code uses Hartree atomic units, half that much!!!) - """ - outdir: Optional[str] = None - """ - input, temporary, output files are found in this directory, see also wfcdir - """ - wfcdir: Optional[str] = None - """ - This directory specifies where to store files generated by each processor (*.wfc{N}, *.igk{N}, etc.). Useful for machines without a parallel file system: set wfcdir to a local file system, while outdir should be a parallel or network file system, visible to all processors. Beware: in order to restart from interrupted runs, or to perform further calculations using the produced data files, you may need to copy files to outdir. Works only for pw.x. - """ - prefix: Optional[str] = "pwscf" - """ - prepended to input/output filenames: prefix.wfc, prefix.rho, etc. - """ - lkpoint_dir: Optional[bool] = None - """ - OBSOLETE - NO LONGER IMPLEMENTED - """ - max_seconds: Optional[float] = 10000000 - """ - Jobs stops after max_seconds CPU time. Use this option in conjunction with option restart_mode if you need to split a job too long to complete into shorter jobs that fit into your batch queues. - """ - etot_conv_thr: Optional[float] = 0.0001 - """ - Convergence threshold on total energy (a.u) for ionic minimization: the convergence criterion is satisfied when the total energy changes less than etot_conv_thr between two consecutive scf steps. Note that etot_conv_thr is extensive, like the total energy. See also forc_conv_thr - both criteria must be satisfied - """ - forc_conv_thr: Optional[float] = 0.001 - """ - Convergence threshold on forces (a.u) for ionic minimization: the convergence criterion is satisfied when all components of all forces are smaller than forc_conv_thr. See also etot_conv_thr - both criteria must be satisfied - """ - disk_io: Optional[DiskIo] = None - """ - Specifies the amount of disk I/O activity: (only for binary files and xml data file in data directory; other files printed at each molecular dynamics / structural optimization step are not controlled by this option ) - """ - pseudo_dir: Optional[str] = None - """ - directory containing pseudopotential files. Default: value of the $ESPRESSO_PSEUDO environment variable if set; '$HOME/espresso/pseudo/' otherwise - """ - tefield: Optional[bool] = False - """ - If .TRUE. a saw-like potential simulating an electric field is added to the bare ionic potential. See variables edir, eamp, emaxpos, eopreg for the form and size of the added potential. - """ - dipfield: Optional[bool] = False - """ - If .TRUE. and tefield==.TRUE. a dipole correction is also added to the bare ionic potential - implements the recipe of L. Bengtsson, PRB 59, 12301 (1999). See variables edir, emaxpos, eopreg for the form of the correction. Must be used ONLY in a slab geometry, for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE. - """ - lelfield: Optional[bool] = False - """ - If .TRUE. a homogeneous finite electric field described through the modern theory of the polarization is applied. This is different from tefield == .true. ! - """ - nberrycyc: Optional[int] = 1 - """ - In the case of a finite electric field ( lelfield == .TRUE. ) it defines the number of iterations for converging the wavefunctions in the electric field Hamiltonian, for each external iteration on the charge density - """ - lorbm: Optional[bool] = False - """ - If .TRUE. perform orbital magnetization calculation. - """ - lberry: Optional[bool] = False - """ - If .TRUE. perform a Berry phase calculation. See the header of PW/src/bp_c_phase.f90 for documentation - """ - gdir: Optional[float] = None - """ - For Berry phase calculation: direction of the k-point strings in reciprocal space. Allowed values: 1, 2, 3 1=first, 2=second, 3=third reciprocal lattice vector For calculations with finite electric fields (lelfield==.true.) "gdir" is the direction of the field. - """ - nppstr: Optional[float] = None - """ - For Berry phase calculation: number of k-points to be calculated along each symmetry-reduced string. The same for calculation with finite electric fields (lelfield==.true.). - """ - gate: Optional[bool] = False - """ - In the case of charged cells (tot_charge .ne. 0) setting gate = .TRUE. represents the counter charge (i.e. -tot_charge) not by a homogeneous background charge but with a charged plate, which is placed at zgate (see below). Details of the gate potential can be found in T. Brumme, M. Calandra, F. Mauri; PRB 89, 245406 (2014). Note, that in systems which are not symmetric with respect to the plate, one needs to enable the dipole correction! (dipfield=.true.). Currently, symmetry can be used with gate=.true. but carefully check that no symmetry is included which maps z to -z even if in principle one could still use them for symmetric systems (i.e. no dipole correction). For nosym=.false. verbosity is set to 'high'. Note: this option was called "monopole" in v6.0 and 6.1 of pw.x - """ - twochem: Optional[bool] = False - """ - IF .TRUE. , a two chemical potential calculation for the simulation of photoexcited systems is performed, constraining a fraction of the electrons in the conduction manifold. - """ - lfcp: Optional[bool] = False - """ - If .TRUE. perform a constant bias potential (constant-mu) calculation for a system with ESM method. See the header of PW/src/fcp_module.f90 for documentation. To perform the calculation, you must set a namelist FCP. - """ - trism: Optional[bool] = False - """ - If .TRUE. perform a 3D-RISM-SCF calculation [for details see H.Sato et al., JCP 112, 9463 (2000), doi:10.1063/1.481564]. The solvent's distributions are calculated by 3D-RISM, though solute is treated as SCF. The charge density and the atomic positions are optimized, simultaneously with the solvents. To perform the calculation, you must set a namelist RISM and a card SOLVENTS. If assume_isolated = 'esm' and esm_bc = 'bc1', Laue-RISM is calculated instead of 3D-RISM and coupled with ESM method (i.e. ESM-RISM). [for details see S.Nishihara and M.Otani, PRB 96, 115429 (2017)]. The default of mixing_beta is 0.2 for both 3D-RISM and Laue-RISM. For structural relaxation with BFGS, ignore_wolfe is always .TRUE. . - """ - - -class Occupations(Enum): - smearing = "smearing" - tetrahedra = "tetrahedra" - tetrahedra_lin = "tetrahedra_lin" - tetrahedra_opt = "tetrahedra_opt" - fixed = "fixed" - from_input = "from_input" - - -class Smearing(Enum): - gaussian = "gaussian" - gauss = "gauss" - methfessel_paxton = "methfessel-paxton" - m_p = "m-p" - mp = "mp" - marzari_vanderbilt = "marzari-vanderbilt" - cold = "cold" - m_v = "m-v" - mv = "mv" - fermi_dirac = "fermi-dirac" - f_d = "f-d" - fd = "fd" - - -class PolType(Enum): - e = "e" - h = "h" - - -class ExxdivTreatment(Enum): - gygi_baldereschi = "gygi-baldereschi" - vcut_spherical = "vcut_spherical" - vcut_ws = "vcut_ws" - none = "none" - - -class HubbardOccItem(RootModel[conint(ge=1)]): - root: conint(ge=1) - - -class HubbardOccItem1(RootModel[conint(ge=1, le=3)]): - root: conint(ge=1, le=3) - - -class ConstrainedMagnetization(Enum): - none = "none" - total = "total" - atomic = "atomic" - total_direction = "total direction" - atomic_direction = "atomic direction" - - -class AssumeIsolated(Enum): - none = "none" - makov_payne = "makov-payne" - m_p = "m-p" - mp = "mp" - martyna_tuckerman = "martyna-tuckerman" - m_t = "m-t" - mt = "mt" - esm = "esm" - field_2D = "2D" - - -class EsmBc(Enum): - pbc = "pbc" - bc1 = "bc1" - bc2 = "bc2" - bc3 = "bc3" - - -class VdwCorr(Enum): - none = "none" - grimme_d2 = "grimme-d2" - Grimme_D2 = "Grimme-D2" - DFT_D = "DFT-D" - dft_d = "dft-d" - grimme_d3 = "grimme-d3" - Grimme_D3 = "Grimme-D3" - DFT_D3 = "DFT-D3" - dft_d3 = "dft-d3" - TS = "TS" - ts = "ts" - ts_vdw = "ts-vdw" - ts_vdW = "ts-vdW" - tkatchenko_scheffler = "tkatchenko-scheffler" - MBD = "MBD" - mbd = "mbd" - many_body_dispersion = "many-body-dispersion" - mbd_vdw = "mbd_vdw" - XDM = "XDM" - xdm = "xdm" - - -class SystemSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ibrav: int - nat: int - """ - number of atoms in the unit cell (ALL atoms, except if space_group is set, in which case, INEQUIVALENT atoms) - """ - ntyp: int - """ - number of types of atoms in the unit cell - """ - nbnd: Optional[int] = None - """ - Default: for an insulator, nbnd = number of valence bands (nbnd = # of electrons /2); for a metal, 20% more (minimum 4 more) - """ - nbnd_cond: Optional[int] = None - """ - Default: nbnd_cond = nbnd - # of electrons / 2 in the collinear case; nbnd_cond = nbnd - # of electrons in the noncollinear case. - """ - tot_charge: Optional[float] = 0 - starting_charge: Optional[float] = 0 - """ - starting charge on atomic type 'i', to create starting potential with startingpot = 'atomic'. - """ - tot_magnetization: Optional[float] = -10000 - """ - Total majority spin charge - minority spin charge. Used to impose a specific total electronic magnetization. If unspecified then tot_magnetization variable is ignored and the amount of electronic magnetization is determined during the self-consistent cycle. - """ - starting_magnetization: Optional[List[confloat(ge=-1.0, le=1.0)]] = None - ecutwfc: float - """ - kinetic energy cutoff (Ry) for wavefunctions - """ - ecutrho: Optional[float] = None - """ - Kinetic energy cutoff (Ry) for charge density and potential For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. Default: 4 * ecutwfc - """ - ecutfock: Optional[float] = None - """ - Kinetic energy cutoff (Ry) for the exact exchange operator in EXX type calculations. By default this is the same as ecutrho but in some EXX calculations, a significant speed-up can be obtained by reducing ecutfock, at the expense of some loss in accuracy. Must be .gt. ecutwfc. Not implemented for stress calculation and for US-PP and PAW pseudopotentials. - """ - nr1: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr2: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr3: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr1s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nr2s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nr3s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nosym: Optional[bool] = False - nosym_evc: Optional[bool] = False - noinv: Optional[bool] = False - """ - if (.TRUE.) disable the usage of k => -k symmetry (time reversal) in k-point generation - """ - no_t_rev: Optional[bool] = False - """ - if (.TRUE.) disable the usage of magnetic symmetry operations that consist in a rotation + time reversal. - """ - force_symmorphic: Optional[bool] = False - """ - if (.TRUE.) force the symmetry group to be symmorphic by disabling symmetry operations having an associated fractionary translation - """ - use_all_frac: Optional[bool] = False - occupations: Optional[Occupations] = None - one_atom_occupations: Optional[bool] = False - starting_spin_angle: Optional[bool] = False - degauss_cond: Optional[float] = 0 - """ - value of the gaussian spreading (Ry) for brillouin-zone integration in the conduction manifold in a two-chemical potential calculation (twochem=.true.). - """ - nelec_cond: Optional[float] = 0 - """ - Number of electrons placed in the conduction manifold in a two-chemical potential calculation (twochem=.true.). Of the total # of electrons nelec, nelec-nelec_cond will occupy the valence manifold and nelec_cond will be constrained in the conduction manifold. - """ - degauss: Optional[float] = 0 - """ - value of the gaussian spreading (Ry) for brillouin-zone integration in metals. - """ - smearing: Optional[Smearing] = "gaussian" - nspin: Optional[int] = 1 - sic_gamma: Optional[float] = 0 - """ - Strength of the gammaDFT potential. - """ - pol_type: Optional[PolType] = None - """ - Type of polaron in gammaDFT. - """ - sic_energy: Optional[bool] = False - """ - Enable the calculation of the total energy in gammaDFT. When .true., a preliminary calculation is performed to calculate the electron density in the absence of the polaron. When .false., the total energy printed in output should not be considered. For structural relaxations, it is recommended to use .false. to avoid doubling the computational cost. - """ - sci_vb: Optional[float] = 0 - """ - Valence band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. - """ - sci_cb: Optional[float] = 0 - """ - Conduction band band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. - """ - noncolin: Optional[bool] = False - """ - if .true. the program will perform a noncollinear calculation. - """ - ecfixed: Optional[float] = 0 - qcutz: Optional[float] = 0 - q2sigma: Optional[float] = 0.1 - input_dft: Optional[str] = None - """ - Exchange-correlation functional: eg 'PBE', 'BLYP' etc See Modules/funct.f90 for allowed values. Overrides the value read from pseudopotential files. Use with care and if you know what you are doing! - """ - ace: Optional[bool] = True - """ - Use Adaptively Compressed Exchange operator as in Lin Lin, J. Chem. Theory Comput. 2016, 12, 2242--2249, doi:10.1021/acs.jctc.6b00092 - """ - exx_fraction: Optional[float] = None - """ - Fraction of EXX for hybrid functional calculations. In the case of input_dft='PBE0', the default value is 0.25, while for input_dft='B3LYP' the exx_fraction default value is 0.20. - """ - screening_parameter: Optional[float] = 0.106 - """ - screening_parameter for HSE like hybrid functionals. - """ - exxdiv_treatment: Optional[ExxdivTreatment] = "gygi-baldereschi" - x_gamma_extrapolation: Optional[bool] = True - """ - Specific for EXX. If .true., extrapolate the G=0 term of the potential - """ - ecutvcut: Optional[float] = None - """ - Reciprocal space cutoff for correcting Coulomb potential divergencies at small q vectors. - """ - nqx1: Optional[int] = 0 - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - nqx2: Optional[int] = None - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - nqx3: Optional[int] = None - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - localization_thr: Optional[float] = 0 - """ - Overlap threshold over which the exchange integral over a pair of localized orbitals is included in the evaluation of EXX operator. Any value greater than 0.0 triggers the SCDM localization and the evaluation on EXX using the localized orbitals. Very small value of the threshold should yield the same result as the default EXX evaluation - """ - Hubbard_occ: Optional[List[List[Union[HubbardOccItem, HubbardOccItem1, float]]]] = None - Hubbard_alpha: Optional[List[float]] = None - Hubbard_beta: Optional[List[float]] = None - starting_ns_eigenvalue: Optional[List[List[List[float]]]] = None - dmft: Optional[bool] = False - """ - If true, nscf calculation will exit in restart mode, scf calculation will restart from there if DMFT updates are provided as hdf5 archive. Scf calculation should be used only with electron_maxstep = 1. - """ - dmft_prefix: Optional[str] = None - """ - prepended to hdf5 archive: dmft_prefix.h5 - """ - ensemble_energies: Optional[bool] = False - """ - If ensemble_energies = .true., an ensemble of xc energies is calculated non-selfconsistently for perturbed exchange-enhancement factors and LDA vs. PBE correlation ratios after each converged electronic ground state calculation. - """ - edir: Optional[int] = None - """ - The direction of the electric field or dipole correction is parallel to the bg(:,edir) reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points; edir = 1, 2 or 3. Used only if tefield is .TRUE. - """ - emaxpos: Optional[float] = 0.5 - """ - Position of the maximum of the saw-like potential along crystal axis edir, within the unit cell (see below), 0 < emaxpos < 1 Used only if tefield is .TRUE. - """ - eopreg: Optional[float] = 0.1 - """ - Zone in the unit cell where the saw-like potential decreases. ( see below, 0 < eopreg < 1 ). Used only if tefield is .TRUE. - """ - eamp: Optional[float] = 0.001 - angle1: Optional[List[float]] = Field(None, max_length=1, min_length=1) - """ - The angle expressed in degrees between the initial magnetization and the z-axis. For noncollinear calculations only; index i runs over the atom types. - """ - angle2: Optional[List[float]] = Field(None, max_length=1, min_length=1) - """ - The angle expressed in degrees between the projection of the initial magnetization on x-y plane and the x-axis. For noncollinear calculations only. - """ - lforcet: Optional[bool] = None - """ - When starting a non collinear calculation using an existing density file from a collinear lsda calculation assumes previous density points in z direction and rotates it in the direction described by angle1 and angle2 variables for atomic type 1 - """ - constrained_magnetization: Optional[ConstrainedMagnetization] = "none" - """ - Used to perform constrained calculations in magnetic systems. - """ - fixed_magnetization: Optional[List[float]] = Field(None, max_length=3, min_length=3) - lambda_: Optional[float] = Field(1, alias="lambda") - """ - parameter used for constrained_magnetization calculations N.B.: if the scf calculation does not converge, try to reduce lambda to obtain convergence, then restart the run with a larger lambda - """ - report: Optional[int] = -1 - """ - determines when atomic magnetic moments are printed on output - """ - lspinorb: Optional[bool] = None - """ - if .TRUE. the noncollinear code can use a pseudopotential with spin-orbit. - """ - assume_isolated: Optional[AssumeIsolated] = "none" - """ - Used to perform calculation assuming the system to be isolated (a molecule or a cluster in a 3D supercell) - """ - esm_bc: Optional[EsmBc] = "pbc" - """ - If assume_isolated = 'esm', determines the boundary conditions used for either side of the slab. - """ - esm_w: Optional[float] = 0 - """ - If assume_isolated = 'esm', determines the position offset [in a.u.] of the start of the effective screening region, measured relative to the cell edge. (ESM region begins at z = +/- [L_z/2 + esm_w] ). - """ - esm_efield: Optional[float] = 0 - """ - If assume_isolated = 'esm' and esm_bc = 'bc2', gives the magnitude of the electric field [Ry/a.u.] to be applied between semi-infinite ESM electrodes. - """ - esm_nfit: Optional[int] = 4 - """ - If assume_isolated = 'esm', gives the number of z-grid points for the polynomial fit along the cell edge. - """ - lgcscf: Optional[bool] = False - """ - If .TRUE. perform a constant bias potential (constant-mu) calculation with Grand-Canonical SCF. - """ - gcscf_mu: Optional[float] = None - """ - The target Fermi energy (eV) of GC-SCF. One can start with appropriate total charge of the system by giving tot_charge - """ - gcscf_conv_thr: Optional[float] = 0.01 - """ - Convergence threshold of Fermi energy (eV) for GC-SCF. - """ - gcscf_beta: Optional[float] = 0.05 - """ - Mixing factor for GC-SCF. Larger values are recommended, if systems with small DOS on Fermi surface as graphite. - """ - vdw_corr: Optional[VdwCorr] = "none" - """ - Type of Van der Waals correction - """ - london: Optional[bool] = False - """ - OBSOLESCENT, same as vdw_corr='DFT-D' - """ - london_s6: Optional[float] = 0.75 - """ - global scaling parameter for DFT-D. Default is good for PBE. - """ - london_c6: Optional[float] = None - """ - atomic C6 coefficient of each atom type - """ - london_rvdw: Optional[float] = None - """ - atomic vdw radii of each atom type - """ - london_rcut: Optional[float] = 200 - """ - cutoff radius (a.u.) for dispersion interactions - """ - dftd3_version: Optional[conint(ge=2, le=6)] = 3 - """ - Version of Grimme implementation of Grimme-D3 - """ - dftd3_threebody: Optional[bool] = True - """ - Turn three-body terms in Grimme-D3 on. If .false. two-body contributions only are computed, using two-body parameters of Grimme-D3. If dftd3_version=2, three-body contribution is always disabled. - """ - ts_vdw_econv_thr: Optional[float] = 1e-06 - """ - Optional: controls the convergence of the vdW energy (and forces). The default value is a safe choice, likely too safe, but you do not gain much in increasing it - """ - ts_vdw_isolated: Optional[bool] = False - """ - Optional: set it to .TRUE. when computing the Tkatchenko-Scheffler vdW energy or the Many-Body dispersion (MBD) energy for an isolated (non-periodic) system. - """ - xdm: Optional[bool] = False - """ - OBSOLESCENT, same as vdw_corr='xdm' - """ - xdm_a1: Optional[float] = 0.6836 - """ - Damping function parameter a1 (adimensional) - """ - xdm_a2: Optional[float] = 1.5045 - """ - Damping function parameter a2 (angstrom) - """ - space_group: Optional[int] = 0 - """ - The number of the space group of the crystal, as given in the International Tables of Crystallography A (ITA) - """ - uniqueb: Optional[bool] = False - """ - Used only for monoclinic lattices - """ - origin_choice: Optional[int] = 1 - """ - Used only for space groups that in the ITA allow the use of two different origins - """ - rhombohedral: Optional[bool] = True - """ - Used only for rhombohedral space groups. - """ - zgate: Optional[float] = 0.5 - """ - used only if gate = .TRUE. - """ - relaxz: Optional[bool] = False - """ - used only if gate = .TRUE. - """ - block: Optional[bool] = False - """ - used only if gate = .TRUE. - """ - block_1: Optional[float] = 0.45 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - block_2: Optional[float] = 0.55 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - block_height: Optional[float] = 0.1 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - nextffield: Optional[int] = 0 - """ - Number of activated external ionic force fields. - """ - celldm: Optional[List[float]] = Field(None, max_length=6, min_length=6) - - -class HubbardOccItem2(RootModel[conint(ge=1)]): - root: conint(ge=1) - - -class HubbardOccItem3(RootModel[conint(ge=1, le=3)]): - root: conint(ge=1, le=3) - - -class SystemSchema1(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ibrav: int - nat: int - """ - number of atoms in the unit cell (ALL atoms, except if space_group is set, in which case, INEQUIVALENT atoms) - """ - ntyp: int - """ - number of types of atoms in the unit cell - """ - nbnd: Optional[int] = None - """ - Default: for an insulator, nbnd = number of valence bands (nbnd = # of electrons /2); for a metal, 20% more (minimum 4 more) - """ - nbnd_cond: Optional[int] = None - """ - Default: nbnd_cond = nbnd - # of electrons / 2 in the collinear case; nbnd_cond = nbnd - # of electrons in the noncollinear case. - """ - tot_charge: Optional[float] = 0 - starting_charge: Optional[float] = 0 - """ - starting charge on atomic type 'i', to create starting potential with startingpot = 'atomic'. - """ - tot_magnetization: Optional[float] = -10000 - """ - Total majority spin charge - minority spin charge. Used to impose a specific total electronic magnetization. If unspecified then tot_magnetization variable is ignored and the amount of electronic magnetization is determined during the self-consistent cycle. - """ - starting_magnetization: Optional[List[confloat(ge=-1.0, le=1.0)]] = None - ecutwfc: float - """ - kinetic energy cutoff (Ry) for wavefunctions - """ - ecutrho: Optional[float] = None - """ - Kinetic energy cutoff (Ry) for charge density and potential For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. Default: 4 * ecutwfc - """ - ecutfock: Optional[float] = None - """ - Kinetic energy cutoff (Ry) for the exact exchange operator in EXX type calculations. By default this is the same as ecutrho but in some EXX calculations, a significant speed-up can be obtained by reducing ecutfock, at the expense of some loss in accuracy. Must be .gt. ecutwfc. Not implemented for stress calculation and for US-PP and PAW pseudopotentials. - """ - nr1: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr2: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr3: Optional[int] = None - """ - Three-dimensional FFT mesh (hard grid) for charge density (and scf potential). If not specified the grid is calculated based on the cutoff for charge density (see also ecutrho) - """ - nr1s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nr2s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nr3s: Optional[int] = None - """ - Three-dimensional mesh for wavefunction FFT and for the smooth part of charge density ( smooth grid ). Coincides with nr1, nr2, nr3 if ecutrho = 4 * ecutwfc ( default ) - """ - nosym: Optional[bool] = False - nosym_evc: Optional[bool] = False - noinv: Optional[bool] = False - """ - if (.TRUE.) disable the usage of k => -k symmetry (time reversal) in k-point generation - """ - no_t_rev: Optional[bool] = False - """ - if (.TRUE.) disable the usage of magnetic symmetry operations that consist in a rotation + time reversal. - """ - force_symmorphic: Optional[bool] = False - """ - if (.TRUE.) force the symmetry group to be symmorphic by disabling symmetry operations having an associated fractionary translation - """ - use_all_frac: Optional[bool] = False - occupations: Optional[Occupations] = None - one_atom_occupations: Optional[bool] = False - starting_spin_angle: Optional[bool] = False - degauss_cond: Optional[float] = 0 - """ - value of the gaussian spreading (Ry) for brillouin-zone integration in the conduction manifold in a two-chemical potential calculation (twochem=.true.). - """ - nelec_cond: Optional[float] = 0 - """ - Number of electrons placed in the conduction manifold in a two-chemical potential calculation (twochem=.true.). Of the total # of electrons nelec, nelec-nelec_cond will occupy the valence manifold and nelec_cond will be constrained in the conduction manifold. - """ - degauss: Optional[float] = 0 - """ - value of the gaussian spreading (Ry) for brillouin-zone integration in metals. - """ - smearing: Optional[Smearing] = "gaussian" - nspin: Optional[int] = 1 - sic_gamma: Optional[float] = 0 - """ - Strength of the gammaDFT potential. - """ - pol_type: Optional[PolType] = None - """ - Type of polaron in gammaDFT. - """ - sic_energy: Optional[bool] = False - """ - Enable the calculation of the total energy in gammaDFT. When .true., a preliminary calculation is performed to calculate the electron density in the absence of the polaron. When .false., the total energy printed in output should not be considered. For structural relaxations, it is recommended to use .false. to avoid doubling the computational cost. - """ - sci_vb: Optional[float] = 0 - """ - Valence band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. - """ - sci_cb: Optional[float] = 0 - """ - Conduction band band shift (in eV) through self-consistent scissor operator. When performing gammaDFT calculations of polarons, the polaron level is not shifted. - """ - noncolin: Optional[bool] = False - """ - if .true. the program will perform a noncollinear calculation. - """ - ecfixed: Optional[float] = 0 - qcutz: Optional[float] = 0 - q2sigma: Optional[float] = 0.1 - input_dft: Optional[str] = None - """ - Exchange-correlation functional: eg 'PBE', 'BLYP' etc See Modules/funct.f90 for allowed values. Overrides the value read from pseudopotential files. Use with care and if you know what you are doing! - """ - ace: Optional[bool] = True - """ - Use Adaptively Compressed Exchange operator as in Lin Lin, J. Chem. Theory Comput. 2016, 12, 2242--2249, doi:10.1021/acs.jctc.6b00092 - """ - exx_fraction: Optional[float] = None - """ - Fraction of EXX for hybrid functional calculations. In the case of input_dft='PBE0', the default value is 0.25, while for input_dft='B3LYP' the exx_fraction default value is 0.20. - """ - screening_parameter: Optional[float] = 0.106 - """ - screening_parameter for HSE like hybrid functionals. - """ - exxdiv_treatment: Optional[ExxdivTreatment] = "gygi-baldereschi" - x_gamma_extrapolation: Optional[bool] = True - """ - Specific for EXX. If .true., extrapolate the G=0 term of the potential - """ - ecutvcut: Optional[float] = None - """ - Reciprocal space cutoff for correcting Coulomb potential divergencies at small q vectors. - """ - nqx1: Optional[int] = 0 - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - nqx2: Optional[int] = None - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - nqx3: Optional[int] = None - """ - Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. - """ - localization_thr: Optional[float] = 0 - """ - Overlap threshold over which the exchange integral over a pair of localized orbitals is included in the evaluation of EXX operator. Any value greater than 0.0 triggers the SCDM localization and the evaluation on EXX using the localized orbitals. Very small value of the threshold should yield the same result as the default EXX evaluation - """ - Hubbard_occ: Optional[List[List[Union[HubbardOccItem2, HubbardOccItem3, float]]]] = None - Hubbard_alpha: Optional[List[float]] = None - Hubbard_beta: Optional[List[float]] = None - starting_ns_eigenvalue: Optional[List[List[List[float]]]] = None - dmft: Optional[bool] = False - """ - If true, nscf calculation will exit in restart mode, scf calculation will restart from there if DMFT updates are provided as hdf5 archive. Scf calculation should be used only with electron_maxstep = 1. - """ - dmft_prefix: Optional[str] = None - """ - prepended to hdf5 archive: dmft_prefix.h5 - """ - ensemble_energies: Optional[bool] = False - """ - If ensemble_energies = .true., an ensemble of xc energies is calculated non-selfconsistently for perturbed exchange-enhancement factors and LDA vs. PBE correlation ratios after each converged electronic ground state calculation. - """ - edir: Optional[int] = None - """ - The direction of the electric field or dipole correction is parallel to the bg(:,edir) reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points; edir = 1, 2 or 3. Used only if tefield is .TRUE. - """ - emaxpos: Optional[float] = 0.5 - """ - Position of the maximum of the saw-like potential along crystal axis edir, within the unit cell (see below), 0 < emaxpos < 1 Used only if tefield is .TRUE. - """ - eopreg: Optional[float] = 0.1 - """ - Zone in the unit cell where the saw-like potential decreases. ( see below, 0 < eopreg < 1 ). Used only if tefield is .TRUE. - """ - eamp: Optional[float] = 0.001 - angle1: Optional[List[float]] = Field(None, max_length=1, min_length=1) - """ - The angle expressed in degrees between the initial magnetization and the z-axis. For noncollinear calculations only; index i runs over the atom types. - """ - angle2: Optional[List[float]] = Field(None, max_length=1, min_length=1) - """ - The angle expressed in degrees between the projection of the initial magnetization on x-y plane and the x-axis. For noncollinear calculations only. - """ - lforcet: Optional[bool] = None - """ - When starting a non collinear calculation using an existing density file from a collinear lsda calculation assumes previous density points in z direction and rotates it in the direction described by angle1 and angle2 variables for atomic type 1 - """ - constrained_magnetization: Optional[ConstrainedMagnetization] = "none" - """ - Used to perform constrained calculations in magnetic systems. - """ - fixed_magnetization: Optional[List[float]] = Field(None, max_length=3, min_length=3) - lambda_: Optional[float] = Field(1, alias="lambda") - """ - parameter used for constrained_magnetization calculations N.B.: if the scf calculation does not converge, try to reduce lambda to obtain convergence, then restart the run with a larger lambda - """ - report: Optional[int] = -1 - """ - determines when atomic magnetic moments are printed on output - """ - lspinorb: Optional[bool] = None - """ - if .TRUE. the noncollinear code can use a pseudopotential with spin-orbit. - """ - assume_isolated: Optional[AssumeIsolated] = "none" - """ - Used to perform calculation assuming the system to be isolated (a molecule or a cluster in a 3D supercell) - """ - esm_bc: Optional[EsmBc] = "pbc" - """ - If assume_isolated = 'esm', determines the boundary conditions used for either side of the slab. - """ - esm_w: Optional[float] = 0 - """ - If assume_isolated = 'esm', determines the position offset [in a.u.] of the start of the effective screening region, measured relative to the cell edge. (ESM region begins at z = +/- [L_z/2 + esm_w] ). - """ - esm_efield: Optional[float] = 0 - """ - If assume_isolated = 'esm' and esm_bc = 'bc2', gives the magnitude of the electric field [Ry/a.u.] to be applied between semi-infinite ESM electrodes. - """ - esm_nfit: Optional[int] = 4 - """ - If assume_isolated = 'esm', gives the number of z-grid points for the polynomial fit along the cell edge. - """ - lgcscf: Optional[bool] = False - """ - If .TRUE. perform a constant bias potential (constant-mu) calculation with Grand-Canonical SCF. - """ - gcscf_mu: Optional[float] = None - """ - The target Fermi energy (eV) of GC-SCF. One can start with appropriate total charge of the system by giving tot_charge - """ - gcscf_conv_thr: Optional[float] = 0.01 - """ - Convergence threshold of Fermi energy (eV) for GC-SCF. - """ - gcscf_beta: Optional[float] = 0.05 - """ - Mixing factor for GC-SCF. Larger values are recommended, if systems with small DOS on Fermi surface as graphite. - """ - vdw_corr: Optional[VdwCorr] = "none" - """ - Type of Van der Waals correction - """ - london: Optional[bool] = False - """ - OBSOLESCENT, same as vdw_corr='DFT-D' - """ - london_s6: Optional[float] = 0.75 - """ - global scaling parameter for DFT-D. Default is good for PBE. - """ - london_c6: Optional[float] = None - """ - atomic C6 coefficient of each atom type - """ - london_rvdw: Optional[float] = None - """ - atomic vdw radii of each atom type - """ - london_rcut: Optional[float] = 200 - """ - cutoff radius (a.u.) for dispersion interactions - """ - dftd3_version: Optional[conint(ge=2, le=6)] = 3 - """ - Version of Grimme implementation of Grimme-D3 - """ - dftd3_threebody: Optional[bool] = True - """ - Turn three-body terms in Grimme-D3 on. If .false. two-body contributions only are computed, using two-body parameters of Grimme-D3. If dftd3_version=2, three-body contribution is always disabled. - """ - ts_vdw_econv_thr: Optional[float] = 1e-06 - """ - Optional: controls the convergence of the vdW energy (and forces). The default value is a safe choice, likely too safe, but you do not gain much in increasing it - """ - ts_vdw_isolated: Optional[bool] = False - """ - Optional: set it to .TRUE. when computing the Tkatchenko-Scheffler vdW energy or the Many-Body dispersion (MBD) energy for an isolated (non-periodic) system. - """ - xdm: Optional[bool] = False - """ - OBSOLESCENT, same as vdw_corr='xdm' - """ - xdm_a1: Optional[float] = 0.6836 - """ - Damping function parameter a1 (adimensional) - """ - xdm_a2: Optional[float] = 1.5045 - """ - Damping function parameter a2 (angstrom) - """ - space_group: Optional[int] = 0 - """ - The number of the space group of the crystal, as given in the International Tables of Crystallography A (ITA) - """ - uniqueb: Optional[bool] = False - """ - Used only for monoclinic lattices - """ - origin_choice: Optional[int] = 1 - """ - Used only for space groups that in the ITA allow the use of two different origins - """ - rhombohedral: Optional[bool] = True - """ - Used only for rhombohedral space groups. - """ - zgate: Optional[float] = 0.5 - """ - used only if gate = .TRUE. - """ - relaxz: Optional[bool] = False - """ - used only if gate = .TRUE. - """ - block: Optional[bool] = False - """ - used only if gate = .TRUE. - """ - block_1: Optional[float] = 0.45 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - block_2: Optional[float] = 0.55 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - block_height: Optional[float] = 0.1 - """ - used only if gate = .TRUE. and block = .TRUE. - """ - nextffield: Optional[int] = 0 - """ - Number of activated external ionic force fields. - """ - A: Optional[float] = None - B: Optional[float] = None - C: Optional[float] = None - cosAB: Optional[float] = None - cosAC: Optional[float] = None - cosBC: Optional[float] = None - - -class MixingMode(Enum): - plain = "plain" - TF = "TF" - local_TF = "local-TF" - - -class Diagonalization(Enum): - david = "david" - cg = "cg" - ppcg = "ppcg" - paro = "paro" - ParO = "ParO" - rmm_davidson = "rmm-davidson" - rmm_paro = "rmm-paro" - - -class EfieldPhase(Enum): - read = "read" - write = "write" - none = "none" - - -class Startingpot(Enum): - atomic = "atomic" - file = "file" - - -class Startingwfc(Enum): - atomic = "atomic" - atomic_random = "atomic+random" - random = "random" - file = "file" - - -class ElectronsSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - electron_maxstep: Optional[int] = 100 - """ - maximum number of iterations in a scf step. If exact exchange is active, this will affect the inner loops. - """ - exx_maxstep: Optional[int] = 100 - """ - maximum number of outer iterations in a scf calculation with exact exchange. - """ - scf_must_converge: Optional[bool] = True - """ - If .false. do not stop molecular dynamics or ionic relaxation when electron_maxstep is reached. Use with care. - """ - conv_thr: Optional[float] = None - adaptive_thr: Optional[bool] = False - """ - If .TRUE. this turns on the use of an adaptive conv_thr for the inner scf loops when using EXX. - """ - conv_thr_init: Optional[float] = None - """ - When adaptive_thr = .TRUE. this is the convergence threshold used for the first scf cycle. - """ - conv_thr_multi: Optional[float] = None - """ - When adaptive_thr = .TRUE. the convergence threshold for each scf cycle is given by: max( conv_thr, conv_thr_multi * dexx ) - """ - mixing_mode: Optional[MixingMode] = "plain" - mixing_beta: Optional[float] = None - """ - mixing factor for self-consistency - """ - mixing_ndim: Optional[int] = 8 - """ - number of iterations used in mixing scheme - """ - mixing_fixed_ns: Optional[int] = 0 - """ - For DFT+U : number of iterations with fixed ns ( ns is the atomic density appearing in the Hubbard term ). - """ - diagonalization: Optional[Diagonalization] = "david" - diago_thr_init: Optional[float] = None - """ - Convergence threshold (ethr) for iterative diagonalization (the check is on eigenvalue convergence). - """ - diago_cg_maxiter: Optional[int] = None - """ - For conjugate gradient diagonalization: max number of iterations - """ - diago_ppcg_maxiter: Optional[int] = None - """ - For ppcg diagonalization: max number of iterations - """ - diago_david_ndim: Optional[int] = 2 - """ - For Davidson diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed). - """ - diago_rmm_ndim: Optional[int] = 4 - """ - For RMM-DIIS diagonalization: dimension of workspace (number of wavefunction packets, at least 2 needed). - """ - diago_rmm_conv: Optional[bool] = False - """ - If .TRUE., RMM-DIIS is performed up to converge. If .FALSE., RMM-DIIS is performed only once. - """ - diago_gs_nblock: Optional[int] = 16 - """ - For RMM-DIIS diagonalization: blocking size of Gram-Schmidt orthogonalization - """ - diago_full_acc: Optional[bool] = False - """ - If .TRUE. all the empty states are diagonalized at the same level of accuracy of the occupied ones. Otherwise the empty states are diagonalized using a larger threshold (this should not affect total energy, forces, and other ground-state properties). - """ - efield: Optional[float] = None - """ - Amplitude of the finite electric field (in Ry a.u.; 1 a.u. = 36.3609*10^10 V/m). Used only if lelfield==.TRUE. and if k-points (K_POINTS card) are not automatic. - """ - efield_cart: Optional[List[float]] = Field( - None, max_length=3, min_length=3, title="array of 3 number elements schema" - ) - efield_phase: Optional[EfieldPhase] = "none" - startingpot: Optional[Startingpot] = None - startingwfc: Optional[Startingwfc] = "atomic+random" - tqr: Optional[bool] = False - """ - If .true., use a real-space algorithm for augmentation charges of ultrasoft pseudopotentials and PAWsets. Faster but numerically less accurate than the default G-space algorithm. Use with care and after testing! - """ - real_space: Optional[bool] = False - """ - If .true., exploit real-space localization to compute matrix elements for nonlocal projectors. Faster and in principle better scaling than the default G-space algorithm, but numerically less accurate, may lead to some loss of translational invariance. Use with care and after testing! - """ - - -class IonPositions(Enum): - default = "default" - from_input = "from_input" - - -class IonVelocities(Enum): - default = "default" - from_input = "from_input" - - -class PotExtrapolation(Enum): - none = "none" - atomic = "atomic" - first_order = "first_order" - second_order = "second_order" - - -class WfcExtrapolation(Enum): - none = "none" - first_order = "first_order" - second_order = "second_order" - - -class IonTemperature(Enum): - rescaling = "rescaling" - rescale_v = "rescale-v" - rescale_T = "rescale-T" - reduce_T = "reduce-T" - berendsen = "berendsen" - andersen = "andersen" - svr = "svr" - initial = "initial" - not_controlled = "not_controlled" - - -class IonDynamics(Enum): - bfgs = "bfgs" - damp = "damp" - fire = "fire" - - -class IonsSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ion_positions: Optional[IonPositions] = "default" - ion_velocities: Optional[IonVelocities] = "default" - pot_extrapolation: Optional[PotExtrapolation] = "atomic" - """ - Used to extrapolate the potential from preceding ionic steps. - """ - wfc_extrapolation: Optional[WfcExtrapolation] = "none" - """ - Used to extrapolate the wavefunctions from preceding ionic steps. - """ - remove_rigid_rot: Optional[bool] = False - """ - This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. - """ - ion_temperature: Optional[IonTemperature] = "not_controlled" - tempw: Optional[float] = 300 - """ - Starting temperature (Kelvin) in MD runs target temperature for most thermostats. - """ - tolp: Optional[float] = 100 - """ - Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. - """ - delta_t: Optional[float] = 1 - nraise: Optional[int] = 1 - refold_pos: Optional[bool] = False - """ - This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. - """ - upscale: Optional[float] = 100 - """ - Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. - """ - bfgs_ndim: Optional[int] = 1 - """ - Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. - """ - trust_radius_max: Optional[float] = 0.8 - """ - Maximum ionic displacement in the structural relaxation. (bfgs only) - """ - trust_radius_min: Optional[float] = 0.001 - """ - Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) - """ - trust_radius_ini: Optional[float] = 0.5 - """ - Initial ionic displacement in the structural relaxation. (bfgs only) - """ - w_1: Optional[float] = 0.01 - w_2: Optional[float] = 0.5 - """ - Parameters used in line search based on the Wolfe conditions. (bfgs only) - """ - fire_alpha_init: Optional[float] = 0.2 - """ - Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 - """ - fire_falpha: Optional[float] = 0.99 - """ - Scaling of the alpha mixing parameter for steps with P > 0; - """ - fire_nmin: Optional[int] = 5 - """ - Minimum number of steps with P > 0 before increase of dt - """ - fire_f_inc: Optional[float] = 1.1 - """ - Factor for increasing dt - """ - fire_f_dec: Optional[float] = 0.5 - """ - Factor for decreasing dt - """ - fire_dtmax: Optional[float] = 10 - """ - Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt - """ - ion_dynamics: Optional[IonDynamics] = "bfgs" - """ - CASE: calculation == 'relax' - """ - - -class IonDynamics5(Enum): - verlet = "verlet" - langevin = "langevin" - langevin_smc = "langevin-smc" - - -class IonsSchema5(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ion_positions: Optional[IonPositions] = "default" - ion_velocities: Optional[IonVelocities] = "default" - pot_extrapolation: Optional[PotExtrapolation] = "atomic" - """ - Used to extrapolate the potential from preceding ionic steps. - """ - wfc_extrapolation: Optional[WfcExtrapolation] = "none" - """ - Used to extrapolate the wavefunctions from preceding ionic steps. - """ - remove_rigid_rot: Optional[bool] = False - """ - This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. - """ - ion_temperature: Optional[IonTemperature] = "not_controlled" - tempw: Optional[float] = 300 - """ - Starting temperature (Kelvin) in MD runs target temperature for most thermostats. - """ - tolp: Optional[float] = 100 - """ - Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. - """ - delta_t: Optional[float] = 1 - nraise: Optional[int] = 1 - refold_pos: Optional[bool] = False - """ - This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. - """ - upscale: Optional[float] = 100 - """ - Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. - """ - bfgs_ndim: Optional[int] = 1 - """ - Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. - """ - trust_radius_max: Optional[float] = 0.8 - """ - Maximum ionic displacement in the structural relaxation. (bfgs only) - """ - trust_radius_min: Optional[float] = 0.001 - """ - Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) - """ - trust_radius_ini: Optional[float] = 0.5 - """ - Initial ionic displacement in the structural relaxation. (bfgs only) - """ - w_1: Optional[float] = 0.01 - w_2: Optional[float] = 0.5 - """ - Parameters used in line search based on the Wolfe conditions. (bfgs only) - """ - fire_alpha_init: Optional[float] = 0.2 - """ - Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 - """ - fire_falpha: Optional[float] = 0.99 - """ - Scaling of the alpha mixing parameter for steps with P > 0; - """ - fire_nmin: Optional[int] = 5 - """ - Minimum number of steps with P > 0 before increase of dt - """ - fire_f_inc: Optional[float] = 1.1 - """ - Factor for increasing dt - """ - fire_f_dec: Optional[float] = 0.5 - """ - Factor for decreasing dt - """ - fire_dtmax: Optional[float] = 10 - """ - Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt - """ - ion_dynamics: Optional[IonDynamics5] = "verlet" - """ - CASE: calculation == 'md' - """ - - -class IonDynamics6(Enum): - bfgs = "bfgs" - damp = "damp" - - -class IonsSchema6(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ion_positions: Optional[IonPositions] = "default" - ion_velocities: Optional[IonVelocities] = "default" - pot_extrapolation: Optional[PotExtrapolation] = "atomic" - """ - Used to extrapolate the potential from preceding ionic steps. - """ - wfc_extrapolation: Optional[WfcExtrapolation] = "none" - """ - Used to extrapolate the wavefunctions from preceding ionic steps. - """ - remove_rigid_rot: Optional[bool] = False - """ - This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. - """ - ion_temperature: Optional[IonTemperature] = "not_controlled" - tempw: Optional[float] = 300 - """ - Starting temperature (Kelvin) in MD runs target temperature for most thermostats. - """ - tolp: Optional[float] = 100 - """ - Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. - """ - delta_t: Optional[float] = 1 - nraise: Optional[int] = 1 - refold_pos: Optional[bool] = False - """ - This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. - """ - upscale: Optional[float] = 100 - """ - Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. - """ - bfgs_ndim: Optional[int] = 1 - """ - Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. - """ - trust_radius_max: Optional[float] = 0.8 - """ - Maximum ionic displacement in the structural relaxation. (bfgs only) - """ - trust_radius_min: Optional[float] = 0.001 - """ - Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) - """ - trust_radius_ini: Optional[float] = 0.5 - """ - Initial ionic displacement in the structural relaxation. (bfgs only) - """ - w_1: Optional[float] = 0.01 - w_2: Optional[float] = 0.5 - """ - Parameters used in line search based on the Wolfe conditions. (bfgs only) - """ - fire_alpha_init: Optional[float] = 0.2 - """ - Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 - """ - fire_falpha: Optional[float] = 0.99 - """ - Scaling of the alpha mixing parameter for steps with P > 0; - """ - fire_nmin: Optional[int] = 5 - """ - Minimum number of steps with P > 0 before increase of dt - """ - fire_f_inc: Optional[float] = 1.1 - """ - Factor for increasing dt - """ - fire_f_dec: Optional[float] = 0.5 - """ - Factor for decreasing dt - """ - fire_dtmax: Optional[float] = 10 - """ - Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt - """ - ion_dynamics: Optional[IonDynamics6] = "bfgs" - """ - CASE: calculation == 'vc-relax' - """ - - -class IonDynamics7(Enum): - beeman = "beeman" - - -class IonsSchema7(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - ion_positions: Optional[IonPositions] = "default" - ion_velocities: Optional[IonVelocities] = "default" - pot_extrapolation: Optional[PotExtrapolation] = "atomic" - """ - Used to extrapolate the potential from preceding ionic steps. - """ - wfc_extrapolation: Optional[WfcExtrapolation] = "none" - """ - Used to extrapolate the wavefunctions from preceding ionic steps. - """ - remove_rigid_rot: Optional[bool] = False - """ - This keyword is useful when simulating the dynamics and/or the thermodynamics of an isolated system. If set to true the total torque of the internal forces is set to zero by adding new forces that compensate the spurious interaction with the periodic images. This allows for the use of smaller supercells. - """ - ion_temperature: Optional[IonTemperature] = "not_controlled" - tempw: Optional[float] = 300 - """ - Starting temperature (Kelvin) in MD runs target temperature for most thermostats. - """ - tolp: Optional[float] = 100 - """ - Tolerance for velocity rescaling. Velocities are rescaled if the run-averaged and target temperature differ more than tolp. - """ - delta_t: Optional[float] = 1 - nraise: Optional[int] = 1 - refold_pos: Optional[bool] = False - """ - This keyword applies only in the case of molecular dynamics or damped dynamics. If true the ions are refolded at each step into the supercell. - """ - upscale: Optional[float] = 100 - """ - Max reduction factor for conv_thr during structural optimization conv_thr is automatically reduced when the relaxation approaches convergence so that forces are still accurate, but conv_thr will not be reduced to less that conv_thr / upscale. - """ - bfgs_ndim: Optional[int] = 1 - """ - Number of old forces and displacements vectors used in the PULAY mixing of the residual vectors obtained on the basis of the inverse hessian matrix given by the BFGS algorithm. - """ - trust_radius_max: Optional[float] = 0.8 - """ - Maximum ionic displacement in the structural relaxation. (bfgs only) - """ - trust_radius_min: Optional[float] = 0.001 - """ - Minimum ionic displacement in the structural relaxation BFGS is reset when trust_radius < trust_radius_min. (bfgs only) - """ - trust_radius_ini: Optional[float] = 0.5 - """ - Initial ionic displacement in the structural relaxation. (bfgs only) - """ - w_1: Optional[float] = 0.01 - w_2: Optional[float] = 0.5 - """ - Parameters used in line search based on the Wolfe conditions. (bfgs only) - """ - fire_alpha_init: Optional[float] = 0.2 - """ - Initial value of the alpha mixing factor in the FIRE minimization scheme; recommended values are between 0.1 and 0.3 - """ - fire_falpha: Optional[float] = 0.99 - """ - Scaling of the alpha mixing parameter for steps with P > 0; - """ - fire_nmin: Optional[int] = 5 - """ - Minimum number of steps with P > 0 before increase of dt - """ - fire_f_inc: Optional[float] = 1.1 - """ - Factor for increasing dt - """ - fire_f_dec: Optional[float] = 0.5 - """ - Factor for decreasing dt - """ - fire_dtmax: Optional[float] = 10 - """ - Determines the maximum value of dt in the FIRE minimization; dtmax = fire_dtmax*dt - """ - ion_dynamics: Optional[IonDynamics7] = "beeman" - """ - CASE: calculation == 'vc-md' - """ - - -class CellDofree(Enum): - all = "all" - ibrav = "ibrav" - a = "a" - b = "b" - c = "c" - fixa = "fixa" - fixb = "fixb" - fixc = "fixc" - x = "x" - y = "y" - xy = "xy" - xz = "xz" - xyz = "xyz" - shape = "shape" - volume = "volume" - field_2Dxy = "2Dxy" - field_2Dshape = "2Dshape" - epitaxial_ab = "epitaxial_ab" - epitaxial_ac = "epitaxial_ac" - epitaxial_bc = "epitaxial_bc" - - -class CellDynamics(Enum): - none = "none" - sd = "sd" - damp_pr = "damp-pr" - damp_w = "damp-w" - bfgs = "bfgs" - - -class CellSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - press: Optional[float] = 0 - """ - Target pressure [KBar] in a variable-cell md or relaxation run. - """ - wmass: Optional[float] = None - """ - Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD - """ - cell_factor: Optional[float] = None - """ - Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise - """ - press_conv_thr: Optional[float] = 0.5 - """ - Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well). - """ - cell_dofree: Optional[CellDofree] = "all" - """ - Select which of the cell parameters should be moved - """ - cell_dynamics: Optional[CellDynamics] = "bfgs" - """ - CASE ( calculation == 'vc-relax' ) - """ - - -class CellDynamics3(Enum): - none = "none" - pr = "pr" - w = "w" - - -class CellSchema3(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - press: Optional[float] = 0 - """ - Target pressure [KBar] in a variable-cell md or relaxation run. - """ - wmass: Optional[float] = None - """ - Fictitious cell mass [amu] for variable-cell simulations (both 'vc-md' and 'vc-relax'). Default: 0.75*Tot_Mass/pi**2 for Parrinello-Rahman MD; 0.75*Tot_Mass/pi**2/Omega**(2/3) for Wentzcovitch MD - """ - cell_factor: Optional[float] = None - """ - Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation. Default: 2.0 for variable-cell calculations, 1.0 otherwise - """ - press_conv_thr: Optional[float] = 0.5 - """ - Convergence threshold on the pressure for variable cell relaxation ('vc-relax' : note that the other convergence thresholds for ionic relaxation apply as well). - """ - cell_dofree: Optional[CellDofree] = "all" - """ - Select which of the cell parameters should be moved - """ - cell_dynamics: Optional[CellDynamics3] = None - """ - CASE ( calculation == 'vc-md' ) - """ - - -class Value(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - X: Optional[str] = None - """ - label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters) - """ - Mass_X: Optional[float] = None - """ - mass of the atomic species [amu: mass of C = 12]. Used only when performing Molecular Dynamics run or structural optimization runs using Damped MD. Not actually used in all other cases (but stored in data files, so phonon calculations will use these values unless other values are provided) - """ - PseudoPot_X: Optional[str] = None - """ - PseudoPot_X - """ - - -class AtomicSpeciesSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - values: Optional[List[Value]] = None - - -class CardOption(Enum): - alat = "alat" - bohr = "bohr" - angstrom = "angstrom" - crystal = "crystal" - crystal_sg = "crystal_sg" - - -class Value5(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - X: Optional[str] = None - """ - label of the atom as specified in ATOMIC_SPECIES - """ - x: float - """ - atomic positions - """ - y: float - """ - atomic positions - """ - z: float - """ - atomic positions - """ - if_pos_1_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(1)", title="integer one or zero") - if_pos_2_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(2)", title="integer one or zero") - if_pos_3_: Optional[conint(ge=0, le=1)] = Field(None, alias="if_pos(3)", title="integer one or zero") - - -class AtomicPositionsSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - card_option: Optional[CardOption] = "alat" - values: Optional[List[Value5]] = None - - -class CardOption5(Enum): - tpiba = "tpiba" - automatic = "automatic" - crystal = "crystal" - gamma = "gamma" - tpiba_b = "tpiba_b" - crystal_b = "crystal_b" - tpiba_c = "tpiba_c" - crystal_c = "crystal_c" - - -class Value6(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - nks: Optional[int] = None - """ - Number of supplied special k-points. - """ - xk_x: Optional[float] = None - xk_y: Optional[float] = None - xk_z: Optional[float] = None - wk: Optional[float] = None - - -class Values(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - nk1: Optional[int] = None - """ - Number of supplied special k-points. - """ - nk2: Optional[int] = None - """ - Number of supplied special k-points. - """ - nk3: Optional[int] = None - """ - Number of supplied special k-points. - """ - sk1: Optional[int] = None - """ - Number of supplied special k-points. - """ - sk2: Optional[int] = None - """ - Number of supplied special k-points. - """ - sk3: Optional[int] = None - """ - Number of supplied special k-points. - """ - - -class KPointsSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - card_option: Optional[CardOption5] = None - values: Optional[Union[List[Value6], Values]] = None - - -class CardOption6(Enum): - alat = "alat" - bohr = "bohr" - angstrom = "angstrom" - - -class Values8(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - v1: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") - v2: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") - v3: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="array of 3 number elements schema") - - -class CellParametersSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - card_option: Optional[CardOption6] = None - """ - label of the atom. Acceptable syntax: chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters) - """ - values: Optional[Values8] = None - - -class CardOption7(Enum): - atomic = "atomic" - ortho_atomic = "ortho-atomic" - norm_atomic = "norm-atomic" - wf = "wf" - pseudo = "pseudo" - - -class U(Enum): - U = "U" - - -class Values9(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - U_1: Optional[U] = Field(None, alias="U") - """ - string constant "U"; indicates the specs for the U parameter will be given - """ - label: Optional[str] = None - """ - label of the atom (as defined in ATOMIC_SPECIES) - """ - manifold: Optional[str] = None - """ - specs of the manifold (e.g., 3d, 2p...) - """ - u_val: Optional[float] = None - """ - value of the U parameter (in eV) - """ - - -class J0(Enum): - J0 = "J0" - - -class Values10(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - J0_1: Optional[J0] = Field(None, alias="J0") - """ - string constant "J0"; indicates the specs for the J0 parameter will be given - """ - label: Optional[str] = None - """ - label of the atom (as defined in ATOMIC_SPECIES) - """ - manifold: Optional[str] = None - """ - specs of the manifold (e.g., 3d, 2p...) - """ - j0_val: Optional[float] = None - """ - value of the J0 parameter (in eV) - """ - - -class ParamType(Enum): - U = "U" - J = "J" - B = "B" - E2 = "E2" - E3 = "E3" - - -class Value7(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - paramType: Optional[ParamType] = None - """ - character describing the type of Hubbard parameter allowed values: U, J and either B (for d-orbitals) or E2 and E3 (for f-orbitals) - """ - label: Optional[str] = None - """ - label of the atom (as defined in ATOMIC_SPECIES) - """ - manifold: Optional[str] = None - """ - specs of the manifold (e.g., 3d, 2p...) - """ - paramValue: Optional[float] = None - """ - value of the J0 parameter (in eV) - """ - - -class Values11(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - U_1: Optional[U] = Field(None, alias="U") - """ - string constant "U"; indicates the specs for the U parameter will be given - """ - label: Optional[str] = None - """ - label of the atom (as defined in ATOMIC_SPECIES) - """ - manifold: Optional[str] = None - """ - specs of the manifold (e.g., 3d, 2p...) - """ - u_val: Optional[float] = None - """ - value of the U parameter (in eV) - """ - - -class Values12(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - J0_1: Optional[J0] = Field(None, alias="J0") - """ - string constant "J0"; indicates the specs for the J0 parameter will be given - """ - label: Optional[str] = None - """ - label of the atom (as defined in ATOMIC_SPECIES) - """ - manifold: Optional[str] = None - """ - specs of the manifold (e.g., 3d, 2p...) - """ - j0_val: Optional[float] = None - """ - value of the J0 parameter (in eV) - """ - - -class V(Enum): - V = "V" - - -class Values13(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - V_1: Optional[V] = Field(None, alias="V") - """ - string constant "V"; indicates the specs for the V parameter will be given - """ - label_I_: Optional[str] = Field(None, alias="label(I)") - """ - label of the atom I (as defined in ATOMIC_SPECIES) - """ - manifold_I_: Optional[str] = Field(None, alias="manifold(I)") - """ - specs of the manifold for atom I (e.g., 3d, 2p...) - """ - label_J_: Optional[str] = Field(None, alias="label(J)") - """ - label of the atom J (as defined in ATOMIC_SPECIES) - """ - manifold_J_: Optional[str] = Field(None, alias="manifold(J)") - """ - specs of the manifold for atom J (e.g., 3d, 2p...) - """ - I: Optional[int] = None - """ - index of the atom I - """ - J: Optional[int] = None - """ - index of the atom J - """ - v_val_I_J_: Optional[float] = Field(None, alias="v_val(I,J)") - """ - value of the V parameter for the atom pair I,J (in eV) - """ - - -class HubbardSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - card_option: Optional[CardOption7] = None - values: Optional[Union[List[Union[Values9, Values10]], List[Value7], List[Union[Values11, Values12, Values13]]]] = ( - None - ) - - -class PwxMainSchema(BaseModel): - model_config = ConfigDict( - extra="forbid", - ) - field_CONTROL: Optional[ControlSchema] = Field(None, alias="&CONTROL", title="control schema") - field_SYSTEM: Optional[Union[SystemSchema, SystemSchema1]] = Field(None, alias="&SYSTEM", title="system schema") - field_ELECTRONS: Optional[ElectronsSchema] = Field(None, alias="&ELECTRONS", title="electrons schema") - field_IONS: Optional[Union[IonsSchema, IonsSchema5, IonsSchema6, IonsSchema7]] = Field(None, alias="&IONS") - field_CELL: Optional[Union[CellSchema, CellSchema3]] = Field(None, alias="&CELL") - ATOMIC_SPECIES: Optional[AtomicSpeciesSchema] = Field(None, title="atomic species schema") - ATOMIC_POSITIONS: Optional[AtomicPositionsSchema] = Field(None, title="atomic positions schema") - """ - https://www.quantum-espresso.org/Doc/INPUT_PW.html#idm1493 - """ - K_POINTS: Optional[KPointsSchema] = Field(None, title="k points schema") - CELL_PARAMETERS: Optional[CellParametersSchema] = Field(None, title="cell parameters schema") - HUBBARD: Optional[HubbardSchema] = Field(None, title="hubbard schema") diff --git a/src/py/mat3ra/esse/models/workflow/__init__.py b/src/py/mat3ra/esse/models/workflow/__init__.py index 0c41e23ed..87ba47a04 100644 --- a/src/py/mat3ra/esse/models/workflow/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/__init__.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: workflow.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, conint +from typing_extensions import Literal class Type(Enum): @@ -708,7 +709,7 @@ class ExecutionUnitSchemaBase(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -781,7 +782,7 @@ class AssignmentUnitSchema(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -889,7 +890,7 @@ class ProcessingUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -1723,7 +1724,7 @@ class ExecutionUnitSchemaBase7(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -1796,7 +1797,7 @@ class AssignmentUnitSchema7(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -1904,7 +1905,7 @@ class ProcessingUnitSchema7(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -2010,7 +2011,7 @@ class MapUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -2088,7 +2089,7 @@ class SubworkflowUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ diff --git a/src/py/mat3ra/esse/models/workflow/base.py b/src/py/mat3ra/esse/models/workflow/base.py index 56acd666f..745c5c636 100644 --- a/src/py/mat3ra/esse/models/workflow/base.py +++ b/src/py/mat3ra/esse/models/workflow/base.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/base.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/base_flow.py b/src/py/mat3ra/esse/models/workflow/base_flow.py index f066c6575..8edf53034 100644 --- a/src/py/mat3ra/esse/models/workflow/base_flow.py +++ b/src/py/mat3ra/esse/models/workflow/base_flow.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/base_flow.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/scope.py b/src/py/mat3ra/esse/models/workflow/scope.py index 17452bf46..f8549b880 100644 --- a/src/py/mat3ra/esse/models/workflow/scope.py +++ b/src/py/mat3ra/esse/models/workflow/scope.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/scope.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/subworkflow/__init__.py b/src/py/mat3ra/esse/models/workflow/subworkflow/__init__.py index 948320479..3e939621e 100644 --- a/src/py/mat3ra/esse/models/workflow/subworkflow/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/subworkflow/__init__.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: workflow/subworkflow.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, conint +from typing_extensions import Literal class Type(Enum): @@ -708,7 +709,7 @@ class ExecutionUnitSchemaBase(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -781,7 +782,7 @@ class AssignmentUnitSchema(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -889,7 +890,7 @@ class ProcessingUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ diff --git a/src/py/mat3ra/esse/models/workflow/subworkflow/unit.py b/src/py/mat3ra/esse/models/workflow/subworkflow/unit.py index 1a402dff9..41c7a4443 100644 --- a/src/py/mat3ra/esse/models/workflow/subworkflow/unit.py +++ b/src/py/mat3ra/esse/models/workflow/subworkflow/unit.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: workflow/subworkflow/unit.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel +from typing_extensions import Literal class Type(Enum): @@ -708,7 +709,7 @@ class ExecutionUnitSchemaBase(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -781,7 +782,7 @@ class AssignmentUnitSchema(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -889,7 +890,7 @@ class ProcessingUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ diff --git a/src/py/mat3ra/esse/models/workflow/unit/__init__.py b/src/py/mat3ra/esse/models/workflow/unit/__init__.py index 4c2012906..9df06ce63 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/unit/__init__.py @@ -1,13 +1,14 @@ # generated by datamodel-codegen: # filename: workflow/unit.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel +from typing_extensions import Literal class Type(Enum): @@ -708,7 +709,7 @@ class ExecutionUnitSchemaBase(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -781,7 +782,7 @@ class AssignmentUnitSchema(BaseModel): """ type of the unit """ - input: List[WorkflowUnitInputSchema] + input: Optional[List[WorkflowUnitInputSchema]] = None """ Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment. """ @@ -889,7 +890,7 @@ class ProcessingUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -995,7 +996,7 @@ class MapUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ @@ -1073,7 +1074,7 @@ class SubworkflowUnitSchema(BaseModel): entity identity """ isDraft: Optional[bool] = None - name: str + name: Optional[str] = None """ name of the unit. e.g. pw_scf """ diff --git a/src/py/mat3ra/esse/models/workflow/unit/assertion.py b/src/py/mat3ra/esse/models/workflow/unit/assertion.py index e4cd3d824..da9abe076 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/assertion.py +++ b/src/py/mat3ra/esse/models/workflow/unit/assertion.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/assertion.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/assignment.py b/src/py/mat3ra/esse/models/workflow/unit/assignment.py index 32a0dbe54..8fcf0152f 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/assignment.py +++ b/src/py/mat3ra/esse/models/workflow/unit/assignment.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/assignment.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/base.py b/src/py/mat3ra/esse/models/workflow/unit/base.py index 0c03259b5..f39105855 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/base.py +++ b/src/py/mat3ra/esse/models/workflow/unit/base.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/base.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/condition.py b/src/py/mat3ra/esse/models/workflow/unit/condition.py index 8777205cd..cbb7482ac 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/condition.py +++ b/src/py/mat3ra/esse/models/workflow/unit/condition.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/condition.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/execution.py b/src/py/mat3ra/esse/models/workflow/unit/execution.py index a8ffc00af..96866d912 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/execution.py +++ b/src/py/mat3ra/esse/models/workflow/unit/execution.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/execution.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/__init__.py b/src/py/mat3ra/esse/models/workflow/unit/input/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_input.py b/src/py/mat3ra/esse/models/workflow/unit/input/_input.py index 2796277b1..0ce573f81 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_input.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_input.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_input.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItem.py b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItem.py index 0a566621c..164aece23 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItem.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItem.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_inputItem.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemId.py b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemId.py index 4f766a501..82dade2af 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemId.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemId.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_inputItemId.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemScope.py b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemScope.py index 466aafb59..c1f405cba 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemScope.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_inputItemScope.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_inputItemScope.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/__init__.py b/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/__init__.py index 0d0a4308f..b94fc6193 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_map_input.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/values.py b/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/values.py index ccd946e30..e21665f68 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/values.py +++ b/src/py/mat3ra/esse/models/workflow/unit/input/_map_input/values.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/input/_map_input/values.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/io/__init__.py b/src/py/mat3ra/esse/models/workflow/unit/io/__init__.py index ebda14ed5..55d7c304f 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/io/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/unit/io/__init__.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/io.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/io/api.py b/src/py/mat3ra/esse/models/workflow/unit/io/api.py index a7fc8e262..e0167101c 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/io/api.py +++ b/src/py/mat3ra/esse/models/workflow/unit/io/api.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/io/api.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/io/db.py b/src/py/mat3ra/esse/models/workflow/unit/io/db.py index a346283f3..a6e38ec8a 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/io/db.py +++ b/src/py/mat3ra/esse/models/workflow/unit/io/db.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/io/db.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/io/object_storage.py b/src/py/mat3ra/esse/models/workflow/unit/io/object_storage.py index fd1c473ef..c4a6277b8 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/io/object_storage.py +++ b/src/py/mat3ra/esse/models/workflow/unit/io/object_storage.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/io/object_storage.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/map.py b/src/py/mat3ra/esse/models/workflow/unit/map.py index 888477126..21da5062c 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/map.py +++ b/src/py/mat3ra/esse/models/workflow/unit/map.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/map.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/processing.py b/src/py/mat3ra/esse/models/workflow/unit/processing.py index 32fbe15ed..4d7e54f4a 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/processing.py +++ b/src/py/mat3ra/esse/models/workflow/unit/processing.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/processing.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/reduce.py b/src/py/mat3ra/esse/models/workflow/unit/reduce.py index 5f57f0ad6..4ab86265f 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/reduce.py +++ b/src/py/mat3ra/esse/models/workflow/unit/reduce.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/reduce.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/__init__.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/__init__.py index 1f5385052..074bbb9d0 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/__init__.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: schema -# version: 0.28.5 +# version: 0.25.5 diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_full_object.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_full_object.py index 829154953..97f1093c2 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_full_object.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_full_object.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/runtime/_runtime_item_full_object.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_name_object.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_name_object.py index 925a61d81..abb445e75 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_name_object.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_name_object.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/runtime/_runtime_item_name_object.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_string.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_string.py index 2d00f48ba..45351718d 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_string.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/_runtime_item_string.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/runtime/_runtime_item_string.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_item.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_item.py index 6bee30584..e7cf8daba 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_item.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_item.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/runtime/runtime_item.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_items.py b/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_items.py index caf518e49..fc9c8b158 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_items.py +++ b/src/py/mat3ra/esse/models/workflow/unit/runtime/runtime_items.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/runtime/runtime_items.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations diff --git a/src/py/mat3ra/esse/models/workflow/unit/subworkflow.py b/src/py/mat3ra/esse/models/workflow/unit/subworkflow.py index 9b554d6aa..280be2960 100644 --- a/src/py/mat3ra/esse/models/workflow/unit/subworkflow.py +++ b/src/py/mat3ra/esse/models/workflow/unit/subworkflow.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: workflow/unit/subworkflow.json -# version: 0.28.5 +# version: 0.25.5 from __future__ import annotations