mat3ra-esse 2025.4.15.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.

Files changed (87) hide show
  1. mat3ra/esse/data/examples.py +1 -1
  2. mat3ra/esse/data/schemas.py +1 -1
  3. mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/__init__.py +3 -0
  4. mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/atoms.py +41 -0
  5. mat3ra/esse/models/apse/db/nist_jarvis/2024_3.13/db_entry.py +55 -0
  6. mat3ra/esse/models/apse/file/applications/espresso/7.2/__init__.py +3 -0
  7. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/__init__.py +3 -0
  8. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_positions.py +51 -0
  9. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/atomic_species.py +34 -0
  10. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell.py +111 -0
  11. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/cell_parameters.py +36 -0
  12. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/control.py +169 -0
  13. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/electrons.py +139 -0
  14. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/hubbard.py +194 -0
  15. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/ions.py +422 -0
  16. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/k_points.py +73 -0
  17. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw.x/system.py +841 -0
  18. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw_x.py +1990 -0
  19. mat3ra/esse/models/core/abstract/coordinate_3d.py +13 -0
  20. mat3ra/esse/models/core/abstract/kpoint.py +16 -0
  21. mat3ra/esse/models/core/abstract/matrix_3x3.py +17 -0
  22. mat3ra/esse/models/core/abstract/vector_3d.py +13 -0
  23. mat3ra/esse/models/core/abstract/vector_boolean_3d.py +13 -0
  24. mat3ra/esse/models/core/primitive/array_of_ids.py +5 -5
  25. mat3ra/esse/models/core/primitive/object_with_id.py +14 -0
  26. mat3ra/esse/models/core/primitive/object_with_id_and_value.py +20 -0
  27. mat3ra/esse/models/core/reusable/atomic_scalars.py +4 -4
  28. mat3ra/esse/models/core/reusable/atomic_string.py +18 -0
  29. mat3ra/esse/models/core/reusable/atomic_vector.py +20 -0
  30. mat3ra/esse/models/core/reusable/atomic_vectors.py +9 -9
  31. mat3ra/esse/models/core/reusable/band_gap.py +8 -2
  32. mat3ra/esse/models/core/reusable/energy.py +2 -2
  33. mat3ra/esse/models/core/reusable/energy_accuracy_levels/__init__.py +3 -0
  34. mat3ra/esse/models/element.py +6 -6
  35. mat3ra/esse/models/material/__init__.py +70 -56
  36. mat3ra/esse/models/methods_directory/physical/psp/file/__init__.py +129 -0
  37. mat3ra/esse/models/methods_directory/physical/psp/file_data_item/__init__.py +111 -0
  38. mat3ra/esse/models/properties_directory/derived_properties.py +10 -10
  39. mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py +2 -2
  40. mat3ra/esse/models/properties_directory/non_scalar/band_gaps.py +12 -3
  41. mat3ra/esse/models/properties_directory/non_scalar/band_structure.py +2 -2
  42. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  43. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  44. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  45. mat3ra/esse/models/properties_directory/non_scalar/stress_tensor.py +1 -1
  46. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +26 -26
  47. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  48. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  49. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  50. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  51. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  52. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  53. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  54. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  55. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  56. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  57. mat3ra/esse/models/properties_directory/structural/atomic_forces.py +8 -8
  58. mat3ra/esse/models/properties_directory/structural/basis/__init__.py +38 -16
  59. mat3ra/esse/models/properties_directory/structural/basis/atomic_constraint.py +20 -0
  60. mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints.py +11 -14
  61. mat3ra/esse/models/properties_directory/structural/basis/atomic_constraints_property.py +33 -0
  62. mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinate.py +10 -4
  63. mat3ra/esse/models/properties_directory/structural/basis/atomic_coordinates.py +16 -27
  64. mat3ra/esse/models/properties_directory/structural/basis/atomic_element.py +6 -7
  65. mat3ra/esse/models/properties_directory/structural/basis/atomic_elements.py +27 -0
  66. mat3ra/esse/models/properties_directory/structural/basis/atomic_label.py +11 -5
  67. mat3ra/esse/models/properties_directory/structural/basis/atomic_labels.py +27 -0
  68. mat3ra/esse/models/properties_directory/structural/basis/bonds.py +3 -3
  69. mat3ra/esse/models/properties_directory/structural/basis/units_enum.py +12 -0
  70. mat3ra/esse/models/properties_directory/structural/lattice/__init__.py +16 -24
  71. mat3ra/esse/models/properties_directory/structural/lattice/lattice_vectors.py +12 -21
  72. mat3ra/esse/models/properties_directory/structural/lattice/units/__init__.py +3 -0
  73. mat3ra/esse/models/properties_directory/structural/lattice/units/angle_enum.py +12 -0
  74. mat3ra/esse/models/properties_directory/structural/lattice/units/length_enum.py +12 -0
  75. mat3ra/esse/models/properties_directory/structural/lattice/vectors/__init__.py +26 -0
  76. mat3ra/esse/models/properties_directory/structural/lattice/vectors/units_enum.py +12 -0
  77. mat3ra/esse/models/properties_directory/structural/magnetic_moments.py +8 -8
  78. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +9 -9
  79. mat3ra/esse/models/properties_directory/structural/patterns/functional_group.py +3 -3
  80. mat3ra/esse/models/properties_directory/structural/patterns/ring.py +3 -3
  81. mat3ra/esse/models/properties_directory/structural/patterns/special_bond.py +3 -3
  82. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  83. {mat3ra_esse-2025.4.15.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/METADATA +1 -1
  84. {mat3ra_esse-2025.4.15.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/RECORD +87 -49
  85. {mat3ra_esse-2025.4.15.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/WHEEL +1 -1
  86. {mat3ra_esse-2025.4.15.post0.dist-info → mat3ra_esse-2025.4.22.post0.dist-info}/licenses/LICENSE.md +0 -0
  87. {mat3ra_esse-2025.4.15.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, Optional
7
+ from typing import List
8
8
 
9
9
  from pydantic import BaseModel, Field, RootModel
10
10
 
11
11
 
12
- class AtomicId(BaseModel):
13
- id: Optional[int] = None
12
+ class ObjectWithId(BaseModel):
13
+ id: int
14
14
  """
15
15
  integer id of this entry
16
16
  """
17
17
 
18
18
 
19
- class AtomicIds(RootModel[List[AtomicId]]):
20
- root: List[AtomicId] = Field(..., title="atomic ids")
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 AtomicScalarsVectorsSchemaItem(BaseModel):
16
+ class ObjectWithId(BaseModel):
17
17
  value: Optional[ScalarSchema] = Field(None, title="scalar schema")
18
- id: Optional[int] = None
18
+ id: int
19
19
  """
20
20
  integer id of this entry
21
21
  """
22
22
 
23
23
 
24
- class AtomicScalarsVectorsSchema(RootModel[List[AtomicScalarsVectorsSchemaItem]]):
25
- root: List[AtomicScalarsVectorsSchemaItem] = Field(..., title="atomic scalars vectors schema")
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, Optional, Union
7
+ from typing import List
8
8
 
9
9
  from pydantic import BaseModel, Field, RootModel
10
10
 
11
11
 
12
- class AtomicVectorsSchemaItem(BaseModel):
13
- value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema")
14
- id: Optional[int] = None
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[AtomicVectorsSchemaItem]]):
21
- root: List[AtomicVectorsSchemaItem] = Field(..., title="atomic vectors schema")
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="point schema")
30
- kpointValence: Optional[List[float]] = Field(None, max_length=3, min_length=3, title="point schema")
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 Units23(Enum):
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, Units23]
29
+ units: Union[Units, Units21]
30
30
  value: float
