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,2892 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: materials_category/defective_structures/two_dimensional/terrace/configuration.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 ChemicalElements(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 TerminationSchema(BaseModel):
135
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
136
+ ..., title="Chemical Elements"
137
+ )
138
+ """
139
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
140
+ """
141
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
142
+ """
143
+ Space group symmetry designation for the termination
144
+ """
145
+
146
+
147
+ class Value(Enum):
148
+ H = "H"
149
+ He = "He"
150
+ Li = "Li"
151
+ Be = "Be"
152
+ B = "B"
153
+ C = "C"
154
+ N = "N"
155
+ O = "O"
156
+ F = "F"
157
+ Ne = "Ne"
158
+ Na = "Na"
159
+ Mg = "Mg"
160
+ Al = "Al"
161
+ Si = "Si"
162
+ P = "P"
163
+ S = "S"
164
+ Cl = "Cl"
165
+ Ar = "Ar"
166
+ K = "K"
167
+ Ca = "Ca"
168
+ Sc = "Sc"
169
+ Ti = "Ti"
170
+ V = "V"
171
+ Cr = "Cr"
172
+ Mn = "Mn"
173
+ Fe = "Fe"
174
+ Co = "Co"
175
+ Ni = "Ni"
176
+ Cu = "Cu"
177
+ Zn = "Zn"
178
+ Ga = "Ga"
179
+ Ge = "Ge"
180
+ As = "As"
181
+ Se = "Se"
182
+ Br = "Br"
183
+ Kr = "Kr"
184
+ Rb = "Rb"
185
+ Sr = "Sr"
186
+ Y = "Y"
187
+ Zr = "Zr"
188
+ Nb = "Nb"
189
+ Mo = "Mo"
190
+ Tc = "Tc"
191
+ Ru = "Ru"
192
+ Rh = "Rh"
193
+ Pd = "Pd"
194
+ Ag = "Ag"
195
+ Cd = "Cd"
196
+ In = "In"
197
+ Sn = "Sn"
198
+ Sb = "Sb"
199
+ Te = "Te"
200
+ I = "I"
201
+ Xe = "Xe"
202
+ Cs = "Cs"
203
+ Ba = "Ba"
204
+ La = "La"
205
+ Ce = "Ce"
206
+ Pr = "Pr"
207
+ Nd = "Nd"
208
+ Pm = "Pm"
209
+ Sm = "Sm"
210
+ Eu = "Eu"
211
+ Gd = "Gd"
212
+ Tb = "Tb"
213
+ Dy = "Dy"
214
+ Ho = "Ho"
215
+ Er = "Er"
216
+ Tm = "Tm"
217
+ Yb = "Yb"
218
+ Lu = "Lu"
219
+ Hf = "Hf"
220
+ Ta = "Ta"
221
+ W = "W"
222
+ Re = "Re"
223
+ Os = "Os"
224
+ Ir = "Ir"
225
+ Pt = "Pt"
226
+ Au = "Au"
227
+ Hg = "Hg"
228
+ Tl = "Tl"
229
+ Pb = "Pb"
230
+ Bi = "Bi"
231
+ Po = "Po"
232
+ At = "At"
233
+ Rn = "Rn"
234
+ Fr = "Fr"
235
+ Ra = "Ra"
236
+ Ac = "Ac"
237
+ Th = "Th"
238
+ Pa = "Pa"
239
+ U = "U"
240
+ Np = "Np"
241
+ Pu = "Pu"
242
+ Am = "Am"
243
+ Cm = "Cm"
244
+ Bk = "Bk"
245
+ Cf = "Cf"
246
+ Es = "Es"
247
+ Fm = "Fm"
248
+ Md = "Md"
249
+ No = "No"
250
+ Lr = "Lr"
251
+ Rf = "Rf"
252
+ Db = "Db"
253
+ Sg = "Sg"
254
+ Bh = "Bh"
255
+ Hs = "Hs"
256
+ Mt = "Mt"
257
+ Ds = "Ds"
258
+ Rg = "Rg"
259
+ Cn = "Cn"
260
+ Nh = "Nh"
261
+ Fl = "Fl"
262
+ Mc = "Mc"
263
+ Lv = "Lv"
264
+ Ts = "Ts"
265
+ Og = "Og"
266
+
267
+
268
+ class Value43(Enum):
269
+ X = "X"
270
+ Vac = "Vac"
271
+
272
+
273
+ class AtomicElementSchema(BaseModel):
274
+ value: Union[Value, Value43]
275
+ """
276
+ All elements, including extra elements
277
+ """
278
+ id: int
279
+ """
280
+ integer id of this entry
281
+ """
282
+
283
+
284
+ class AtomicCoordinateSchema(BaseModel):
285
+ value: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
286
+ """
287
+ value of this entry
288
+ """
289
+ id: int
290
+ """
291
+ integer id of this entry
292
+ """
293
+
294
+
295
+ class BasisUnitsEnum(Enum):
296
+ crystal = "crystal"
297
+ cartesian = "cartesian"
298
+
299
+
300
+ class AtomicLabelSchema(BaseModel):
301
+ value: Union[Union[int, str, float], conint(ge=1, le=9)]
302
+ """
303
+ value of this entry
304
+ """
305
+ id: int
306
+ """
307
+ integer id of this entry
308
+ """
309
+
310
+
311
+ class BasisSchema(BaseModel):
312
+ elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
313
+ """
314
+ atomic elements schema
315
+ """
316
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
317
+ """
318
+ atomic coordinates schema
319
+ """
320
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
321
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
322
+ """
323
+ atomic labels schema
324
+ """
325
+
326
+
327
+ class LatticeVectorsUnitsEnum(Enum):
328
+ angstrom = "angstrom"
329
+ bohr = "bohr"
330
+
331
+
332
+ class LatticeVectorsSchema(BaseModel):
333
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
334
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
335
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
336
+ alat: Optional[float] = 1
337
+ """
338
+ lattice parameter for fractional coordinates
339
+ """
340
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
341
+
342
+
343
+ class LatticeTypeEnum(Enum):
344
+ CUB = "CUB"
345
+ BCC = "BCC"
346
+ FCC = "FCC"
347
+ TET = "TET"
348
+ MCL = "MCL"
349
+ ORC = "ORC"
350
+ ORCC = "ORCC"
351
+ ORCF = "ORCF"
352
+ ORCI = "ORCI"
353
+ HEX = "HEX"
354
+ BCT = "BCT"
355
+ TRI = "TRI"
356
+ MCLC = "MCLC"
357
+ RHL = "RHL"
358
+
359
+
360
+ class LatticeUnitsLengthEnum(Enum):
361
+ angstrom = "angstrom"
362
+ bohr = "bohr"
363
+
364
+
365
+ class LatticeUnitsAngleEnum(Enum):
366
+ degree = "degree"
367
+ radian = "radian"
368
+
369
+
370
+ class LatticeUnitsSchema(BaseModel):
371
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
372
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
373
+
374
+
375
+ class LatticeSchema(BaseModel):
376
+ a: float
377
+ """
378
+ length of the first lattice vector
379
+ """
380
+ b: float
381
+ """
382
+ length of the second lattice vector
383
+ """
384
+ c: float
385
+ """
386
+ length of the third lattice vector
387
+ """
388
+ alpha: float
389
+ """
390
+ angle between first and second lattice vector
391
+ """
392
+ beta: float
393
+ """
394
+ angle between second and third lattice vector
395
+ """
396
+ gamma: float
397
+ """
398
+ angle between first and third lattice vector
399
+ """
400
+ vectors: Optional[LatticeVectorsSchema] = Field(None, title="lattice vectors schema")
401
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
402
+ units: Optional[LatticeUnitsSchema] = Field(
403
+ default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
404
+ title="Lattice units schema",
405
+ )
406
+
407
+
408
+ class Name(Enum):
409
+ volume = "volume"
410
+
411
+
412
+ class Units(Enum):
413
+ angstrom_3 = "angstrom^3"
414
+
415
+
416
+ class VolumeSchema(BaseModel):
417
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
418
+ units: Optional[Units] = None
419
+ value: float
420
+
421
+
422
+ class Name144(Enum):
423
+ density = "density"
424
+
425
+
426
+ class Units61(Enum):
427
+ g_cm_3 = "g/cm^3"
428
+
429
+
430
+ class DensitySchema(BaseModel):
431
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
432
+ units: Optional[Units61] = None
433
+ value: float
434
+
435
+
436
+ class Units62(Enum):
437
+ angstrom = "angstrom"
438
+
439
+
440
+ class ScalarSchema(BaseModel):
441
+ units: Optional[Units62] = None
442
+ value: float
443
+
444
+
445
+ class Name145(Enum):
446
+ symmetry = "symmetry"
447
+
448
+
449
+ class SymmetrySchema(BaseModel):
450
+ pointGroupSymbol: Optional[str] = None
451
+ """
452
+ point group symbol in Schoenflies notation
453
+ """
454
+ spaceGroupSymbol: Optional[str] = None
455
+ """
456
+ space group symbol in Hermann–Mauguin notation
457
+ """
458
+ tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema")
459
+ """
460
+ tolerance used for symmetry calculation
461
+ """
462
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
463
+
464
+
465
+ class Name146(Enum):
466
+ elemental_ratio = "elemental_ratio"
467
+
468
+
469
+ class ElementalRatio(BaseModel):
470
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
471
+ value: confloat(ge=0.0, le=1.0)
472
+ element: Optional[str] = None
473
+ """
474
+ the element this ratio is for
475
+ """
476
+
477
+
478
+ class Name147(Enum):
479
+ p_norm = "p-norm"
480
+
481
+
482
+ class PNorm(BaseModel):
483
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
484
+ degree: Optional[int] = None
485
+ """
486
+ degree of the dimensionality of the norm
487
+ """
488
+ value: float
489
+
490
+
491
+ class Name148(Enum):
492
+ inchi = "inchi"
493
+
494
+
495
+ class InChIRepresentationSchema(BaseModel):
496
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
497
+ value: str
498
+
499
+
500
+ class Name149(Enum):
501
+ inchi_key = "inchi_key"
502
+
503
+
504
+ class InChIKeyRepresentationSchema(BaseModel):
505
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
506
+ value: str
507
+
508
+
509
+ class DerivedPropertiesSchema(
510
+ RootModel[
511
+ Union[
512
+ VolumeSchema,
513
+ DensitySchema,
514
+ SymmetrySchema,
515
+ ElementalRatio,
516
+ PNorm,
517
+ InChIRepresentationSchema,
518
+ InChIKeyRepresentationSchema,
519
+ ]
520
+ ]
521
+ ):
522
+ root: Union[
523
+ VolumeSchema,
524
+ DensitySchema,
525
+ SymmetrySchema,
526
+ ElementalRatio,
527
+ PNorm,
528
+ InChIRepresentationSchema,
529
+ InChIKeyRepresentationSchema,
530
+ ] = Field(..., discriminator="name")
531
+
532
+
533
+ class DatabaseSourceSchema(BaseModel):
534
+ id: Union[str, float]
535
+ """
536
+ 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
537
+ """
538
+ source: str
539
+ """
540
+ Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.
541
+ """
542
+ origin: bool
543
+ """
544
+ 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).
545
+ """
546
+ data: Optional[Dict[str, Any]] = None
547
+ """
548
+ Original response from external source.
549
+ """
550
+ doi: Optional[str] = None
551
+ """
552
+ Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506
553
+ """
554
+ url: Optional[str] = None
555
+ """
556
+ 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
557
+ """
558
+
559
+
560
+ class FileSourceSchema(BaseModel):
561
+ extension: Optional[str] = None
562
+ """
563
+ file extension
564
+ """
565
+ filename: str
566
+ """
567
+ file name without extension
568
+ """
569
+ text: str
570
+ """
571
+ file content as raw text
572
+ """
573
+ hash: str
574
+ """
575
+ MD5 hash based on file content
576
+ """
577
+
578
+
579
+ class Name150(Enum):
580
+ default = "default"
581
+ atomsTooClose = "atomsTooClose"
582
+ atomsOverlap = "atomsOverlap"
583
+
584
+
585
+ class Severity(Enum):
586
+ info = "info"
587
+ warning = "warning"
588
+ error = "error"
589
+
590
+
591
+ class MaterialConsistencyCheckSchema(BaseModel):
592
+ name: Name150
593
+ """
594
+ Name of the consistency check that is performed, which is listed in an enum.
595
+ """
596
+ key: str
597
+ """
598
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
599
+ """
600
+ severity: Severity
601
+ """
602
+ Severity level of the problem, which is used in UI to differentiate.
603
+ """
604
+ message: str
605
+ """
606
+ Message generated by the consistency check describing the problem.
607
+ """
608
+
609
+
610
+ class CrystalSchema(BaseModel):
611
+ formula: Optional[str] = None
612
+ """
613
+ reduced chemical formula
614
+ """
615
+ unitCellFormula: Optional[str] = None
616
+ """
617
+ chemical formula based on the number of atoms of each element in the supercell
618
+ """
619
+ basis: BasisSchema = Field(..., title="basis schema")
620
+ lattice: LatticeSchema = Field(..., title="lattice schema")
621
+ derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema")
622
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
623
+ """
624
+ information about a database source
625
+ """
626
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
627
+ """
628
+ file source with the information inside
629
+ """
630
+ scaledHash: Optional[str] = None
631
+ """
632
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
633
+ """
634
+ icsdId: Optional[int] = None
635
+ """
636
+ Corresponding ICSD id of the material
637
+ """
638
+ isNonPeriodic: Optional[bool] = None
639
+ """
640
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
641
+ """
642
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None
643
+ field_id: Optional[str] = Field(None, alias="_id")
644
+ """
645
+ entity identity
646
+ """
647
+ slug: Optional[str] = None
648
+ """
649
+ entity slug
650
+ """
651
+ systemName: Optional[str] = None
652
+ schemaVersion: Optional[str] = "2022.8.16"
653
+ """
654
+ entity's schema version. Used to distinct between different schemas.
655
+ """
656
+ name: Optional[str] = None
657
+ """
658
+ entity name
659
+ """
660
+ isDefault: Optional[bool] = False
661
+ """
662
+ Identifies that entity is defaultable
663
+ """
664
+ metadata: Optional[Dict[str, Any]] = None
665
+
666
+
667
+ class AtomicLayersUniqueRepeatedSchema(BaseModel):
668
+ termination_top: TerminationSchema = Field(..., title="Termination Schema")
669
+ """
670
+ Defines a specific termination of a slab
671
+ """
672
+ number_of_repetitions: conint(ge=1)
673
+ """
674
+ Number of repetitions of the unique atomic layers
675
+ """
676
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
677
+ """
678
+ Miller indices [h, k, l] defining crystallographic planes
679
+ """
680
+ crystal: CrystalSchema = Field(..., title="Crystal Schema")
681
+ """
682
+ A crystal structure, referencing the base material schema
683
+ """
684
+ use_conventional_cell: Optional[bool] = True
685
+ """
686
+ Use the conventional cell for the crystal structure
687
+ """
688
+
689
+
690
+ class AxisEnum(Enum):
691
+ x = "x"
692
+ y = "y"
693
+ z = "z"
694
+
695
+
696
+ class Value44(Enum):
697
+ H = "H"
698
+ He = "He"
699
+ Li = "Li"
700
+ Be = "Be"
701
+ B = "B"
702
+ C = "C"
703
+ N = "N"
704
+ O = "O"
705
+ F = "F"
706
+ Ne = "Ne"
707
+ Na = "Na"
708
+ Mg = "Mg"
709
+ Al = "Al"
710
+ Si = "Si"
711
+ P = "P"
712
+ S = "S"
713
+ Cl = "Cl"
714
+ Ar = "Ar"
715
+ K = "K"
716
+ Ca = "Ca"
717
+ Sc = "Sc"
718
+ Ti = "Ti"
719
+ V = "V"
720
+ Cr = "Cr"
721
+ Mn = "Mn"
722
+ Fe = "Fe"
723
+ Co = "Co"
724
+ Ni = "Ni"
725
+ Cu = "Cu"
726
+ Zn = "Zn"
727
+ Ga = "Ga"
728
+ Ge = "Ge"
729
+ As = "As"
730
+ Se = "Se"
731
+ Br = "Br"
732
+ Kr = "Kr"
733
+ Rb = "Rb"
734
+ Sr = "Sr"
735
+ Y = "Y"
736
+ Zr = "Zr"
737
+ Nb = "Nb"
738
+ Mo = "Mo"
739
+ Tc = "Tc"
740
+ Ru = "Ru"
741
+ Rh = "Rh"
742
+ Pd = "Pd"
743
+ Ag = "Ag"
744
+ Cd = "Cd"
745
+ In = "In"
746
+ Sn = "Sn"
747
+ Sb = "Sb"
748
+ Te = "Te"
749
+ I = "I"
750
+ Xe = "Xe"
751
+ Cs = "Cs"
752
+ Ba = "Ba"
753
+ La = "La"
754
+ Ce = "Ce"
755
+ Pr = "Pr"
756
+ Nd = "Nd"
757
+ Pm = "Pm"
758
+ Sm = "Sm"
759
+ Eu = "Eu"
760
+ Gd = "Gd"
761
+ Tb = "Tb"
762
+ Dy = "Dy"
763
+ Ho = "Ho"
764
+ Er = "Er"
765
+ Tm = "Tm"
766
+ Yb = "Yb"
767
+ Lu = "Lu"
768
+ Hf = "Hf"
769
+ Ta = "Ta"
770
+ W = "W"
771
+ Re = "Re"
772
+ Os = "Os"
773
+ Ir = "Ir"
774
+ Pt = "Pt"
775
+ Au = "Au"
776
+ Hg = "Hg"
777
+ Tl = "Tl"
778
+ Pb = "Pb"
779
+ Bi = "Bi"
780
+ Po = "Po"
781
+ At = "At"
782
+ Rn = "Rn"
783
+ Fr = "Fr"
784
+ Ra = "Ra"
785
+ Ac = "Ac"
786
+ Th = "Th"
787
+ Pa = "Pa"
788
+ U = "U"
789
+ Np = "Np"
790
+ Pu = "Pu"
791
+ Am = "Am"
792
+ Cm = "Cm"
793
+ Bk = "Bk"
794
+ Cf = "Cf"
795
+ Es = "Es"
796
+ Fm = "Fm"
797
+ Md = "Md"
798
+ No = "No"
799
+ Lr = "Lr"
800
+ Rf = "Rf"
801
+ Db = "Db"
802
+ Sg = "Sg"
803
+ Bh = "Bh"
804
+ Hs = "Hs"
805
+ Mt = "Mt"
806
+ Ds = "Ds"
807
+ Rg = "Rg"
808
+ Cn = "Cn"
809
+ Nh = "Nh"
810
+ Fl = "Fl"
811
+ Mc = "Mc"
812
+ Lv = "Lv"
813
+ Ts = "Ts"
814
+ Og = "Og"
815
+
816
+
817
+ class Value45(Enum):
818
+ X = "X"
819
+ Vac = "Vac"
820
+
821
+
822
+ class AtomicElementSchema21(BaseModel):
823
+ value: Union[Value44, Value45]
824
+ """
825
+ All elements, including extra elements
826
+ """
827
+ id: int
828
+ """
829
+ integer id of this entry
830
+ """
831
+
832
+
833
+ class BasisSchema19(BaseModel):
834
+ elements: List[AtomicElementSchema21] = Field(..., title="atomic elements schema")
835
+ """
836
+ atomic elements schema
837
+ """
838
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
839
+ """
840
+ atomic coordinates schema
841
+ """
842
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
843
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
844
+ """
845
+ atomic labels schema
846
+ """
847
+
848
+
849
+ class LatticeVectorsSchema18(BaseModel):
850
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
851
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
852
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
853
+ alat: Optional[float] = 1
854
+ """
855
+ lattice parameter for fractional coordinates
856
+ """
857
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
858
+
859
+
860
+ class LatticeUnitsSchema18(BaseModel):
861
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
862
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
863
+
864
+
865
+ class LatticeSchema18(BaseModel):
866
+ a: float
867
+ """
868
+ length of the first lattice vector
869
+ """
870
+ b: float
871
+ """
872
+ length of the second lattice vector
873
+ """
874
+ c: float
875
+ """
876
+ length of the third lattice vector
877
+ """
878
+ alpha: float
879
+ """
880
+ angle between first and second lattice vector
881
+ """
882
+ beta: float
883
+ """
884
+ angle between second and third lattice vector
885
+ """
886
+ gamma: float
887
+ """
888
+ angle between first and third lattice vector
889
+ """
890
+ vectors: Optional[LatticeVectorsSchema18] = Field(None, title="lattice vectors schema")
891
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
892
+ units: Optional[LatticeUnitsSchema18] = Field(
893
+ default_factory=lambda: LatticeUnitsSchema18.model_validate({"length": "angstrom", "angle": "degree"}),
894
+ title="Lattice units schema",
895
+ )
896
+
897
+
898
+ class Name151(Enum):
899
+ volume = "volume"
900
+
901
+
902
+ class Units63(Enum):
903
+ angstrom_3 = "angstrom^3"
904
+
905
+
906
+ class VolumeSchema18(BaseModel):
907
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
908
+ units: Optional[Units63] = None
909
+ value: float
910
+
911
+
912
+ class Name152(Enum):
913
+ density = "density"
914
+
915
+
916
+ class Units64(Enum):
917
+ g_cm_3 = "g/cm^3"
918
+
919
+
920
+ class DensitySchema18(BaseModel):
921
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
922
+ units: Optional[Units64] = None
923
+ value: float
924
+
925
+
926
+ class Units65(Enum):
927
+ angstrom = "angstrom"
928
+
929
+
930
+ class ScalarSchema19(BaseModel):
931
+ units: Optional[Units65] = None
932
+ value: float
933
+
934
+
935
+ class Name153(Enum):
936
+ symmetry = "symmetry"
937
+
938
+
939
+ class SymmetrySchema18(BaseModel):
940
+ pointGroupSymbol: Optional[str] = None
941
+ """
942
+ point group symbol in Schoenflies notation
943
+ """
944
+ spaceGroupSymbol: Optional[str] = None
945
+ """
946
+ space group symbol in Hermann–Mauguin notation
947
+ """
948
+ tolerance: Optional[ScalarSchema19] = Field(None, title="scalar schema")
949
+ """
950
+ tolerance used for symmetry calculation
951
+ """
952
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
953
+
954
+
955
+ class Name154(Enum):
956
+ elemental_ratio = "elemental_ratio"
957
+
958
+
959
+ class ElementalRatio18(BaseModel):
960
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
961
+ value: confloat(ge=0.0, le=1.0)
962
+ element: Optional[str] = None
963
+ """
964
+ the element this ratio is for
965
+ """
966
+
967
+
968
+ class Name155(Enum):
969
+ p_norm = "p-norm"
970
+
971
+
972
+ class PNorm18(BaseModel):
973
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
974
+ degree: Optional[int] = None
975
+ """
976
+ degree of the dimensionality of the norm
977
+ """
978
+ value: float
979
+
980
+
981
+ class Name156(Enum):
982
+ inchi = "inchi"
983
+
984
+
985
+ class InChIRepresentationSchema18(BaseModel):
986
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
987
+ value: str
988
+
989
+
990
+ class Name157(Enum):
991
+ inchi_key = "inchi_key"
992
+
993
+
994
+ class InChIKeyRepresentationSchema18(BaseModel):
995
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
996
+ value: str
997
+
998
+
999
+ class DerivedPropertiesSchema18(
1000
+ RootModel[
1001
+ Union[
1002
+ VolumeSchema18,
1003
+ DensitySchema18,
1004
+ SymmetrySchema18,
1005
+ ElementalRatio18,
1006
+ PNorm18,
1007
+ InChIRepresentationSchema18,
1008
+ InChIKeyRepresentationSchema18,
1009
+ ]
1010
+ ]
1011
+ ):
1012
+ root: Union[
1013
+ VolumeSchema18,
1014
+ DensitySchema18,
1015
+ SymmetrySchema18,
1016
+ ElementalRatio18,
1017
+ PNorm18,
1018
+ InChIRepresentationSchema18,
1019
+ InChIKeyRepresentationSchema18,
1020
+ ] = Field(..., discriminator="name")
1021
+
1022
+
1023
+ class Name158(Enum):
1024
+ default = "default"
1025
+ atomsTooClose = "atomsTooClose"
1026
+ atomsOverlap = "atomsOverlap"
1027
+
1028
+
1029
+ class MaterialConsistencyCheckSchema18(BaseModel):
1030
+ name: Name158
1031
+ """
1032
+ Name of the consistency check that is performed, which is listed in an enum.
1033
+ """
1034
+ key: str
1035
+ """
1036
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1037
+ """
1038
+ severity: Severity
1039
+ """
1040
+ Severity level of the problem, which is used in UI to differentiate.
1041
+ """
1042
+ message: str
1043
+ """
1044
+ Message generated by the consistency check describing the problem.
1045
+ """
1046
+
1047
+
1048
+ class CrystalSchema18(BaseModel):
1049
+ formula: Optional[str] = None
1050
+ """
1051
+ reduced chemical formula
1052
+ """
1053
+ unitCellFormula: Optional[str] = None
1054
+ """
1055
+ chemical formula based on the number of atoms of each element in the supercell
1056
+ """
1057
+ basis: BasisSchema19 = Field(..., title="basis schema")
1058
+ lattice: LatticeSchema18 = Field(..., title="lattice schema")
1059
+ derivedProperties: Optional[List[DerivedPropertiesSchema18]] = Field(None, title="derived properties schema")
1060
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1061
+ """
1062
+ information about a database source
1063
+ """
1064
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1065
+ """
1066
+ file source with the information inside
1067
+ """
1068
+ scaledHash: Optional[str] = None
1069
+ """
1070
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1071
+ """
1072
+ icsdId: Optional[int] = None
1073
+ """
1074
+ Corresponding ICSD id of the material
1075
+ """
1076
+ isNonPeriodic: Optional[bool] = None
1077
+ """
1078
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1079
+ """
1080
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema18]] = None
1081
+ field_id: Optional[str] = Field(None, alias="_id")
1082
+ """
1083
+ entity identity
1084
+ """
1085
+ slug: Optional[str] = None
1086
+ """
1087
+ entity slug
1088
+ """
1089
+ systemName: Optional[str] = None
1090
+ schemaVersion: Optional[str] = "2022.8.16"
1091
+ """
1092
+ entity's schema version. Used to distinct between different schemas.
1093
+ """
1094
+ name: Optional[str] = None
1095
+ """
1096
+ entity name
1097
+ """
1098
+ isDefault: Optional[bool] = False
1099
+ """
1100
+ Identifies that entity is defaultable
1101
+ """
1102
+ metadata: Optional[Dict[str, Any]] = None
1103
+
1104
+
1105
+ class VacuumConfigurationSchema(BaseModel):
1106
+ direction: AxisEnum = Field(..., title="Axis Enum")
1107
+ """
1108
+ Enum for axis types
1109
+ """
1110
+ size: Optional[confloat(ge=0.0)] = 10
1111
+ """
1112
+ Size of the vacuum slab in angstroms
1113
+ """
1114
+ crystal: CrystalSchema18 = Field(..., title="Crystal Schema")
1115
+ """
1116
+ A crystal structure, referencing the base material schema
1117
+ """
1118
+
1119
+
1120
+ class SlabConfigurationSchema(BaseModel):
1121
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema, VacuumConfigurationSchema]] = Field(
1122
+ ..., max_length=2, min_length=2
1123
+ )
1124
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
1125
+ """
1126
+ Enum for axis types
1127
+ """
1128
+
1129
+
1130
+ class TerminationSchema10(BaseModel):
1131
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
1132
+ ..., title="Chemical Elements"
1133
+ )
1134
+ """
1135
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
1136
+ """
1137
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
1138
+ """
1139
+ Space group symmetry designation for the termination
1140
+ """
1141
+
1142
+
1143
+ class Value46(Enum):
1144
+ H = "H"
1145
+ He = "He"
1146
+ Li = "Li"
1147
+ Be = "Be"
1148
+ B = "B"
1149
+ C = "C"
1150
+ N = "N"
1151
+ O = "O"
1152
+ F = "F"
1153
+ Ne = "Ne"
1154
+ Na = "Na"
1155
+ Mg = "Mg"
1156
+ Al = "Al"
1157
+ Si = "Si"
1158
+ P = "P"
1159
+ S = "S"
1160
+ Cl = "Cl"
1161
+ Ar = "Ar"
1162
+ K = "K"
1163
+ Ca = "Ca"
1164
+ Sc = "Sc"
1165
+ Ti = "Ti"
1166
+ V = "V"
1167
+ Cr = "Cr"
1168
+ Mn = "Mn"
1169
+ Fe = "Fe"
1170
+ Co = "Co"
1171
+ Ni = "Ni"
1172
+ Cu = "Cu"
1173
+ Zn = "Zn"
1174
+ Ga = "Ga"
1175
+ Ge = "Ge"
1176
+ As = "As"
1177
+ Se = "Se"
1178
+ Br = "Br"
1179
+ Kr = "Kr"
1180
+ Rb = "Rb"
1181
+ Sr = "Sr"
1182
+ Y = "Y"
1183
+ Zr = "Zr"
1184
+ Nb = "Nb"
1185
+ Mo = "Mo"
1186
+ Tc = "Tc"
1187
+ Ru = "Ru"
1188
+ Rh = "Rh"
1189
+ Pd = "Pd"
1190
+ Ag = "Ag"
1191
+ Cd = "Cd"
1192
+ In = "In"
1193
+ Sn = "Sn"
1194
+ Sb = "Sb"
1195
+ Te = "Te"
1196
+ I = "I"
1197
+ Xe = "Xe"
1198
+ Cs = "Cs"
1199
+ Ba = "Ba"
1200
+ La = "La"
1201
+ Ce = "Ce"
1202
+ Pr = "Pr"
1203
+ Nd = "Nd"
1204
+ Pm = "Pm"
1205
+ Sm = "Sm"
1206
+ Eu = "Eu"
1207
+ Gd = "Gd"
1208
+ Tb = "Tb"
1209
+ Dy = "Dy"
1210
+ Ho = "Ho"
1211
+ Er = "Er"
1212
+ Tm = "Tm"
1213
+ Yb = "Yb"
1214
+ Lu = "Lu"
1215
+ Hf = "Hf"
1216
+ Ta = "Ta"
1217
+ W = "W"
1218
+ Re = "Re"
1219
+ Os = "Os"
1220
+ Ir = "Ir"
1221
+ Pt = "Pt"
1222
+ Au = "Au"
1223
+ Hg = "Hg"
1224
+ Tl = "Tl"
1225
+ Pb = "Pb"
1226
+ Bi = "Bi"
1227
+ Po = "Po"
1228
+ At = "At"
1229
+ Rn = "Rn"
1230
+ Fr = "Fr"
1231
+ Ra = "Ra"
1232
+ Ac = "Ac"
1233
+ Th = "Th"
1234
+ Pa = "Pa"
1235
+ U = "U"
1236
+ Np = "Np"
1237
+ Pu = "Pu"
1238
+ Am = "Am"
1239
+ Cm = "Cm"
1240
+ Bk = "Bk"
1241
+ Cf = "Cf"
1242
+ Es = "Es"
1243
+ Fm = "Fm"
1244
+ Md = "Md"
1245
+ No = "No"
1246
+ Lr = "Lr"
1247
+ Rf = "Rf"
1248
+ Db = "Db"
1249
+ Sg = "Sg"
1250
+ Bh = "Bh"
1251
+ Hs = "Hs"
1252
+ Mt = "Mt"
1253
+ Ds = "Ds"
1254
+ Rg = "Rg"
1255
+ Cn = "Cn"
1256
+ Nh = "Nh"
1257
+ Fl = "Fl"
1258
+ Mc = "Mc"
1259
+ Lv = "Lv"
1260
+ Ts = "Ts"
1261
+ Og = "Og"
1262
+
1263
+
1264
+ class Value47(Enum):
1265
+ X = "X"
1266
+ Vac = "Vac"
1267
+
1268
+
1269
+ class AtomicElementSchema22(BaseModel):
1270
+ value: Union[Value46, Value47]
1271
+ """
1272
+ All elements, including extra elements
1273
+ """
1274
+ id: int
1275
+ """
1276
+ integer id of this entry
1277
+ """
1278
+
1279
+
1280
+ class BasisSchema20(BaseModel):
1281
+ elements: List[AtomicElementSchema22] = Field(..., title="atomic elements schema")
1282
+ """
1283
+ atomic elements schema
1284
+ """
1285
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1286
+ """
1287
+ atomic coordinates schema
1288
+ """
1289
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1290
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1291
+ """
1292
+ atomic labels schema
1293
+ """
1294
+
1295
+
1296
+ class LatticeVectorsSchema19(BaseModel):
1297
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1298
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1299
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1300
+ alat: Optional[float] = 1
1301
+ """
1302
+ lattice parameter for fractional coordinates
1303
+ """
1304
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1305
+
1306
+
1307
+ class LatticeUnitsSchema19(BaseModel):
1308
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1309
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1310
+
1311
+
1312
+ class LatticeSchema19(BaseModel):
1313
+ a: float
1314
+ """
1315
+ length of the first lattice vector
1316
+ """
1317
+ b: float
1318
+ """
1319
+ length of the second lattice vector
1320
+ """
1321
+ c: float
1322
+ """
1323
+ length of the third lattice vector
1324
+ """
1325
+ alpha: float
1326
+ """
1327
+ angle between first and second lattice vector
1328
+ """
1329
+ beta: float
1330
+ """
1331
+ angle between second and third lattice vector
1332
+ """
1333
+ gamma: float
1334
+ """
1335
+ angle between first and third lattice vector
1336
+ """
1337
+ vectors: Optional[LatticeVectorsSchema19] = Field(None, title="lattice vectors schema")
1338
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1339
+ units: Optional[LatticeUnitsSchema19] = Field(
1340
+ default_factory=lambda: LatticeUnitsSchema19.model_validate({"length": "angstrom", "angle": "degree"}),
1341
+ title="Lattice units schema",
1342
+ )
1343
+
1344
+
1345
+ class Name159(Enum):
1346
+ volume = "volume"
1347
+
1348
+
1349
+ class Units66(Enum):
1350
+ angstrom_3 = "angstrom^3"
1351
+
1352
+
1353
+ class VolumeSchema19(BaseModel):
1354
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1355
+ units: Optional[Units66] = None
1356
+ value: float
1357
+
1358
+
1359
+ class Name160(Enum):
1360
+ density = "density"
1361
+
1362
+
1363
+ class Units67(Enum):
1364
+ g_cm_3 = "g/cm^3"
1365
+
1366
+
1367
+ class DensitySchema19(BaseModel):
1368
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1369
+ units: Optional[Units67] = None
1370
+ value: float
1371
+
1372
+
1373
+ class Units68(Enum):
1374
+ angstrom = "angstrom"
1375
+
1376
+
1377
+ class ScalarSchema20(BaseModel):
1378
+ units: Optional[Units68] = None
1379
+ value: float
1380
+
1381
+
1382
+ class Name161(Enum):
1383
+ symmetry = "symmetry"
1384
+
1385
+
1386
+ class SymmetrySchema19(BaseModel):
1387
+ pointGroupSymbol: Optional[str] = None
1388
+ """
1389
+ point group symbol in Schoenflies notation
1390
+ """
1391
+ spaceGroupSymbol: Optional[str] = None
1392
+ """
1393
+ space group symbol in Hermann–Mauguin notation
1394
+ """
1395
+ tolerance: Optional[ScalarSchema20] = Field(None, title="scalar schema")
1396
+ """
1397
+ tolerance used for symmetry calculation
1398
+ """
1399
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1400
+
1401
+
1402
+ class Name162(Enum):
1403
+ elemental_ratio = "elemental_ratio"
1404
+
1405
+
1406
+ class ElementalRatio19(BaseModel):
1407
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1408
+ value: confloat(ge=0.0, le=1.0)
1409
+ element: Optional[str] = None
1410
+ """
1411
+ the element this ratio is for
1412
+ """
1413
+
1414
+
1415
+ class Name163(Enum):
1416
+ p_norm = "p-norm"
1417
+
1418
+
1419
+ class PNorm19(BaseModel):
1420
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1421
+ degree: Optional[int] = None
1422
+ """
1423
+ degree of the dimensionality of the norm
1424
+ """
1425
+ value: float
1426
+
1427
+
1428
+ class Name164(Enum):
1429
+ inchi = "inchi"
1430
+
1431
+
1432
+ class InChIRepresentationSchema19(BaseModel):
1433
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1434
+ value: str
1435
+
1436
+
1437
+ class Name165(Enum):
1438
+ inchi_key = "inchi_key"
1439
+
1440
+
1441
+ class InChIKeyRepresentationSchema19(BaseModel):
1442
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1443
+ value: str
1444
+
1445
+
1446
+ class DerivedPropertiesSchema19(
1447
+ RootModel[
1448
+ Union[
1449
+ VolumeSchema19,
1450
+ DensitySchema19,
1451
+ SymmetrySchema19,
1452
+ ElementalRatio19,
1453
+ PNorm19,
1454
+ InChIRepresentationSchema19,
1455
+ InChIKeyRepresentationSchema19,
1456
+ ]
1457
+ ]
1458
+ ):
1459
+ root: Union[
1460
+ VolumeSchema19,
1461
+ DensitySchema19,
1462
+ SymmetrySchema19,
1463
+ ElementalRatio19,
1464
+ PNorm19,
1465
+ InChIRepresentationSchema19,
1466
+ InChIKeyRepresentationSchema19,
1467
+ ] = Field(..., discriminator="name")
1468
+
1469
+
1470
+ class Name166(Enum):
1471
+ default = "default"
1472
+ atomsTooClose = "atomsTooClose"
1473
+ atomsOverlap = "atomsOverlap"
1474
+
1475
+
1476
+ class MaterialConsistencyCheckSchema19(BaseModel):
1477
+ name: Name166
1478
+ """
1479
+ Name of the consistency check that is performed, which is listed in an enum.
1480
+ """
1481
+ key: str
1482
+ """
1483
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1484
+ """
1485
+ severity: Severity
1486
+ """
1487
+ Severity level of the problem, which is used in UI to differentiate.
1488
+ """
1489
+ message: str
1490
+ """
1491
+ Message generated by the consistency check describing the problem.
1492
+ """
1493
+
1494
+
1495
+ class CrystalSchema19(BaseModel):
1496
+ formula: Optional[str] = None
1497
+ """
1498
+ reduced chemical formula
1499
+ """
1500
+ unitCellFormula: Optional[str] = None
1501
+ """
1502
+ chemical formula based on the number of atoms of each element in the supercell
1503
+ """
1504
+ basis: BasisSchema20 = Field(..., title="basis schema")
1505
+ lattice: LatticeSchema19 = Field(..., title="lattice schema")
1506
+ derivedProperties: Optional[List[DerivedPropertiesSchema19]] = Field(None, title="derived properties schema")
1507
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1508
+ """
1509
+ information about a database source
1510
+ """
1511
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1512
+ """
1513
+ file source with the information inside
1514
+ """
1515
+ scaledHash: Optional[str] = None
1516
+ """
1517
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1518
+ """
1519
+ icsdId: Optional[int] = None
1520
+ """
1521
+ Corresponding ICSD id of the material
1522
+ """
1523
+ isNonPeriodic: Optional[bool] = None
1524
+ """
1525
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1526
+ """
1527
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema19]] = None
1528
+ field_id: Optional[str] = Field(None, alias="_id")
1529
+ """
1530
+ entity identity
1531
+ """
1532
+ slug: Optional[str] = None
1533
+ """
1534
+ entity slug
1535
+ """
1536
+ systemName: Optional[str] = None
1537
+ schemaVersion: Optional[str] = "2022.8.16"
1538
+ """
1539
+ entity's schema version. Used to distinct between different schemas.
1540
+ """
1541
+ name: Optional[str] = None
1542
+ """
1543
+ entity name
1544
+ """
1545
+ isDefault: Optional[bool] = False
1546
+ """
1547
+ Identifies that entity is defaultable
1548
+ """
1549
+ metadata: Optional[Dict[str, Any]] = None
1550
+
1551
+
1552
+ class AtomicLayersUniqueRepeatedSchema8(BaseModel):
1553
+ termination_top: TerminationSchema10 = Field(..., title="Termination Schema")
1554
+ """
1555
+ Defines a specific termination of a slab
1556
+ """
1557
+ number_of_repetitions: conint(ge=1)
1558
+ """
1559
+ Number of repetitions of the unique atomic layers
1560
+ """
1561
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1562
+ """
1563
+ Miller indices [h, k, l] defining crystallographic planes
1564
+ """
1565
+ crystal: CrystalSchema19 = Field(..., title="Crystal Schema")
1566
+ """
1567
+ A crystal structure, referencing the base material schema
1568
+ """
1569
+ use_conventional_cell: Optional[bool] = True
1570
+ """
1571
+ Use the conventional cell for the crystal structure
1572
+ """
1573
+
1574
+
1575
+ class Value48(Enum):
1576
+ H = "H"
1577
+ He = "He"
1578
+ Li = "Li"
1579
+ Be = "Be"
1580
+ B = "B"
1581
+ C = "C"
1582
+ N = "N"
1583
+ O = "O"
1584
+ F = "F"
1585
+ Ne = "Ne"
1586
+ Na = "Na"
1587
+ Mg = "Mg"
1588
+ Al = "Al"
1589
+ Si = "Si"
1590
+ P = "P"
1591
+ S = "S"
1592
+ Cl = "Cl"
1593
+ Ar = "Ar"
1594
+ K = "K"
1595
+ Ca = "Ca"
1596
+ Sc = "Sc"
1597
+ Ti = "Ti"
1598
+ V = "V"
1599
+ Cr = "Cr"
1600
+ Mn = "Mn"
1601
+ Fe = "Fe"
1602
+ Co = "Co"
1603
+ Ni = "Ni"
1604
+ Cu = "Cu"
1605
+ Zn = "Zn"
1606
+ Ga = "Ga"
1607
+ Ge = "Ge"
1608
+ As = "As"
1609
+ Se = "Se"
1610
+ Br = "Br"
1611
+ Kr = "Kr"
1612
+ Rb = "Rb"
1613
+ Sr = "Sr"
1614
+ Y = "Y"
1615
+ Zr = "Zr"
1616
+ Nb = "Nb"
1617
+ Mo = "Mo"
1618
+ Tc = "Tc"
1619
+ Ru = "Ru"
1620
+ Rh = "Rh"
1621
+ Pd = "Pd"
1622
+ Ag = "Ag"
1623
+ Cd = "Cd"
1624
+ In = "In"
1625
+ Sn = "Sn"
1626
+ Sb = "Sb"
1627
+ Te = "Te"
1628
+ I = "I"
1629
+ Xe = "Xe"
1630
+ Cs = "Cs"
1631
+ Ba = "Ba"
1632
+ La = "La"
1633
+ Ce = "Ce"
1634
+ Pr = "Pr"
1635
+ Nd = "Nd"
1636
+ Pm = "Pm"
1637
+ Sm = "Sm"
1638
+ Eu = "Eu"
1639
+ Gd = "Gd"
1640
+ Tb = "Tb"
1641
+ Dy = "Dy"
1642
+ Ho = "Ho"
1643
+ Er = "Er"
1644
+ Tm = "Tm"
1645
+ Yb = "Yb"
1646
+ Lu = "Lu"
1647
+ Hf = "Hf"
1648
+ Ta = "Ta"
1649
+ W = "W"
1650
+ Re = "Re"
1651
+ Os = "Os"
1652
+ Ir = "Ir"
1653
+ Pt = "Pt"
1654
+ Au = "Au"
1655
+ Hg = "Hg"
1656
+ Tl = "Tl"
1657
+ Pb = "Pb"
1658
+ Bi = "Bi"
1659
+ Po = "Po"
1660
+ At = "At"
1661
+ Rn = "Rn"
1662
+ Fr = "Fr"
1663
+ Ra = "Ra"
1664
+ Ac = "Ac"
1665
+ Th = "Th"
1666
+ Pa = "Pa"
1667
+ U = "U"
1668
+ Np = "Np"
1669
+ Pu = "Pu"
1670
+ Am = "Am"
1671
+ Cm = "Cm"
1672
+ Bk = "Bk"
1673
+ Cf = "Cf"
1674
+ Es = "Es"
1675
+ Fm = "Fm"
1676
+ Md = "Md"
1677
+ No = "No"
1678
+ Lr = "Lr"
1679
+ Rf = "Rf"
1680
+ Db = "Db"
1681
+ Sg = "Sg"
1682
+ Bh = "Bh"
1683
+ Hs = "Hs"
1684
+ Mt = "Mt"
1685
+ Ds = "Ds"
1686
+ Rg = "Rg"
1687
+ Cn = "Cn"
1688
+ Nh = "Nh"
1689
+ Fl = "Fl"
1690
+ Mc = "Mc"
1691
+ Lv = "Lv"
1692
+ Ts = "Ts"
1693
+ Og = "Og"
1694
+
1695
+
1696
+ class Value49(Enum):
1697
+ X = "X"
1698
+ Vac = "Vac"
1699
+
1700
+
1701
+ class AtomicElementSchema23(BaseModel):
1702
+ value: Union[Value48, Value49]
1703
+ """
1704
+ All elements, including extra elements
1705
+ """
1706
+ id: int
1707
+ """
1708
+ integer id of this entry
1709
+ """
1710
+
1711
+
1712
+ class BasisSchema21(BaseModel):
1713
+ elements: List[AtomicElementSchema23] = Field(..., title="atomic elements schema")
1714
+ """
1715
+ atomic elements schema
1716
+ """
1717
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1718
+ """
1719
+ atomic coordinates schema
1720
+ """
1721
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1722
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1723
+ """
1724
+ atomic labels schema
1725
+ """
1726
+
1727
+
1728
+ class LatticeVectorsSchema20(BaseModel):
1729
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1730
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1731
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1732
+ alat: Optional[float] = 1
1733
+ """
1734
+ lattice parameter for fractional coordinates
1735
+ """
1736
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1737
+
1738
+
1739
+ class LatticeUnitsSchema20(BaseModel):
1740
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1741
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1742
+
1743
+
1744
+ class LatticeSchema20(BaseModel):
1745
+ a: float
1746
+ """
1747
+ length of the first lattice vector
1748
+ """
1749
+ b: float
1750
+ """
1751
+ length of the second lattice vector
1752
+ """
1753
+ c: float
1754
+ """
1755
+ length of the third lattice vector
1756
+ """
1757
+ alpha: float
1758
+ """
1759
+ angle between first and second lattice vector
1760
+ """
1761
+ beta: float
1762
+ """
1763
+ angle between second and third lattice vector
1764
+ """
1765
+ gamma: float
1766
+ """
1767
+ angle between first and third lattice vector
1768
+ """
1769
+ vectors: Optional[LatticeVectorsSchema20] = Field(None, title="lattice vectors schema")
1770
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1771
+ units: Optional[LatticeUnitsSchema20] = Field(
1772
+ default_factory=lambda: LatticeUnitsSchema20.model_validate({"length": "angstrom", "angle": "degree"}),
1773
+ title="Lattice units schema",
1774
+ )
1775
+
1776
+
1777
+ class Name167(Enum):
1778
+ volume = "volume"
1779
+
1780
+
1781
+ class Units69(Enum):
1782
+ angstrom_3 = "angstrom^3"
1783
+
1784
+
1785
+ class VolumeSchema20(BaseModel):
1786
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1787
+ units: Optional[Units69] = None
1788
+ value: float
1789
+
1790
+
1791
+ class Name168(Enum):
1792
+ density = "density"
1793
+
1794
+
1795
+ class Units70(Enum):
1796
+ g_cm_3 = "g/cm^3"
1797
+
1798
+
1799
+ class DensitySchema20(BaseModel):
1800
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1801
+ units: Optional[Units70] = None
1802
+ value: float
1803
+
1804
+
1805
+ class Units71(Enum):
1806
+ angstrom = "angstrom"
1807
+
1808
+
1809
+ class ScalarSchema21(BaseModel):
1810
+ units: Optional[Units71] = None
1811
+ value: float
1812
+
1813
+
1814
+ class Name169(Enum):
1815
+ symmetry = "symmetry"
1816
+
1817
+
1818
+ class SymmetrySchema20(BaseModel):
1819
+ pointGroupSymbol: Optional[str] = None
1820
+ """
1821
+ point group symbol in Schoenflies notation
1822
+ """
1823
+ spaceGroupSymbol: Optional[str] = None
1824
+ """
1825
+ space group symbol in Hermann–Mauguin notation
1826
+ """
1827
+ tolerance: Optional[ScalarSchema21] = Field(None, title="scalar schema")
1828
+ """
1829
+ tolerance used for symmetry calculation
1830
+ """
1831
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1832
+
1833
+
1834
+ class Name170(Enum):
1835
+ elemental_ratio = "elemental_ratio"
1836
+
1837
+
1838
+ class ElementalRatio20(BaseModel):
1839
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1840
+ value: confloat(ge=0.0, le=1.0)
1841
+ element: Optional[str] = None
1842
+ """
1843
+ the element this ratio is for
1844
+ """
1845
+
1846
+
1847
+ class Name171(Enum):
1848
+ p_norm = "p-norm"
1849
+
1850
+
1851
+ class PNorm20(BaseModel):
1852
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1853
+ degree: Optional[int] = None
1854
+ """
1855
+ degree of the dimensionality of the norm
1856
+ """
1857
+ value: float
1858
+
1859
+
1860
+ class Name172(Enum):
1861
+ inchi = "inchi"
1862
+
1863
+
1864
+ class InChIRepresentationSchema20(BaseModel):
1865
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1866
+ value: str
1867
+
1868
+
1869
+ class Name173(Enum):
1870
+ inchi_key = "inchi_key"
1871
+
1872
+
1873
+ class InChIKeyRepresentationSchema20(BaseModel):
1874
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1875
+ value: str
1876
+
1877
+
1878
+ class DerivedPropertiesSchema20(
1879
+ RootModel[
1880
+ Union[
1881
+ VolumeSchema20,
1882
+ DensitySchema20,
1883
+ SymmetrySchema20,
1884
+ ElementalRatio20,
1885
+ PNorm20,
1886
+ InChIRepresentationSchema20,
1887
+ InChIKeyRepresentationSchema20,
1888
+ ]
1889
+ ]
1890
+ ):
1891
+ root: Union[
1892
+ VolumeSchema20,
1893
+ DensitySchema20,
1894
+ SymmetrySchema20,
1895
+ ElementalRatio20,
1896
+ PNorm20,
1897
+ InChIRepresentationSchema20,
1898
+ InChIKeyRepresentationSchema20,
1899
+ ] = Field(..., discriminator="name")
1900
+
1901
+
1902
+ class Name174(Enum):
1903
+ default = "default"
1904
+ atomsTooClose = "atomsTooClose"
1905
+ atomsOverlap = "atomsOverlap"
1906
+
1907
+
1908
+ class MaterialConsistencyCheckSchema20(BaseModel):
1909
+ name: Name174
1910
+ """
1911
+ Name of the consistency check that is performed, which is listed in an enum.
1912
+ """
1913
+ key: str
1914
+ """
1915
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1916
+ """
1917
+ severity: Severity
1918
+ """
1919
+ Severity level of the problem, which is used in UI to differentiate.
1920
+ """
1921
+ message: str
1922
+ """
1923
+ Message generated by the consistency check describing the problem.
1924
+ """
1925
+
1926
+
1927
+ class CrystalSchema20(BaseModel):
1928
+ formula: Optional[str] = None
1929
+ """
1930
+ reduced chemical formula
1931
+ """
1932
+ unitCellFormula: Optional[str] = None
1933
+ """
1934
+ chemical formula based on the number of atoms of each element in the supercell
1935
+ """
1936
+ basis: BasisSchema21 = Field(..., title="basis schema")
1937
+ lattice: LatticeSchema20 = Field(..., title="lattice schema")
1938
+ derivedProperties: Optional[List[DerivedPropertiesSchema20]] = Field(None, title="derived properties schema")
1939
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1940
+ """
1941
+ information about a database source
1942
+ """
1943
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1944
+ """
1945
+ file source with the information inside
1946
+ """
1947
+ scaledHash: Optional[str] = None
1948
+ """
1949
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1950
+ """
1951
+ icsdId: Optional[int] = None
1952
+ """
1953
+ Corresponding ICSD id of the material
1954
+ """
1955
+ isNonPeriodic: Optional[bool] = None
1956
+ """
1957
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1958
+ """
1959
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema20]] = None
1960
+ field_id: Optional[str] = Field(None, alias="_id")
1961
+ """
1962
+ entity identity
1963
+ """
1964
+ slug: Optional[str] = None
1965
+ """
1966
+ entity slug
1967
+ """
1968
+ systemName: Optional[str] = None
1969
+ schemaVersion: Optional[str] = "2022.8.16"
1970
+ """
1971
+ entity's schema version. Used to distinct between different schemas.
1972
+ """
1973
+ name: Optional[str] = None
1974
+ """
1975
+ entity name
1976
+ """
1977
+ isDefault: Optional[bool] = False
1978
+ """
1979
+ Identifies that entity is defaultable
1980
+ """
1981
+ metadata: Optional[Dict[str, Any]] = None
1982
+
1983
+
1984
+ class VacuumConfigurationSchema8(BaseModel):
1985
+ direction: AxisEnum = Field(..., title="Axis Enum")
1986
+ """
1987
+ Enum for axis types
1988
+ """
1989
+ size: Optional[confloat(ge=0.0)] = 10
1990
+ """
1991
+ Size of the vacuum slab in angstroms
1992
+ """
1993
+ crystal: CrystalSchema20 = Field(..., title="Crystal Schema")
1994
+ """
1995
+ A crystal structure, referencing the base material schema
1996
+ """
1997
+
1998
+
1999
+ class SlabConfigurationSchema3(BaseModel):
2000
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema8, VacuumConfigurationSchema8]] = Field(
2001
+ ..., max_length=2, min_length=2
2002
+ )
2003
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2004
+ """
2005
+ Enum for axis types
2006
+ """
2007
+
2008
+
2009
+ class Value50(Enum):
2010
+ H = "H"
2011
+ He = "He"
2012
+ Li = "Li"
2013
+ Be = "Be"
2014
+ B = "B"
2015
+ C = "C"
2016
+ N = "N"
2017
+ O = "O"
2018
+ F = "F"
2019
+ Ne = "Ne"
2020
+ Na = "Na"
2021
+ Mg = "Mg"
2022
+ Al = "Al"
2023
+ Si = "Si"
2024
+ P = "P"
2025
+ S = "S"
2026
+ Cl = "Cl"
2027
+ Ar = "Ar"
2028
+ K = "K"
2029
+ Ca = "Ca"
2030
+ Sc = "Sc"
2031
+ Ti = "Ti"
2032
+ V = "V"
2033
+ Cr = "Cr"
2034
+ Mn = "Mn"
2035
+ Fe = "Fe"
2036
+ Co = "Co"
2037
+ Ni = "Ni"
2038
+ Cu = "Cu"
2039
+ Zn = "Zn"
2040
+ Ga = "Ga"
2041
+ Ge = "Ge"
2042
+ As = "As"
2043
+ Se = "Se"
2044
+ Br = "Br"
2045
+ Kr = "Kr"
2046
+ Rb = "Rb"
2047
+ Sr = "Sr"
2048
+ Y = "Y"
2049
+ Zr = "Zr"
2050
+ Nb = "Nb"
2051
+ Mo = "Mo"
2052
+ Tc = "Tc"
2053
+ Ru = "Ru"
2054
+ Rh = "Rh"
2055
+ Pd = "Pd"
2056
+ Ag = "Ag"
2057
+ Cd = "Cd"
2058
+ In = "In"
2059
+ Sn = "Sn"
2060
+ Sb = "Sb"
2061
+ Te = "Te"
2062
+ I = "I"
2063
+ Xe = "Xe"
2064
+ Cs = "Cs"
2065
+ Ba = "Ba"
2066
+ La = "La"
2067
+ Ce = "Ce"
2068
+ Pr = "Pr"
2069
+ Nd = "Nd"
2070
+ Pm = "Pm"
2071
+ Sm = "Sm"
2072
+ Eu = "Eu"
2073
+ Gd = "Gd"
2074
+ Tb = "Tb"
2075
+ Dy = "Dy"
2076
+ Ho = "Ho"
2077
+ Er = "Er"
2078
+ Tm = "Tm"
2079
+ Yb = "Yb"
2080
+ Lu = "Lu"
2081
+ Hf = "Hf"
2082
+ Ta = "Ta"
2083
+ W = "W"
2084
+ Re = "Re"
2085
+ Os = "Os"
2086
+ Ir = "Ir"
2087
+ Pt = "Pt"
2088
+ Au = "Au"
2089
+ Hg = "Hg"
2090
+ Tl = "Tl"
2091
+ Pb = "Pb"
2092
+ Bi = "Bi"
2093
+ Po = "Po"
2094
+ At = "At"
2095
+ Rn = "Rn"
2096
+ Fr = "Fr"
2097
+ Ra = "Ra"
2098
+ Ac = "Ac"
2099
+ Th = "Th"
2100
+ Pa = "Pa"
2101
+ U = "U"
2102
+ Np = "Np"
2103
+ Pu = "Pu"
2104
+ Am = "Am"
2105
+ Cm = "Cm"
2106
+ Bk = "Bk"
2107
+ Cf = "Cf"
2108
+ Es = "Es"
2109
+ Fm = "Fm"
2110
+ Md = "Md"
2111
+ No = "No"
2112
+ Lr = "Lr"
2113
+ Rf = "Rf"
2114
+ Db = "Db"
2115
+ Sg = "Sg"
2116
+ Bh = "Bh"
2117
+ Hs = "Hs"
2118
+ Mt = "Mt"
2119
+ Ds = "Ds"
2120
+ Rg = "Rg"
2121
+ Cn = "Cn"
2122
+ Nh = "Nh"
2123
+ Fl = "Fl"
2124
+ Mc = "Mc"
2125
+ Lv = "Lv"
2126
+ Ts = "Ts"
2127
+ Og = "Og"
2128
+
2129
+
2130
+ class Value51(Enum):
2131
+ X = "X"
2132
+ Vac = "Vac"
2133
+
2134
+
2135
+ class AtomicElementSchema24(BaseModel):
2136
+ value: Union[Value50, Value51]
2137
+ """
2138
+ All elements, including extra elements
2139
+ """
2140
+ id: int
2141
+ """
2142
+ integer id of this entry
2143
+ """
2144
+
2145
+
2146
+ class BasisSchema22(BaseModel):
2147
+ elements: List[AtomicElementSchema24] = Field(..., title="atomic elements schema")
2148
+ """
2149
+ atomic elements schema
2150
+ """
2151
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2152
+ """
2153
+ atomic coordinates schema
2154
+ """
2155
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2156
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2157
+ """
2158
+ atomic labels schema
2159
+ """
2160
+
2161
+
2162
+ class LatticeVectorsSchema21(BaseModel):
2163
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2164
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2165
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2166
+ alat: Optional[float] = 1
2167
+ """
2168
+ lattice parameter for fractional coordinates
2169
+ """
2170
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2171
+
2172
+
2173
+ class LatticeUnitsSchema21(BaseModel):
2174
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2175
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2176
+
2177
+
2178
+ class LatticeSchema21(BaseModel):
2179
+ a: float
2180
+ """
2181
+ length of the first lattice vector
2182
+ """
2183
+ b: float
2184
+ """
2185
+ length of the second lattice vector
2186
+ """
2187
+ c: float
2188
+ """
2189
+ length of the third lattice vector
2190
+ """
2191
+ alpha: float
2192
+ """
2193
+ angle between first and second lattice vector
2194
+ """
2195
+ beta: float
2196
+ """
2197
+ angle between second and third lattice vector
2198
+ """
2199
+ gamma: float
2200
+ """
2201
+ angle between first and third lattice vector
2202
+ """
2203
+ vectors: Optional[LatticeVectorsSchema21] = Field(None, title="lattice vectors schema")
2204
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2205
+ units: Optional[LatticeUnitsSchema21] = Field(
2206
+ default_factory=lambda: LatticeUnitsSchema21.model_validate({"length": "angstrom", "angle": "degree"}),
2207
+ title="Lattice units schema",
2208
+ )
2209
+
2210
+
2211
+ class Name175(Enum):
2212
+ volume = "volume"
2213
+
2214
+
2215
+ class Units72(Enum):
2216
+ angstrom_3 = "angstrom^3"
2217
+
2218
+
2219
+ class VolumeSchema21(BaseModel):
2220
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2221
+ units: Optional[Units72] = None
2222
+ value: float
2223
+
2224
+
2225
+ class Name176(Enum):
2226
+ density = "density"
2227
+
2228
+
2229
+ class Units73(Enum):
2230
+ g_cm_3 = "g/cm^3"
2231
+
2232
+
2233
+ class DensitySchema21(BaseModel):
2234
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2235
+ units: Optional[Units73] = None
2236
+ value: float
2237
+
2238
+
2239
+ class Units74(Enum):
2240
+ angstrom = "angstrom"
2241
+
2242
+
2243
+ class ScalarSchema22(BaseModel):
2244
+ units: Optional[Units74] = None
2245
+ value: float
2246
+
2247
+
2248
+ class Name177(Enum):
2249
+ symmetry = "symmetry"
2250
+
2251
+
2252
+ class SymmetrySchema21(BaseModel):
2253
+ pointGroupSymbol: Optional[str] = None
2254
+ """
2255
+ point group symbol in Schoenflies notation
2256
+ """
2257
+ spaceGroupSymbol: Optional[str] = None
2258
+ """
2259
+ space group symbol in Hermann–Mauguin notation
2260
+ """
2261
+ tolerance: Optional[ScalarSchema22] = Field(None, title="scalar schema")
2262
+ """
2263
+ tolerance used for symmetry calculation
2264
+ """
2265
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2266
+
2267
+
2268
+ class Name178(Enum):
2269
+ elemental_ratio = "elemental_ratio"
2270
+
2271
+
2272
+ class ElementalRatio21(BaseModel):
2273
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2274
+ value: confloat(ge=0.0, le=1.0)
2275
+ element: Optional[str] = None
2276
+ """
2277
+ the element this ratio is for
2278
+ """
2279
+
2280
+
2281
+ class Name179(Enum):
2282
+ p_norm = "p-norm"
2283
+
2284
+
2285
+ class PNorm21(BaseModel):
2286
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2287
+ degree: Optional[int] = None
2288
+ """
2289
+ degree of the dimensionality of the norm
2290
+ """
2291
+ value: float
2292
+
2293
+
2294
+ class Name180(Enum):
2295
+ inchi = "inchi"
2296
+
2297
+
2298
+ class InChIRepresentationSchema21(BaseModel):
2299
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2300
+ value: str
2301
+
2302
+
2303
+ class Name181(Enum):
2304
+ inchi_key = "inchi_key"
2305
+
2306
+
2307
+ class InChIKeyRepresentationSchema21(BaseModel):
2308
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2309
+ value: str
2310
+
2311
+
2312
+ class DerivedPropertiesSchema21(
2313
+ RootModel[
2314
+ Union[
2315
+ VolumeSchema21,
2316
+ DensitySchema21,
2317
+ SymmetrySchema21,
2318
+ ElementalRatio21,
2319
+ PNorm21,
2320
+ InChIRepresentationSchema21,
2321
+ InChIKeyRepresentationSchema21,
2322
+ ]
2323
+ ]
2324
+ ):
2325
+ root: Union[
2326
+ VolumeSchema21,
2327
+ DensitySchema21,
2328
+ SymmetrySchema21,
2329
+ ElementalRatio21,
2330
+ PNorm21,
2331
+ InChIRepresentationSchema21,
2332
+ InChIKeyRepresentationSchema21,
2333
+ ] = Field(..., discriminator="name")
2334
+
2335
+
2336
+ class Name182(Enum):
2337
+ default = "default"
2338
+ atomsTooClose = "atomsTooClose"
2339
+ atomsOverlap = "atomsOverlap"
2340
+
2341
+
2342
+ class MaterialConsistencyCheckSchema21(BaseModel):
2343
+ name: Name182
2344
+ """
2345
+ Name of the consistency check that is performed, which is listed in an enum.
2346
+ """
2347
+ key: str
2348
+ """
2349
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2350
+ """
2351
+ severity: Severity
2352
+ """
2353
+ Severity level of the problem, which is used in UI to differentiate.
2354
+ """
2355
+ message: str
2356
+ """
2357
+ Message generated by the consistency check describing the problem.
2358
+ """
2359
+
2360
+
2361
+ class CrystalSchema21(BaseModel):
2362
+ formula: Optional[str] = None
2363
+ """
2364
+ reduced chemical formula
2365
+ """
2366
+ unitCellFormula: Optional[str] = None
2367
+ """
2368
+ chemical formula based on the number of atoms of each element in the supercell
2369
+ """
2370
+ basis: BasisSchema22 = Field(..., title="basis schema")
2371
+ lattice: LatticeSchema21 = Field(..., title="lattice schema")
2372
+ derivedProperties: Optional[List[DerivedPropertiesSchema21]] = Field(None, title="derived properties schema")
2373
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2374
+ """
2375
+ information about a database source
2376
+ """
2377
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2378
+ """
2379
+ file source with the information inside
2380
+ """
2381
+ scaledHash: Optional[str] = None
2382
+ """
2383
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2384
+ """
2385
+ icsdId: Optional[int] = None
2386
+ """
2387
+ Corresponding ICSD id of the material
2388
+ """
2389
+ isNonPeriodic: Optional[bool] = None
2390
+ """
2391
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2392
+ """
2393
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema21]] = None
2394
+ field_id: Optional[str] = Field(None, alias="_id")
2395
+ """
2396
+ entity identity
2397
+ """
2398
+ slug: Optional[str] = None
2399
+ """
2400
+ entity slug
2401
+ """
2402
+ systemName: Optional[str] = None
2403
+ schemaVersion: Optional[str] = "2022.8.16"
2404
+ """
2405
+ entity's schema version. Used to distinct between different schemas.
2406
+ """
2407
+ name: Optional[str] = None
2408
+ """
2409
+ entity name
2410
+ """
2411
+ isDefault: Optional[bool] = False
2412
+ """
2413
+ Identifies that entity is defaultable
2414
+ """
2415
+ metadata: Optional[Dict[str, Any]] = None
2416
+
2417
+
2418
+ class CoordinateShapeEnum(Enum):
2419
+ cylinder = "cylinder"
2420
+ sphere = "sphere"
2421
+ box = "box"
2422
+ triangular_prism = "triangular_prism"
2423
+ plane = "plane"
2424
+
2425
+
2426
+ class BoxCoordinateConditionSchema(BaseModel):
2427
+ shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
2428
+ min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2429
+ max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2430
+
2431
+
2432
+ class VoidRegionSchema(BaseModel):
2433
+ crystal: CrystalSchema21 = Field(..., title="Crystal Schema")
2434
+ """
2435
+ A crystal structure, referencing the base material schema
2436
+ """
2437
+ coordinate_condition: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
2438
+ """
2439
+ Combined schema for all coordinate condition types
2440
+ """
2441
+
2442
+
2443
+ class MergeMethodsEnum(Enum):
2444
+ ADD = "ADD"
2445
+ REPLACE = "REPLACE"
2446
+ YIELD = "YIELD"
2447
+
2448
+
2449
+ class MergeSchema(BaseModel):
2450
+ merge_components: List[Union[SlabConfigurationSchema3, VoidRegionSchema]] = Field(..., max_length=2, min_length=2)
2451
+ merge_method: Optional[MergeMethodsEnum] = Field("REPLACE", title="Merge Methods Enum")
2452
+ """
2453
+ Available methods for merging components
2454
+ """
2455
+
2456
+
2457
+ class Value52(Enum):
2458
+ H = "H"
2459
+ He = "He"
2460
+ Li = "Li"
2461
+ Be = "Be"
2462
+ B = "B"
2463
+ C = "C"
2464
+ N = "N"
2465
+ O = "O"
2466
+ F = "F"
2467
+ Ne = "Ne"
2468
+ Na = "Na"
2469
+ Mg = "Mg"
2470
+ Al = "Al"
2471
+ Si = "Si"
2472
+ P = "P"
2473
+ S = "S"
2474
+ Cl = "Cl"
2475
+ Ar = "Ar"
2476
+ K = "K"
2477
+ Ca = "Ca"
2478
+ Sc = "Sc"
2479
+ Ti = "Ti"
2480
+ V = "V"
2481
+ Cr = "Cr"
2482
+ Mn = "Mn"
2483
+ Fe = "Fe"
2484
+ Co = "Co"
2485
+ Ni = "Ni"
2486
+ Cu = "Cu"
2487
+ Zn = "Zn"
2488
+ Ga = "Ga"
2489
+ Ge = "Ge"
2490
+ As = "As"
2491
+ Se = "Se"
2492
+ Br = "Br"
2493
+ Kr = "Kr"
2494
+ Rb = "Rb"
2495
+ Sr = "Sr"
2496
+ Y = "Y"
2497
+ Zr = "Zr"
2498
+ Nb = "Nb"
2499
+ Mo = "Mo"
2500
+ Tc = "Tc"
2501
+ Ru = "Ru"
2502
+ Rh = "Rh"
2503
+ Pd = "Pd"
2504
+ Ag = "Ag"
2505
+ Cd = "Cd"
2506
+ In = "In"
2507
+ Sn = "Sn"
2508
+ Sb = "Sb"
2509
+ Te = "Te"
2510
+ I = "I"
2511
+ Xe = "Xe"
2512
+ Cs = "Cs"
2513
+ Ba = "Ba"
2514
+ La = "La"
2515
+ Ce = "Ce"
2516
+ Pr = "Pr"
2517
+ Nd = "Nd"
2518
+ Pm = "Pm"
2519
+ Sm = "Sm"
2520
+ Eu = "Eu"
2521
+ Gd = "Gd"
2522
+ Tb = "Tb"
2523
+ Dy = "Dy"
2524
+ Ho = "Ho"
2525
+ Er = "Er"
2526
+ Tm = "Tm"
2527
+ Yb = "Yb"
2528
+ Lu = "Lu"
2529
+ Hf = "Hf"
2530
+ Ta = "Ta"
2531
+ W = "W"
2532
+ Re = "Re"
2533
+ Os = "Os"
2534
+ Ir = "Ir"
2535
+ Pt = "Pt"
2536
+ Au = "Au"
2537
+ Hg = "Hg"
2538
+ Tl = "Tl"
2539
+ Pb = "Pb"
2540
+ Bi = "Bi"
2541
+ Po = "Po"
2542
+ At = "At"
2543
+ Rn = "Rn"
2544
+ Fr = "Fr"
2545
+ Ra = "Ra"
2546
+ Ac = "Ac"
2547
+ Th = "Th"
2548
+ Pa = "Pa"
2549
+ U = "U"
2550
+ Np = "Np"
2551
+ Pu = "Pu"
2552
+ Am = "Am"
2553
+ Cm = "Cm"
2554
+ Bk = "Bk"
2555
+ Cf = "Cf"
2556
+ Es = "Es"
2557
+ Fm = "Fm"
2558
+ Md = "Md"
2559
+ No = "No"
2560
+ Lr = "Lr"
2561
+ Rf = "Rf"
2562
+ Db = "Db"
2563
+ Sg = "Sg"
2564
+ Bh = "Bh"
2565
+ Hs = "Hs"
2566
+ Mt = "Mt"
2567
+ Ds = "Ds"
2568
+ Rg = "Rg"
2569
+ Cn = "Cn"
2570
+ Nh = "Nh"
2571
+ Fl = "Fl"
2572
+ Mc = "Mc"
2573
+ Lv = "Lv"
2574
+ Ts = "Ts"
2575
+ Og = "Og"
2576
+
2577
+
2578
+ class Value53(Enum):
2579
+ X = "X"
2580
+ Vac = "Vac"
2581
+
2582
+
2583
+ class AtomicElementSchema25(BaseModel):
2584
+ value: Union[Value52, Value53]
2585
+ """
2586
+ All elements, including extra elements
2587
+ """
2588
+ id: int
2589
+ """
2590
+ integer id of this entry
2591
+ """
2592
+
2593
+
2594
+ class BasisSchema23(BaseModel):
2595
+ elements: List[AtomicElementSchema25] = Field(..., title="atomic elements schema")
2596
+ """
2597
+ atomic elements schema
2598
+ """
2599
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2600
+ """
2601
+ atomic coordinates schema
2602
+ """
2603
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2604
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2605
+ """
2606
+ atomic labels schema
2607
+ """
2608
+
2609
+
2610
+ class LatticeVectorsSchema22(BaseModel):
2611
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2612
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2613
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2614
+ alat: Optional[float] = 1
2615
+ """
2616
+ lattice parameter for fractional coordinates
2617
+ """
2618
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2619
+
2620
+
2621
+ class LatticeUnitsSchema22(BaseModel):
2622
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2623
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2624
+
2625
+
2626
+ class LatticeSchema22(BaseModel):
2627
+ a: float
2628
+ """
2629
+ length of the first lattice vector
2630
+ """
2631
+ b: float
2632
+ """
2633
+ length of the second lattice vector
2634
+ """
2635
+ c: float
2636
+ """
2637
+ length of the third lattice vector
2638
+ """
2639
+ alpha: float
2640
+ """
2641
+ angle between first and second lattice vector
2642
+ """
2643
+ beta: float
2644
+ """
2645
+ angle between second and third lattice vector
2646
+ """
2647
+ gamma: float
2648
+ """
2649
+ angle between first and third lattice vector
2650
+ """
2651
+ vectors: Optional[LatticeVectorsSchema22] = Field(None, title="lattice vectors schema")
2652
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2653
+ units: Optional[LatticeUnitsSchema22] = Field(
2654
+ default_factory=lambda: LatticeUnitsSchema22.model_validate({"length": "angstrom", "angle": "degree"}),
2655
+ title="Lattice units schema",
2656
+ )
2657
+
2658
+
2659
+ class Name183(Enum):
2660
+ volume = "volume"
2661
+
2662
+
2663
+ class Units75(Enum):
2664
+ angstrom_3 = "angstrom^3"
2665
+
2666
+
2667
+ class VolumeSchema22(BaseModel):
2668
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2669
+ units: Optional[Units75] = None
2670
+ value: float
2671
+
2672
+
2673
+ class Name184(Enum):
2674
+ density = "density"
2675
+
2676
+
2677
+ class Units76(Enum):
2678
+ g_cm_3 = "g/cm^3"
2679
+
2680
+
2681
+ class DensitySchema22(BaseModel):
2682
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2683
+ units: Optional[Units76] = None
2684
+ value: float
2685
+
2686
+
2687
+ class Units77(Enum):
2688
+ angstrom = "angstrom"
2689
+
2690
+
2691
+ class ScalarSchema23(BaseModel):
2692
+ units: Optional[Units77] = None
2693
+ value: float
2694
+
2695
+
2696
+ class Name185(Enum):
2697
+ symmetry = "symmetry"
2698
+
2699
+
2700
+ class SymmetrySchema22(BaseModel):
2701
+ pointGroupSymbol: Optional[str] = None
2702
+ """
2703
+ point group symbol in Schoenflies notation
2704
+ """
2705
+ spaceGroupSymbol: Optional[str] = None
2706
+ """
2707
+ space group symbol in Hermann–Mauguin notation
2708
+ """
2709
+ tolerance: Optional[ScalarSchema23] = Field(None, title="scalar schema")
2710
+ """
2711
+ tolerance used for symmetry calculation
2712
+ """
2713
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2714
+
2715
+
2716
+ class Name186(Enum):
2717
+ elemental_ratio = "elemental_ratio"
2718
+
2719
+
2720
+ class ElementalRatio22(BaseModel):
2721
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2722
+ value: confloat(ge=0.0, le=1.0)
2723
+ element: Optional[str] = None
2724
+ """
2725
+ the element this ratio is for
2726
+ """
2727
+
2728
+
2729
+ class Name187(Enum):
2730
+ p_norm = "p-norm"
2731
+
2732
+
2733
+ class PNorm22(BaseModel):
2734
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2735
+ degree: Optional[int] = None
2736
+ """
2737
+ degree of the dimensionality of the norm
2738
+ """
2739
+ value: float
2740
+
2741
+
2742
+ class Name188(Enum):
2743
+ inchi = "inchi"
2744
+
2745
+
2746
+ class InChIRepresentationSchema22(BaseModel):
2747
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2748
+ value: str
2749
+
2750
+
2751
+ class Name189(Enum):
2752
+ inchi_key = "inchi_key"
2753
+
2754
+
2755
+ class InChIKeyRepresentationSchema22(BaseModel):
2756
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2757
+ value: str
2758
+
2759
+
2760
+ class DerivedPropertiesSchema22(
2761
+ RootModel[
2762
+ Union[
2763
+ VolumeSchema22,
2764
+ DensitySchema22,
2765
+ SymmetrySchema22,
2766
+ ElementalRatio22,
2767
+ PNorm22,
2768
+ InChIRepresentationSchema22,
2769
+ InChIKeyRepresentationSchema22,
2770
+ ]
2771
+ ]
2772
+ ):
2773
+ root: Union[
2774
+ VolumeSchema22,
2775
+ DensitySchema22,
2776
+ SymmetrySchema22,
2777
+ ElementalRatio22,
2778
+ PNorm22,
2779
+ InChIRepresentationSchema22,
2780
+ InChIKeyRepresentationSchema22,
2781
+ ] = Field(..., discriminator="name")
2782
+
2783
+
2784
+ class Name190(Enum):
2785
+ default = "default"
2786
+ atomsTooClose = "atomsTooClose"
2787
+ atomsOverlap = "atomsOverlap"
2788
+
2789
+
2790
+ class MaterialConsistencyCheckSchema22(BaseModel):
2791
+ name: Name190
2792
+ """
2793
+ Name of the consistency check that is performed, which is listed in an enum.
2794
+ """
2795
+ key: str
2796
+ """
2797
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2798
+ """
2799
+ severity: Severity
2800
+ """
2801
+ Severity level of the problem, which is used in UI to differentiate.
2802
+ """
2803
+ message: str
2804
+ """
2805
+ Message generated by the consistency check describing the problem.
2806
+ """
2807
+
2808
+
2809
+ class CrystalSchema22(BaseModel):
2810
+ formula: Optional[str] = None
2811
+ """
2812
+ reduced chemical formula
2813
+ """
2814
+ unitCellFormula: Optional[str] = None
2815
+ """
2816
+ chemical formula based on the number of atoms of each element in the supercell
2817
+ """
2818
+ basis: BasisSchema23 = Field(..., title="basis schema")
2819
+ lattice: LatticeSchema22 = Field(..., title="lattice schema")
2820
+ derivedProperties: Optional[List[DerivedPropertiesSchema22]] = Field(None, title="derived properties schema")
2821
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2822
+ """
2823
+ information about a database source
2824
+ """
2825
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2826
+ """
2827
+ file source with the information inside
2828
+ """
2829
+ scaledHash: Optional[str] = None
2830
+ """
2831
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2832
+ """
2833
+ icsdId: Optional[int] = None
2834
+ """
2835
+ Corresponding ICSD id of the material
2836
+ """
2837
+ isNonPeriodic: Optional[bool] = None
2838
+ """
2839
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2840
+ """
2841
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema22]] = None
2842
+ field_id: Optional[str] = Field(None, alias="_id")
2843
+ """
2844
+ entity identity
2845
+ """
2846
+ slug: Optional[str] = None
2847
+ """
2848
+ entity slug
2849
+ """
2850
+ systemName: Optional[str] = None
2851
+ schemaVersion: Optional[str] = "2022.8.16"
2852
+ """
2853
+ entity's schema version. Used to distinct between different schemas.
2854
+ """
2855
+ name: Optional[str] = None
2856
+ """
2857
+ entity name
2858
+ """
2859
+ isDefault: Optional[bool] = False
2860
+ """
2861
+ Identifies that entity is defaultable
2862
+ """
2863
+ metadata: Optional[Dict[str, Any]] = None
2864
+
2865
+
2866
+ class VacuumConfigurationSchema9(BaseModel):
2867
+ direction: AxisEnum = Field(..., title="Axis Enum")
2868
+ """
2869
+ Enum for axis types
2870
+ """
2871
+ size: Optional[confloat(ge=0.0)] = 10
2872
+ """
2873
+ Size of the vacuum slab in angstroms
2874
+ """
2875
+ crystal: CrystalSchema22 = Field(..., title="Crystal Schema")
2876
+ """
2877
+ A crystal structure, referencing the base material schema
2878
+ """
2879
+
2880
+
2881
+ class TerraceDefectConfigurationSchema(BaseModel):
2882
+ stack_components: List[Union[SlabConfigurationSchema, MergeSchema, VacuumConfigurationSchema9]] = Field(
2883
+ ..., max_length=3, min_length=3
2884
+ )
2885
+ cut_direction: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
2886
+ """
2887
+ Miller indices [h, k, l] defining crystallographic planes
2888
+ """
2889
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2890
+ """
2891
+ Enum for axis types
2892
+ """