mat3ra-esse 2025.4.17.post0__py3-none-any.whl → 2025.5.13.post0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mat3ra-esse might be problematic. Click here for more details.
- mat3ra/esse/data/examples.py +1 -1
- mat3ra/esse/data/schemas.py +1 -1
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/__init__.py +3 -0
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/atoms.py +41 -0
- mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/db_entry.py +55 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/__init__.py +3 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/__init__.py +3 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_positions.py +51 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_species.py +34 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell.py +111 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell_parameters.py +36 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/control.py +169 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/electrons.py +139 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/hubbard.py +194 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/ions.py +422 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/k_points.py +73 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/system.py +841 -0
- mat3ra/esse/models/apse/file/applications/espresso/7.2/pw_x.py +1990 -0
- mat3ra/esse/models/core/abstract/coordinate_2d.py +13 -0
- mat3ra/esse/models/core/abstract/coordinate_3d.py +13 -0
- mat3ra/esse/models/core/abstract/kpoint.py +16 -0
- mat3ra/esse/models/core/abstract/matrix_3x3.py +17 -0
- mat3ra/esse/models/core/abstract/vector_3d.py +13 -0
- mat3ra/esse/models/core/abstract/vector_boolean_3d.py +13 -0
- mat3ra/esse/models/core/primitive/array_of_ids.py +5 -5
- mat3ra/esse/models/core/primitive/object_with_id.py +14 -0
- mat3ra/esse/models/core/primitive/object_with_id_and_value.py +20 -0
- mat3ra/esse/models/core/reusable/atomic_scalars.py +4 -4
- mat3ra/esse/models/core/reusable/atomic_string.py +18 -0
- mat3ra/esse/models/core/reusable/atomic_vector.py +20 -0
- mat3ra/esse/models/core/reusable/atomic_vectors.py +9 -9
- mat3ra/esse/models/core/reusable/band_gap.py +8 -2
- mat3ra/esse/models/core/reusable/energy.py +2 -2
- mat3ra/esse/models/core/reusable/energy_accuracy_levels/__init__.py +3 -0
- mat3ra/esse/models/element.py +6 -6
- mat3ra/esse/models/material/__init__.py +68 -46
- mat3ra/esse/models/material/reusable/__init__.py +3 -0
- mat3ra/esse/models/material/reusable/repetitions.py +25 -0
- mat3ra/esse/models/material/reusable/slab/__init__.py +3 -0
- mat3ra/esse/models/material/reusable/slab/enums.py +13 -0
- mat3ra/esse/models/material/reusable/slab/miller_indices.py +16 -0
- mat3ra/esse/models/material/reusable/slab/number_of_layers.py +16 -0
- mat3ra/esse/models/material/reusable/slab/termination.py +18 -0
- mat3ra/esse/models/material/reusable/slab/thickness.py +16 -0
- mat3ra/esse/models/material/reusable/slab/vacuum.py +16 -0
- mat3ra/esse/models/material/reusable/supercell_matrix_2d.py +25 -0
- mat3ra/esse/models/material/reusable/supercell_matrix_3d.py +27 -0
- mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/__init__.py +3 -0
- mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py +445 -0
- mat3ra/esse/models/methods_directory/physical/psp/file/__init__.py +129 -0
- mat3ra/esse/models/methods_directory/physical/psp/file_data_item/__init__.py +111 -0
- mat3ra/esse/models/properties_directory/derived_properties.py +13 -13
- mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py +12 -3
- mat3ra/esse/models/properties_directory/non_scalar/band_structure.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
- mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py +1 -1
- mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
- mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
- mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
- mat3ra/esse/models/properties_directory/structural/atomic_forces.py +8 -8
- mat3ra/esse/models/properties_directory/structural/basis/__init__.py +38 -16
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraint.py +20 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py +11 -14
- mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints_property.py +33 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py +10 -4
- mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py +16 -27
- mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py +6 -7
- mat3ra/esse/models/properties_directory/structural/basis/atomic_elements.py +27 -0
- mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py +11 -5
- mat3ra/esse/models/properties_directory/structural/basis/atomic_labels.py +27 -0
- mat3ra/esse/models/properties_directory/structural/basis/bonds.py +3 -3
- mat3ra/esse/models/properties_directory/structural/basis/units_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/__init__.py +16 -16
- mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py +10 -11
- mat3ra/esse/models/properties_directory/structural/lattice/units/__init__.py +3 -0
- mat3ra/esse/models/properties_directory/structural/lattice/units/angle_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/units/length_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/lattice/vectors/__init__.py +26 -0
- mat3ra/esse/models/properties_directory/structural/lattice/vectors/units_enum.py +12 -0
- mat3ra/esse/models/properties_directory/structural/magnetic_moments.py +8 -8
- mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +9 -9
- mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py +3 -3
- mat3ra/esse/models/properties_directory/structural/patterns/ring.py +3 -3
- mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py +3 -3
- mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/METADATA +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/RECORD +101 -49
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/WHEEL +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/licenses/LICENSE.md +0 -0
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.5.13.post0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/coordinate_2d.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Coordinate2dSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., max_length=2, min_length=2, title="coordinate 2d schema")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/coordinate_3d.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Coordinate3dSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/kpoint.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class KpointSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., max_length=3, min_length=3, title="kpoint schema")
|
|
14
|
+
"""
|
|
15
|
+
A k-point is a point in reciprocal space of a crystal.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/matrix_3x3.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ArrayOf3NumberElementsSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., title="array of 3 number elements schema")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Matrix3x3Schema(RootModel[List[ArrayOf3NumberElementsSchema]]):
|
|
17
|
+
root: List[ArrayOf3NumberElementsSchema] = Field(..., max_length=3, min_length=3, title="matrix 3x3 schema")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/vector_3d.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Vector3dSchema(RootModel[List[float]]):
|
|
13
|
+
root: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/abstract/vector_boolean_3d.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ESSE(RootModel[List[bool]]):
|
|
13
|
+
root: List[bool] = Field(..., title="vector boolean 3d schema")
|
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import List
|
|
7
|
+
from typing import List
|
|
8
8
|
|
|
9
9
|
from pydantic import BaseModel, Field, RootModel
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class
|
|
13
|
-
id:
|
|
12
|
+
class ObjectWithId(BaseModel):
|
|
13
|
+
id: int
|
|
14
14
|
"""
|
|
15
15
|
integer id of this entry
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
class
|
|
20
|
-
root: List[
|
|
19
|
+
class ArrayOfIds(RootModel[List[ObjectWithId]]):
|
|
20
|
+
root: List[ObjectWithId] = Field(..., title="array of ids")
|
|
21
21
|
"""
|
|
22
22
|
array of objects containing integer id each
|
|
23
23
|
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/primitive/object_with_id.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ObjectWithId(BaseModel):
|
|
11
|
+
id: int
|
|
12
|
+
"""
|
|
13
|
+
integer id of this entry
|
|
14
|
+
"""
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/primitive/object_with_id_and_value.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ObjectWithIdAndValueSchema(BaseModel):
|
|
13
|
+
value: Any
|
|
14
|
+
"""
|
|
15
|
+
value of this entry
|
|
16
|
+
"""
|
|
17
|
+
id: int
|
|
18
|
+
"""
|
|
19
|
+
integer id of this entry
|
|
20
|
+
"""
|
|
@@ -13,16 +13,16 @@ class ScalarSchema(BaseModel):
|
|
|
13
13
|
value: float
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class
|
|
16
|
+
class ObjectWithId(BaseModel):
|
|
17
17
|
value: Optional[ScalarSchema] = Field(None, title="scalar schema")
|
|
18
|
-
id:
|
|
18
|
+
id: int
|
|
19
19
|
"""
|
|
20
20
|
integer id of this entry
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
class AtomicScalarsVectorsSchema(RootModel[List[
|
|
25
|
-
root: List[
|
|
24
|
+
class AtomicScalarsVectorsSchema(RootModel[List[ObjectWithId]]):
|
|
25
|
+
root: List[ObjectWithId] = Field(..., title="atomic scalars vectors schema")
|
|
26
26
|
"""
|
|
27
27
|
array of objects containing integer id each
|
|
28
28
|
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/reusable/atomic_string.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AtomicStringSchema(BaseModel):
|
|
11
|
+
value: str
|
|
12
|
+
"""
|
|
13
|
+
value of this entry
|
|
14
|
+
"""
|
|
15
|
+
id: int
|
|
16
|
+
"""
|
|
17
|
+
integer id of this entry
|
|
18
|
+
"""
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/reusable/atomic_vector.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, Field
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AtomicVectorSchema(BaseModel):
|
|
13
|
+
value: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
14
|
+
"""
|
|
15
|
+
value of this entry
|
|
16
|
+
"""
|
|
17
|
+
id: int
|
|
18
|
+
"""
|
|
19
|
+
integer id of this entry
|
|
20
|
+
"""
|
|
@@ -4,21 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import List
|
|
7
|
+
from typing import List
|
|
8
8
|
|
|
9
9
|
from pydantic import BaseModel, Field, RootModel
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class
|
|
13
|
-
value:
|
|
14
|
-
|
|
12
|
+
class AtomicVectorSchema(BaseModel):
|
|
13
|
+
value: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
14
|
+
"""
|
|
15
|
+
value of this entry
|
|
16
|
+
"""
|
|
17
|
+
id: int
|
|
15
18
|
"""
|
|
16
19
|
integer id of this entry
|
|
17
20
|
"""
|
|
18
21
|
|
|
19
22
|
|
|
20
|
-
class AtomicVectorsSchema(RootModel[List[
|
|
21
|
-
root: List[
|
|
22
|
-
"""
|
|
23
|
-
array of objects containing integer id each
|
|
24
|
-
"""
|
|
23
|
+
class AtomicVectorsSchema(RootModel[List[AtomicVectorSchema]]):
|
|
24
|
+
root: List[AtomicVectorSchema] = Field(..., title="atomic vectors schema")
|
|
@@ -26,8 +26,14 @@ class Units(Enum):
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class BandGapSchema(BaseModel):
|
|
29
|
-
kpointConduction: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="
|
|
30
|
-
|
|
29
|
+
kpointConduction: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="kpoint schema")
|
|
30
|
+
"""
|
|
31
|
+
A k-point is a point in reciprocal space of a crystal.
|
|
32
|
+
"""
|
|
33
|
+
kpointValence: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="kpoint schema")
|
|
34
|
+
"""
|
|
35
|
+
A k-point is a point in reciprocal space of a crystal.
|
|
36
|
+
"""
|
|
31
37
|
eigenvalueConduction: Optional[float] = None
|
|
32
38
|
"""
|
|
33
39
|
eigenvalue at k-point in conduction band
|
|
@@ -20,11 +20,11 @@ class Units(Enum):
|
|
|
20
20
|
eV_atom = "eV/atom"
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
class
|
|
23
|
+
class Units24(Enum):
|
|
24
24
|
eV_A_2 = "eV/A^2"
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class EnergySchema(BaseModel):
|
|
28
28
|
name: str
|
|
29
|
-
units: Union[Units,
|
|
29
|
+
units: Union[Units, Units24]
|
|
30
30
|
value: float
|
mat3ra/esse/models/element.py
CHANGED
|
@@ -33,20 +33,20 @@ class AtomicRadius(BaseModel):
|
|
|
33
33
|
value: float
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
class
|
|
36
|
+
class Name31(Enum):
|
|
37
37
|
electronegativity = "electronegativity"
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class Electronegativity(BaseModel):
|
|
41
|
-
name: Optional[
|
|
41
|
+
name: Optional[Name31] = None
|
|
42
42
|
value: float
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
class
|
|
45
|
+
class Name32(Enum):
|
|
46
46
|
ionization_potential = "ionization_potential"
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
class
|
|
49
|
+
class Units22(Enum):
|
|
50
50
|
kJ_mol = "kJ/mol"
|
|
51
51
|
eV = "eV"
|
|
52
52
|
J_mol = "J/mol"
|
|
@@ -57,8 +57,8 @@ class Units21(Enum):
|
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
class IonizationPotential(BaseModel):
|
|
60
|
-
name: Optional[
|
|
61
|
-
units: Optional[
|
|
60
|
+
name: Optional[Name32] = None
|
|
61
|
+
units: Optional[Units22] = None
|
|
62
62
|
value: float
|
|
63
63
|
|
|
64
64
|
|
|
@@ -10,52 +10,74 @@ from typing import Any, Dict, List, Literal, Optional, Union
|
|
|
10
10
|
from pydantic import BaseModel, Field, RootModel, confloat, conint
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class
|
|
14
|
-
id: float
|
|
13
|
+
class AtomicElementSchema(BaseModel):
|
|
15
14
|
value: str
|
|
16
|
-
occurrence: Optional[float] = None
|
|
17
15
|
"""
|
|
18
|
-
|
|
16
|
+
value of this entry
|
|
17
|
+
"""
|
|
18
|
+
id: int
|
|
19
|
+
"""
|
|
20
|
+
integer id of this entry
|
|
19
21
|
"""
|
|
20
|
-
oxidationState: Optional[float] = None
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
class
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
class AtomicCoordinateSchema(BaseModel):
|
|
25
|
+
value: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
|
|
26
|
+
"""
|
|
27
|
+
value of this entry
|
|
28
|
+
"""
|
|
29
|
+
id: int
|
|
30
|
+
"""
|
|
31
|
+
integer id of this entry
|
|
32
|
+
"""
|
|
26
33
|
|
|
27
34
|
|
|
28
|
-
class
|
|
35
|
+
class BasisUnitsEnum(Enum):
|
|
29
36
|
crystal = "crystal"
|
|
30
37
|
cartesian = "cartesian"
|
|
31
38
|
|
|
32
39
|
|
|
33
|
-
class
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
class AtomicLabelSchema(BaseModel):
|
|
41
|
+
value: Union[Union[int, str, float], conint(ge=1, le=9)]
|
|
42
|
+
"""
|
|
43
|
+
value of this entry
|
|
44
|
+
"""
|
|
45
|
+
id: int
|
|
46
|
+
"""
|
|
47
|
+
integer id of this entry
|
|
48
|
+
"""
|
|
36
49
|
|
|
37
50
|
|
|
38
51
|
class BasisSchema(BaseModel):
|
|
39
|
-
elements: List[
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
52
|
+
elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
|
|
53
|
+
"""
|
|
54
|
+
atomic elements schema
|
|
55
|
+
"""
|
|
56
|
+
coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
|
|
57
|
+
"""
|
|
58
|
+
atomic coordinates schema
|
|
59
|
+
"""
|
|
60
|
+
units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
|
|
61
|
+
labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
|
|
62
|
+
"""
|
|
63
|
+
atomic labels schema
|
|
64
|
+
"""
|
|
43
65
|
|
|
44
66
|
|
|
45
|
-
class
|
|
67
|
+
class LatticeVectorsUnitsEnum(Enum):
|
|
46
68
|
angstrom = "angstrom"
|
|
47
69
|
bohr = "bohr"
|
|
48
70
|
|
|
49
71
|
|
|
50
|
-
class
|
|
72
|
+
class LatticeVectorsSchema(BaseModel):
|
|
73
|
+
a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
74
|
+
b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
75
|
+
c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
|
|
51
76
|
alat: Optional[float] = 1
|
|
52
77
|
"""
|
|
53
78
|
lattice parameter for fractional coordinates
|
|
54
79
|
"""
|
|
55
|
-
units: Optional[
|
|
56
|
-
a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
57
|
-
b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
58
|
-
c: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema")
|
|
80
|
+
units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
|
|
59
81
|
|
|
60
82
|
|
|
61
83
|
class LatticeTypeEnum(Enum):
|
|
@@ -75,28 +97,22 @@ class LatticeTypeEnum(Enum):
|
|
|
75
97
|
RHL = "RHL"
|
|
76
98
|
|
|
77
99
|
|
|
78
|
-
class
|
|
100
|
+
class LatticeUnitsLengthEnum(Enum):
|
|
79
101
|
angstrom = "angstrom"
|
|
80
102
|
bohr = "bohr"
|
|
81
103
|
|
|
82
104
|
|
|
83
|
-
class
|
|
105
|
+
class LatticeUnitsAngleEnum(Enum):
|
|
84
106
|
degree = "degree"
|
|
85
107
|
radian = "radian"
|
|
86
108
|
|
|
87
109
|
|
|
88
110
|
class LatticeUnitsSchema(BaseModel):
|
|
89
|
-
length: Optional[
|
|
90
|
-
angle: Optional[
|
|
111
|
+
length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
|
|
112
|
+
angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
|
|
91
113
|
|
|
92
114
|
|
|
93
115
|
class LatticeSchema(BaseModel):
|
|
94
|
-
vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit")
|
|
95
|
-
type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
|
|
96
|
-
units: Optional[LatticeUnitsSchema] = Field(
|
|
97
|
-
default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
|
|
98
|
-
title="Lattice units schema",
|
|
99
|
-
)
|
|
100
116
|
a: float
|
|
101
117
|
"""
|
|
102
118
|
length of the first lattice vector
|
|
@@ -121,46 +137,52 @@ class LatticeSchema(BaseModel):
|
|
|
121
137
|
"""
|
|
122
138
|
angle between first and third lattice vector
|
|
123
139
|
"""
|
|
140
|
+
vectors: Optional[LatticeVectorsSchema] = Field(None, title="lattice vectors schema")
|
|
141
|
+
type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
|
|
142
|
+
units: Optional[LatticeUnitsSchema] = Field(
|
|
143
|
+
default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
|
|
144
|
+
title="Lattice units schema",
|
|
145
|
+
)
|
|
124
146
|
|
|
125
147
|
|
|
126
148
|
class Name(Enum):
|
|
127
149
|
volume = "volume"
|
|
128
150
|
|
|
129
151
|
|
|
130
|
-
class
|
|
152
|
+
class Units(Enum):
|
|
131
153
|
angstrom_3 = "angstrom^3"
|
|
132
154
|
|
|
133
155
|
|
|
134
156
|
class VolumeSchema(BaseModel):
|
|
135
157
|
name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
|
|
136
|
-
units: Optional[
|
|
158
|
+
units: Optional[Units] = None
|
|
137
159
|
value: float
|
|
138
160
|
|
|
139
161
|
|
|
140
|
-
class
|
|
162
|
+
class Name53(Enum):
|
|
141
163
|
density = "density"
|
|
142
164
|
|
|
143
165
|
|
|
144
|
-
class
|
|
166
|
+
class Units39(Enum):
|
|
145
167
|
g_cm_3 = "g/cm^3"
|
|
146
168
|
|
|
147
169
|
|
|
148
170
|
class DensitySchema(BaseModel):
|
|
149
171
|
name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
|
|
150
|
-
units: Optional[
|
|
172
|
+
units: Optional[Units39] = None
|
|
151
173
|
value: float
|
|
152
174
|
|
|
153
175
|
|
|
154
|
-
class
|
|
176
|
+
class Units40(Enum):
|
|
155
177
|
angstrom = "angstrom"
|
|
156
178
|
|
|
157
179
|
|
|
158
180
|
class ScalarSchema(BaseModel):
|
|
159
|
-
units: Optional[
|
|
181
|
+
units: Optional[Units40] = None
|
|
160
182
|
value: float
|
|
161
183
|
|
|
162
184
|
|
|
163
|
-
class
|
|
185
|
+
class Name54(Enum):
|
|
164
186
|
symmetry = "symmetry"
|
|
165
187
|
|
|
166
188
|
|
|
@@ -180,7 +202,7 @@ class SymmetrySchema(BaseModel):
|
|
|
180
202
|
name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
|
|
181
203
|
|
|
182
204
|
|
|
183
|
-
class
|
|
205
|
+
class Name55(Enum):
|
|
184
206
|
elemental_ratio = "elemental_ratio"
|
|
185
207
|
|
|
186
208
|
|
|
@@ -193,7 +215,7 @@ class ElementalRatio(BaseModel):
|
|
|
193
215
|
"""
|
|
194
216
|
|
|
195
217
|
|
|
196
|
-
class
|
|
218
|
+
class Name56(Enum):
|
|
197
219
|
p_norm = "p-norm"
|
|
198
220
|
|
|
199
221
|
|
|
@@ -206,7 +228,7 @@ class PNorm(BaseModel):
|
|
|
206
228
|
value: float
|
|
207
229
|
|
|
208
230
|
|
|
209
|
-
class
|
|
231
|
+
class Name57(Enum):
|
|
210
232
|
inchi = "inchi"
|
|
211
233
|
|
|
212
234
|
|
|
@@ -215,7 +237,7 @@ class InChIRepresentationSchema(BaseModel):
|
|
|
215
237
|
value: str
|
|
216
238
|
|
|
217
239
|
|
|
218
|
-
class
|
|
240
|
+
class Name58(Enum):
|
|
219
241
|
inchi_key = "inchi_key"
|
|
220
242
|
|
|
221
243
|
|
|
@@ -294,7 +316,7 @@ class FileSourceSchema(BaseModel):
|
|
|
294
316
|
"""
|
|
295
317
|
|
|
296
318
|
|
|
297
|
-
class
|
|
319
|
+
class Name59(Enum):
|
|
298
320
|
default = "default"
|
|
299
321
|
atomsTooClose = "atomsTooClose"
|
|
300
322
|
atomsOverlap = "atomsOverlap"
|
|
@@ -307,7 +329,7 @@ class Severity(Enum):
|
|
|
307
329
|
|
|
308
330
|
|
|
309
331
|
class MaterialConsistencyCheckSchema(BaseModel):
|
|
310
|
-
name:
|
|
332
|
+
name: Name59
|
|
311
333
|
"""
|
|
312
334
|
Name of the consistency check that is performed, which is listed in an enum.
|
|
313
335
|
"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: material/reusable/repetitions.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel, conint
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CrystalRepetitionsSchemaItem(RootModel[conint(ge=1)]):
|
|
13
|
+
root: conint(ge=1)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CrystalRepetitionsSchema(RootModel[Optional[List[CrystalRepetitionsSchemaItem]]]):
|
|
17
|
+
root: Optional[List[CrystalRepetitionsSchemaItem]] = Field(
|
|
18
|
+
default_factory=lambda: [CrystalRepetitionsSchemaItem.model_validate(v) for v in [1, 1, 1]],
|
|
19
|
+
max_length=3,
|
|
20
|
+
min_length=3,
|
|
21
|
+
title="Crystal Repetitions Schema",
|
|
22
|
+
)
|
|
23
|
+
"""
|
|
24
|
+
Number of unit cells to repeat in each direction for a crystal structure.
|
|
25
|
+
"""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: material/reusable/slab/enums.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SurfaceTypesEnum(Enum):
|
|
11
|
+
top = "top"
|
|
12
|
+
bottom = "bottom"
|
|
13
|
+
both = "both"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: material/reusable/slab/miller_indices.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MillerIndicesSchema(RootModel[Optional[List[int]]]):
|
|
13
|
+
root: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
|
|
14
|
+
"""
|
|
15
|
+
Miller indices for crystallographic plane designation
|
|
16
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: material/reusable/slab/number_of_layers.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import Field, RootModel, conint
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class NumberOfLayersSchema(RootModel[Optional[conint(ge=1)]]):
|
|
13
|
+
root: Optional[conint(ge=1)] = Field(1, title="number_of_layers Schema")
|
|
14
|
+
"""
|
|
15
|
+
Number of atomic layers in a structural component
|
|
16
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: material/reusable/slab/termination.json
|
|
3
|
+
# version: 0.28.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TerminationSchema(BaseModel):
|
|
11
|
+
chemical_elements: str = Field(..., title="Chemical Elements")
|
|
12
|
+
"""
|
|
13
|
+
Chemical elements at the termination
|
|
14
|
+
"""
|
|
15
|
+
space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
|
|
16
|
+
"""
|
|
17
|
+
Space group symmetry designation for the termination
|
|
18
|
+
"""
|