mat3ra-esse 2025.7.15.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 (85) 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/material/__init__.py +14 -14
  9. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/__init__.py +3 -0
  10. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/configuration.py +6039 -0
  11. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +3 -0
  12. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +6043 -0
  13. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/__init__.py +3 -0
  14. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/__init__.py +3 -0
  15. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/configuration.py +2116 -0
  16. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/base_configuration.py +1561 -0
  17. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +3 -0
  18. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +6039 -0
  19. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/__init__.py +3 -0
  20. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/configuration.py +2888 -0
  21. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/__init__.py +3 -0
  22. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/configuration.py +2892 -0
  23. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/__init__.py +3 -0
  24. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/base_configuration.py +544 -0
  25. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/interstitial.py +1099 -0
  26. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/substitutional.py +1099 -0
  27. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/vacancy.py +556 -0
  28. mat3ra/esse/models/materials_category/pristine_structures/three_dimensional/ideal_crystal.py +14 -14
  29. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanoribbon.py +1582 -0
  30. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanotape.py +1148 -0
  31. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab.py +78 -94
  32. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell.py +1147 -0
  33. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell_with_gap.py +1151 -0
  34. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/__init__.py +3 -0
  35. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/configuration.py +1232 -0
  36. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/__init__.py +3 -0
  37. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +16 -0
  38. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.py +527 -2
  39. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/point_defect_site.py +676 -0
  40. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_region.py +555 -0
  41. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_site.py +1576 -0
  42. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/crystal.py +14 -14
  43. mat3ra/esse/models/materials_category_components/entities/core/two_dimensional/vacuum.py +14 -14
  44. mat3ra/esse/models/materials_category_components/entities/core/zero_dimensional/vacancy.py +22 -0
  45. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/__init__.py +3 -0
  46. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_base.py +541 -0
  47. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines.py +545 -0
  48. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated.py +708 -0
  49. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/crystal_lattice_base.py +541 -0
  50. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.py +14 -14
  51. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_uniform.py +14 -14
  52. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/supercell.py +14 -14
  53. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers.py +4 -4
  54. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.py +4 -4
  55. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.py +4 -4
  56. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.py +18 -18
  57. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_stack_configuration.py +1561 -0
  58. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_unit_cell.py +74 -77
  59. mat3ra/esse/models/materials_category_components/operations/core/combinations/enums.py +13 -0
  60. mat3ra/esse/models/materials_category_components/operations/core/combinations/merge.py +9 -981
  61. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack.py +3 -947
  62. mat3ra/esse/models/materials_category_components/operations/core/modifications/perturb.py +538 -0
  63. mat3ra/esse/models/properties_directory/derived_properties.py +11 -11
  64. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  65. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  66. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  67. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
  68. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  69. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  70. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  71. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  72. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  73. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  74. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  75. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  76. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  77. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  78. mat3ra/esse/models/properties_directory/structural/basis/__init__.py +2 -2
  79. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +4 -4
  80. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  81. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/METADATA +1 -1
  82. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/RECORD +85 -44
  83. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/WHEEL +0 -0
  84. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/licenses/LICENSE.md +0 -0
  85. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.7.29.post0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,2888 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: materials_category/defective_structures/two_dimensional/island/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 Value63(Enum):
