mat3ra-esse 2025.4.17.post0__py3-none-any.whl → 2025.4.22.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_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/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 +10 -10
- 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 +26 -26
- 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.4.22.post0.dist-info}/METADATA +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/RECORD +87 -49
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/WHEEL +1 -1
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/licenses/LICENSE.md +0 -0
- {mat3ra_esse-2025.4.17.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/top_level.txt +0 -0
|
@@ -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 Units21(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, Units21]
|
|
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 Name23(Enum):
|
|
37
37
|
electronegativity = "electronegativity"
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class Electronegativity(BaseModel):
|
|
41
|
-
name: Optional[
|
|
41
|
+
name: Optional[Name23] = None
|
|
42
42
|
value: float
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
class
|
|
45
|
+
class Name24(Enum):
|
|
46
46
|
ionization_potential = "ionization_potential"
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
class
|
|
49
|
+
class Units19(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[Name24] = None
|
|
61
|
+
units: Optional[Units19] = 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 Name45(Enum):
|
|
141
163
|
density = "density"
|
|
142
164
|
|
|
143
165
|
|
|
144
|
-
class
|
|
166
|
+
class Units36(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[Units36] = None
|
|
151
173
|
value: float
|
|
152
174
|
|
|
153
175
|
|
|
154
|
-
class
|
|
176
|
+
class Units37(Enum):
|
|
155
177
|
angstrom = "angstrom"
|
|
156
178
|
|
|
157
179
|
|
|
158
180
|
class ScalarSchema(BaseModel):
|
|
159
|
-
units: Optional[
|
|
181
|
+
units: Optional[Units37] = None
|
|
160
182
|
value: float
|
|
161
183
|
|
|
162
184
|
|
|
163
|
-
class
|
|
185
|
+
class Name46(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 Name47(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 Name48(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 Name49(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 Name50(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 Name51(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: Name51
|
|
311
333
|
"""
|
|
312
334
|
Name of the consistency check that is performed, which is listed in an enum.
|
|
313
335
|
"""
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: methods_directory/physical/psp/file.json
|
|
3
|
+
# version: 0.25.5
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Any, Dict, List, Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field, confloat, conint, constr
|
|
11
|
+
|
|
12
|
+
from ..Reusable_schema_for_energy_value_with_unit_corresponding_to_a_specific_accuracy_level__e import (
|
|
13
|
+
g,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Slug(Enum):
|
|
18
|
+
pseudopotential = "pseudopotential"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Type(Enum):
|
|
22
|
+
us = "us"
|
|
23
|
+
nc = "nc"
|
|
24
|
+
nc_fr = "nc-fr"
|
|
25
|
+
paw = "paw"
|
|
26
|
+
coulomb = "coulomb"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ExchangeCorrelation(BaseModel):
|
|
30
|
+
approximation: Optional[str] = None
|
|
31
|
+
"""
|
|
32
|
+
DFT approximation
|
|
33
|
+
"""
|
|
34
|
+
functional: Optional[str] = None
|
|
35
|
+
"""
|
|
36
|
+
Exchange correlation functional
|
|
37
|
+
"""
|
|
38
|
+
path: Optional[str] = Field(None, title="category path schema")
|
|
39
|
+
"""
|
|
40
|
+
TODO: Use regex once schema draft version has been updated
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class AtomicOrbitalSchema(BaseModel):
|
|
45
|
+
orbitalName: Optional[constr(pattern=r"^[1-7][sSpPdDfF]$")] = None
|
|
46
|
+
orbitalIndex: Optional[conint(ge=1)] = None
|
|
47
|
+
principalNumber: Optional[conint(ge=1, le=7)] = None
|
|
48
|
+
angularMomentum: Optional[conint(ge=0, le=3)] = None
|
|
49
|
+
occupation: Optional[confloat(ge=0.0, le=14.0)] = None
|
|
50
|
+
"""
|
|
51
|
+
Shell occupation
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class Name(Enum):
|
|
56
|
+
pseudopotential = "pseudopotential"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class Cutoffs(BaseModel):
|
|
60
|
+
model_config = ConfigDict(
|
|
61
|
+
extra="forbid",
|
|
62
|
+
)
|
|
63
|
+
wavefunction: Optional[List[g.FieldUsedForSuggestedWavefunctionAndChargeDensityCutoffs]] = None
|
|
64
|
+
"""
|
|
65
|
+
Energy cutoff values for wavefunction plane wave expansion.
|
|
66
|
+
"""
|
|
67
|
+
density: Optional[List[g.FieldUsedForSuggestedWavefunctionAndChargeDensityCutoffs]] = None
|
|
68
|
+
"""
|
|
69
|
+
Energy cutoff values for charge density plane wave expansion.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class FileDataItem(BaseModel):
|
|
74
|
+
element: str
|
|
75
|
+
"""
|
|
76
|
+
chemical element
|
|
77
|
+
"""
|
|
78
|
+
hash: Optional[str] = None
|
|
79
|
+
"""
|
|
80
|
+
MD5 hash of the pseudopotential file
|
|
81
|
+
"""
|
|
82
|
+
type: Type
|
|
83
|
+
source: str
|
|
84
|
+
"""
|
|
85
|
+
explains where this came from
|
|
86
|
+
"""
|
|
87
|
+
version: Optional[str] = None
|
|
88
|
+
"""
|
|
89
|
+
explains the version of where this came from
|
|
90
|
+
"""
|
|
91
|
+
exchangeCorrelation: ExchangeCorrelation
|
|
92
|
+
valenceConfiguration: Optional[List[AtomicOrbitalSchema]] = None
|
|
93
|
+
"""
|
|
94
|
+
contains pseudo orbital information, including orbital names and occupations
|
|
95
|
+
"""
|
|
96
|
+
path: str
|
|
97
|
+
"""
|
|
98
|
+
location of the pseudopotential file on filesystem
|
|
99
|
+
"""
|
|
100
|
+
apps: List[str]
|
|
101
|
+
"""
|
|
102
|
+
The names of the simulation engines that can use this pseudopotential, e.g. espresso
|
|
103
|
+
"""
|
|
104
|
+
filename: Optional[str] = None
|
|
105
|
+
"""
|
|
106
|
+
filename of pseudopotential file on filesystem
|
|
107
|
+
"""
|
|
108
|
+
name: Optional[Name] = None
|
|
109
|
+
"""
|
|
110
|
+
name of the data category
|
|
111
|
+
"""
|
|
112
|
+
cutoffs: Optional[Cutoffs] = None
|
|
113
|
+
"""
|
|
114
|
+
Suggested cutoff values for wave function and charge density.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class Source(BaseModel):
|
|
119
|
+
info: Optional[Dict[str, Any]] = None
|
|
120
|
+
type: Optional[str] = None
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class PseudopotentialFile(BaseModel):
|
|
124
|
+
slug: Optional[Slug] = None
|
|
125
|
+
data: Optional[FileDataItem] = Field(None, title="File data item")
|
|
126
|
+
source: Optional[Source] = None
|
|
127
|
+
"""
|
|
128
|
+
TODO: remove in the future
|
|
129
|
+
"""
|