@@ -0,0 +1,3 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: schema
3
+ # version: 0.25.5
@@ -33,20 +33,20 @@ class AtomicRadius(BaseModel):
33
33
  value: float
34
34
 
35
35
 
36
- class Name24(Enum):
36
+ class Name23(Enum):
37
37
  electronegativity = "electronegativity"
38
38
 
39
39
 
40
40
  class Electronegativity(BaseModel):
41
- name: Optional[Name24] = None
41
+ name: Optional[Name23] = None
42
42
  value: float
43
43
 
44
44
 
45
- class Name25(Enum):
45
+ class Name24(Enum):
46
46
  ionization_potential = "ionization_potential"
47
47
 
48
48
 
49
- class Units21(Enum):
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[Name25] = None
61
- units: Optional[Units21] = None
60
+ name: Optional[Name24] = None
61
+ units: Optional[Units19] = None
62
62
  value: float
63
63
 
64
64
 
@@ -10,60 +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 AtomicElements(BaseModel):
14
- id: float
13
+ class AtomicElementSchema(BaseModel):
15
14
  value: str
16
- occurrence: Optional[float] = None
17
15
  """
18
- Occurrence is for fractional occupations
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 AtomicCoordinate(BaseModel):
24
- id: Optional[float] = None
25
- value: Optional[Union[List[float], List[bool]]] = Field(None, title="vector schema")
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 Units(Enum):
35
+ class BasisUnitsEnum(Enum):
29
36
  crystal = "crystal"
30
37
  cartesian = "cartesian"
31
38
 
32
39
 
33
- class AtomicLabel(BaseModel):
34
- id: Optional[float] = None
35
- value: Optional[conint(ge=1, le=9)] = Field(None, title="integer positive single digit")
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[AtomicElements]
40
- coordinates: List[AtomicCoordinate]
41
- units: Optional[Units] = "crystal"
42
- labels: Optional[List[AtomicLabel]] = []
43
-
44
-
45
- class Units40(Enum):
46
- km = "km"
47
- m = "m"
48
- cm = "cm"
49
- mm = "mm"
50
- um = "um"
51
- nm = "nm"
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
+ """
65
+
66
+
67
+ class LatticeVectorsUnitsEnum(Enum):
52
68
  angstrom = "angstrom"
53
- a_u_ = "a.u."
54
69
  bohr = "bohr"
