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
@@ -5,992 +5,20 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  from enum import Enum
8
- from typing import Any, Dict, List, Literal, Optional, Union
8
+ from typing import List
9
9
 
10
- from pydantic import BaseModel, Field, RootModel, confloat, conint
10
+ from pydantic import BaseModel, Field
11
11
 
12
12
 
13
- class Value(Enum):
14
- H = "H"
15
- He = "He"
16
- Li = "Li"
17
- Be = "Be"
18
- B = "B"
19
- C = "C"
20
- N = "N"
21
- O = "O"
22
- F = "F"
23
- Ne = "Ne"
24
- Na = "Na"
25
- Mg = "Mg"
26
- Al = "Al"
27
- Si = "Si"
28
- P = "P"
29
- S = "S"
30
- Cl = "Cl"
31
- Ar = "Ar"
32
- K = "K"
33
- Ca = "Ca"
34
- Sc = "Sc"
35
- Ti = "Ti"
36
- V = "V"
37
- Cr = "Cr"
38
- Mn = "Mn"
39
- Fe = "Fe"
40
- Co = "Co"
41
- Ni = "Ni"
42
- Cu = "Cu"
43
- Zn = "Zn"
44
- Ga = "Ga"
45
- Ge = "Ge"
46
- As = "As"
47
- Se = "Se"
48
- Br = "Br"
49
- Kr = "Kr"
50
- Rb = "Rb"
51
- Sr = "Sr"
52
- Y = "Y"
53
- Zr = "Zr"
54
- Nb = "Nb"
55
- Mo = "Mo"
56
- Tc = "Tc"
57
- Ru = "Ru"
58
- Rh = "Rh"
59
- Pd = "Pd"
60
- Ag = "Ag"
61
- Cd = "Cd"
62
- In = "In"
63
- Sn = "Sn"
64
- Sb = "Sb"
65
- Te = "Te"
66
- I = "I"
67
- Xe = "Xe"
68
- Cs = "Cs"
69
- Ba = "Ba"
70
- La = "La"
71
- Ce = "Ce"
72
- Pr = "Pr"
73
- Nd = "Nd"
74
- Pm = "Pm"
75
- Sm = "Sm"
76
- Eu = "Eu"
77
- Gd = "Gd"
78
- Tb = "Tb"
79
- Dy = "Dy"
80
- Ho = "Ho"
81
- Er = "Er"
82
- Tm = "Tm"
83
- Yb = "Yb"
84
- Lu = "Lu"
85
- Hf = "Hf"
86
- Ta = "Ta"
87
- W = "W"
88
- Re = "Re"
89
- Os = "Os"
90
- Ir = "Ir"
91
- Pt = "Pt"
92
- Au = "Au"
93
- Hg = "Hg"
94
- Tl = "Tl"
95
- Pb = "Pb"
96
- Bi = "Bi"
97
- Po = "Po"
98
- At = "At"
99
- Rn = "Rn"
100
- Fr = "Fr"
101
- Ra = "Ra"
102
- Ac = "Ac"
103
- Th = "Th"
104
- Pa = "Pa"
105
- U = "U"
106
- Np = "Np"
107
- Pu = "Pu"
108
- Am = "Am"
109
- Cm = "Cm"
110
- Bk = "Bk"
111
- Cf = "Cf"
112
- Es = "Es"
113
- Fm = "Fm"
114
- Md = "Md"
115
- No = "No"
116
- Lr = "Lr"
117
- Rf = "Rf"
118
- Db = "Db"
119
- Sg = "Sg"
120
- Bh = "Bh"
121
- Hs = "Hs"
122
- Mt = "Mt"
123
- Ds = "Ds"
124
- Rg = "Rg"
125
- Cn = "Cn"
126
- Nh = "Nh"
127
- Fl = "Fl"
128
- Mc = "Mc"
129
- Lv = "Lv"
130
- Ts = "Ts"
131
- Og = "Og"
132
-
133
-
134
- class Value25(Enum):
135
- X = "X"
136
- Vac = "Vac"
137
-
138
-
139
- class AtomicElementSchema(BaseModel):
140
- value: Union[Value, Value25]
141
- """
142
- All elements, including extra elements
143
- """
144
- id: int
145
- """
146
- integer id of this entry
147
- """
148
-
149
-
150
- class AtomicCoordinateSchema(BaseModel):
151
- value: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
152
- """
153
- value of this entry
154
- """
155
- id: int
156
- """
157
- integer id of this entry
158
- """
159
-
160
-
161
- class BasisUnitsEnum(Enum):
162
- crystal = "crystal"
163
- cartesian = "cartesian"
164
-
165
-
166
- class AtomicLabelSchema(BaseModel):
167
- value: Union[Union[int, str, float], conint(ge=1, le=9)]
168
- """
169
- value of this entry
170
- """
171
- id: int
172
- """
173
- integer id of this entry
174
- """
175
-
176
-
177
- class BasisSchema(BaseModel):
178
- elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
179
- """
180
- atomic elements schema
181
- """
182
- coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
183
- """
184
- atomic coordinates schema
185
- """
186
- units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
187
- labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
188
- """
189
- atomic labels schema
190
- """
191
-
192
-
193
- class LatticeVectorsUnitsEnum(Enum):
194
- angstrom = "angstrom"
195
- bohr = "bohr"
196
-
197
-
198
- class LatticeVectorsSchema(BaseModel):
199
- a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
200
- b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
201
- c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
202
- alat: Optional[float] = 1
203
- """
204
- lattice parameter for fractional coordinates
205
- """
206
- units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
207
-
208
-
209
- class LatticeTypeEnum(Enum):
210
- CUB = "CUB"
211
- BCC = "BCC"
212
- FCC = "FCC"
213
- TET = "TET"
214
- MCL = "MCL"
215
- ORC = "ORC"
216
- ORCC = "ORCC"
217
- ORCF = "ORCF"
218
- ORCI = "ORCI"
219
- HEX = "HEX"
220
- BCT = "BCT"
221
- TRI = "TRI"
222
- MCLC = "MCLC"
223
- RHL = "RHL"
224
-
225
-
226
- class LatticeUnitsLengthEnum(Enum):
227
- angstrom = "angstrom"
228
- bohr = "bohr"
229
-
230
-
231
- class LatticeUnitsAngleEnum(Enum):
232
- degree = "degree"
233
- radian = "radian"
234
-
235
-
236
- class LatticeUnitsSchema(BaseModel):
237
- length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
238
- angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
239
-
240
-
241
- class LatticeSchema(BaseModel):
242
- a: float
243
- """
244
- length of the first lattice vector
245
- """
246
- b: float
247
- """
248
- length of the second lattice vector
249
- """
250
- c: float
251
- """
252
- length of the third lattice vector
253
- """
254
- alpha: float
255
- """
256
- angle between first and second lattice vector
257
- """
258
- beta: float
259
- """
260
- angle between second and third lattice vector
261
- """
262
- gamma: float
263
- """
264
- angle between first and third lattice vector
265
- """
266
- vectors: Optional[LatticeVectorsSchema] = Field(None, title="lattice vectors schema")
267
- type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
268
- units: Optional[LatticeUnitsSchema] = Field(
269
- default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
270
- title="Lattice units schema",
271
- )
272
-
273
-
274
- class Name(Enum):
275
- volume = "volume"
276
-
277
-
278
- class Units(Enum):
279
- angstrom_3 = "angstrom^3"
280
-
281
-
282
- class VolumeSchema(BaseModel):
283
- name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
284
- units: Optional[Units] = None
285
- value: float
286
-
287
-
288
- class Name101(Enum):
289
- density = "density"
290
-
291
-
292
- class Units57(Enum):
293
- g_cm_3 = "g/cm^3"
294
-
295
-
296
- class DensitySchema(BaseModel):
297
- name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
298
- units: Optional[Units57] = None
299
- value: float
300
-
301
-
302
- class Units58(Enum):
303
- angstrom = "angstrom"
304
-
305
-
306
- class ScalarSchema(BaseModel):
307
- units: Optional[Units58] = None
308
- value: float
309
-
310
-
311
- class Name102(Enum):
312
- symmetry = "symmetry"
313
-
314
-
315
- class SymmetrySchema(BaseModel):
316
- pointGroupSymbol: Optional[str] = None
317
- """
318
- point group symbol in Schoenflies notation
319
- """
320
- spaceGroupSymbol: Optional[str] = None
321
- """
322
- space group symbol in Hermann–Mauguin notation
323
- """
324
- tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema")
325
- """
326
- tolerance used for symmetry calculation
327
- """
328
- name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
329
-
330
-
331
- class Name103(Enum):
332
- elemental_ratio = "elemental_ratio"
333
-
334
-
335
- class ElementalRatio(BaseModel):
336
- name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
337
- value: confloat(ge=0.0, le=1.0)
338
- element: Optional[str] = None
339
- """
340
- the element this ratio is for
341
- """
342
-
343
-
344
- class Name104(Enum):
345
- p_norm = "p-norm"
346
-
347
-
348
- class PNorm(BaseModel):
349
- name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
350
- degree: Optional[int] = None
351
- """
352
- degree of the dimensionality of the norm
353
- """
354
- value: float
355
-
356
-
357
- class Name105(Enum):
358
- inchi = "inchi"
359
-
360
-
361
- class InChIRepresentationSchema(BaseModel):
362
- name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
363
- value: str
364
-
365
-
366
- class Name106(Enum):
367
- inchi_key = "inchi_key"
368
-
369
-
370
- class InChIKeyRepresentationSchema(BaseModel):
371
- name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
372
- value: str
373
-
374
-
375
- class DerivedPropertiesSchema(
376
- RootModel[
377
- Union[
378
- VolumeSchema,
379
- DensitySchema,
380
- SymmetrySchema,
381
- ElementalRatio,
382
- PNorm,
383
- InChIRepresentationSchema,
384
- InChIKeyRepresentationSchema,
385
- ]
386
- ]
387
- ):
388
- root: Union[
389
- VolumeSchema,
390
- DensitySchema,
391
- SymmetrySchema,
392
- ElementalRatio,
393
- PNorm,
394
- InChIRepresentationSchema,
395
- InChIKeyRepresentationSchema,
396
- ] = Field(..., discriminator="name")
397
-
398
-
399
- class DatabaseSourceSchema(BaseModel):
400
- id: Union[str, float]
401
- """
402
- ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32
403
- """
404
- source: str
405
- """
406
- Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.
407
- """
408
- origin: bool
409
- """
410
- Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).
411
- """
412
- data: Optional[Dict[str, Any]] = None
413
- """
414
- Original response from external source.
415
- """
416
- doi: Optional[str] = None
417
- """
418
- Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506
419
- """
420
- url: Optional[str] = None
421
- """
422
- The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers
423
- """
424
-
425
-
426
- class FileSourceSchema(BaseModel):
427
- extension: Optional[str] = None
428
- """
429
- file extension
430
- """
431
- filename: str
432
- """
433
- file name without extension
434
- """
435
- text: str
436
- """
437
- file content as raw text
438
- """
439
- hash: str
440
- """
441
- MD5 hash based on file content
442
- """
443
-
444
-
445
- class Name107(Enum):
446
- default = "default"
447
- atomsTooClose = "atomsTooClose"
448
- atomsOverlap = "atomsOverlap"
449
-
450
-
451
- class Severity(Enum):
452
- info = "info"
453
- warning = "warning"
454
- error = "error"
455
-
456
-
457
- class MaterialConsistencyCheckSchema(BaseModel):
458
- name: Name107
459
- """
460
- Name of the consistency check that is performed, which is listed in an enum.
461
- """
462
- key: str
463
- """
464
- Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
465
- """
466
- severity: Severity
467
- """
468
- Severity level of the problem, which is used in UI to differentiate.
469
- """
470
- message: str
471
- """
472
- Message generated by the consistency check describing the problem.
473
- """
474
-
475
-
476
- class CrystalSchema(BaseModel):
477
- formula: Optional[str] = None
478
- """
479
- reduced chemical formula
480
- """
481
- unitCellFormula: Optional[str] = None
482
- """
483
- chemical formula based on the number of atoms of each element in the supercell
484
- """
485
- basis: BasisSchema = Field(..., title="basis schema")
486
- lattice: LatticeSchema = Field(..., title="lattice schema")
487
- derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema")
488
- external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
489
- """
490
- information about a database source
491
- """
492
- src: Optional[FileSourceSchema] = Field(None, title="file source schema")
493
- """
494
- file source with the information inside
495
- """
496
- scaledHash: Optional[str] = None
497
- """
498
- Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
499
- """
500
- icsdId: Optional[int] = None
501
- """
502
- Corresponding ICSD id of the material
503
- """
504
- isNonPeriodic: Optional[bool] = None
505
- """
506
- Whether to work in the finite molecular picture (usually with atomic orbital basis)
507
- """
508
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None
509
- field_id: Optional[str] = Field(None, alias="_id")
510
- """
511
- entity identity
512
- """
513
- slug: Optional[str] = None
514
- """
515
- entity slug
516
- """
517
- systemName: Optional[str] = None
518
- schemaVersion: Optional[str] = "2022.8.16"
519
- """
520
- entity's schema version. Used to distinct between different schemas.
521
- """
522
- name: Optional[str] = None
523
- """
524
- entity name
525
- """
526
- isDefault: Optional[bool] = False
527
- """
528
- Identifies that entity is defaultable
529
- """
530
- metadata: Optional[Dict[str, Any]] = None
531
-
532
-
533
- class AxisEnum(Enum):
534
- x = "x"
535
- y = "y"
536
- z = "z"
537
-
538
-
539
- class Value26(Enum):
540
- H = "H"
541
- He = "He"
542
- Li = "Li"
543
- Be = "Be"
544
- B = "B"
545
- C = "C"
546
- N = "N"
547
- O = "O"
548
- F = "F"
549
- Ne = "Ne"
550
- Na = "Na"
551
- Mg = "Mg"
552
- Al = "Al"
553
- Si = "Si"
554
- P = "P"
555
- S = "S"
556
- Cl = "Cl"
557
- Ar = "Ar"
558
- K = "K"
559
- Ca = "Ca"
560
- Sc = "Sc"
561
- Ti = "Ti"
562
- V = "V"
563
- Cr = "Cr"
564
- Mn = "Mn"
565
- Fe = "Fe"
566
- Co = "Co"
567
- Ni = "Ni"
568
- Cu = "Cu"
569
- Zn = "Zn"
570
- Ga = "Ga"
571
- Ge = "Ge"
572
- As = "As"
573
- Se = "Se"
574
- Br = "Br"
575
- Kr = "Kr"
576
- Rb = "Rb"
577
- Sr = "Sr"
578
- Y = "Y"
579
- Zr = "Zr"
580
- Nb = "Nb"
581
- Mo = "Mo"
582
- Tc = "Tc"
583
- Ru = "Ru"
584
- Rh = "Rh"
585
- Pd = "Pd"
586
- Ag = "Ag"
587
- Cd = "Cd"
588
- In = "In"
589
- Sn = "Sn"
590
- Sb = "Sb"
591
- Te = "Te"
592
- I = "I"
593
- Xe = "Xe"
594
- Cs = "Cs"
595
- Ba = "Ba"
596
- La = "La"
597
- Ce = "Ce"
598
- Pr = "Pr"
599
- Nd = "Nd"
600
- Pm = "Pm"
601
- Sm = "Sm"
602
- Eu = "Eu"
603
- Gd = "Gd"
604
- Tb = "Tb"
605
- Dy = "Dy"
606
- Ho = "Ho"
607
- Er = "Er"
608
- Tm = "Tm"
609
- Yb = "Yb"
610
- Lu = "Lu"
611
- Hf = "Hf"
612
- Ta = "Ta"
613
- W = "W"
614
- Re = "Re"
615
- Os = "Os"
616
- Ir = "Ir"
617
- Pt = "Pt"
618
- Au = "Au"
619
- Hg = "Hg"
620
- Tl = "Tl"
621
- Pb = "Pb"
622
- Bi = "Bi"
623
- Po = "Po"
624
- At = "At"
625
- Rn = "Rn"
626
- Fr = "Fr"
627
- Ra = "Ra"
628
- Ac = "Ac"
629
- Th = "Th"
630
- Pa = "Pa"
631
- U = "U"
632
- Np = "Np"
633
- Pu = "Pu"
634
- Am = "Am"
635
- Cm = "Cm"
636
- Bk = "Bk"
637
- Cf = "Cf"
638
- Es = "Es"
639
- Fm = "Fm"
640
- Md = "Md"
641
- No = "No"
642
- Lr = "Lr"
643
- Rf = "Rf"
644
- Db = "Db"
645
- Sg = "Sg"
646
- Bh = "Bh"
647
- Hs = "Hs"
648
- Mt = "Mt"
649
- Ds = "Ds"
650
- Rg = "Rg"
651
- Cn = "Cn"
652
- Nh = "Nh"
653
- Fl = "Fl"
654
- Mc = "Mc"
655
- Lv = "Lv"
656
- Ts = "Ts"
657
- Og = "Og"
658
-
659
-
660
- class Value27(Enum):
661
- X = "X"
662
- Vac = "Vac"
663
-
664
-
665
- class AtomicElementSchema11(BaseModel):
666
- value: Union[Value26, Value27]
667
- """
668
- All elements, including extra elements
669
- """
670
- id: int
671
- """
672
- integer id of this entry
673
- """
674
-
675
-
676
- class BasisSchema9(BaseModel):
677
- elements: List[AtomicElementSchema11] = Field(..., title="atomic elements schema")
678
- """
679
- atomic elements schema
680
- """
681
- coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
682
- """
683
- atomic coordinates schema
684
- """
685
- units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
686
- labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
687
- """
688
- atomic labels schema
689
- """
690
-
691
-
692
- class LatticeVectorsSchema9(BaseModel):
693
- a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
694
- b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
695
- c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
696
- alat: Optional[float] = 1
697
- """
698
- lattice parameter for fractional coordinates
699
- """
700
- units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
701
-
702
-
703
- class LatticeUnitsSchema10(BaseModel):
704
- length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
705
- angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
706
-
707
-
708
- class LatticeSchema9(BaseModel):
709
- a: float
710
- """
711
- length of the first lattice vector
712
- """
713
- b: float
714
- """
715
- length of the second lattice vector
716
- """
717
- c: float
718
- """
719
- length of the third lattice vector
720
- """
721
- alpha: float
722
- """
723
- angle between first and second lattice vector
724
- """
725
- beta: float
726
- """
727
- angle between second and third lattice vector
728
- """
729
- gamma: float
730
- """
731
- angle between first and third lattice vector
732
- """
733
- vectors: Optional[LatticeVectorsSchema9] = Field(None, title="lattice vectors schema")
734
- type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
735
- units: Optional[LatticeUnitsSchema10] = Field(
736
- default_factory=lambda: LatticeUnitsSchema10.model_validate({"length": "angstrom", "angle": "degree"}),
737
- title="Lattice units schema",
738
- )
739
-
740
-
741
- class Name108(Enum):
742
- volume = "volume"
743
-
744
-
745
- class Units59(Enum):
746
- angstrom_3 = "angstrom^3"
747
-
748
-
749
- class VolumeSchema9(BaseModel):
750
- name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
751
- units: Optional[Units59] = None
752
- value: float
753
-
754
-
755
- class Name109(Enum):
756
- density = "density"
757
-
758
-
759
- class Units60(Enum):
760
- g_cm_3 = "g/cm^3"
761
-
762
-
763
- class DensitySchema10(BaseModel):
764
- name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
765
- units: Optional[Units60] = None
766
- value: float
767
-
768
-
769
- class Units61(Enum):
770
- angstrom = "angstrom"
771
-
772
-
773
- class ScalarSchema10(BaseModel):
774
- units: Optional[Units61] = None
775
- value: float
776
-
777
-
778
- class Name110(Enum):
779
- symmetry = "symmetry"
780
-
781
-
782
- class SymmetrySchema9(BaseModel):
783
- pointGroupSymbol: Optional[str] = None
784
- """
785
- point group symbol in Schoenflies notation
786
- """
787
- spaceGroupSymbol: Optional[str] = None
788
- """
789
- space group symbol in Hermann–Mauguin notation
790
- """
791
- tolerance: Optional[ScalarSchema10] = Field(None, title="scalar schema")
792
- """
793
- tolerance used for symmetry calculation
794
- """
795
- name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
796
-
797
-
798
- class Name111(Enum):
799
- elemental_ratio = "elemental_ratio"
800
-
801
-
802
- class ElementalRatio10(BaseModel):
803
- name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
804
- value: confloat(ge=0.0, le=1.0)
805
- element: Optional[str] = None
806
- """
807
- the element this ratio is for
808
- """
809
-
810
-
811
- class Name112(Enum):
812
- p_norm = "p-norm"
813
-
814
-
815
- class PNorm9(BaseModel):
816
- name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
817
- degree: Optional[int] = None
818
- """
819
- degree of the dimensionality of the norm
820
- """
821
- value: float
822
-
823
-
824
- class Name113(Enum):
825
- inchi = "inchi"
826
-
827
-
828
- class InChIRepresentationSchema10(BaseModel):
829
- name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
830
- value: str
831
-
832
-
833
- class Name114(Enum):
834
- inchi_key = "inchi_key"
835
-
836
-
837
- class InChIKeyRepresentationSchema10(BaseModel):
838
- name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
839
- value: str
840
-
841
-
842
- class DerivedPropertiesSchema10(
843
- RootModel[
844
- Union[
845
- VolumeSchema9,
846
- DensitySchema10,
847
- SymmetrySchema9,
848
- ElementalRatio10,
849
- PNorm9,
850
- InChIRepresentationSchema10,
851
- InChIKeyRepresentationSchema10,
852
- ]
853
- ]
854
- ):
855
- root: Union[
856
- VolumeSchema9,
857
- DensitySchema10,
858
- SymmetrySchema9,
859
- ElementalRatio10,
860
- PNorm9,
861
- InChIRepresentationSchema10,
862
- InChIKeyRepresentationSchema10,
863
- ] = Field(..., discriminator="name")
864
-
865
-
866
- class Name115(Enum):
867
- default = "default"
868
- atomsTooClose = "atomsTooClose"
869
- atomsOverlap = "atomsOverlap"
870
-
871
-
872
- class MaterialConsistencyCheckSchema9(BaseModel):
873
- name: Name115
874
- """
875
- Name of the consistency check that is performed, which is listed in an enum.
876
- """
877
- key: str
878
- """
879
- Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
880
- """
881
- severity: Severity
882
- """
883
- Severity level of the problem, which is used in UI to differentiate.
884
- """
885
- message: str
886
- """
887
- Message generated by the consistency check describing the problem.
888
- """
889
-
890
-
891
- class CrystalSchema6(BaseModel):
892
- formula: Optional[str] = None
893
- """
894
- reduced chemical formula
895
- """
896
- unitCellFormula: Optional[str] = None
897
- """
898
- chemical formula based on the number of atoms of each element in the supercell
899
- """
900
- basis: BasisSchema9 = Field(..., title="basis schema")
901
- lattice: LatticeSchema9 = Field(..., title="lattice schema")
902
- derivedProperties: Optional[List[DerivedPropertiesSchema10]] = Field(None, title="derived properties schema")
903
- external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
904
- """
905
- information about a database source
906
- """
907
- src: Optional[FileSourceSchema] = Field(None, title="file source schema")
908
- """
909
- file source with the information inside
910
- """
911
- scaledHash: Optional[str] = None
912
- """
913
- Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
914
- """
915
- icsdId: Optional[int] = None
916
- """
917
- Corresponding ICSD id of the material
918
- """
919
- isNonPeriodic: Optional[bool] = None
920
- """
921
- Whether to work in the finite molecular picture (usually with atomic orbital basis)
922
- """
923
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema9]] = None
924
- field_id: Optional[str] = Field(None, alias="_id")
925
- """
926
- entity identity
927
- """
928
- slug: Optional[str] = None
929
- """
930
- entity slug
931
- """
932
- systemName: Optional[str] = None
933
- schemaVersion: Optional[str] = "2022.8.16"
934
- """
935
- entity's schema version. Used to distinct between different schemas.
936
- """
937
- name: Optional[str] = None
938
- """
939
- entity name
940
- """
941
- isDefault: Optional[bool] = False
942
- """
943
- Identifies that entity is defaultable
944
- """
945
- metadata: Optional[Dict[str, Any]] = None
946
-
947
-
948
- class VacuumConfigurationSchema(BaseModel):
949
- direction: AxisEnum = Field(..., title="Axis Enum")
950
- """
951
- Enum for axis types
952
- """
953
- size: Optional[confloat(ge=0.0)] = 10
954
- """
955
- Size of the vacuum slab in angstroms
956
- """
957
- crystal: CrystalSchema6 = Field(..., title="Crystal Schema")
958
- """
959
- A crystal structure, referencing the base material schema
960
- """
961
-
962
-
963
- class CoordinateShapeEnum(Enum):
964
- cylinder = "cylinder"
965
- sphere = "sphere"
966
- box = "box"
967
- triangular_prism = "triangular_prism"
968
- plane = "plane"
969
-
970
-
971
- class BoxCoordinateConditionSchema(BaseModel):
972
- shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
973
- min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
974
- max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
975
-
976
-
977
- class VoidSchema(BaseModel):
978
- center_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
979
- shape: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
980
- """
981
- Combined schema for all coordinate condition types
982
- """
983
-
984
-
985
- class Method(Enum):
986
- add = "add"
987
- replace = "replace"
988
- yield_ = "yield"
13
+ class MergeMethodsEnum(Enum):
14
+ ADD = "ADD"
15
+ REPLACE = "REPLACE"
16
+ YIELD = "YIELD"
989
17
 
990
18
 
991
19
  class MergeSchema(BaseModel):
992
- merge_components: Optional[List[Union[CrystalSchema, VacuumConfigurationSchema, VoidSchema]]] = None
993
- method: Optional[Method] = None
20
+ merge_components: List
21
+ merge_method: MergeMethodsEnum = Field(..., title="Merge Methods Enum")
994
22
  """
995
- Method to merge components: add, subtract (when merging with void), replace (overwrite upon collision), or yield (keep previous upon collision)
23
+ Available methods for merging components
996
24
  """