mat3ra-esse 2025.5.17.post1__py3-none-any.whl → 2025.6.5.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 (125) 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/apse/materials/builders/slab/pymatgen/parameters.py +3 -3
  5. mat3ra/esse/models/coordinates_shape_enum.py +15 -0
  6. mat3ra/esse/models/core/primitive/array_of_3_integers.py +13 -0
  7. mat3ra/esse/models/core/reusable/axis_enum.py +13 -0
  8. mat3ra/esse/models/core/reusable/coordinate_conditions/__init__.py +31 -0
  9. mat3ra/esse/models/core/reusable/coordinate_conditions/base.py +21 -0
  10. mat3ra/esse/models/core/reusable/coordinate_conditions/box.py +24 -0
  11. mat3ra/esse/models/core/reusable/coordinate_conditions/cylinder.py +26 -0
  12. mat3ra/esse/models/core/reusable/coordinate_conditions/enum.py +15 -0
  13. mat3ra/esse/models/core/reusable/coordinate_conditions/plane.py +24 -0
  14. mat3ra/esse/models/core/reusable/coordinate_conditions/sphere.py +24 -0
  15. mat3ra/esse/models/core/reusable/coordinate_conditions/triangular_prism.py +27 -0
  16. mat3ra/esse/models/core/reusable/energy.py +2 -2
  17. mat3ra/esse/models/element.py +6 -6
  18. mat3ra/esse/models/material/__init__.py +14 -14
  19. mat3ra/esse/models/material/reusable/coordinate_conditions/base.py +21 -0
  20. mat3ra/esse/models/material/reusable/coordinate_conditions/box.py +24 -0
  21. mat3ra/esse/models/material/reusable/coordinate_conditions/cylinder.py +26 -0
  22. mat3ra/esse/models/material/reusable/coordinate_conditions/plane.py +24 -0
  23. mat3ra/esse/models/material/reusable/coordinate_conditions/sphere.py +24 -0
  24. mat3ra/esse/models/material/reusable/coordinate_conditions/triangular_prism.py +27 -0
  25. mat3ra/esse/models/material/reusable/slab/slab_configuration_with_termination.py +589 -0
  26. mat3ra/esse/models/material/reusable/slab/slab_with_termination.py +593 -0
  27. mat3ra/esse/models/material/reusable/slab/two_slabs_stack.py +618 -0
  28. mat3ra/esse/models/material/reusable/slab_configuration_with_termination.py +712 -0
  29. mat3ra/esse/models/material/reusable/stack/slab_configuration_with_termination.py +593 -0
  30. mat3ra/esse/models/material/reusable/stack/slab_in_stack.py +720 -0
  31. mat3ra/esse/models/material/reusable/stack/stack_of_slabs.py +737 -0
  32. mat3ra/esse/models/material/reusable/stack/stack_of_two_slabs.py +737 -0
  33. mat3ra/esse/models/material/reusable/supercell/supercell_matrix_2d.py +25 -0
  34. mat3ra/esse/models/material/reusable/supercell/supercell_matrix_3d.py +27 -0
  35. mat3ra/esse/models/materials_category/defects/by_host/two_dimensional/adatom/configuration.py +14 -14
  36. mat3ra/esse/models/materials_category/defects/by_host/two_dimensional/layered/configuration.py +14 -14
  37. mat3ra/esse/models/materials_category/defects/by_host/two_dimensional/point/configuration.py +14 -14
  38. mat3ra/esse/models/materials_category/defects/configuration.py +14 -14
  39. mat3ra/esse/models/materials_category/defects/one_dimensional/terrace/configuration.py +14 -14
  40. mat3ra/esse/models/materials_category/defects/{zero_dimensional/complex/pair.py → two_dimensional/grain_boundary_plane/configuration.py} +163 -497
  41. mat3ra/esse/models/materials_category/defects/two_dimensional/island/condition_json.py +28 -0
  42. mat3ra/esse/models/materials_category/defects/two_dimensional/island/configuration.py +163 -48
  43. mat3ra/esse/models/materials_category/defects/zero_dimensional/complex/pair/configuration.py +130 -130
  44. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/configuration.py +14 -14
  45. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/interstitial/configuration.py +14 -14
  46. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/substitution/configuration.py +14 -14
  47. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/vacancy/configuration.py +14 -14
  48. mat3ra/esse/models/materials_category/multi_material/interfaces/configuration.py +737 -0
  49. mat3ra/esse/models/materials_category/{defects/slab/configuration.py → pristine_structures/three_dimensional/ideal_crystal.py} +142 -24
  50. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab.py +730 -0
  51. mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py +17 -21
  52. mat3ra/esse/models/materials_category_components/entities/auxiliary/three_dimensional/__init__.py +3 -0
  53. mat3ra/esse/models/materials_category_components/entities/auxiliary/three_dimensional/supercell_matrix_3d.py +27 -0
  54. mat3ra/esse/models/materials_category_components/entities/auxiliary/two_dimensional/__init__.py +3 -0
  55. mat3ra/esse/models/materials_category_components/entities/auxiliary/two_dimensional/miller_indices.py +16 -0
  56. mat3ra/esse/models/materials_category_components/entities/auxiliary/two_dimensional/supercell_matrix_2d.py +25 -0
  57. mat3ra/esse/models/materials_category_components/entities/auxiliary/two_dimensional/termination.py +144 -0
  58. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/__init__.py +3 -0
  59. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.py +13 -0
  60. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/__init__.py +3 -0
  61. mat3ra/esse/models/{materials_category/defects/zero_dimensional/slab/configuration.py → materials_category_components/entities/core/three_dimensional/crystal.py} +142 -46
  62. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/void.py +32 -0
  63. mat3ra/esse/models/materials_category_components/entities/core/two_dimensional/__init__.py +3 -0
  64. mat3ra/esse/models/materials_category_components/entities/core/two_dimensional/vacuum.py +27 -0
  65. mat3ra/esse/models/materials_category_components/entities/core/zero_dimensional/__init__.py +3 -0
  66. mat3ra/esse/models/materials_category_components/entities/core/zero_dimensional/atom.py +134 -0
  67. mat3ra/esse/models/materials_category_components/entities/reusable/__init__.py +3 -0
  68. mat3ra/esse/models/materials_category_components/entities/reusable/repetitions.py +25 -0
  69. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/__init__.py +3 -0
  70. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.py +544 -0
  71. mat3ra/esse/models/{materials_category/defects/zero_dimensional/adatom/base_configuration.py → materials_category_components/entities/reusable/three_dimensional/strained_uniform.py} +147 -24
  72. mat3ra/esse/models/{materials_category/defects/zero_dimensional/adatom/configuration.py → materials_category_components/entities/reusable/three_dimensional/supercell.py} +150 -26
  73. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/__init__.py +3 -0
  74. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers.py +683 -0
  75. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.py +683 -0
  76. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.py +687 -0
  77. mat3ra/esse/models/{materials_category/defects/by_host/two_dimensional/configuration.py → materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.py} +23 -28
  78. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_unit_cell.py +717 -0
  79. mat3ra/esse/models/materials_category_components/operations/core/combinations/__init__.py +3 -0
  80. mat3ra/esse/models/materials_category_components/operations/core/combinations/merge.py +583 -0
  81. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack.py +555 -0
  82. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack_component.py +554 -0
  83. mat3ra/esse/models/materials_category_components/operations/core/modifications/__init__.py +3 -0
  84. mat3ra/esse/models/materials_category_components/operations/core/modifications/repeat.py +27 -0
  85. mat3ra/esse/models/materials_category_components/operations/core/modifications/strain.py +19 -0
  86. mat3ra/esse/models/properties_directory/derived_properties.py +11 -11
  87. mat3ra/esse/models/properties_directory/non_scalar/average_potential_profile.py +2 -2
  88. mat3ra/esse/models/properties_directory/non_scalar/band_structure.py +2 -2
  89. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  90. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  91. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  92. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
  93. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  94. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  95. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  96. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  97. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  98. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  99. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  100. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  101. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  102. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  103. mat3ra/esse/models/properties_directory/structural/basis/__init__.py +2 -2
  104. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +4 -4
  105. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  106. {mat3ra_esse-2025.5.17.post1.dist-info → mat3ra_esse-2025.6.5.post0.dist-info}/METADATA +1 -1
  107. {mat3ra_esse-2025.5.17.post1.dist-info → mat3ra_esse-2025.6.5.post0.dist-info}/RECORD +117 -65
  108. {mat3ra_esse-2025.5.17.post1.dist-info → mat3ra_esse-2025.6.5.post0.dist-info}/WHEEL +1 -1
  109. mat3ra/esse/models/materials_category/defects/enums/atom_placement_method.py +0 -22
  110. mat3ra/esse/models/materials_category/defects/enums/complex_defect_type.py +0 -18
  111. mat3ra/esse/models/materials_category/defects/enums/coordinates_shape.py +0 -21
  112. mat3ra/esse/models/materials_category/defects/enums/slab_defect_type.py +0 -19
  113. mat3ra/esse/models/materials_category/defects/enums.py +0 -13
  114. mat3ra/esse/models/materials_category/defects/two_dimensional/slab_grain_boundary/configuration.py +0 -1105
  115. mat3ra/esse/models/materials_category/defects/zero_dimensional/defect_pair/configuration.py +0 -1026
  116. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/base_configuration.py +0 -30
  117. /mat3ra/esse/models/{materials_category/defects/by_host/two_dimensional → material/reusable/coordinate_conditions}/__init__.py +0 -0
  118. /mat3ra/esse/models/{materials_category/defects/slab → material/reusable/stack}/__init__.py +0 -0
  119. /mat3ra/esse/models/{materials_category/defects/two_dimensional/slab_grain_boundary → material/reusable/supercell}/__init__.py +0 -0
  120. /mat3ra/esse/models/materials_category/defects/{zero_dimensional/adatom → two_dimensional/grain_boundary_plane}/__init__.py +0 -0
  121. /mat3ra/esse/models/materials_category/{defects/zero_dimensional/complex → multi_material/interfaces}/__init__.py +0 -0
  122. /mat3ra/esse/models/materials_category/{defects/zero_dimensional/defect_pair → pristine_structures/three_dimensional}/__init__.py +0 -0
  123. /mat3ra/esse/models/materials_category/{defects/zero_dimensional/slab → pristine_structures/two_dimensional}/__init__.py +0 -0
  124. {mat3ra_esse-2025.5.17.post1.dist-info → mat3ra_esse-2025.6.5.post0.dist-info}/licenses/LICENSE.md +0 -0
  125. {mat3ra_esse-2025.5.17.post1.dist-info → mat3ra_esse-2025.6.5.post0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: materials_category/defects/zero_dimensional/complex/pair.json
2
+ # filename: materials_category/defects/two_dimensional/grain_boundary_plane/configuration.json
3
3
  # version: 0.28.5
4
4
 
5
5
  from __future__ import annotations
@@ -7,128 +7,13 @@ from __future__ import annotations
7
7
  from enum import Enum
8
8
  from typing import Any, Dict, List, Literal, Optional, Union
9
9
 
10
- from pydantic import BaseModel, Field, RootModel, confloat, conint
10
+ from pydantic import BaseModel, Field, RootModel, confloat, conint, constr
11
11
 
12
12
 
13
- class ChemicalElement(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"
13
+ class AxisEnum(Enum):
14
+ x = "x"
15
+ y = "y"
16
+ z = "z"
132
17
 
133
18
 
134
19
  class Value(Enum):
@@ -252,13 +137,13 @@ class Value(Enum):
252
137
  Og = "Og"
253
138
 
254
139
 
255
- class Value29(Enum):
140
+ class Value33(Enum):
256
141
  X = "X"
257
142
  Vac = "Vac"
258
143
 
259
144
 
260
145
  class AtomicElementSchema(BaseModel):
261
- value: Union[Value, Value29]
146
+ value: Union[Value, Value33]
262
147
  """
263
148
  All elements, including extra elements
264
149
  """
@@ -406,30 +291,30 @@ class VolumeSchema(BaseModel):
406
291
  value: float
407
292
 
408
293
 
409
- class Name123(Enum):
294
+ class Name104(Enum):
410
295
  density = "density"
411
296
 
412
297
 
413
- class Units63(Enum):
298
+ class Units46(Enum):
414
299
  g_cm_3 = "g/cm^3"
415
300
 
416
301
 
417
302
  class DensitySchema(BaseModel):
418
303
  name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
419
- units: Optional[Units63] = None
304
+ units: Optional[Units46] = None
420
305
  value: float
421
306
 
422
307
 
423
- class Units64(Enum):
308
+ class Units47(Enum):
424
309
  angstrom = "angstrom"
425
310
 
426
311
 
427
312
  class ScalarSchema(BaseModel):
428
- units: Optional[Units64] = None
313
+ units: Optional[Units47] = None
429
314
  value: float
430
315
 
431
316
 
432
- class Name124(Enum):
317
+ class Name105(Enum):
433
318
  symmetry = "symmetry"
434
319
 
435
320
 
@@ -449,7 +334,7 @@ class SymmetrySchema(BaseModel):
449
334
  name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
450
335
 
451
336
 
452
- class Name125(Enum):
337
+ class Name106(Enum):
453
338
  elemental_ratio = "elemental_ratio"
454
339
 
455
340
 
@@ -462,7 +347,7 @@ class ElementalRatio(BaseModel):
462
347
  """
463
348
 
464
349
 
465
- class Name126(Enum):
350
+ class Name107(Enum):
466
351
  p_norm = "p-norm"
467
352
 
468
353
 
@@ -475,7 +360,7 @@ class PNorm(BaseModel):
475
360
  value: float
476
361
 
477
362
 
478
- class Name127(Enum):
363
+ class Name108(Enum):
479
364
  inchi = "inchi"
480
365
 
481
366
 
@@ -484,7 +369,7 @@ class InChIRepresentationSchema(BaseModel):
484
369
  value: str
485
370
 
486
371
 
487
- class Name128(Enum):
372
+ class Name109(Enum):
488
373
  inchi_key = "inchi_key"
489
374
 
490
375
 
@@ -563,7 +448,7 @@ class FileSourceSchema(BaseModel):
563
448
  """
564
449
 
565
450
 
566
- class Name129(Enum):
451
+ class Name110(Enum):
567
452
  default = "default"
568
453
  atomsTooClose = "atomsTooClose"
569
454
  atomsOverlap = "atomsOverlap"
@@ -576,7 +461,7 @@ class Severity(Enum):
576
461
 
577
462
 
578
463
  class MaterialConsistencyCheckSchema(BaseModel):
579
- name: Name129
464
+ name: Name110
580
465
  """
581
466
  Name of the consistency check that is performed, which is listed in an enum.
582
467
  """
@@ -651,28 +536,44 @@ class MaterialSchema(BaseModel):
651
536
  metadata: Optional[Dict[str, Any]] = None
652
537
 
653
538
 
654
- class PointDefectConfigurationSchema(BaseModel):
655
- type: str
539
+ class SupercellMatrix2DSchemaItem(RootModel[List[int]]):
540
+ root: List[int]
541
+
542
+
543
+ class SlabConfigurationSchema(BaseModel):
544
+ bulk: Optional[MaterialSchema] = Field(None, title="material schema")
545
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
546
+ """
547
+ Miller indices for crystallographic plane designation
656
548
  """
657
- The type of point defect
549
+ number_of_layers: Optional[conint(ge=1)] = Field(1, title="Number of Layers Schema")
658
550
  """
659
- coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
660
- chemical_element: Optional[ChemicalElement] = None
661
- use_cartesian_coordinates: Optional[bool] = False
551
+ Number of atomic layers in a structural component
662
552
  """
663
- Whether coordinates are in cartesian rather than fractional coordinates
553
+ vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Thickness Schema")
664
554
  """
665
- host: Optional[MaterialSchema] = None
555
+ Vacuum thickness in Angstroms
666
556
  """
667
- The base host for the defect
557
+ xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field(
558
+ default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]],
559
+ max_length=2,
560
+ min_length=2,
561
+ title="Supercell Matrix 2D Schema",
562
+ )
668
563
  """
669
- isExternal: Optional[bool] = False
564
+ Supercell matrix for xy plane transformations
670
565
  """