269
+ X = "X"
270
+ Vac = "Vac"
271
+
272
+
273
+ class AtomicElementSchema(BaseModel):
274
+ value: Union[Value, Value63]
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 Name224(Enum):
423
+ density = "density"
424
+
425
+
426
+ class Units91(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[Units91] = None
433
+ value: float
434
+
435
+
436
+ class Units92(Enum):
437
+ angstrom = "angstrom"
438
+
439
+
440
+ class ScalarSchema(BaseModel):
441
+ units: Optional[Units92] = None
442
+ value: float
443
+
444
+
445
+ class Name225(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 Name226(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 Name227(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 Name228(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 Name229(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 Name230(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: Name230
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 Value64(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 Value65(Enum):
818
+ X = "X"
819
+ Vac = "Vac"
820
+
821
+
822
+ class AtomicElementSchema31(BaseModel):
823
+ value: Union[Value64, Value65]
824
+ """
825
+ All elements, including extra elements
826
+ """
827
+ id: int
828
+ """
829
+ integer id of this entry
830
+ """
831
+
832
+
833
+ class BasisSchema29(BaseModel):
834
+ elements: List[AtomicElementSchema31] = 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 LatticeVectorsSchema28(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 LatticeUnitsSchema28(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 LatticeSchema28(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[LatticeVectorsSchema28] = Field(None, title="lattice vectors schema")
891
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
892
+ units: Optional[LatticeUnitsSchema28] = Field(
893
+ default_factory=lambda: LatticeUnitsSchema28.model_validate({"length": "angstrom", "angle": "degree"}),
894
+ title="Lattice units schema",
895
+ )
896
+
897
+
898
+ class Name231(Enum):
899
+ volume = "volume"
900
+
901
+
902
+ class Units93(Enum):
903
+ angstrom_3 = "angstrom^3"
904
+
905
+
906
+ class VolumeSchema28(BaseModel):
907
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
908
+ units: Optional[Units93] = None
909
+ value: float
910
+
911
+
912
+ class Name232(Enum):
913
+ density = "density"
914
+
915
+
916
+ class Units94(Enum):
917
+ g_cm_3 = "g/cm^3"
918
+
919
+
920
+ class DensitySchema28(BaseModel):
921
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
922
+ units: Optional[Units94] = None
923
+ value: float
924
+
925
+
926
+ class Units95(Enum):
927
+ angstrom = "angstrom"
928
+
929
+
930
+ class ScalarSchema29(BaseModel):
931
+ units: Optional[Units95] = None
932
+ value: float
933
+
934
+
935
+ class Name233(Enum):
936
+ symmetry = "symmetry"
937
+
938
+
939
+ class SymmetrySchema28(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[ScalarSchema29] = 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 Name234(Enum):
956
+ elemental_ratio = "elemental_ratio"
957
+
958
+
959
+ class ElementalRatio28(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 Name235(Enum):
969
+ p_norm = "p-norm"
970
+
971
+
972
+ class PNorm28(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 Name236(Enum):
982
+ inchi = "inchi"
983
+
984
+
985
+ class InChIRepresentationSchema28(BaseModel):
986
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
987
+ value: str
988
+
989
+
990
+ class Name237(Enum):
991
+ inchi_key = "inchi_key"
992
+
993
+
994
+ class InChIKeyRepresentationSchema28(BaseModel):
995
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
996
+ value: str
997
+
998
+
999
+ class DerivedPropertiesSchema28(
1000
+ RootModel[
1001
+ Union[
1002
+ VolumeSchema28,
1003
+ DensitySchema28,
1004
+ SymmetrySchema28,
1005
+ ElementalRatio28,
1006
+ PNorm28,
1007
+ InChIRepresentationSchema28,
1008
+ InChIKeyRepresentationSchema28,
1009
+ ]
1010
+ ]
1011
+ ):
1012
+ root: Union[
1013
+ VolumeSchema28,
1014
+ DensitySchema28,
1015
+ SymmetrySchema28,
1016
+ ElementalRatio28,
1017
+ PNorm28,
1018
+ InChIRepresentationSchema28,
1019
+ InChIKeyRepresentationSchema28,
1020
+ ] = Field(..., discriminator="name")
1021
+
1022
+
1023
+ class Name238(Enum):
1024
+ default = "default"
1025
+ atomsTooClose = "atomsTooClose"
1026
+ atomsOverlap = "atomsOverlap"
1027
+
1028
+
1029
+ class MaterialConsistencyCheckSchema28(BaseModel):
1030
+ name: Name238
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 CrystalSchema28(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: BasisSchema29 = Field(..., title="basis schema")
1058
+ lattice: LatticeSchema28 = Field(..., title="lattice schema")
1059
+ derivedProperties: Optional[List[DerivedPropertiesSchema28]] = 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[MaterialConsistencyCheckSchema28]] = 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: CrystalSchema28 = 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 TerminationSchema13(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 Value66(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 Value67(Enum):
1265
+ X = "X"
1266
+ Vac = "Vac"
1267
+
1268
+
1269
+ class AtomicElementSchema32(BaseModel):
1270
+ value: Union[Value66, Value67]
1271
+ """
1272
+ All elements, including extra elements
1273
+ """
1274
+ id: int
1275
+ """
1276
+ integer id of this entry
1277
+ """
1278
+
1279
+
1280
+ class BasisSchema30(BaseModel):
1281
+ elements: List[AtomicElementSchema32] = 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 LatticeVectorsSchema29(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 LatticeUnitsSchema29(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 LatticeSchema29(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[LatticeVectorsSchema29] = Field(None, title="lattice vectors schema")
1338
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1339
+ units: Optional[LatticeUnitsSchema29] = Field(
1340
+ default_factory=lambda: LatticeUnitsSchema29.model_validate({"length": "angstrom", "angle": "degree"}),
1341
+ title="Lattice units schema",
1342
+ )
1343
+
1344
+
1345
+ class Name239(Enum):
1346
+ volume = "volume"
1347
+
1348
+
1349
+ class Units96(Enum):
1350
+ angstrom_3 = "angstrom^3"
1351
+
1352
+
1353
+ class VolumeSchema29(BaseModel):
1354
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1355
+ units: Optional[Units96] = None
1356
+ value: float
1357
+
1358
+
1359
+ class Name240(Enum):
1360
+ density = "density"
1361
+
1362
+
1363
+ class Units97(Enum):
1364
+ g_cm_3 = "g/cm^3"
1365
+
1366
+
1367
+ class DensitySchema29(BaseModel):
1368
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1369
+ units: Optional[Units97] = None
1370
+ value: float
1371
+
1372
+
1373
+ class Units98(Enum):
1374
+ angstrom = "angstrom"
1375
+
1376
+
1377
+ class ScalarSchema30(BaseModel):
1378
+ units: Optional[Units98] = None
1379
+ value: float
1380
+
1381
+
1382
+ class Name241(Enum):
1383
+ symmetry = "symmetry"
1384
+
1385
+
1386
+ class SymmetrySchema29(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[ScalarSchema30] = 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 Name242(Enum):
1403
+ elemental_ratio = "elemental_ratio"
1404
+
1405
+
1406
+ class ElementalRatio29(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 Name243(Enum):
1416
+ p_norm = "p-norm"
1417
+
1418
+
1419
+ class PNorm29(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 Name244(Enum):
1429
+ inchi = "inchi"
1430
+
1431
+
1432
+ class InChIRepresentationSchema29(BaseModel):
1433
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1434
+ value: str
1435
+
1436
+
1437
+ class Name245(Enum):
1438
+ inchi_key = "inchi_key"
1439
+
1440
+
1441
+ class InChIKeyRepresentationSchema29(BaseModel):
1442
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1443
+ value: str
1444
+
1445
+
1446
+ class DerivedPropertiesSchema29(
1447
+ RootModel[
1448
+ Union[
1449
+ VolumeSchema29,
1450
+ DensitySchema29,
1451
+ SymmetrySchema29,
1452
+ ElementalRatio29,
1453
+ PNorm29,
1454
+ InChIRepresentationSchema29,
1455
+ InChIKeyRepresentationSchema29,
1456
+ ]
1457
+ ]
1458
+ ):
1459
+ root: Union[
1460
+ VolumeSchema29,
1461
+ DensitySchema29,
1462
+ SymmetrySchema29,
1463
+ ElementalRatio29,
1464
+ PNorm29,
1465
+ InChIRepresentationSchema29,
1466
+ InChIKeyRepresentationSchema29,
1467
+ ] = Field(..., discriminator="name")
1468
+
1469
+
1470
+ class Name246(Enum):
1471
+ default = "default"
1472
+ atomsTooClose = "atomsTooClose"
1473
+ atomsOverlap = "atomsOverlap"
1474
+
1475
+
1476
+ class MaterialConsistencyCheckSchema29(BaseModel):
1477
+ name: Name246
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 CrystalSchema29(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: BasisSchema30 = Field(..., title="basis schema")
1505
+ lattice: LatticeSchema29 = Field(..., title="lattice schema")
1506
+ derivedProperties: Optional[List[DerivedPropertiesSchema29]] = 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[MaterialConsistencyCheckSchema29]] = 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 AtomicLayersUniqueRepeatedSchema11(BaseModel):
1553
+ termination_top: TerminationSchema13 = 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: CrystalSchema29 = 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 Value68(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 Value69(Enum):
1697
+ X = "X"
1698
+ Vac = "Vac"
1699
+
1700
+
1701
+ class AtomicElementSchema33(BaseModel):
1702
+ value: Union[Value68, Value69]
1703
+ """
1704
+ All elements, including extra elements
1705
+ """
1706
+ id: int
1707
+ """
1708
+ integer id of this entry
1709
+ """
1710
+
1711
+
1712
+ class BasisSchema31(BaseModel):
1713
+ elements: List[AtomicElementSchema33] = 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 LatticeVectorsSchema30(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 LatticeUnitsSchema30(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 LatticeSchema30(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[LatticeVectorsSchema30] = Field(None, title="lattice vectors schema")
1770
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1771
+ units: Optional[LatticeUnitsSchema30] = Field(
1772
+ default_factory=lambda: LatticeUnitsSchema30.model_validate({"length": "angstrom", "angle": "degree"}),
1773
+ title="Lattice units schema",
1774
+ )
1775
+
1776
+
1777
+ class Name247(Enum):
1778
+ volume = "volume"
1779
+
1780
+
1781
+ class Units99(Enum):
1782
+ angstrom_3 = "angstrom^3"
1783
+
1784
+
1785
+ class VolumeSchema30(BaseModel):
1786
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1787
+ units: Optional[Units99] = None
1788
+ value: float
1789
+
1790
+
1791
+ class Name248(Enum):
1792
+ density = "density"
1793
+
1794
+
1795
+ class Units100(Enum):
1796
+ g_cm_3 = "g/cm^3"
1797
+
1798
+
1799
+ class DensitySchema30(BaseModel):
1800
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1801
+ units: Optional[Units100] = None
1802
+ value: float
1803
+
1804
+
1805
+ class Units101(Enum):
1806
+ angstrom = "angstrom"
1807
+
1808
+
1809
+ class ScalarSchema31(BaseModel):
1810
+ units: Optional[Units101] = None
1811
+ value: float
1812
+
1813
+
1814
+ class Name249(Enum):
1815
+ symmetry = "symmetry"
1816
+
1817
+
1818
+ class SymmetrySchema30(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[ScalarSchema31] = 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 Name250(Enum):
1835
+ elemental_ratio = "elemental_ratio"
1836
+
1837
+
1838
+ class ElementalRatio30(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 Name251(Enum):
1848
+ p_norm = "p-norm"
1849
+
1850
+
1851
+ class PNorm30(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 Name252(Enum):
1861
+ inchi = "inchi"
1862
+
1863
+
1864
+ class InChIRepresentationSchema30(BaseModel):
1865
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1866
+ value: str
1867
+
1868
+
1869
+ class Name253(Enum):
1870
+ inchi_key = "inchi_key"
1871
+
1872
+
1873
+ class InChIKeyRepresentationSchema30(BaseModel):
1874
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1875
+ value: str
1876
+
1877
+
1878
+ class DerivedPropertiesSchema30(
1879
+ RootModel[
1880
+ Union[
1881
+ VolumeSchema30,
1882
+ DensitySchema30,
1883
+ SymmetrySchema30,
1884
+ ElementalRatio30,
1885
+ PNorm30,
1886
+ InChIRepresentationSchema30,
1887
+ InChIKeyRepresentationSchema30,
1888
+ ]
1889
+ ]
1890
+ ):
1891
+ root: Union[
1892
+ VolumeSchema30,
1893
+ DensitySchema30,
1894
+ SymmetrySchema30,
1895
+ ElementalRatio30,
1896
+ PNorm30,
1897
+ InChIRepresentationSchema30,
1898
+ InChIKeyRepresentationSchema30,
1899
+ ] = Field(..., discriminator="name")
1900
+
1901
+
1902
+ class Name254(Enum):
1903
+ default = "default"
1904
+ atomsTooClose = "atomsTooClose"
1905
+ atomsOverlap = "atomsOverlap"
1906
+
1907
+
1908
+ class MaterialConsistencyCheckSchema30(BaseModel):
1909
+ name: Name254
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 CrystalSchema30(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: BasisSchema31 = Field(..., title="basis schema")
1937
+ lattice: LatticeSchema30 = Field(..., title="lattice schema")
1938
+ derivedProperties: Optional[List[DerivedPropertiesSchema30]] = 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[MaterialConsistencyCheckSchema30]] = 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 VacuumConfigurationSchema13(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: CrystalSchema30 = Field(..., title="Crystal Schema")
1994
+ """
1995
+ A crystal structure, referencing the base material schema
1996
+ """
1997
+
1998
+
1999
+ class SlabConfigurationSchema6(BaseModel):
2000
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema11, VacuumConfigurationSchema13]] = 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 Value70(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 Value71(Enum):
2131
+ X = "X"
2132
+ Vac = "Vac"
2133
+
2134
+
2135
+ class AtomicElementSchema34(BaseModel):
2136
+ value: Union[Value70, Value71]
2137
+ """
2138
+ All elements, including extra elements
2139
+ """
2140
+ id: int
2141
+ """
2142
+ integer id of this entry
2143
+ """
2144
+
2145
+
2146
+ class BasisSchema32(BaseModel):
2147
+ elements: List[AtomicElementSchema34] = 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 LatticeVectorsSchema31(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 LatticeUnitsSchema31(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 LatticeSchema31(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[LatticeVectorsSchema31] = Field(None, title="lattice vectors schema")
2204
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2205
+ units: Optional[LatticeUnitsSchema31] = Field(
2206
+ default_factory=lambda: LatticeUnitsSchema31.model_validate({"length": "angstrom", "angle": "degree"}),
2207
+ title="Lattice units schema",
2208
+ )
2209
+
2210
+
2211
+ class Name255(Enum):
2212
+ volume = "volume"
2213
+
2214
+
2215
+ class Units102(Enum):
2216
+ angstrom_3 = "angstrom^3"
2217
+
2218
+
2219
+ class VolumeSchema31(BaseModel):
2220
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2221
+ units: Optional[Units102] = None
2222
+ value: float
2223
+
2224
+
2225
+ class Name256(Enum):
2226
+ density = "density"
2227
+
2228
+
2229
+ class Units103(Enum):
2230
+ g_cm_3 = "g/cm^3"
2231
+
2232
+
2233
+ class DensitySchema31(BaseModel):
2234
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2235
+ units: Optional[Units103] = None
2236
+ value: float
2237
+
2238
+
2239
+ class Units104(Enum):
2240
+ angstrom = "angstrom"
2241
+
2242
+
2243
+ class ScalarSchema32(BaseModel):
2244
+ units: Optional[Units104] = None
2245
+ value: float
2246
+
2247
+
2248
+ class Name257(Enum):
2249
+ symmetry = "symmetry"
2250
+
2251
+
2252
+ class SymmetrySchema31(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[ScalarSchema32] = 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 Name258(Enum):
2269
+ elemental_ratio = "elemental_ratio"
2270
+
2271
+
2272
+ class ElementalRatio31(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 Name259(Enum):
2282
+ p_norm = "p-norm"
2283
+
2284
+
2285
+ class PNorm31(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 Name260(Enum):
2295
+ inchi = "inchi"
2296
+
2297
+
2298
+ class InChIRepresentationSchema31(BaseModel):
2299
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2300
+ value: str
2301
+
2302
+
2303
+ class Name261(Enum):
2304
+ inchi_key = "inchi_key"
2305
+
2306
+
2307
+ class InChIKeyRepresentationSchema31(BaseModel):
2308
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2309
+ value: str
2310
+
2311
+
2312
+ class DerivedPropertiesSchema31(
2313
+ RootModel[
2314
+ Union[
2315
+ VolumeSchema31,
2316
+ DensitySchema31,
2317
+ SymmetrySchema31,
2318
+ ElementalRatio31,
2319
+ PNorm31,
2320
+ InChIRepresentationSchema31,
2321
+ InChIKeyRepresentationSchema31,
2322
+ ]
2323
+ ]
2324
+ ):
2325
+ root: Union[
2326
+ VolumeSchema31,
2327
+ DensitySchema31,
2328
+ SymmetrySchema31,
2329
+ ElementalRatio31,
2330
+ PNorm31,
2331
+ InChIRepresentationSchema31,
2332
+ InChIKeyRepresentationSchema31,
2333
+ ] = Field(..., discriminator="name")
2334
+
2335
+
2336
+ class Name262(Enum):
2337
+ default = "default"
2338
+ atomsTooClose = "atomsTooClose"
2339
+ atomsOverlap = "atomsOverlap"
2340
+
2341
+
2342
+ class MaterialConsistencyCheckSchema31(BaseModel):
2343
+ name: Name262
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 CrystalSchema31(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: BasisSchema32 = Field(..., title="basis schema")
2371
+ lattice: LatticeSchema31 = Field(..., title="lattice schema")
2372
+ derivedProperties: Optional[List[DerivedPropertiesSchema31]] = 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[MaterialConsistencyCheckSchema31]] = 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: CrystalSchema31 = 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[SlabConfigurationSchema6, 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 Value72(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 Value73(Enum):
2579
+ X = "X"
2580
+ Vac = "Vac"
2581
+
2582
+
2583
+ class AtomicElementSchema35(BaseModel):
2584
+ value: Union[Value72, Value73]
2585
+ """
2586
+ All elements, including extra elements
2587
+ """
2588
+ id: int
2589
+ """
2590
+ integer id of this entry
2591
+ """
2592
+
2593
+
2594
+ class BasisSchema33(BaseModel):
2595
+ elements: List[AtomicElementSchema35] = 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 LatticeVectorsSchema32(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 LatticeUnitsSchema32(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 LatticeSchema32(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[LatticeVectorsSchema32] = Field(None, title="lattice vectors schema")
2652
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2653
+ units: Optional[LatticeUnitsSchema32] = Field(
2654
+ default_factory=lambda: LatticeUnitsSchema32.model_validate({"length": "angstrom", "angle": "degree"}),
2655
+ title="Lattice units schema",
2656
+ )
2657
+
2658
+
2659
+ class Name263(Enum):
2660
+ volume = "volume"
2661
+
2662
+
2663
+ class Units105(Enum):
2664
+ angstrom_3 = "angstrom^3"
2665
+
2666
+
2667
+ class VolumeSchema32(BaseModel):
2668
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2669
+ units: Optional[Units105] = None
2670
+ value: float
2671
+
2672
+
2673
+ class Name264(Enum):
2674
+ density = "density"
2675
+
2676
+
2677
+ class Units106(Enum):
2678
+ g_cm_3 = "g/cm^3"
2679
+
2680
+
2681
+ class DensitySchema32(BaseModel):
2682
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2683
+ units: Optional[Units106] = None
2684
+ value: float
2685
+
2686
+
2687
+ class Units107(Enum):
2688
+ angstrom = "angstrom"
2689
+
2690
+
2691
+ class ScalarSchema33(BaseModel):
2692
+ units: Optional[Units107] = None
2693
+ value: float
2694
+
2695
+
2696
+ class Name265(Enum):
2697
+ symmetry = "symmetry"
2698
+
2699
+
2700
+ class SymmetrySchema32(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[ScalarSchema33] = 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 Name266(Enum):
2717
+ elemental_ratio = "elemental_ratio"
2718
+
2719
+
2720
+ class ElementalRatio32(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 Name267(Enum):
2730
+ p_norm = "p-norm"
2731
+
2732
+
2733
+ class PNorm32(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 Name268(Enum):
2743
+ inchi = "inchi"
2744
+
2745
+
2746
+ class InChIRepresentationSchema32(BaseModel):
2747
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2748
+ value: str
2749
+
2750
+
2751
+ class Name269(Enum):
2752
+ inchi_key = "inchi_key"
2753
+
2754
+
2755
+ class InChIKeyRepresentationSchema32(BaseModel):
2756
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2757
+ value: str
2758
+
2759
+
2760
+ class DerivedPropertiesSchema32(
2761
+ RootModel[
2762
+ Union[
2763
+ VolumeSchema32,
2764
+ DensitySchema32,
2765
+ SymmetrySchema32,
2766
+ ElementalRatio32,
2767
+ PNorm32,
2768
+ InChIRepresentationSchema32,
2769
+ InChIKeyRepresentationSchema32,
2770
+ ]
2771
+ ]
2772
+ ):
2773
+ root: Union[
2774
+ VolumeSchema32,
2775
+ DensitySchema32,
2776
+ SymmetrySchema32,
2777
+ ElementalRatio32,
2778
+ PNorm32,
2779
+ InChIRepresentationSchema32,
2780
+ InChIKeyRepresentationSchema32,
2781
+ ] = Field(..., discriminator="name")
2782
+
2783
+
2784
+ class Name270(Enum):
2785
+ default = "default"
2786
+ atomsTooClose = "atomsTooClose"
2787
+ atomsOverlap = "atomsOverlap"
2788
+
2789
+
2790
+ class MaterialConsistencyCheckSchema32(BaseModel):
2791
+ name: Name270
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 CrystalSchema32(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: BasisSchema33 = Field(..., title="basis schema")
2819
+ lattice: LatticeSchema32 = Field(..., title="lattice schema")
2820
+ derivedProperties: Optional[List[DerivedPropertiesSchema32]] = 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[MaterialConsistencyCheckSchema32]] = 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 VacuumConfigurationSchema14(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: CrystalSchema32 = Field(..., title="Crystal Schema")
2876
+ """
2877
+ A crystal structure, referencing the base material schema
2878
+ """
2879
+
2880
+
2881
+ class IslandDefectConfigurationSchema(BaseModel):
2882
+ stack_components: List[Union[SlabConfigurationSchema, MergeSchema, VacuumConfigurationSchema14]] = Field(
2883
+ ..., max_length=3, min_length=3
2884
+ )
2885
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2886
+ """
2887
+ Enum for axis types
2888
+ """