55
- pm = "pm"
56
70
 
57
71
 
58
- class LatticeExplicitUnit(BaseModel):
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")
59
76
  alat: Optional[float] = 1
60
77
  """
61
78
  lattice parameter for fractional coordinates
62
79
  """
63
- units: Optional[Units40] = None
64
- a: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema")
65
- b: List[float] = Field(..., max_length=3, min_length=3, title="array of 3 number elements schema")
66
- 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")
67
81
 
68
82
 
69
83
  class LatticeTypeEnum(Enum):
@@ -83,28 +97,22 @@ class LatticeTypeEnum(Enum):
83
97
  RHL = "RHL"
84
98
 
85
99
 
86
- class Length(Enum):
100
+ class LatticeUnitsLengthEnum(Enum):
87
101
  angstrom = "angstrom"
88
102
  bohr = "bohr"
89
103
 
90
104
 
91
- class Angle(Enum):
105
+ class LatticeUnitsAngleEnum(Enum):
92
106
  degree = "degree"
93
107
  radian = "radian"
94
108
 
95
109
 
96
110
  class LatticeUnitsSchema(BaseModel):
97
- length: Optional[Length] = "angstrom"
98
- angle: Optional[Angle] = "degree"
111
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
112
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
99
113
 
100
114
 
101
115
  class LatticeSchema(BaseModel):
102
- vectors: Optional[LatticeExplicitUnit] = Field(None, title="lattice explicit unit")
103
- type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
104
- units: Optional[LatticeUnitsSchema] = Field(
105
- default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
106
- title="Lattice units schema",
107
- )
108
116
  a: float
109
117
  """
110
118
  length of the first lattice vector
@@ -129,46 +137,52 @@ class LatticeSchema(BaseModel):
129
137
  """
130
138
  angle between first and third lattice vector
131
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
+ )
132
146
 
133
147
 
134
148
  class Name(Enum):
135
149
  volume = "volume"
136
150
 
137
151
 
138
- class Units41(Enum):
152
+ class Units(Enum):
139
153
  angstrom_3 = "angstrom^3"
140
154
 
141
155
 
142
156
  class VolumeSchema(BaseModel):
143
157
  name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
144
- units: Optional[Units41] = None
158
+ units: Optional[Units] = None
145
159
  value: float
146
160
 
147
161
 
148
- class Name46(Enum):
162
+ class Name45(Enum):
149
163
  density = "density"
150
164
 
151
165
 
152
- class Units42(Enum):
166
+ class Units36(Enum):
153
167
  g_cm_3 = "g/cm^3"
154
168
 
155
169
 
156
170
  class DensitySchema(BaseModel):
157
171
  name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
158
- units: Optional[Units42] = None
172
+ units: Optional[Units36] = None
159
173
  value: float
160
174
 
161
175
 
162
- class Units43(Enum):
176
+ class Units37(Enum):
163
177
  angstrom = "angstrom"
164
178
 
165
179
 
166
180
  class ScalarSchema(BaseModel):
167
- units: Optional[Units43] = None
181
+ units: Optional[Units37] = None
168
182
  value: float
169
183
 
170
184
 
171
- class Name47(Enum):
185
+ class Name46(Enum):
172
186
  symmetry = "symmetry"
173
187
 
174
188
 
@@ -188,7 +202,7 @@ class SymmetrySchema(BaseModel):
188
202
  name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
189
203
 
190
204
 
191
- class Name48(Enum):
205
+ class Name47(Enum):
192
206
  elemental_ratio = "elemental_ratio"
193
207
 
194
208
 
@@ -201,7 +215,7 @@ class ElementalRatio(BaseModel):
201
215
  """
202
216
 
203
217
 
204
- class Name49(Enum):
218
+ class Name48(Enum):
205
219
  p_norm = "p-norm"
206
220
 
207
221
 
@@ -214,7 +228,7 @@ class PNorm(BaseModel):
214
228
  value: float
215
229
 
216
230
 
217
- class Name50(Enum):
231
+ class Name49(Enum):
218
232
  inchi = "inchi"
219
233
 
220
234
 
@@ -223,7 +237,7 @@ class InChIRepresentationSchema(BaseModel):
223
237
  value: str
224
238
 
225
239
 
226
- class Name51(Enum):
240
+ class Name50(Enum):
227
241
  inchi_key = "inchi_key"
228
242
 
229
243
 
@@ -302,7 +316,7 @@ class FileSourceSchema(BaseModel):
302
316
  """
303
317
 
304
318
 
305
- class Name52(Enum):
319
+ class Name51(Enum):
306
320
  default = "default"
307
321
  atomsTooClose = "atomsTooClose"
308
322
  atomsOverlap = "atomsOverlap"
@@ -315,7 +329,7 @@ class Severity(Enum):
315
329
 
316
330
 
317
331
  class MaterialConsistencyCheckSchema(BaseModel):
318
- name: Name52
332
+ name: Name51
319
333
  """
320
334
  Name of the consistency check that is performed, which is listed in an enum.
321
335
  """