671
- Whether the defect is external to the host material
566
+ use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell")
567
+ """
568
+ Whether to use conventional cell when generating the slab.
569
+ """
570
+ use_orthogonal_z: Optional[bool] = Field(True, title="Use Orthogonal Z")
571
+ """
572
+ Whether to make vector c orthogonal to ab plane for the slab cell.
672
573
  """
673
574
 
674
575
 
675
- class Value30(Enum):
576
+ class ChemicalElements(Enum):
676
577
  H = "H"
677
578
  He = "He"
678
579
  Li = "Li"
@@ -793,316 +694,20 @@ class Value30(Enum):
793
694
  Og = "Og"
794
695
 
795
696
 
796
- class Value31(Enum):
797
- X = "X"
798
- Vac = "Vac"
799
-
800
-
801
- class AtomicElementSchema13(BaseModel):
802
- value: Union[Value30, Value31]
803
- """
804
- All elements, including extra elements
805
- """
806
- id: int
807
- """
808
- integer id of this entry
809
- """
810
-
811
-
812
- class BasisSchema11(BaseModel):
813
- elements: List[AtomicElementSchema13] = Field(..., title="atomic elements schema")
814
- """
815
- atomic elements schema
816
- """
817
- coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
818
- """
819
- atomic coordinates schema
820
- """
821
- units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
822
- labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
823
- """
824
- atomic labels schema
825
- """
826
-
827
-
828
- class LatticeVectorsSchema11(BaseModel):
829
- a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
830
- b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
831
- c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
832
- alat: Optional[float] = 1
833
- """
834
- lattice parameter for fractional coordinates
835
- """
836
- units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
837
-
838
-
839
- class LatticeUnitsSchema12(BaseModel):
840
- length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
841
- angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
842
-
843
-
844
- class LatticeSchema11(BaseModel):
845
- a: float
846
- """
847
- length of the first lattice vector
848
- """
849
- b: float
850
- """
851
- length of the second lattice vector
852
- """
853
- c: float
854
- """
855
- length of the third lattice vector
856
- """
857
- alpha: float
858
- """
859
- angle between first and second lattice vector
860
- """
861
- beta: float
862
- """
863
- angle between second and third lattice vector
864
- """
865
- gamma: float
866
- """
867
- angle between first and third lattice vector
868
- """
869
- vectors: Optional[LatticeVectorsSchema11] = Field(None, title="lattice vectors schema")
870
- type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
871
- units: Optional[LatticeUnitsSchema12] = Field(
872
- default_factory=lambda: LatticeUnitsSchema12.model_validate({"length": "angstrom", "angle": "degree"}),
873
- title="Lattice units schema",
697
+ class TerminationSchema(BaseModel):
698
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^[A-Z][a-z]?([A-Z][a-z]?)*$")] = Field(
699
+ ..., title="Chemical Elements"
874
700
  )
