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