mat3ra-esse 2025.7.1.post0__py3-none-any.whl → 2025.7.29.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 (99) hide show
  1. mat3ra/esse/data/examples.py +1 -1
  2. mat3ra/esse/data/schemas.py +1 -1
  3. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw_x.py +6 -6
  4. mat3ra/esse/models/core/abstract/vector_2d.py +13 -0
  5. mat3ra/esse/models/core/primitive/array_of_2_numbers.py +13 -0
  6. mat3ra/esse/models/core/reusable/energy.py +2 -2
  7. mat3ra/esse/models/element.py +6 -6
  8. mat3ra/esse/models/job/__init__.py +8 -0
  9. mat3ra/esse/models/material/__init__.py +14 -14
  10. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/__init__.py +3 -0
  11. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/configuration.py +6039 -0
  12. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +3 -0
  13. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +6043 -0
  14. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/__init__.py +3 -0
  15. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/__init__.py +3 -0
  16. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/configuration.py +2116 -0
  17. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/base_configuration.py +1561 -0
  18. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +3 -0
  19. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +6039 -0
  20. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/__init__.py +3 -0
  21. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/configuration.py +2888 -0
  22. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/__init__.py +3 -0
  23. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/configuration.py +2892 -0
  24. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/__init__.py +3 -0
  25. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/base_configuration.py +544 -0
  26. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/interstitial.py +1099 -0
  27. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/substitutional.py +1099 -0
  28. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/vacancy.py +556 -0
  29. mat3ra/esse/models/materials_category/pristine_structures/three_dimensional/ideal_crystal.py +14 -14
  30. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanoribbon.py +1582 -0
  31. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanotape.py +1148 -0
  32. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab.py +78 -94
  33. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell.py +1147 -0
  34. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell_with_gap.py +1151 -0
  35. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/__init__.py +3 -0
  36. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/configuration.py +1232 -0
  37. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/__init__.py +3 -0
  38. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +16 -0
  39. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.py +527 -2
  40. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/point_defect_site.py +676 -0
  41. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_region.py +555 -0
  42. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_site.py +1576 -0
  43. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/crystal.py +14 -14
  44. mat3ra/esse/models/materials_category_components/entities/core/two_dimensional/vacuum.py +14 -14
  45. mat3ra/esse/models/materials_category_components/entities/core/zero_dimensional/vacancy.py +22 -0
  46. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/__init__.py +3 -0
  47. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_base.py +541 -0
  48. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines.py +545 -0
  49. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated.py +708 -0
  50. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/crystal_lattice_base.py +541 -0
  51. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.py +14 -14
  52. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_uniform.py +14 -14
  53. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/supercell.py +14 -14
  54. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers.py +4 -4
  55. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.py +4 -4
  56. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.py +4 -4
  57. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.py +18 -18
  58. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_stack_configuration.py +1561 -0
  59. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_unit_cell.py +74 -77
  60. mat3ra/esse/models/materials_category_components/operations/core/combinations/enums.py +13 -0
  61. mat3ra/esse/models/materials_category_components/operations/core/combinations/merge.py +9 -981
  62. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack.py +3 -947
  63. mat3ra/esse/models/materials_category_components/operations/core/modifications/perturb.py +538 -0
  64. mat3ra/esse/models/properties_directory/derived_properties.py +11 -11
  65. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  66. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  67. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  68. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
  69. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  70. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  71. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  72. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  73. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  74. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  75. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  76. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  77. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  78. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  79. mat3ra/esse/models/properties_directory/structural/basis/__init__.py +2 -2
  80. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +4 -4
  81. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  82. mat3ra/esse/models/software/flavor.py +4 -0
  83. mat3ra/esse/models/software_directory/ml/unit/execution/__init__.py +16 -0
  84. mat3ra/esse/models/software_directory/ml/unit/execution/evaluate/cross_validate.py +4 -0
  85. mat3ra/esse/models/software_directory/ml/unit/execution/initialize.py +4 -0
  86. mat3ra/esse/models/software_directory/ml/unit/execution/score.py +4 -0
  87. mat3ra/esse/models/software_directory/ml/unit/execution/train.py +4 -0
  88. mat3ra/esse/models/software_directory/modeling/unit/execution.py +4 -0
  89. mat3ra/esse/models/software_directory/scripting/unit/execution.py +4 -0
  90. mat3ra/esse/models/workflow/__init__.py +8 -0
  91. mat3ra/esse/models/workflow/subworkflow/__init__.py +4 -0
  92. mat3ra/esse/models/workflow/subworkflow/unit.py +4 -0
  93. mat3ra/esse/models/workflow/unit/__init__.py +4 -0
  94. mat3ra/esse/models/workflow/unit/execution.py +4 -0
  95. {mat3ra_esse-2025.7.1.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/METADATA +5 -5
  96. {mat3ra_esse-2025.7.1.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/RECORD +99 -58
  97. {mat3ra_esse-2025.7.1.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/WHEEL +0 -0
  98. {mat3ra_esse-2025.7.1.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/licenses/LICENSE.md +0 -0
  99. {mat3ra_esse-2025.7.1.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1576 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: materials_category_components/entities/auxiliary/zero_dimensional/void_site.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import Any, Dict, List, Literal, Optional, Union
9
+
10
+ from pydantic import BaseModel, Field, RootModel, confloat, conint, constr
11
+
12
+
13
+ class Value(Enum):
14
+ H = "H"
15
+ He = "He"
16
+ Li = "Li"
17
+ Be = "Be"
18
+ B = "B"
19
+ C = "C"
20
+ N = "N"
21
+ O = "O"
22
+ F = "F"
23
+ Ne = "Ne"
24
+ Na = "Na"
25
+ Mg = "Mg"
26
+ Al = "Al"
27
+ Si = "Si"
28
+ P = "P"
29
+ S = "S"
30
+ Cl = "Cl"
31
+ Ar = "Ar"
32
+ K = "K"
33
+ Ca = "Ca"
34
+ Sc = "Sc"
35
+ Ti = "Ti"
36
+ V = "V"
37
+ Cr = "Cr"
38
+ Mn = "Mn"
39
+ Fe = "Fe"
40
+ Co = "Co"
41
+ Ni = "Ni"
42
+ Cu = "Cu"
43
+ Zn = "Zn"
44
+ Ga = "Ga"
45
+ Ge = "Ge"
46
+ As = "As"
47
+ Se = "Se"
48
+ Br = "Br"
49
+ Kr = "Kr"
50
+ Rb = "Rb"
51
+ Sr = "Sr"
52
+ Y = "Y"
53
+ Zr = "Zr"
54
+ Nb = "Nb"
55
+ Mo = "Mo"
56
+ Tc = "Tc"
57
+ Ru = "Ru"
58
+ Rh = "Rh"
59
+ Pd = "Pd"
60
+ Ag = "Ag"
61
+ Cd = "Cd"
62
+ In = "In"
63
+ Sn = "Sn"
64
+ Sb = "Sb"
65
+ Te = "Te"
66
+ I = "I"
67
+ Xe = "Xe"
68
+ Cs = "Cs"
69
+ Ba = "Ba"
70
+ La = "La"
71
+ Ce = "Ce"
72
+ Pr = "Pr"
73
+ Nd = "Nd"
74
+ Pm = "Pm"
75
+ Sm = "Sm"
76
+ Eu = "Eu"
77
+ Gd = "Gd"
78
+ Tb = "Tb"
79
+ Dy = "Dy"
80
+ Ho = "Ho"
81
+ Er = "Er"
82
+ Tm = "Tm"
83
+ Yb = "Yb"
84
+ Lu = "Lu"
85
+ Hf = "Hf"
86
+ Ta = "Ta"
87
+ W = "W"
88
+ Re = "Re"
89
+ Os = "Os"
90
+ Ir = "Ir"
91
+ Pt = "Pt"
92
+ Au = "Au"
93
+ Hg = "Hg"
94
+ Tl = "Tl"
95
+ Pb = "Pb"
96
+ Bi = "Bi"
97
+ Po = "Po"
98
+ At = "At"
99
+ Rn = "Rn"
100
+ Fr = "Fr"
101
+ Ra = "Ra"
102
+ Ac = "Ac"
103
+ Th = "Th"
104
+ Pa = "Pa"
105
+ U = "U"
106
+ Np = "Np"
107
+ Pu = "Pu"
108
+ Am = "Am"
109
+ Cm = "Cm"
110
+ Bk = "Bk"
111
+ Cf = "Cf"
112
+ Es = "Es"
113
+ Fm = "Fm"
114
+ Md = "Md"
115
+ No = "No"
116
+ Lr = "Lr"
117
+ Rf = "Rf"
118
+ Db = "Db"
119
+ Sg = "Sg"
120
+ Bh = "Bh"
121
+ Hs = "Hs"
122
+ Mt = "Mt"
123
+ Ds = "Ds"
124
+ Rg = "Rg"
125
+ Cn = "Cn"
126
+ Nh = "Nh"
127
+ Fl = "Fl"
128
+ Mc = "Mc"
129
+ Lv = "Lv"
130
+ Ts = "Ts"
131
+ Og = "Og"
132
+
133
+
134
+ class Value189(Enum):
135
+ X = "X"
136
+ Vac = "Vac"
137
+
138
+
139
+ class AtomicElementSchema(BaseModel):
140
+ value: Union[Value, Value189]
141
+ """
142
+ All elements, including extra elements
143
+ """
144
+ id: int
145
+ """
146
+ integer id of this entry
147
+ """
148
+
149
+
150
+ class AtomicCoordinateSchema(BaseModel):
151
+ value: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
152
+ """
153
+ value of this entry
154
+ """
155
+ id: int
156
+ """
157
+ integer id of this entry
158
+ """
159
+
160
+
161
+ class BasisUnitsEnum(Enum):
162
+ crystal = "crystal"
163
+ cartesian = "cartesian"
164
+
165
+
166
+ class AtomicLabelSchema(BaseModel):
167
+ value: Union[Union[int, str, float], conint(ge=1, le=9)]
168
+ """
169
+ value of this entry
170
+ """
171
+ id: int
172
+ """
173
+ integer id of this entry
174
+ """
175
+
176
+
177
+ class BasisSchema(BaseModel):
178
+ elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
179
+ """
180
+ atomic elements schema
181
+ """
182
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
183
+ """
184
+ atomic coordinates schema
185
+ """
186
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
187
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
188
+ """
189
+ atomic labels schema
190
+ """
191
+
192
+
193
+ class LatticeVectorsUnitsEnum(Enum):
194
+ angstrom = "angstrom"
195
+ bohr = "bohr"
196
+
197
+
198
+ class LatticeVectorsSchema(BaseModel):
199
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
200
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
201
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
202
+ alat: Optional[float] = 1
203
+ """
204
+ lattice parameter for fractional coordinates
205
+ """
206
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
207
+
208
+
209
+ class LatticeTypeEnum(Enum):
210
+ CUB = "CUB"
211
+ BCC = "BCC"
212
+ FCC = "FCC"
213
+ TET = "TET"
214
+ MCL = "MCL"
215
+ ORC = "ORC"
216
+ ORCC = "ORCC"
217
+ ORCF = "ORCF"
218
+ ORCI = "ORCI"
219
+ HEX = "HEX"
220
+ BCT = "BCT"
221
+ TRI = "TRI"
222
+ MCLC = "MCLC"
223
+ RHL = "RHL"
224
+
225
+
226
+ class LatticeUnitsLengthEnum(Enum):
227
+ angstrom = "angstrom"
228
+ bohr = "bohr"
229
+
230
+
231
+ class LatticeUnitsAngleEnum(Enum):
232
+ degree = "degree"
233
+ radian = "radian"
234
+
235
+
236
+ class LatticeUnitsSchema(BaseModel):
237
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
238
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
239
+
240
+
241
+ class LatticeSchema(BaseModel):
242
+ a: float
243
+ """
244
+ length of the first lattice vector
245
+ """
246
+ b: float
247
+ """
248
+ length of the second lattice vector
249
+ """
250
+ c: float
251
+ """
252
+ length of the third lattice vector
253
+ """
254
+ alpha: float
255
+ """
256
+ angle between first and second lattice vector
257
+ """
258
+ beta: float
259
+ """
260
+ angle between second and third lattice vector
261
+ """
262
+ gamma: float
263
+ """
264
+ angle between first and third lattice vector
265
+ """
266
+ vectors: Optional[LatticeVectorsSchema] = Field(None, title="lattice vectors schema")
267
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
268
+ units: Optional[LatticeUnitsSchema] = Field(
269
+ default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
270
+ title="Lattice units schema",
271
+ )
272
+
273
+
274
+ class Name(Enum):
275
+ volume = "volume"
276
+
277
+
278
+ class Units(Enum):
279
+ angstrom_3 = "angstrom^3"
280
+
281
+
282
+ class VolumeSchema(BaseModel):
283
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
284
+ units: Optional[Units] = None
285
+ value: float
286
+
287
+
288
+ class Name780(Enum):
289
+ density = "density"
290
+
291
+
292
+ class Units318(Enum):
293
+ g_cm_3 = "g/cm^3"
294
+
295
+
296
+ class DensitySchema(BaseModel):
297
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
298
+ units: Optional[Units318] = None
299
+ value: float
300
+
301
+
302
+ class Units319(Enum):
303
+ angstrom = "angstrom"
304
+
305
+
306
+ class ScalarSchema(BaseModel):
307
+ units: Optional[Units319] = None
308
+ value: float
309
+
310
+
311
+ class Name781(Enum):
312
+ symmetry = "symmetry"
313
+
314
+
315
+ class SymmetrySchema(BaseModel):
316
+ pointGroupSymbol: Optional[str] = None
317
+ """
318
+ point group symbol in Schoenflies notation
319
+ """
320
+ spaceGroupSymbol: Optional[str] = None
321
+ """
322
+ space group symbol in Hermann–Mauguin notation
323
+ """
324
+ tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema")
325
+ """
326
+ tolerance used for symmetry calculation
327
+ """
328
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
329
+
330
+
331
+ class Name782(Enum):
332
+ elemental_ratio = "elemental_ratio"
333
+
334
+
335
+ class ElementalRatio(BaseModel):
336
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
337
+ value: confloat(ge=0.0, le=1.0)
338
+ element: Optional[str] = None
339
+ """
340
+ the element this ratio is for
341
+ """
342
+
343
+
344
+ class Name783(Enum):
345
+ p_norm = "p-norm"
346
+
347
+
348
+ class PNorm(BaseModel):
349
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
350
+ degree: Optional[int] = None
351
+ """
352
+ degree of the dimensionality of the norm
353
+ """
354
+ value: float
355
+
356
+
357
+ class Name784(Enum):
358
+ inchi = "inchi"
359
+
360
+
361
+ class InChIRepresentationSchema(BaseModel):
362
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
363
+ value: str
364
+
365
+
366
+ class Name785(Enum):
367
+ inchi_key = "inchi_key"
368
+
369
+
370
+ class InChIKeyRepresentationSchema(BaseModel):
371
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
372
+ value: str
373
+
374
+
375
+ class DerivedPropertiesSchema(
376
+ RootModel[
377
+ Union[
378
+ VolumeSchema,
379
+ DensitySchema,
380
+ SymmetrySchema,
381
+ ElementalRatio,
382
+ PNorm,
383
+ InChIRepresentationSchema,
384
+ InChIKeyRepresentationSchema,
385
+ ]
386
+ ]
387
+ ):
388
+ root: Union[
389
+ VolumeSchema,
390
+ DensitySchema,
391
+ SymmetrySchema,
392
+ ElementalRatio,
393
+ PNorm,
394
+ InChIRepresentationSchema,
395
+ InChIKeyRepresentationSchema,
396
+ ] = Field(..., discriminator="name")
397
+
398
+
399
+ class DatabaseSourceSchema(BaseModel):
400
+ id: Union[str, float]
401
+ """
402
+ 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
403
+ """
404
+ source: str
405
+ """
406
+ Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.
407
+ """
408
+ origin: bool
409
+ """
410
+ 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).
411
+ """
412
+ data: Optional[Dict[str, Any]] = None
413
+ """
414
+ Original response from external source.
415
+ """
416
+ doi: Optional[str] = None
417
+ """
418
+ Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506
419
+ """
420
+ url: Optional[str] = None
421
+ """
422
+ 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
423
+ """
424
+
425
+
426
+ class FileSourceSchema(BaseModel):
427
+ extension: Optional[str] = None
428
+ """
429
+ file extension
430
+ """
431
+ filename: str
432
+ """
433
+ file name without extension
434
+ """
435
+ text: str
436
+ """
437
+ file content as raw text
438
+ """
439
+ hash: str
440
+ """
441
+ MD5 hash based on file content
442
+ """
443
+
444
+
445
+ class Name786(Enum):
446
+ default = "default"
447
+ atomsTooClose = "atomsTooClose"
448
+ atomsOverlap = "atomsOverlap"
449
+
450
+
451
+ class Severity(Enum):
452
+ info = "info"
453
+ warning = "warning"
454
+ error = "error"
455
+
456
+
457
+ class MaterialConsistencyCheckSchema(BaseModel):
458
+ name: Name786
459
+ """
460
+ Name of the consistency check that is performed, which is listed in an enum.
461
+ """
462
+ key: str
463
+ """
464
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
465
+ """
466
+ severity: Severity
467
+ """
468
+ Severity level of the problem, which is used in UI to differentiate.
469
+ """
470
+ message: str
471
+ """
472
+ Message generated by the consistency check describing the problem.
473
+ """
474
+
475
+
476
+ class CrystalSchema(BaseModel):
477
+ formula: Optional[str] = None
478
+ """
479
+ reduced chemical formula
480
+ """
481
+ unitCellFormula: Optional[str] = None
482
+ """
483
+ chemical formula based on the number of atoms of each element in the supercell
484
+ """
485
+ basis: BasisSchema = Field(..., title="basis schema")
486
+ lattice: LatticeSchema = Field(..., title="lattice schema")
487
+ derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema")
488
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
489
+ """
490
+ information about a database source
491
+ """
492
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
493
+ """
494
+ file source with the information inside
495
+ """
496
+ scaledHash: Optional[str] = None
497
+ """
498
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
499
+ """
500
+ icsdId: Optional[int] = None
501
+ """
502
+ Corresponding ICSD id of the material
503
+ """
504
+ isNonPeriodic: Optional[bool] = None
505
+ """
506
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
507
+ """
508
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None
509
+ field_id: Optional[str] = Field(None, alias="_id")
510
+ """
511
+ entity identity
512
+ """
513
+ slug: Optional[str] = None
514
+ """
515
+ entity slug
516
+ """
517
+ systemName: Optional[str] = None
518
+ schemaVersion: Optional[str] = "2022.8.16"
519
+ """
520
+ entity's schema version. Used to distinct between different schemas.
521
+ """
522
+ name: Optional[str] = None
523
+ """
524
+ entity name
525
+ """
526
+ isDefault: Optional[bool] = False
527
+ """
528
+ Identifies that entity is defaultable
529
+ """
530
+ metadata: Optional[Dict[str, Any]] = None
531
+
532
+
533
+ class CrystalSiteSchema(BaseModel):
534
+ crystal: CrystalSchema = Field(..., title="Crystal Schema")
535
+ """
536
+ A crystal structure, referencing the base material schema
537
+ """
538
+ coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
539
+
540
+
541
+ class ChemicalElements(Enum):
542
+ H = "H"
543
+ He = "He"
544
+ Li = "Li"
545
+ Be = "Be"
546
+ B = "B"
547
+ C = "C"
548
+ N = "N"
549
+ O = "O"
550
+ F = "F"
551
+ Ne = "Ne"
552
+ Na = "Na"
553
+ Mg = "Mg"
554
+ Al = "Al"
555
+ Si = "Si"
556
+ P = "P"
557
+ S = "S"
558
+ Cl = "Cl"
559
+ Ar = "Ar"
560
+ K = "K"
561
+ Ca = "Ca"
562
+ Sc = "Sc"
563
+ Ti = "Ti"
564
+ V = "V"
565
+ Cr = "Cr"
566
+ Mn = "Mn"
567
+ Fe = "Fe"
568
+ Co = "Co"
569
+ Ni = "Ni"
570
+ Cu = "Cu"
571
+ Zn = "Zn"
572
+ Ga = "Ga"
573
+ Ge = "Ge"
574
+ As = "As"
575
+ Se = "Se"
576
+ Br = "Br"
577
+ Kr = "Kr"
578
+ Rb = "Rb"
579
+ Sr = "Sr"
580
+ Y = "Y"
581
+ Zr = "Zr"
582
+ Nb = "Nb"
583
+ Mo = "Mo"
584
+ Tc = "Tc"
585
+ Ru = "Ru"
586
+ Rh = "Rh"
587
+ Pd = "Pd"
588
+ Ag = "Ag"
589
+ Cd = "Cd"
590
+ In = "In"
591
+ Sn = "Sn"
592
+ Sb = "Sb"
593
+ Te = "Te"
594
+ I = "I"
595
+ Xe = "Xe"
596
+ Cs = "Cs"
597
+ Ba = "Ba"
598
+ La = "La"
599
+ Ce = "Ce"
600
+ Pr = "Pr"
601
+ Nd = "Nd"
602
+ Pm = "Pm"
603
+ Sm = "Sm"
604
+ Eu = "Eu"
605
+ Gd = "Gd"
606
+ Tb = "Tb"
607
+ Dy = "Dy"
608
+ Ho = "Ho"
609
+ Er = "Er"
610
+ Tm = "Tm"
611
+ Yb = "Yb"
612
+ Lu = "Lu"
613
+ Hf = "Hf"
614
+ Ta = "Ta"
615
+ W = "W"
616
+ Re = "Re"
617
+ Os = "Os"
618
+ Ir = "Ir"
619
+ Pt = "Pt"
620
+ Au = "Au"
621
+ Hg = "Hg"
622
+ Tl = "Tl"
623
+ Pb = "Pb"
624
+ Bi = "Bi"
625
+ Po = "Po"
626
+ At = "At"
627
+ Rn = "Rn"
628
+ Fr = "Fr"
629
+ Ra = "Ra"
630
+ Ac = "Ac"
631
+ Th = "Th"
632
+ Pa = "Pa"
633
+ U = "U"
634
+ Np = "Np"
635
+ Pu = "Pu"
636
+ Am = "Am"
637
+ Cm = "Cm"
638
+ Bk = "Bk"
639
+ Cf = "Cf"
640
+ Es = "Es"
641
+ Fm = "Fm"
642
+ Md = "Md"
643
+ No = "No"
644
+ Lr = "Lr"
645
+ Rf = "Rf"
646
+ Db = "Db"
647
+ Sg = "Sg"
648
+ Bh = "Bh"
649
+ Hs = "Hs"
650
+ Mt = "Mt"
651
+ Ds = "Ds"
652
+ Rg = "Rg"
653
+ Cn = "Cn"
654
+ Nh = "Nh"
655
+ Fl = "Fl"
656
+ Mc = "Mc"
657
+ Lv = "Lv"
658
+ Ts = "Ts"
659
+ Og = "Og"
660
+
661
+
662
+ class TerminationSchema(BaseModel):
663
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
664
+ ..., title="Chemical Elements"
665
+ )
666
+ """
667
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
668
+ """
669
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
670
+ """
671
+ Space group symmetry designation for the termination
672
+ """
673
+
674
+
675
+ class Value190(Enum):
676
+ H = "H"
677
+ He = "He"
678
+ Li = "Li"
679
+ Be = "Be"
680
+ B = "B"
681
+ C = "C"
682
+ N = "N"
683
+ O = "O"
684
+ F = "F"
685
+ Ne = "Ne"
686
+ Na = "Na"
687
+ Mg = "Mg"
688
+ Al = "Al"
689
+ Si = "Si"
690
+ P = "P"
691
+ S = "S"
692
+ Cl = "Cl"
693
+ Ar = "Ar"
694
+ K = "K"
695
+ Ca = "Ca"
696
+ Sc = "Sc"
697
+ Ti = "Ti"
698
+ V = "V"
699
+ Cr = "Cr"
700
+ Mn = "Mn"
701
+ Fe = "Fe"
702
+ Co = "Co"
703
+ Ni = "Ni"
704
+ Cu = "Cu"
705
+ Zn = "Zn"
706
+ Ga = "Ga"
707
+ Ge = "Ge"
708
+ As = "As"
709
+ Se = "Se"
710
+ Br = "Br"
711
+ Kr = "Kr"
712
+ Rb = "Rb"
713
+ Sr = "Sr"
714
+ Y = "Y"
715
+ Zr = "Zr"
716
+ Nb = "Nb"
717
+ Mo = "Mo"
718
+ Tc = "Tc"
719
+ Ru = "Ru"
720
+ Rh = "Rh"
721
+ Pd = "Pd"
722
+ Ag = "Ag"
723
+ Cd = "Cd"
724
+ In = "In"
725
+ Sn = "Sn"
726
+ Sb = "Sb"
727
+ Te = "Te"
728
+ I = "I"
729
+ Xe = "Xe"
730
+ Cs = "Cs"
731
+ Ba = "Ba"
732
+ La = "La"
733
+ Ce = "Ce"
734
+ Pr = "Pr"
735
+ Nd = "Nd"
736
+ Pm = "Pm"
737
+ Sm = "Sm"
738
+ Eu = "Eu"
739
+ Gd = "Gd"
740
+ Tb = "Tb"
741
+ Dy = "Dy"
742
+ Ho = "Ho"
743
+ Er = "Er"
744
+ Tm = "Tm"
745
+ Yb = "Yb"
746
+ Lu = "Lu"
747
+ Hf = "Hf"
748
+ Ta = "Ta"
749
+ W = "W"
750
+ Re = "Re"
751
+ Os = "Os"
752
+ Ir = "Ir"
753
+ Pt = "Pt"
754
+ Au = "Au"
755
+ Hg = "Hg"
756
+ Tl = "Tl"
757
+ Pb = "Pb"
758
+ Bi = "Bi"
759
+ Po = "Po"
760
+ At = "At"
761
+ Rn = "Rn"
762
+ Fr = "Fr"
763
+ Ra = "Ra"
764
+ Ac = "Ac"
765
+ Th = "Th"
766
+ Pa = "Pa"
767
+ U = "U"
768
+ Np = "Np"
769
+ Pu = "Pu"
770
+ Am = "Am"
771
+ Cm = "Cm"
772
+ Bk = "Bk"
773
+ Cf = "Cf"
774
+ Es = "Es"
775
+ Fm = "Fm"
776
+ Md = "Md"
777
+ No = "No"
778
+ Lr = "Lr"
779
+ Rf = "Rf"
780
+ Db = "Db"
781
+ Sg = "Sg"
782
+ Bh = "Bh"
783
+ Hs = "Hs"
784
+ Mt = "Mt"
785
+ Ds = "Ds"
786
+ Rg = "Rg"
787
+ Cn = "Cn"
788
+ Nh = "Nh"
789
+ Fl = "Fl"
790
+ Mc = "Mc"
791
+ Lv = "Lv"
792
+ Ts = "Ts"
793
+ Og = "Og"
794
+
795
+
796
+ class Value191(Enum):
797
+ X = "X"
798
+ Vac = "Vac"
799
+
800
+
801
+ class AtomicElementSchema91(BaseModel):
802
+ value: Union[Value190, Value191]
803
+ """
804
+ All elements, including extra elements
805
+ """
806
+ id: int
807
+ """
808
+ integer id of this entry
809
+ """
810
+
811
+
812
+ class BasisSchema89(BaseModel):
813
+ elements: List[AtomicElementSchema91] = Field(..., title="atomic elements schema")
814
+ """
815
+ atomic elements schema
816
+ """
817
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
818
+ """
819
+ atomic coordinates schema
820
+ """
821
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
822
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
823
+ """
824
+ atomic labels schema
825
+ """
826
+
827
+
828
+ class LatticeVectorsSchema90(BaseModel):
829
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
830
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
831
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
832
+ alat: Optional[float] = 1
833
+ """
834
+ lattice parameter for fractional coordinates
835
+ """
836
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
837
+
838
+
839
+ class LatticeUnitsSchema90(BaseModel):
840
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
841
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
842
+
843
+
844
+ class LatticeSchema89(BaseModel):
845
+ a: float
846
+ """
847
+ length of the first lattice vector
848
+ """
849
+ b: float
850
+ """
851
+ length of the second lattice vector
852
+ """
853
+ c: float
854
+ """
855
+ length of the third lattice vector
856
+ """
857
+ alpha: float
858
+ """
859
+ angle between first and second lattice vector
860
+ """
861
+ beta: float
862
+ """
863
+ angle between second and third lattice vector
864
+ """
865
+ gamma: float
866
+ """
867
+ angle between first and third lattice vector
868
+ """
869
+ vectors: Optional[LatticeVectorsSchema90] = Field(None, title="lattice vectors schema")
870
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
871
+ units: Optional[LatticeUnitsSchema90] = Field(
872
+ default_factory=lambda: LatticeUnitsSchema90.model_validate({"length": "angstrom", "angle": "degree"}),
873
+ title="Lattice units schema",
874
+ )
875
+
876
+
877
+ class Name787(Enum):
878
+ volume = "volume"
879
+
880
+
881
+ class Units320(Enum):
882
+ angstrom_3 = "angstrom^3"
883
+
884
+
885
+ class VolumeSchema89(BaseModel):
886
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
887
+ units: Optional[Units320] = None
888
+ value: float
889
+
890
+
891
+ class Name788(Enum):
892
+ density = "density"
893
+
894
+
895
+ class Units321(Enum):
896
+ g_cm_3 = "g/cm^3"
897
+
898
+
899
+ class DensitySchema90(BaseModel):
900
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
901
+ units: Optional[Units321] = None
902
+ value: float
903
+
904
+
905
+ class Units322(Enum):
906
+ angstrom = "angstrom"
907
+
908
+
909
+ class ScalarSchema105(BaseModel):
910
+ units: Optional[Units322] = None
911
+ value: float
912
+
913
+
914
+ class Name789(Enum):
915
+ symmetry = "symmetry"
916
+
917
+
918
+ class SymmetrySchema90(BaseModel):
919
+ pointGroupSymbol: Optional[str] = None
920
+ """
921
+ point group symbol in Schoenflies notation
922
+ """
923
+ spaceGroupSymbol: Optional[str] = None
924
+ """
925
+ space group symbol in Hermann–Mauguin notation
926
+ """
927
+ tolerance: Optional[ScalarSchema105] = Field(None, title="scalar schema")
928
+ """
929
+ tolerance used for symmetry calculation
930
+ """
931
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
932
+
933
+
934
+ class Name790(Enum):
935
+ elemental_ratio = "elemental_ratio"
936
+
937
+
938
+ class ElementalRatio90(BaseModel):
939
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
940
+ value: confloat(ge=0.0, le=1.0)
941
+ element: Optional[str] = None
942
+ """
943
+ the element this ratio is for
944
+ """
945
+
946
+
947
+ class Name791(Enum):
948
+ p_norm = "p-norm"
949
+
950
+
951
+ class PNorm90(BaseModel):
952
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
953
+ degree: Optional[int] = None
954
+ """
955
+ degree of the dimensionality of the norm
956
+ """
957
+ value: float
958
+
959
+
960
+ class Name792(Enum):
961
+ inchi = "inchi"
962
+
963
+
964
+ class InChIRepresentationSchema90(BaseModel):
965
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
966
+ value: str
967
+
968
+
969
+ class Name793(Enum):
970
+ inchi_key = "inchi_key"
971
+
972
+
973
+ class InChIKeyRepresentationSchema90(BaseModel):
974
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
975
+ value: str
976
+
977
+
978
+ class DerivedPropertiesSchema90(
979
+ RootModel[
980
+ Union[
981
+ VolumeSchema89,
982
+ DensitySchema90,
983
+ SymmetrySchema90,
984
+ ElementalRatio90,
985
+ PNorm90,
986
+ InChIRepresentationSchema90,
987
+ InChIKeyRepresentationSchema90,
988
+ ]
989
+ ]
990
+ ):
991
+ root: Union[
992
+ VolumeSchema89,
993
+ DensitySchema90,
994
+ SymmetrySchema90,
995
+ ElementalRatio90,
996
+ PNorm90,
997
+ InChIRepresentationSchema90,
998
+ InChIKeyRepresentationSchema90,
999
+ ] = Field(..., discriminator="name")
1000
+
1001
+
1002
+ class Name794(Enum):
1003
+ default = "default"
1004
+ atomsTooClose = "atomsTooClose"
1005
+ atomsOverlap = "atomsOverlap"
1006
+
1007
+
1008
+ class MaterialConsistencyCheckSchema89(BaseModel):
1009
+ name: Name794
1010
+ """
1011
+ Name of the consistency check that is performed, which is listed in an enum.
1012
+ """
1013
+ key: str
1014
+ """
1015
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1016
+ """
1017
+ severity: Severity
1018
+ """
1019
+ Severity level of the problem, which is used in UI to differentiate.
1020
+ """
1021
+ message: str
1022
+ """
1023
+ Message generated by the consistency check describing the problem.
1024
+ """
1025
+
1026
+
1027
+ class CrystalSchema86(BaseModel):
1028
+ formula: Optional[str] = None
1029
+ """
1030
+ reduced chemical formula
1031
+ """
1032
+ unitCellFormula: Optional[str] = None
1033
+ """
1034
+ chemical formula based on the number of atoms of each element in the supercell
1035
+ """
1036
+ basis: BasisSchema89 = Field(..., title="basis schema")
1037
+ lattice: LatticeSchema89 = Field(..., title="lattice schema")
1038
+ derivedProperties: Optional[List[DerivedPropertiesSchema90]] = Field(None, title="derived properties schema")
1039
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1040
+ """
1041
+ information about a database source
1042
+ """
1043
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1044
+ """
1045
+ file source with the information inside
1046
+ """
1047
+ scaledHash: Optional[str] = None
1048
+ """
1049
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1050
+ """
1051
+ icsdId: Optional[int] = None
1052
+ """
1053
+ Corresponding ICSD id of the material
1054
+ """
1055
+ isNonPeriodic: Optional[bool] = None
1056
+ """
1057
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1058
+ """
1059
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema89]] = None
1060
+ field_id: Optional[str] = Field(None, alias="_id")
1061
+ """
1062
+ entity identity
1063
+ """
1064
+ slug: Optional[str] = None
1065
+ """
1066
+ entity slug
1067
+ """
1068
+ systemName: Optional[str] = None
1069
+ schemaVersion: Optional[str] = "2022.8.16"
1070
+ """
1071
+ entity's schema version. Used to distinct between different schemas.
1072
+ """
1073
+ name: Optional[str] = None
1074
+ """
1075
+ entity name
1076
+ """
1077
+ isDefault: Optional[bool] = False
1078
+ """
1079
+ Identifies that entity is defaultable
1080
+ """
1081
+ metadata: Optional[Dict[str, Any]] = None
1082
+
1083
+
1084
+ class AtomicLayersUniqueRepeatedSchema(BaseModel):
1085
+ termination_top: TerminationSchema = Field(..., title="Termination Schema")
1086
+ """
1087
+ Defines a specific termination of a slab
1088
+ """
1089
+ number_of_repetitions: conint(ge=1)
1090
+ """
1091
+ Number of repetitions of the unique atomic layers
1092
+ """
1093
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1094
+ """
1095
+ Miller indices [h, k, l] defining crystallographic planes
1096
+ """
1097
+ crystal: CrystalSchema86 = Field(..., title="Crystal Schema")
1098
+ """
1099
+ A crystal structure, referencing the base material schema
1100
+ """
1101
+ use_conventional_cell: Optional[bool] = True
1102
+ """
1103
+ Use the conventional cell for the crystal structure
1104
+ """
1105
+
1106
+
1107
+ class AxisEnum(Enum):
1108
+ x = "x"
1109
+ y = "y"
1110
+ z = "z"
1111
+
1112
+
1113
+ class Value192(Enum):
1114
+ H = "H"
1115
+ He = "He"
1116
+ Li = "Li"
1117
+ Be = "Be"
1118
+ B = "B"
1119
+ C = "C"
1120
+ N = "N"
1121
+ O = "O"
1122
+ F = "F"
1123
+ Ne = "Ne"
1124
+ Na = "Na"
1125
+ Mg = "Mg"
1126
+ Al = "Al"
1127
+ Si = "Si"
1128
+ P = "P"
1129
+ S = "S"
1130
+ Cl = "Cl"
1131
+ Ar = "Ar"
1132
+ K = "K"
1133
+ Ca = "Ca"
1134
+ Sc = "Sc"
1135
+ Ti = "Ti"
1136
+ V = "V"
1137
+ Cr = "Cr"
1138
+ Mn = "Mn"
1139
+ Fe = "Fe"
1140
+ Co = "Co"
1141
+ Ni = "Ni"
1142
+ Cu = "Cu"
1143
+ Zn = "Zn"
1144
+ Ga = "Ga"
1145
+ Ge = "Ge"
1146
+ As = "As"
1147
+ Se = "Se"
1148
+ Br = "Br"
1149
+ Kr = "Kr"
1150
+ Rb = "Rb"
1151
+ Sr = "Sr"
1152
+ Y = "Y"
1153
+ Zr = "Zr"
1154
+ Nb = "Nb"
1155
+ Mo = "Mo"
1156
+ Tc = "Tc"
1157
+ Ru = "Ru"
1158
+ Rh = "Rh"
1159
+ Pd = "Pd"
1160
+ Ag = "Ag"
1161
+ Cd = "Cd"
1162
+ In = "In"
1163
+ Sn = "Sn"
1164
+ Sb = "Sb"
1165
+ Te = "Te"
1166
+ I = "I"
1167
+ Xe = "Xe"
1168
+ Cs = "Cs"
1169
+ Ba = "Ba"
1170
+ La = "La"
1171
+ Ce = "Ce"
1172
+ Pr = "Pr"
1173
+ Nd = "Nd"
1174
+ Pm = "Pm"
1175
+ Sm = "Sm"
1176
+ Eu = "Eu"
1177
+ Gd = "Gd"
1178
+ Tb = "Tb"
1179
+ Dy = "Dy"
1180
+ Ho = "Ho"
1181
+ Er = "Er"
1182
+ Tm = "Tm"
1183
+ Yb = "Yb"
1184
+ Lu = "Lu"
1185
+ Hf = "Hf"
1186
+ Ta = "Ta"
1187
+ W = "W"
1188
+ Re = "Re"
1189
+ Os = "Os"
1190
+ Ir = "Ir"
1191
+ Pt = "Pt"
1192
+ Au = "Au"
1193
+ Hg = "Hg"
1194
+ Tl = "Tl"
1195
+ Pb = "Pb"
1196
+ Bi = "Bi"
1197
+ Po = "Po"
1198
+ At = "At"
1199
+ Rn = "Rn"
1200
+ Fr = "Fr"
1201
+ Ra = "Ra"
1202
+ Ac = "Ac"
1203
+ Th = "Th"
1204
+ Pa = "Pa"
1205
+ U = "U"
1206
+ Np = "Np"
1207
+ Pu = "Pu"
1208
+ Am = "Am"
1209
+ Cm = "Cm"
1210
+ Bk = "Bk"
1211
+ Cf = "Cf"
1212
+ Es = "Es"
1213
+ Fm = "Fm"
1214
+ Md = "Md"
1215
+ No = "No"
1216
+ Lr = "Lr"
1217
+ Rf = "Rf"
1218
+ Db = "Db"
1219
+ Sg = "Sg"
1220
+ Bh = "Bh"
1221
+ Hs = "Hs"
1222
+ Mt = "Mt"
1223
+ Ds = "Ds"
1224
+ Rg = "Rg"
1225
+ Cn = "Cn"
1226
+ Nh = "Nh"
1227
+ Fl = "Fl"
1228
+ Mc = "Mc"
1229
+ Lv = "Lv"
1230
+ Ts = "Ts"
1231
+ Og = "Og"
1232
+
1233
+
1234
+ class Value193(Enum):
1235
+ X = "X"
1236
+ Vac = "Vac"
1237
+
1238
+
1239
+ class AtomicElementSchema92(BaseModel):
1240
+ value: Union[Value192, Value193]
1241
+ """
1242
+ All elements, including extra elements
1243
+ """
1244
+ id: int
1245
+ """
1246
+ integer id of this entry
1247
+ """
1248
+
1249
+
1250
+ class BasisSchema90(BaseModel):
1251
+ elements: List[AtomicElementSchema92] = Field(..., title="atomic elements schema")
1252
+ """
1253
+ atomic elements schema
1254
+ """
1255
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1256
+ """
1257
+ atomic coordinates schema
1258
+ """
1259
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1260
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1261
+ """
1262
+ atomic labels schema
1263
+ """
1264
+
1265
+
1266
+ class LatticeVectorsSchema91(BaseModel):
1267
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1268
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1269
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1270
+ alat: Optional[float] = 1
1271
+ """
1272
+ lattice parameter for fractional coordinates
1273
+ """
1274
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1275
+
1276
+
1277
+ class LatticeUnitsSchema91(BaseModel):
1278
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1279
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1280
+
1281
+
1282
+ class LatticeSchema90(BaseModel):
1283
+ a: float
1284
+ """
1285
+ length of the first lattice vector
1286
+ """
1287
+ b: float
1288
+ """
1289
+ length of the second lattice vector
1290
+ """
1291
+ c: float
1292
+ """
1293
+ length of the third lattice vector
1294
+ """
1295
+ alpha: float
1296
+ """
1297
+ angle between first and second lattice vector
1298
+ """
1299
+ beta: float
1300
+ """
1301
+ angle between second and third lattice vector
1302
+ """
1303
+ gamma: float
1304
+ """
1305
+ angle between first and third lattice vector
1306
+ """
1307
+ vectors: Optional[LatticeVectorsSchema91] = Field(None, title="lattice vectors schema")
1308
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1309
+ units: Optional[LatticeUnitsSchema91] = Field(
1310
+ default_factory=lambda: LatticeUnitsSchema91.model_validate({"length": "angstrom", "angle": "degree"}),
1311
+ title="Lattice units schema",
1312
+ )
1313
+
1314
+
1315
+ class Name795(Enum):
1316
+ volume = "volume"
1317
+
1318
+
1319
+ class Units323(Enum):
1320
+ angstrom_3 = "angstrom^3"
1321
+
1322
+
1323
+ class VolumeSchema90(BaseModel):
1324
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1325
+ units: Optional[Units323] = None
1326
+ value: float
1327
+
1328
+
1329
+ class Name796(Enum):
1330
+ density = "density"
1331
+
1332
+
1333
+ class Units324(Enum):
1334
+ g_cm_3 = "g/cm^3"
1335
+
1336
+
1337
+ class DensitySchema91(BaseModel):
1338
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1339
+ units: Optional[Units324] = None
1340
+ value: float
1341
+
1342
+
1343
+ class Units325(Enum):
1344
+ angstrom = "angstrom"
1345
+
1346
+
1347
+ class ScalarSchema106(BaseModel):
1348
+ units: Optional[Units325] = None
1349
+ value: float
1350
+
1351
+
1352
+ class Name797(Enum):
1353
+ symmetry = "symmetry"
1354
+
1355
+
1356
+ class SymmetrySchema91(BaseModel):
1357
+ pointGroupSymbol: Optional[str] = None
1358
+ """
1359
+ point group symbol in Schoenflies notation
1360
+ """
1361
+ spaceGroupSymbol: Optional[str] = None
1362
+ """
1363
+ space group symbol in Hermann–Mauguin notation
1364
+ """
1365
+ tolerance: Optional[ScalarSchema106] = Field(None, title="scalar schema")
1366
+ """
1367
+ tolerance used for symmetry calculation
1368
+ """
1369
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1370
+
1371
+
1372
+ class Name798(Enum):
1373
+ elemental_ratio = "elemental_ratio"
1374
+
1375
+
1376
+ class ElementalRatio91(BaseModel):
1377
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1378
+ value: confloat(ge=0.0, le=1.0)
1379
+ element: Optional[str] = None
1380
+ """
1381
+ the element this ratio is for
1382
+ """
1383
+
1384
+
1385
+ class Name799(Enum):
1386
+ p_norm = "p-norm"
1387
+
1388
+
1389
+ class PNorm91(BaseModel):
1390
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1391
+ degree: Optional[int] = None
1392
+ """
1393
+ degree of the dimensionality of the norm
1394
+ """
1395
+ value: float
1396
+
1397
+
1398
+ class Name800(Enum):
1399
+ inchi = "inchi"
1400
+
1401
+
1402
+ class InChIRepresentationSchema91(BaseModel):
1403
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1404
+ value: str
1405
+
1406
+
1407
+ class Name801(Enum):
1408
+ inchi_key = "inchi_key"
1409
+
1410
+
1411
+ class InChIKeyRepresentationSchema91(BaseModel):
1412
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1413
+ value: str
1414
+
1415
+
1416
+ class DerivedPropertiesSchema91(
1417
+ RootModel[
1418
+ Union[
1419
+ VolumeSchema90,
1420
+ DensitySchema91,
1421
+ SymmetrySchema91,
1422
+ ElementalRatio91,
1423
+ PNorm91,
1424
+ InChIRepresentationSchema91,
1425
+ InChIKeyRepresentationSchema91,
1426
+ ]
1427
+ ]
1428
+ ):
1429
+ root: Union[
1430
+ VolumeSchema90,
1431
+ DensitySchema91,
1432
+ SymmetrySchema91,
1433
+ ElementalRatio91,
1434
+ PNorm91,
1435
+ InChIRepresentationSchema91,
1436
+ InChIKeyRepresentationSchema91,
1437
+ ] = Field(..., discriminator="name")
1438
+
1439
+
1440
+ class Name802(Enum):
1441
+ default = "default"
1442
+ atomsTooClose = "atomsTooClose"
1443
+ atomsOverlap = "atomsOverlap"
1444
+
1445
+
1446
+ class MaterialConsistencyCheckSchema90(BaseModel):
1447
+ name: Name802
1448
+ """
1449
+ Name of the consistency check that is performed, which is listed in an enum.
1450
+ """
1451
+ key: str
1452
+ """
1453
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1454
+ """
1455
+ severity: Severity
1456
+ """
1457
+ Severity level of the problem, which is used in UI to differentiate.
1458
+ """
1459
+ message: str
1460
+ """
1461
+ Message generated by the consistency check describing the problem.
1462
+ """
1463
+
1464
+
1465
+ class CrystalSchema87(BaseModel):
1466
+ formula: Optional[str] = None
1467
+ """
1468
+ reduced chemical formula
1469
+ """
1470
+ unitCellFormula: Optional[str] = None
1471
+ """
1472
+ chemical formula based on the number of atoms of each element in the supercell
1473
+ """
1474
+ basis: BasisSchema90 = Field(..., title="basis schema")
1475
+ lattice: LatticeSchema90 = Field(..., title="lattice schema")
1476
+ derivedProperties: Optional[List[DerivedPropertiesSchema91]] = Field(None, title="derived properties schema")
1477
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1478
+ """
1479
+ information about a database source
1480
+ """
1481
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1482
+ """
1483
+ file source with the information inside
1484
+ """
1485
+ scaledHash: Optional[str] = None
1486
+ """
1487
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1488
+ """
1489
+ icsdId: Optional[int] = None
1490
+ """
1491
+ Corresponding ICSD id of the material
1492
+ """
1493
+ isNonPeriodic: Optional[bool] = None
1494
+ """
1495
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1496
+ """
1497
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema90]] = None
1498
+ field_id: Optional[str] = Field(None, alias="_id")
1499
+ """
1500
+ entity identity
1501
+ """
1502
+ slug: Optional[str] = None
1503
+ """
1504
+ entity slug
1505
+ """
1506
+ systemName: Optional[str] = None
1507
+ schemaVersion: Optional[str] = "2022.8.16"
1508
+ """
1509
+ entity's schema version. Used to distinct between different schemas.
1510
+ """
1511
+ name: Optional[str] = None
1512
+ """
1513
+ entity name
1514
+ """
1515
+ isDefault: Optional[bool] = False
1516
+ """
1517
+ Identifies that entity is defaultable
1518
+ """
1519
+ metadata: Optional[Dict[str, Any]] = None
1520
+
1521
+
1522
+ class VacuumConfigurationSchema(BaseModel):
1523
+ direction: AxisEnum = Field(..., title="Axis Enum")
1524
+ """
1525
+ Enum for axis types
1526
+ """
1527
+ size: Optional[confloat(ge=0.0)] = 10
1528
+ """
1529
+ Size of the vacuum slab in angstroms
1530
+ """
1531
+ crystal: CrystalSchema87 = Field(..., title="Crystal Schema")
1532
+ """
1533
+ A crystal structure, referencing the base material schema
1534
+ """
1535
+
1536
+
1537
+ class SlabConfigurationSchema(BaseModel):
1538
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema, VacuumConfigurationSchema]] = Field(
1539
+ ..., max_length=2, min_length=2
1540
+ )
1541
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
1542
+ """
1543
+ Enum for axis types
1544
+ """
1545
+
1546
+
1547
+ class MergeMethodsEnum(Enum):
1548
+ ADD = "ADD"
1549
+ REPLACE = "REPLACE"
1550
+ YIELD = "YIELD"
1551
+
1552
+
1553
+ class CoordinateShapeEnum(Enum):
1554
+ cylinder = "cylinder"
1555
+ sphere = "sphere"
1556
+ box = "box"
1557
+ triangular_prism = "triangular_prism"
1558
+ plane = "plane"
1559
+
1560
+
1561
+ class BoxCoordinateConditionSchema(BaseModel):
1562
+ shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
1563
+ min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
1564
+ max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
1565
+
1566
+
1567
+ class VoidSiteSchema(BaseModel):
1568
+ merge_components: List[Union[CrystalSiteSchema, SlabConfigurationSchema]] = Field(..., max_length=3, min_length=3)
1569
+ merge_method: Literal["REPLACE"] = Field(..., title="Merge Methods Enum")
1570
+ """
1571
+ Method to merge components: subtract atoms that don't meet the coordinate condition
1572
+ """
1573
+ coordinate_condition: Optional[BoxCoordinateConditionSchema] = Field(None, title="Coordinate Conditions Schema")
1574
+ """
1575
+ Combined schema for all coordinate condition types
1576
+ """