875
-
876
-
877
- class Name130(Enum):
878
- volume = "volume"
879
-
880
-
881
- class Units65(Enum):
882
- angstrom_3 = "angstrom^3"
883
-
884
-
885
- class VolumeSchema11(BaseModel):
886
- name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
887
- units: Optional[Units65] = None
888
- value: float
889
-
890
-
891
- class Name131(Enum):
892
- density = "density"
893
-
894
-
895
- class Units66(Enum):
896
- g_cm_3 = "g/cm^3"
897
-
898
-
899
- class DensitySchema12(BaseModel):
900
- name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
901
- units: Optional[Units66] = None
902
- value: float
903
-
904
-
905
- class Units67(Enum):
906
- angstrom = "angstrom"
907
-
908
-
909
- class ScalarSchema12(BaseModel):
910
- units: Optional[Units67] = None
911
- value: float
912
-
913
-
914
- class Name132(Enum):
915
- symmetry = "symmetry"
916
-
917
-
918
- class SymmetrySchema11(BaseModel):
919
- pointGroupSymbol: Optional[str] = None
920
- """
921
- point group symbol in Schoenflies notation
922
- """
923
- spaceGroupSymbol: Optional[str] = None
924
- """
925
- space group symbol in Hermann–Mauguin notation
926
- """
927
- tolerance: Optional[ScalarSchema12] = Field(None, title="scalar schema")
928
- """
929
- tolerance used for symmetry calculation
930
- """
931
- name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
932
-
933
-
934
- class Name133(Enum):
935
- elemental_ratio = "elemental_ratio"
936
-
937
-
938
- class ElementalRatio12(BaseModel):
939
- name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
940
- value: confloat(ge=0.0, le=1.0)
941
- element: Optional[str] = None
942
- """
943
- the element this ratio is for
944
- """
945
-
946
-
947
- class Name134(Enum):
948
- p_norm = "p-norm"
949
-
950
-
951
- class PNorm12(BaseModel):
952
- name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
953
- degree: Optional[int] = None
954
- """
955
- degree of the dimensionality of the norm
956
- """
957
- value: float
958
-
959
-
960
- class Name135(Enum):
961
- inchi = "inchi"
962
-
963
-
964
- class InChIRepresentationSchema12(BaseModel):
965
- name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
966
- value: str
967
-
968
-
969
- class Name136(Enum):
970
- inchi_key = "inchi_key"
971
-
972
-
973
- class InChIKeyRepresentationSchema12(BaseModel):
974
- name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
975
- value: str
976
-
977
-
978
- class DerivedPropertiesSchema12(
979
- RootModel[
980
- Union[
981
- VolumeSchema11,
982
- DensitySchema12,
983
- SymmetrySchema11,
984
- ElementalRatio12,
985
- PNorm12,
986
- InChIRepresentationSchema12,
987
- InChIKeyRepresentationSchema12,
988
- ]
989
- ]
990
- ):
991
- root: Union[
992
- VolumeSchema11,
993
- DensitySchema12,
994
- SymmetrySchema11,
995
- ElementalRatio12,
996
- PNorm12,
997
- InChIRepresentationSchema12,
998
- InChIKeyRepresentationSchema12,
999
- ] = Field(..., discriminator="name")
1000
-
1001
-
1002
- class Name137(Enum):
1003
- default = "default"
1004
- atomsTooClose = "atomsTooClose"
1005
- atomsOverlap = "atomsOverlap"
1006
-
1007
-
1008
- class MaterialConsistencyCheckSchema11(BaseModel):
1009
- name: Name137
1010
- """
1011
- Name of the consistency check that is performed, which is listed in an enum.
1012
- """
1013
- key: str
1014
- """
1015
- Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1016
701
  """
1017
- severity: Severity
1018
- """
1019
- Severity level of the problem, which is used in UI to differentiate.
1020
- """
1021
- message: str
1022
- """
1023
- Message generated by the consistency check describing the problem.
1024
- """
1025
-
1026
-
1027
- class MaterialSchema10(BaseModel):
1028
- formula: Optional[str] = None
1029
- """
1030
- reduced chemical formula
1031
- """
1032
- unitCellFormula: Optional[str] = None
1033
- """
1034
- chemical formula based on the number of atoms of each element in the supercell
1035
- """
1036
- basis: BasisSchema11 = Field(..., title="basis schema")
1037
- lattice: LatticeSchema11 = Field(..., title="lattice schema")
1038
- derivedProperties: Optional[List[DerivedPropertiesSchema12]] = Field(None, title="derived properties schema")
1039
- external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1040
- """
1041
- information about a database source
1042
- """
1043
- src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1044
- """
1045
- file source with the information inside
1046
- """
1047
- scaledHash: Optional[str] = None
1048
- """
1049
- Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1050
- """
1051
- icsdId: Optional[int] = None
1052
- """
1053
- Corresponding ICSD id of the material
1054
- """
1055
- isNonPeriodic: Optional[bool] = None
1056
- """
1057
- Whether to work in the finite molecular picture (usually with atomic orbital basis)
1058
- """
1059
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema11]] = None
1060
- field_id: Optional[str] = Field(None, alias="_id")
1061
- """
1062
- entity identity
1063
- """
1064
- slug: Optional[str] = None
1065
- """
1066
- entity slug
1067
- """
1068
- systemName: Optional[str] = None
1069
- schemaVersion: Optional[str] = "2022.8.16"
1070
- """
1071
- entity's schema version. Used to distinct between different schemas.
1072
- """
1073
- name: Optional[str] = None
702
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
1074
703
  """
1075
- entity name
704
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
1076
705
  """
1077
- isDefault: Optional[bool] = False
1078
- """
1079
- Identifies that entity is defaultable
706
+ Space group symmetry designation for the termination
1080
707
  """
1081
- metadata: Optional[Dict[str, Any]] = None
1082
708
 
1083
709
 
1084
- class PointDefectConfigurationSchema2(BaseModel):
1085
- type: str
1086
- """
1087
- The type of point defect
1088
- """
1089
- coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
1090
- chemical_element: Optional[ChemicalElement] = None
1091
- use_cartesian_coordinates: Optional[bool] = False
1092
- """
1093
- Whether coordinates are in cartesian rather than fractional coordinates
1094
- """
1095
- host: Optional[MaterialSchema10] = None
1096
- """
1097
- The base host for the defect
1098
- """
1099
- isExternal: Optional[bool] = False
1100
- """
1101
- Whether the defect is external to the host material
1102
- """
1103
-
1104
-
1105
- class Value32(Enum):
710
+ class Value34(Enum):
1106
711
  H = "H"
1107
712
  He = "He"
1108
713
  Li = "Li"
@@ -1223,13 +828,13 @@ class Value32(Enum):
1223
828
  Og = "Og"
1224
829
 
1225
830
 
1226
- class Value33(Enum):
831
+ class Value35(Enum):
1227
832
  X = "X"
1228
833
  Vac = "Vac"
1229
834
 
1230
835
 
1231
- class AtomicElementSchema14(BaseModel):
1232
- value: Union[Value32, Value33]
836
+ class AtomicElementSchema16(BaseModel):
837
+ value: Union[Value34, Value35]
1233
838
  """
1234
839
  All elements, including extra elements
1235
840
  """
@@ -1239,8 +844,8 @@ class AtomicElementSchema14(BaseModel):
1239
844
  """
1240
845
 
1241
846
 
1242
- class BasisSchema12(BaseModel):
1243
- elements: List[AtomicElementSchema14] = Field(..., title="atomic elements schema")
847
+ class BasisSchema14(BaseModel):
848
+ elements: List[AtomicElementSchema16] = Field(..., title="atomic elements schema")
1244
849
  """
1245
850
  atomic elements schema
1246
851
  """
@@ -1255,7 +860,7 @@ class BasisSchema12(BaseModel):
1255
860
  """
1256
861
 
1257
862
 
1258
- class LatticeVectorsSchema12(BaseModel):
863
+ class LatticeVectorsSchema13(BaseModel):
1259
864
  a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1260
865
  b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1261
866
  c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
@@ -1271,7 +876,7 @@ class LatticeUnitsSchema13(BaseModel):
1271
876
  angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1272
877
 
1273
878
 
1274
- class LatticeSchema12(BaseModel):
879
+ class LatticeSchema13(BaseModel):
1275
880
  a: float
1276
881
  """
1277
882
  length of the first lattice vector
@@ -1296,7 +901,7 @@ class LatticeSchema12(BaseModel):
1296
901
  """
1297
902
  angle between first and third lattice vector
1298
903
  """
1299
- vectors: Optional[LatticeVectorsSchema12] = Field(None, title="lattice vectors schema")
904
+ vectors: Optional[LatticeVectorsSchema13] = Field(None, title="lattice vectors schema")
1300
905
  type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1301
906
  units: Optional[LatticeUnitsSchema13] = Field(
1302
907
  default_factory=lambda: LatticeUnitsSchema13.model_validate({"length": "angstrom", "angle": "degree"}),
@@ -1304,48 +909,48 @@ class LatticeSchema12(BaseModel):
1304
909
  )
1305
910
 
1306
911
 
1307
- class Name138(Enum):
912
+ class Name111(Enum):
1308
913
  volume = "volume"
1309
914
 
1310
915
 
1311
- class Units68(Enum):
916
+ class Units48(Enum):
1312
917
  angstrom_3 = "angstrom^3"
1313
918
 
1314
919
 
1315
- class VolumeSchema12(BaseModel):
920
+ class VolumeSchema13(BaseModel):
1316
921
  name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1317
- units: Optional[Units68] = None
922
+ units: Optional[Units48] = None
1318
923
  value: float
1319
924
 
1320
925
 
1321
- class Name139(Enum):
926
+ class Name112(Enum):
1322
927
  density = "density"
1323
928
 
1324
929
 
1325
- class Units69(Enum):
930
+ class Units49(Enum):
1326
931
  g_cm_3 = "g/cm^3"
1327
932
 
1328
933
 
1329
934
  class DensitySchema13(BaseModel):
1330
935
  name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1331
- units: Optional[Units69] = None
936
+ units: Optional[Units49] = None
1332
937
  value: float
1333
938
 
1334
939
 
1335
- class Units70(Enum):
940
+ class Units50(Enum):
1336
941
  angstrom = "angstrom"
1337
942
 
1338
943
 
1339
- class ScalarSchema13(BaseModel):
1340
- units: Optional[Units70] = None
944
+ class ScalarSchema14(BaseModel):
945
+ units: Optional[Units50] = None
1341
946
  value: float
1342
947
 
1343
948
 
1344
- class Name140(Enum):
949
+ class Name113(Enum):
1345
950
  symmetry = "symmetry"
1346
951
 
1347
952
 
1348
- class SymmetrySchema12(BaseModel):
953
+ class SymmetrySchema13(BaseModel):
1349
954
  pointGroupSymbol: Optional[str] = None
1350
955
  """
1351
956
  point group symbol in Schoenflies notation
@@ -1354,14 +959,14 @@ class SymmetrySchema12(BaseModel):
1354
959
  """
1355
960
  space group symbol in Hermann–Mauguin notation
1356
961
  """
1357
- tolerance: Optional[ScalarSchema13] = Field(None, title="scalar schema")
962
+ tolerance: Optional[ScalarSchema14] = Field(None, title="scalar schema")
1358
963
  """
1359
964
  tolerance used for symmetry calculation
1360
965
  """
1361
966
  name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1362
967
 
1363
968
 
1364
- class Name141(Enum):
969
+ class Name114(Enum):
1365
970
  elemental_ratio = "elemental_ratio"
1366
971
 
1367
972
 
@@ -1374,7 +979,7 @@ class ElementalRatio13(BaseModel):
1374
979
  """
1375
980
 
1376
981
 
1377
- class Name142(Enum):
982
+ class Name115(Enum):
1378
983
  p_norm = "p-norm"
1379
984
 
1380
985
 
@@ -1387,7 +992,7 @@ class PNorm13(BaseModel):
1387
992
  value: float
1388
993
 
1389
994
 
1390
- class Name143(Enum):
995
+ class Name116(Enum):
1391
996
  inchi = "inchi"
1392
997
 
1393
998
 
@@ -1396,7 +1001,7 @@ class InChIRepresentationSchema13(BaseModel):
1396
1001
  value: str
1397
1002
 
1398
1003
 
1399
- class Name144(Enum):
1004
+ class Name117(Enum):
1400
1005
  inchi_key = "inchi_key"
1401
1006
 
1402
1007
 
@@ -1408,9 +1013,9 @@ class InChIKeyRepresentationSchema13(BaseModel):
1408
1013
  class DerivedPropertiesSchema13(
1409
1014
  RootModel[
1410
1015
  Union[
1411
- VolumeSchema12,
1016
+ VolumeSchema13,
1412
1017
  DensitySchema13,
1413
- SymmetrySchema12,
1018
+ SymmetrySchema13,
1414
1019
  ElementalRatio13,
1415
1020
  PNorm13,
1416
1021
  InChIRepresentationSchema13,
@@ -1419,9 +1024,9 @@ class DerivedPropertiesSchema13(
1419
1024
  ]
1420
1025
  ):
1421
1026
  root: Union[
1422
- VolumeSchema12,
1027
+ VolumeSchema13,
1423
1028
  DensitySchema13,
1424
- SymmetrySchema12,
1029
+ SymmetrySchema13,
1425
1030
  ElementalRatio13,
1426
1031
  PNorm13,
1427
1032
  InChIRepresentationSchema13,
@@ -1429,14 +1034,14 @@ class DerivedPropertiesSchema13(
1429
1034
  ] = Field(..., discriminator="name")
1430
1035
 
1431
1036
 
1432
- class Name145(Enum):
1037
+ class Name118(Enum):
1433
1038
  default = "default"
1434
1039
  atomsTooClose = "atomsTooClose"
1435
1040
  atomsOverlap = "atomsOverlap"
1436
1041
 
1437
1042
 
1438
- class MaterialConsistencyCheckSchema12(BaseModel):
1439
- name: Name145
1043
+ class MaterialConsistencyCheckSchema13(BaseModel):
1044
+ name: Name118
1440
1045
  """
1441
1046
  Name of the consistency check that is performed, which is listed in an enum.
1442
1047
  """
@@ -1454,7 +1059,7 @@ class MaterialConsistencyCheckSchema12(BaseModel):
1454
1059
  """
1455
1060
 
1456
1061
 
1457
- class MaterialSchema11(BaseModel):
1062
+ class MaterialSchema13(BaseModel):
1458
1063
  formula: Optional[str] = None
1459
1064
  """
1460
1065
  reduced chemical formula
@@ -1463,8 +1068,8 @@ class MaterialSchema11(BaseModel):
1463
1068
  """
1464
1069
  chemical formula based on the number of atoms of each element in the supercell
1465
1070
  """
1466
- basis: BasisSchema12 = Field(..., title="basis schema")
1467
- lattice: LatticeSchema12 = Field(..., title="lattice schema")
1071
+ basis: BasisSchema14 = Field(..., title="basis schema")
1072
+ lattice: LatticeSchema13 = Field(..., title="lattice schema")
1468
1073
  derivedProperties: Optional[List[DerivedPropertiesSchema13]] = Field(None, title="derived properties schema")
1469
1074
  external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1470
1075
  """
@@ -1486,7 +1091,7 @@ class MaterialSchema11(BaseModel):
1486
1091
  """
1487
1092
  Whether to work in the finite molecular picture (usually with atomic orbital basis)
1488
1093
  """
1489
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema12]] = None
1094
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema13]] = None
1490
1095
  field_id: Optional[str] = Field(None, alias="_id")
1491
1096
  """
1492
1097
  entity identity
@@ -1511,24 +1116,85 @@ class MaterialSchema11(BaseModel):
1511
1116
  metadata: Optional[Dict[str, Any]] = None
1512
1117
 
1513
1118
 
1514
- class PairDefectSchema(BaseModel):
1515
- point_defect_configuration_1: Optional[PointDefectConfigurationSchema] = Field(
1516
- None, title="Point Defect Configuration Schema"
1119
+ class SlabConfigurationSchema2(BaseModel):
1120
+ bulk: Optional[MaterialSchema13] = Field(None, title="material schema")
1121
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1122
+ """
1123
+ Miller indices for crystallographic plane designation
1124
+ """
1125
+ number_of_layers: Optional[conint(ge=1)] = Field(1, title="Number of Layers Schema")
1126
+ """
1127
+ Number of atomic layers in a structural component
1128
+ """
1129
+ vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Thickness Schema")
1130
+ """
1131
+ Vacuum thickness in Angstroms
1132
+ """
1133
+ xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field(
1134
+ default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]],
1135
+ max_length=2,
1136
+ min_length=2,
1137
+ title="Supercell Matrix 2D Schema",
1517
1138
  )
1518
1139
  """
1519
- Configuration for point defects that require a crystal reference
1140
+ Supercell matrix for xy plane transformations
1520
1141
  """
1521
- point_defect_configuration_2: Optional[PointDefectConfigurationSchema2] = Field(
1522
- None, title="Point Defect Configuration Schema"
1142
+ use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell")
1143
+ """
1144
+ Whether to use conventional cell when generating the slab.
1145
+ """
1146
+ use_orthogonal_z: Optional[bool] = Field(True, title="Use Orthogonal Z")
1147
+ """
1148
+ Whether to make vector c orthogonal to ab plane for the slab cell.
1149
+ """
1150
+
1151
+
1152
+ class TerminationSchema2(BaseModel):
1153
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^[A-Z][a-z]?([A-Z][a-z]?)*$")] = Field(
1154
+ ..., title="Chemical Elements"
1523
1155
  )
1524
1156
  """
1525
- Configuration for point defects that require a crystal reference
1157
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
1158
+ """
1159
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
1160
+ """
1161
+ Space group symmetry designation for the termination
1162
+ """
1163
+
1164
+
1165
+ class SlabInStackConfigurationSchema(BaseModel):
1166
+ stack_component: Optional[str] = None
1167
+ """
1168
+ Component of the stack (e.g., slab1, slab2)
1169
+ """
1170
+ distance_to_next_slab: Optional[float] = 3
1171
+ """
1172
+ Distance to the next slab in the stack, in Angstroms
1173
+ """
1174
+ slab_configuration: SlabConfigurationSchema2 = Field(..., title="Slab Configuration Schema")
1175
+ """
1176
+ Configuration for creating a slab from a bulk material
1177
+ """
1178
+ termination: TerminationSchema2 = Field(..., title="Termination Schema")
1179
+ """
1180
+ Defines a specific termination of a slab
1181
+ """
1182
+
1183
+
1184
+ class GrainBoundaryPlaneConfigurationSchema(BaseModel):
1185
+ stacking_direction: Optional[AxisEnum] = Field("x", title="Axis Enum")
1186
+ """
1187
+ The axis along which the slabs are stacked
1188
+ """
1189
+ slab_configuration: SlabConfigurationSchema = Field(..., title="Slab Configuration Schema")
1190
+ """
1191
+ Configuration for creating a slab from a bulk material
1526
1192
  """
1527
- host: Optional[MaterialSchema11] = None
1193
+ termination: TerminationSchema = Field(..., title="Termination Schema")
1528
1194
  """
1529
- The base host for the defect
1195
+ Defines a specific termination of a slab
1530
1196
  """
1531
- isExternal: Optional[bool] = False
1197
+ stack_slab_configurations: List[SlabInStackConfigurationSchema] = Field(..., max_length=2, min_length=2)
1532
1198
  """
1533
- Whether the defect is external to the host material
1199
+ List of slab configurations for the slabs in the stack
1534
1200
  """