@mat3ra/made 2026.8.7-0 → 2026.8.18-0

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.
Files changed (522) hide show
  1. package/dist/js/Material.d.ts +219 -0
  2. package/dist/js/Material.js +457 -0
  3. package/dist/js/basis/basis.d.ts +14 -9
  4. package/dist/js/basis/basis.js +15 -13
  5. package/dist/js/basis/constrained_basis.d.ts +9 -7
  6. package/dist/js/basis/constrained_basis.js +4 -4
  7. package/dist/js/generated/MaterialSchemaMixin.d.ts +5 -0
  8. package/dist/js/generated/MaterialSchemaMixin.js +69 -0
  9. package/dist/js/lattice/lattice.d.ts +4 -3
  10. package/dist/js/lattice/lattice.js +1 -2
  11. package/dist/js/made.d.ts +12 -12
  12. package/dist/js/made.js +38 -5
  13. package/dist/js/parsers/espresso.d.ts +2 -3
  14. package/dist/js/parsers/espresso.js +0 -1
  15. package/dist/js/parsers/native_format_parsers.d.ts +9 -8
  16. package/dist/js/parsers/native_format_parsers.js +6 -6
  17. package/dist/js/parsers/parsers.d.ts +6 -6
  18. package/dist/js/parsers/poscar.d.ts +5 -4
  19. package/dist/js/parsers/poscar.js +3 -2
  20. package/dist/js/parsers/xyz.d.ts +3 -5
  21. package/dist/js/parsers/xyz.js +3 -4
  22. package/dist/js/parsers/xyz_combinatorial_basis.js +3 -1
  23. package/dist/js/tools/basis.d.ts +1 -1
  24. package/dist/js/tools/index.d.ts +7 -7
  25. package/dist/js/tools/material.d.ts +1 -1
  26. package/dist/js/tools/material.js +8 -7
  27. package/dist/js/tools/supercell.d.ts +4 -5
  28. package/dist/js/tools/supercell.js +2 -4
  29. package/dist/js/tools/surface.d.ts +4 -4
  30. package/dist/js/tools/surface.js +2 -7
  31. package/package.json +12 -8
  32. package/.babelrc +0 -10
  33. package/.eslintrc.json +0 -11
  34. package/.gitattributes +0 -1
  35. package/.husky/post-checkout +0 -3
  36. package/.husky/post-commit +0 -3
  37. package/.husky/post-merge +0 -3
  38. package/.husky/pre-commit +0 -6
  39. package/.husky/pre-push +0 -3
  40. package/.mocharc.json +0 -5
  41. package/.pre-commit-config.yaml +0 -26
  42. package/.prettierignore +0 -2
  43. package/.prettierrc +0 -6
  44. package/AGENTS.md +0 -133
  45. package/MANIFEST.in +0 -1
  46. package/data/constants.json +0 -13
  47. package/data/reciprocal_paths.json +0 -111
  48. package/dist/js/material.d.ts +0 -169
  49. package/dist/js/material.js +0 -362
  50. package/images/made/tools/tools_diagram_general.png +0 -3
  51. package/images/made/tools/tools_diagram_interface.png +0 -3
  52. package/pyproject.toml +0 -123
  53. package/src/__init__.py +0 -0
  54. package/src/js/basis/basis.ts +0 -621
  55. package/src/js/basis/constrained_basis.ts +0 -114
  56. package/src/js/basis/coordinates.ts +0 -93
  57. package/src/js/basis/elements.ts +0 -24
  58. package/src/js/basis/helpers.ts +0 -20
  59. package/src/js/basis/labels.ts +0 -6
  60. package/src/js/cell/cell.ts +0 -150
  61. package/src/js/cell/conventional_cell.ts +0 -86
  62. package/src/js/cell/primitive_cell.ts +0 -166
  63. package/src/js/constants/molecule.ts +0 -18
  64. package/src/js/constants.ts +0 -4
  65. package/src/js/constraints/constraints.ts +0 -45
  66. package/src/js/lattice/lattice.ts +0 -306
  67. package/src/js/lattice/lattice_types.ts +0 -134
  68. package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -193
  69. package/src/js/lattice/reciprocal/paths.ts +0 -39
  70. package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
  71. package/src/js/lattice/unit_cell.ts +0 -66
  72. package/src/js/made.ts +0 -62
  73. package/src/js/material.ts +0 -458
  74. package/src/js/parsers/cif.ts +0 -25
  75. package/src/js/parsers/errors.ts +0 -6
  76. package/src/js/parsers/espresso.ts +0 -30
  77. package/src/js/parsers/native_format_parsers.ts +0 -51
  78. package/src/js/parsers/parsers.ts +0 -13
  79. package/src/js/parsers/poscar.ts +0 -212
  80. package/src/js/parsers/xyz.ts +0 -187
  81. package/src/js/parsers/xyz_combinatorial_basis.ts +0 -265
  82. package/src/js/tools/basis.ts +0 -132
  83. package/src/js/tools/cell.ts +0 -41
  84. package/src/js/tools/index.ts +0 -11
  85. package/src/js/tools/material.ts +0 -62
  86. package/src/js/tools/supercell.ts +0 -88
  87. package/src/js/tools/surface.ts +0 -223
  88. package/src/py/__init__.py +0 -0
  89. package/src/py/mat3ra/__init__.py +0 -1
  90. package/src/py/mat3ra/made/__init__.py +0 -7
  91. package/src/py/mat3ra/made/basis/__init__.py +0 -255
  92. package/src/py/mat3ra/made/basis/coordinates.py +0 -43
  93. package/src/py/mat3ra/made/cell/__init__.py +0 -55
  94. package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
  95. package/src/py/mat3ra/made/data_helper.py +0 -5
  96. package/src/py/mat3ra/made/lattice.py +0 -195
  97. package/src/py/mat3ra/made/material.py +0 -134
  98. package/src/py/mat3ra/made/metadata.py +0 -45
  99. package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
  100. package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
  101. package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
  102. package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
  103. package/src/py/mat3ra/made/tools/README.md +0 -173
  104. package/src/py/mat3ra/made/tools/__init__.py +0 -0
  105. package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
  106. package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
  107. package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
  108. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
  109. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
  110. package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
  111. package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
  112. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
  113. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
  114. package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
  115. package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
  116. package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
  117. package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
  118. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
  119. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
  120. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
  121. package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
  122. package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
  123. package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
  124. package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
  125. package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
  126. package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
  127. package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
  128. package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
  129. package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
  130. package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
  131. package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
  132. package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
  133. package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
  134. package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
  135. package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
  136. package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
  137. package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
  138. package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
  139. package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
  140. package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
  141. package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
  142. package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
  143. package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
  144. package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
  145. package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
  146. package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
  147. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
  148. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
  149. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
  150. package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
  151. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
  152. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
  153. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
  154. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
  155. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
  156. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
  157. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
  158. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
  159. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
  160. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
  161. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
  162. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
  163. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
  164. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
  165. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
  166. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
  167. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
  168. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
  169. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
  170. package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
  171. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
  172. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
  173. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
  174. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
  175. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
  176. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
  177. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
  178. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
  179. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
  180. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
  181. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
  182. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
  183. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
  184. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
  185. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
  186. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
  187. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
  188. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
  189. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
  190. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
  191. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
  192. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
  193. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
  194. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
  195. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
  196. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
  197. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
  198. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
  199. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
  200. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
  201. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
  202. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
  203. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
  204. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
  205. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
  206. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
  207. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
  208. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
  209. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
  210. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
  211. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
  212. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
  213. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
  214. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
  215. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
  216. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
  217. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
  218. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
  219. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
  220. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
  221. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
  222. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
  223. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
  224. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
  225. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
  226. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
  227. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
  228. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
  229. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
  230. package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
  231. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
  232. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
  233. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
  234. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
  235. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
  236. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
  237. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
  238. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
  239. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
  240. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
  241. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
  242. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
  243. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
  244. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
  245. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
  246. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
  247. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
  248. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
  249. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
  250. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
  251. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
  252. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
  253. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
  254. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
  255. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
  256. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
  257. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
  258. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
  259. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
  260. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
  261. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
  262. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
  263. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
  264. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
  265. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
  266. package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
  267. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
  268. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
  269. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
  270. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
  271. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
  272. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
  273. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
  274. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
  275. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
  276. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
  277. package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
  278. package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
  279. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
  280. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
  281. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
  282. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
  283. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
  284. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
  285. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
  286. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
  287. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
  288. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
  289. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
  290. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
  291. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
  292. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
  293. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
  294. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
  295. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
  296. package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
  297. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
  298. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
  299. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
  300. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
  301. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
  302. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
  303. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
  304. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
  305. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
  306. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
  307. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
  308. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
  309. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
  310. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
  311. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
  312. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
  313. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
  314. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
  315. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
  316. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
  317. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
  318. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
  319. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
  320. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
  321. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
  322. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
  323. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
  324. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
  325. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
  326. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
  327. package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
  328. package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
  329. package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
  330. package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
  331. package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
  332. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
  333. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
  334. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
  335. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
  336. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
  337. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
  338. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
  339. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
  340. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
  341. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
  342. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
  343. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
  344. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
  345. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
  346. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
  347. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
  348. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
  349. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
  350. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
  351. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
  352. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
  353. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
  354. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
  355. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
  356. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
  357. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
  358. package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
  359. package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
  360. package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
  361. package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
  362. package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
  363. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
  364. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
  365. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
  366. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
  367. package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
  368. package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
  369. package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
  370. package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
  371. package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
  372. package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
  373. package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
  374. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
  375. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
  376. package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
  377. package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
  378. package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
  379. package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
  380. package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
  381. package/src/py/mat3ra/made/tools/helpers.py +0 -168
  382. package/src/py/mat3ra/made/tools/modify.py +0 -627
  383. package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
  384. package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
  385. package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
  386. package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
  387. package/src/py/mat3ra/made/tools/optimize.py +0 -55
  388. package/src/py/mat3ra/made/tools/third_party.py +0 -69
  389. package/src/py/mat3ra/made/tools/utils.py +0 -182
  390. package/src/py/mat3ra/made/utils.py +0 -144
  391. package/tests/.gitattributes +0 -1
  392. package/tests/fixtures/AsGe-basis.json +0 -3
  393. package/tests/fixtures/C2H4-translated.json +0 -3
  394. package/tests/fixtures/C2H4.json +0 -3
  395. package/tests/fixtures/FeLiSi-basis.json +0 -3
  396. package/tests/fixtures/FeO.json +0 -3
  397. package/tests/fixtures/Ge2-basis.json +0 -3
  398. package/tests/fixtures/Graphene.json +0 -3
  399. package/tests/fixtures/Graphene.poscar +0 -3
  400. package/tests/fixtures/H2+H-final.json +0 -3
  401. package/tests/fixtures/H2+H-image.json +0 -3
  402. package/tests/fixtures/H2+H-initial.json +0 -3
  403. package/tests/fixtures/H2O.poscar +0 -3
  404. package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
  405. package/tests/fixtures/LiFeSi-basis.json +0 -3
  406. package/tests/fixtures/Na.json +0 -3
  407. package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
  408. package/tests/fixtures/Na4Cl4.json +0 -3
  409. package/tests/fixtures/Na4Cl4.poscar +0 -3
  410. package/tests/fixtures/Ni-hex.json +0 -3
  411. package/tests/fixtures/Ni-hex.poscar +0 -3
  412. package/tests/fixtures/OSi-basis.json +0 -3
  413. package/tests/fixtures/Si-hex.poscar +0 -3
  414. package/tests/fixtures/Si-pwscf.in +0 -3
  415. package/tests/fixtures/Si-slab.json +0 -3
  416. package/tests/fixtures/Si-supercell.json +0 -3
  417. package/tests/fixtures/Si2-basis-repeated.json +0 -3
  418. package/tests/fixtures/Si2-basis.json +0 -3
  419. package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
  420. package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
  421. package/tests/fixtures/atomic-constraints.json +0 -3
  422. package/tests/fixtures/hashes.json +0 -3
  423. package/tests/fixtures/si-slab-100.json +0 -3
  424. package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
  425. package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
  426. package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
  427. package/tests/fixtures/si-standata.json +0 -3
  428. package/tests/js/basis/basis.ts +0 -247
  429. package/tests/js/cell/cell.ts +0 -182
  430. package/tests/js/cell/primitive_cell.ts +0 -21
  431. package/tests/js/constraints/constraints.ts +0 -11
  432. package/tests/js/fixtures.ts +0 -120
  433. package/tests/js/lattice/lattice.ts +0 -43
  434. package/tests/js/lattice/lattice_reciprocal.ts +0 -104
  435. package/tests/js/material.test.ts +0 -42
  436. package/tests/js/parsers/espresso.ts +0 -15
  437. package/tests/js/parsers/native_formats.ts +0 -35
  438. package/tests/js/parsers/poscar.ts +0 -89
  439. package/tests/js/parsers/xyz.ts +0 -33
  440. package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
  441. package/tests/js/setup.ts +0 -6
  442. package/tests/js/tools/basis.ts +0 -22
  443. package/tests/js/tools/supercell.ts +0 -58
  444. package/tests/js/tools/surface.ts +0 -115
  445. package/tests/py/conftest.py +0 -34
  446. package/tests/py/mat3ra/debug_utils.py +0 -75
  447. package/tests/py/unit/__init__.py +0 -0
  448. package/tests/py/unit/fixtures/__init__.py +0 -0
  449. package/tests/py/unit/fixtures/adatom.py +0 -60
  450. package/tests/py/unit/fixtures/bulk.py +0 -162
  451. package/tests/py/unit/fixtures/cuts.py +0 -118
  452. package/tests/py/unit/fixtures/grain_boundary.py +0 -875
  453. package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
  454. package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
  455. package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
  456. package/tests/py/unit/fixtures/interface/simple.py +0 -84
  457. package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
  458. package/tests/py/unit/fixtures/interface/zsl.py +0 -756
  459. package/tests/py/unit/fixtures/island.py +0 -336
  460. package/tests/py/unit/fixtures/merge.py +0 -147
  461. package/tests/py/unit/fixtures/monolayer.py +0 -46
  462. package/tests/py/unit/fixtures/nanoparticle.py +0 -116
  463. package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
  464. package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
  465. package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
  466. package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
  467. package/tests/py/unit/fixtures/pair_defects.py +0 -41
  468. package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
  469. package/tests/py/unit/fixtures/passivated/slab.py +0 -58
  470. package/tests/py/unit/fixtures/point_defects.py +0 -158
  471. package/tests/py/unit/fixtures/slab.py +0 -606
  472. package/tests/py/unit/fixtures/strain.py +0 -42
  473. package/tests/py/unit/fixtures/supercell.py +0 -64
  474. package/tests/py/unit/fixtures/terrace.py +0 -70
  475. package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
  476. package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
  477. package/tests/py/unit/test_cell.py +0 -104
  478. package/tests/py/unit/test_data_files.py +0 -68
  479. package/tests/py/unit/test_lattice.py +0 -103
  480. package/tests/py/unit/test_lattice_type_extended.py +0 -53
  481. package/tests/py/unit/test_material.py +0 -158
  482. package/tests/py/unit/test_operations.py +0 -126
  483. package/tests/py/unit/test_primitive_cell.py +0 -118
  484. package/tests/py/unit/test_reciprocal_lattice.py +0 -86
  485. package/tests/py/unit/test_reciprocal_paths.py +0 -64
  486. package/tests/py/unit/test_symmetry_points.py +0 -151
  487. package/tests/py/unit/test_tools_analyze.py +0 -219
  488. package/tests/py/unit/test_tools_analyze_basis.py +0 -105
  489. package/tests/py/unit/test_tools_analyze_interface.py +0 -223
  490. package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
  491. package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
  492. package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
  493. package/tests/py/unit/test_tools_analyze_swap.py +0 -80
  494. package/tests/py/unit/test_tools_build.py +0 -158
  495. package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
  496. package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
  497. package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
  498. package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
  499. package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
  500. package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
  501. package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
  502. package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
  503. package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
  504. package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
  505. package/tests/py/unit/test_tools_build_interface.py +0 -292
  506. package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
  507. package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
  508. package/tests/py/unit/test_tools_build_metadata.py +0 -79
  509. package/tests/py/unit/test_tools_build_monolayer.py +0 -33
  510. package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
  511. package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
  512. package/tests/py/unit/test_tools_build_passivation.py +0 -85
  513. package/tests/py/unit/test_tools_build_perturbation.py +0 -103
  514. package/tests/py/unit/test_tools_build_slab.py +0 -382
  515. package/tests/py/unit/test_tools_build_strain.py +0 -36
  516. package/tests/py/unit/test_tools_build_supercell.py +0 -47
  517. package/tests/py/unit/test_tools_calculate.py +0 -67
  518. package/tests/py/unit/test_tools_convert.py +0 -174
  519. package/tests/py/unit/test_tools_modify.py +0 -248
  520. package/tests/py/unit/utils.py +0 -142
  521. package/tsconfig-transpile.json +0 -3
  522. package/tsconfig.json +0 -3
@@ -1,19 +0,0 @@
1
- from typing import Tuple, Union
2
-
3
- from mat3ra.made.material import Material
4
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
5
-
6
- from ..... import MaterialWithBuildMetadata
7
-
8
-
9
- class CrystalLatticeLinesConfiguration(BaseConfigurationPydantic):
10
- """
11
- Configuration for creating crystal lattice lines from a material.
12
-
13
- Args:
14
- crystal: The monolayer material to create the lattice lines from.
15
- miller_indices_2d: The (u,v) Miller indices for the line direction.
16
- """
17
-
18
- crystal: Union[Material, MaterialWithBuildMetadata]
19
- miller_indices_2d: Tuple[int, int]
@@ -1,51 +0,0 @@
1
- from enum import Enum
2
- from typing import Tuple
3
-
4
-
5
- class EdgeTypesEnum(str, Enum):
6
- """
7
- Enum for nanoribbon/nanotape edge types.
8
- """
9
-
10
- zigzag = "zigzag"
11
- armchair = "armchair"
12
-
13
-
14
- MILLER_INDICES_TO_EDGE_TYPE_MAP = {
15
- (0, 1): EdgeTypesEnum.zigzag,
16
- (1, 1): EdgeTypesEnum.armchair,
17
- }
18
-
19
-
20
- def get_miller_indices_from_edge_type(edge_type: EdgeTypesEnum) -> Tuple[int, int]:
21
- """
22
- Convert edge type shorthand to (u,v) Miller indices.
23
-
24
- Args:
25
- edge_type: "zigzag" or "armchair"
26
-
27
- Returns:
28
- Tuple of (u,v) Miller indices.
29
- """
30
- for miller_indices, mapped_edge_type in MILLER_INDICES_TO_EDGE_TYPE_MAP.items():
31
- if mapped_edge_type == edge_type:
32
- return miller_indices
33
- raise ValueError(f"Unknown edge type: {edge_type}. Use 'zigzag' or 'armchair'.")
34
-
35
-
36
- def get_edge_type_from_miller_indices(miller_indices_2d: Tuple[int, int]) -> str:
37
- """
38
- Convert (u,v) Miller indices to edge type string.
39
-
40
- Args:
41
- miller_indices_2d: Tuple of (u,v) Miller indices
42
-
43
- Returns:
44
- Edge type string: "Zigzag", "Armchair", or "(uv)" for other indices
45
- """
46
- edge_type = MILLER_INDICES_TO_EDGE_TYPE_MAP.get(miller_indices_2d)
47
- if edge_type:
48
- return edge_type.value.capitalize()
49
- else:
50
- miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
51
- return f"({miller_str})"
@@ -1,58 +0,0 @@
1
- from typing import Optional, Tuple, Union
2
-
3
- from mat3ra.made.material import Material
4
-
5
- from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
6
- from ......build.pristine_structures.two_dimensional.slab.termination_utils import select_slab_termination
7
- from ..... import MaterialWithBuildMetadata
8
- from ..crystal_lattice_lines_unique_repeated.configuration import CrystalLatticeLinesUniqueRepeatedConfiguration
9
- from .edge_types import EdgeTypesEnum, get_miller_indices_from_edge_type
10
-
11
-
12
- def create_lattice_lines_config_and_material(
13
- material: Union[Material, MaterialWithBuildMetadata],
14
- miller_indices_2d: Optional[Tuple[int, int]],
15
- edge_type: Optional[EdgeTypesEnum],
16
- width: int,
17
- length: int,
18
- termination_formula: Optional[str] = None,
19
- ):
20
- """
21
- Create a lattice lines configuration from a material.
22
-
23
- Args:
24
- material: The monolayer material to create the lattice lines from.
25
- miller_indices_2d: The (u,v) Miller indices for the line direction.
26
- edge_type: Edge type ("zigzag" or "armchair") - alternative to miller_indices_2d.
27
- width: Number of repetitions in width direction.
28
- length: Number of repetitions in length direction.
29
- termination_formula: Formula of the termination to use.
30
-
31
- Returns:
32
- CrystalLatticeLinesUniqueRepeatedConfiguration: The configuration object.
33
- """
34
- if miller_indices_2d is None and edge_type is None:
35
- raise ValueError("Either miller_indices_2d or edge_type must be provided")
36
-
37
- resolved_miller_indices: Tuple[int, int]
38
- if miller_indices_2d is not None:
39
- resolved_miller_indices = miller_indices_2d
40
- elif edge_type is not None:
41
- resolved_miller_indices = get_miller_indices_from_edge_type(edge_type)
42
- else:
43
- raise ValueError("Either miller_indices_2d or edge_type must be provided")
44
-
45
- lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
46
- material=material, miller_indices_2d=resolved_miller_indices
47
- )
48
- terminations = lattice_lines_analyzer.terminations
49
- termination = select_slab_termination(terminations, termination_formula)
50
-
51
- lattice_lines_config = CrystalLatticeLinesUniqueRepeatedConfiguration(
52
- crystal=material,
53
- miller_indices_2d=resolved_miller_indices,
54
- termination_top=termination,
55
- number_of_repetitions_width=width,
56
- number_of_repetitions_length=length,
57
- )
58
- return lattice_lines_config
@@ -1,4 +0,0 @@
1
- from .builder import CrystalLatticeLinesRepeatedBuilder
2
- from .configuration import CrystalLatticeLinesUniqueRepeatedConfiguration
3
-
4
- __all__ = ["CrystalLatticeLinesRepeatedBuilder", "CrystalLatticeLinesUniqueRepeatedConfiguration"]
@@ -1,42 +0,0 @@
1
- from typing import Type
2
-
3
- from mat3ra.made.material import Material
4
-
5
- from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
6
- from ......modify import wrap_to_unit_cell
7
- from ......operations.core.unary import supercell, translate
8
- from ..crystal_lattice_lines.builder import CrystalLatticeLinesBuilder
9
- from .configuration import CrystalLatticeLinesUniqueRepeatedConfiguration
10
-
11
-
12
- class CrystalLatticeLinesRepeatedBuilder(CrystalLatticeLinesBuilder):
13
- """
14
- Builder for creating repeated crystal lattice lines with termination.
15
- This is similar to AtomicLayersUniqueRepeatedBuilder but for 1D lines.
16
- """
17
-
18
- _ConfigurationType: Type[
19
- CrystalLatticeLinesUniqueRepeatedConfiguration
20
- ] = CrystalLatticeLinesUniqueRepeatedConfiguration
21
-
22
- def _generate(self, configuration: CrystalLatticeLinesUniqueRepeatedConfiguration) -> Material:
23
- crystal_lattice_lines_material = super()._generate(configuration)
24
-
25
- crystal_lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
26
- material=configuration.crystal, miller_indices_2d=configuration.miller_indices_2d
27
- )
28
- translation_vector = crystal_lattice_lines_analyzer.get_translation_vector_for_termination_without_vacuum(
29
- configuration.termination_top
30
- )
31
- material_translated = translate(crystal_lattice_lines_material, translation_vector)
32
- material_translated_wrapped = wrap_to_unit_cell(material_translated)
33
-
34
- material_translated_wrapped_repeated = supercell(
35
- material_translated_wrapped,
36
- [
37
- [configuration.number_of_repetitions_length, 0, 0],
38
- [0, configuration.number_of_repetitions_width, 0],
39
- [0, 0, 1],
40
- ],
41
- )
42
- return material_translated_wrapped_repeated
@@ -1,21 +0,0 @@
1
- from typing import Optional
2
-
3
- from ....auxiliary.two_dimensional.termination import Termination
4
- from ..crystal_lattice_lines.configuration import CrystalLatticeLinesConfiguration
5
-
6
-
7
- class CrystalLatticeLinesUniqueRepeatedConfiguration(CrystalLatticeLinesConfiguration):
8
- """
9
- Configuration for creating repeated crystal lattice lines with termination.
10
-
11
- Args:
12
- crystal: The monolayer material to create the lattice lines from.
13
- miller_indices_2d: The (u,v) Miller indices for the line direction.
14
- termination_top: The termination to use for the lattice lines.
15
- """
16
-
17
- # TODO: right and left for x terminations
18
- termination_top: Termination
19
- termination_bottom: Optional[Termination] = None
20
- number_of_repetitions_width: int = 1
21
- number_of_repetitions_length: int = 1
@@ -1,11 +0,0 @@
1
- import numpy as np
2
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.three_dimensional.supercell_matrix_3d import (
3
- SupercellMatrix3DSchema,
4
- )
5
-
6
- from ...base_builder import BaseConfigurationPydantic
7
-
8
-
9
- class SupercellConfiguration(BaseConfigurationPydantic):
10
- type: str = "SupercellConfiguration"
11
- supercell_matrix: SupercellMatrix3DSchema = SupercellMatrix3DSchema(root=np.eye(3).tolist())
@@ -1,38 +0,0 @@
1
- from typing import List, Optional, Union
2
-
3
- import numpy as np
4
- from mat3ra.made.material import Material
5
-
6
- from ......operations.core.unary import supercell
7
- from ..... import MaterialWithBuildMetadata
8
- from .configuration import SupercellConfiguration
9
-
10
-
11
- def create_supercell(
12
- material: Union[Material, MaterialWithBuildMetadata],
13
- supercell_matrix: Optional[List[List[int]]] = None,
14
- scaling_factor: Optional[List[int]] = None,
15
- ) -> Material:
16
- """
17
- Create a supercell of the atoms.
18
-
19
- Args:
20
- material (Material): The atoms to create a supercell of.
21
- supercell_matrix (List[List[int]]): The supercell matrix (e.g. [[3,0,0],[0,3,0],[0,0,1]]).
22
- scaling_factor (List[int], optional): The scaling factor instead of matrix (e.g. [3,3,1]).
23
- If provided, supercell_matrix is ignored.
24
-
25
- Returns:
26
- Material: The supercell material.
27
- """
28
- if scaling_factor is not None:
29
- supercell_matrix = np.multiply(scaling_factor, np.eye(3)).tolist()
30
- new_material = supercell(material, supercell_matrix)
31
-
32
- # Convert to MaterialWithBuildMetadata and set metadata
33
- material_with_metadata = MaterialWithBuildMetadata.create(new_material.to_dict())
34
- configuration = SupercellConfiguration(supercell_matrix=supercell_matrix)
35
- material_with_metadata.metadata.add_build_metadata_step(
36
- configuration=configuration.to_dict(), build_parameters={"supercell_matrix": supercell_matrix}
37
- )
38
- return material_with_metadata
@@ -1,24 +0,0 @@
1
- from .atomic_layers_unique_repeated import AtomicLayersUniqueRepeatedBuilder, AtomicLayersUniqueRepeatedConfiguration
2
- from .crystal_lattice_planes import CrystalLatticePlanesBuilder, CrystalLatticePlanesConfiguration
3
-
4
- # from .slab_stack import (
5
- # SlabStackBuilder,
6
- # SlabStackConfiguration,
7
- # create_slab_stack,
8
- # recreate_slab_with_fractional_layers,
9
- # )
10
-
11
- __all__ = [
12
- # atomic_layers
13
- # atomic_layers_unique_repeated
14
- "AtomicLayersUniqueRepeatedBuilder",
15
- "AtomicLayersUniqueRepeatedConfiguration",
16
- # crystal_lattice_planes
17
- "CrystalLatticePlanesBuilder",
18
- "CrystalLatticePlanesConfiguration",
19
- # slab_stack
20
- # "SlabStackBuilder",
21
- # "SlabStackConfiguration",
22
- # "create_slab_stack",
23
- # "recreate_slab_with_fractional_layers",
24
- ]
@@ -1,7 +0,0 @@
1
- from .builder import AtomicLayersUniqueRepeatedBuilder
2
- from .configuration import AtomicLayersUniqueRepeatedConfiguration
3
-
4
- __all__ = [
5
- "AtomicLayersUniqueRepeatedBuilder",
6
- "AtomicLayersUniqueRepeatedConfiguration",
7
- ]
@@ -1,62 +0,0 @@
1
- from typing import Type
2
-
3
- from ......analyze import BaseMaterialAnalyzer
4
- from ......modify import wrap_to_unit_cell
5
- from ......operations.core.unary import rotate, supercell, translate
6
- from ..... import MaterialWithBuildMetadata
7
- from ....auxiliary.two_dimensional.miller_indices import MillerIndices
8
- from ..crystal_lattice_planes.builder import CrystalLatticePlanesBuilder
9
- from .configuration import AtomicLayersUniqueRepeatedConfiguration
10
-
11
-
12
- class AtomicLayersUniqueRepeatedBuilder(CrystalLatticePlanesBuilder):
13
- _ConfigurationType: Type[AtomicLayersUniqueRepeatedConfiguration] = AtomicLayersUniqueRepeatedConfiguration
14
-
15
- def _generate(self, configuration: AtomicLayersUniqueRepeatedConfiguration) -> MaterialWithBuildMetadata:
16
- crystal_lattice_planes_material = super()._generate(configuration)
17
-
18
- crystal_lattice_planes_material_analyzer = self.get_analyzer(configuration)
19
-
20
- if configuration.termination_top is not None:
21
- termination = configuration.termination_top
22
- should_rotate = False
23
- elif configuration.termination_bottom is not None:
24
- termination = configuration.termination_bottom
25
- should_rotate = True
26
- else:
27
- raise ValueError(
28
- "Either termination_top or termination_bottom is required for AtomicLayersUniqueRepeatedBuilder"
29
- )
30
-
31
- translation_vector = (
32
- crystal_lattice_planes_material_analyzer.get_translation_vector_for_termination_without_vacuum(termination)
33
- )
34
- material_translated = translate(crystal_lattice_planes_material, translation_vector)
35
- material_translated_wrapped = wrap_to_unit_cell(material_translated)
36
-
37
- if should_rotate:
38
- # Rotation of basis around [1,0,0] yielded the same material, probably due to the symmetry of unit cell.
39
- # rotation around X and Z simultaneously gives the mirroring effect. (x,y,z) ⟶ (z,−y,x)
40
- material_translated_wrapped = rotate(material_translated_wrapped, angle=180, axis=[1, 0, 1])
41
- material_translated_wrapped_layered = supercell(
42
- material_translated_wrapped, [[1, 0, 0], [0, 1, 0], [0, 0, configuration.number_of_repetitions]]
43
- )
44
- return material_translated_wrapped_layered
45
-
46
- def _update_material_name(
47
- self, material: MaterialWithBuildMetadata, configuration: AtomicLayersUniqueRepeatedConfiguration
48
- ) -> MaterialWithBuildMetadata:
49
- material_analyzer = BaseMaterialAnalyzer(material=material)
50
- material.formula = material_analyzer.formula
51
- miller_indices_str = str(MillerIndices(root=configuration.miller_indices))
52
-
53
- if configuration.termination_top is not None:
54
- termination_str = f"termination {configuration.termination_top}"
55
- elif configuration.termination_bottom is not None:
56
- termination_str = f"bottom termination {configuration.termination_bottom}"
57
- else:
58
- termination_str = ""
59
-
60
- new_name = f"{material.formula}{miller_indices_str}, {termination_str}"
61
- material.name = new_name
62
- return material
@@ -1,14 +0,0 @@
1
- from typing import Optional
2
-
3
- from mat3ra.esse.models.materials_category.defective_structures.two_dimensional.base_configuration import (
4
- AtomicLayersUniqueRepeatedSchema,
5
- )
6
-
7
- from ....auxiliary.two_dimensional.termination import Termination
8
- from ..crystal_lattice_planes.configuration import CrystalLatticePlanesConfiguration
9
-
10
-
11
- class AtomicLayersUniqueRepeatedConfiguration(CrystalLatticePlanesConfiguration, AtomicLayersUniqueRepeatedSchema):
12
- termination_top: Optional[Termination] = None
13
- termination_bottom: Optional[Termination] = None
14
- number_of_repetitions: int
@@ -1,42 +0,0 @@
1
- from typing import Optional, Tuple, Union
2
-
3
- from mat3ra.made.material import Material
4
-
5
- from ..... import MaterialWithBuildMetadata
6
- from ....auxiliary.two_dimensional.termination import Termination
7
- from .. import AtomicLayersUniqueRepeatedBuilder, AtomicLayersUniqueRepeatedConfiguration
8
-
9
-
10
- def create_atomic_layers(
11
- material: Union[Material, MaterialWithBuildMetadata],
12
- miller_indices: Tuple[int, int, int] = (0, 0, 1),
13
- termination: Optional[Termination] = None,
14
- number_of_layers: int = 1,
15
- ) -> Material:
16
- """
17
- Creates a material composed of repeated unique atomic layers from a given crystal.
18
-
19
- This function identifies the sequence of unique atomic layers for the given Miller
20
- indices and then constructs the material by repeating this sequence, starting
21
- with a given surface termination.
22
-
23
- Args:
24
- material (Material): The crystal material to create atomic layers from.
25
- miller_indices (Tuple[int, int, int]): Miller indices for the atomic layers.
26
- termination (Termination): The termination to use for the atomic layers.
27
- number_of_layers (int): Number of times to repeat the sequence of unique atomic layers.
28
- Returns:
29
- Material: The atomic layers material.
30
-
31
- """
32
- atomic_layers_config = AtomicLayersUniqueRepeatedConfiguration(
33
- crystal=material,
34
- miller_indices=miller_indices,
35
- termination_top=termination,
36
- number_of_repetitions=number_of_layers,
37
- )
38
-
39
- atomic_layers_builder = AtomicLayersUniqueRepeatedBuilder()
40
- atomic_layers_material = atomic_layers_builder.get_material(atomic_layers_config)
41
-
42
- return atomic_layers_material
@@ -1,7 +0,0 @@
1
- from .builder import CrystalLatticePlanesBuilder
2
- from .configuration import CrystalLatticePlanesConfiguration
3
-
4
- __all__ = [
5
- "CrystalLatticePlanesBuilder",
6
- "CrystalLatticePlanesConfiguration",
7
- ]
@@ -1,39 +0,0 @@
1
- from typing import Any, Optional
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
4
-
5
- from ......analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
6
- from ......build_components import MaterialWithBuildMetadata
7
- from ......modify import translate_to_z_level
8
- from ......operations.core.unary import supercell
9
- from .configuration import CrystalLatticePlanesConfiguration
10
-
11
-
12
- class CrystalLatticePlanesBuilder(BaseSingleBuilder):
13
- _PostProcessParametersType: Any = None
14
- use_enforce_convention: bool = True
15
-
16
- def get_analyzer(self, configuration: CrystalLatticePlanesConfiguration) -> CrystalLatticePlanesMaterialAnalyzer:
17
- return CrystalLatticePlanesMaterialAnalyzer(
18
- material=configuration.crystal, miller_indices=configuration.miller_indices
19
- )
20
-
21
- def _generate(self, configuration: CrystalLatticePlanesConfiguration) -> MaterialWithBuildMetadata:
22
- crystal_lattice_planes_analyzer = self.get_analyzer(configuration)
23
- miller_supercell_matrix = crystal_lattice_planes_analyzer.miller_supercell_matrix
24
- miller_supercell_material = supercell(configuration.crystal, miller_supercell_matrix)
25
- return miller_supercell_material
26
-
27
- def _enforce_convention(self, material: MaterialWithBuildMetadata) -> MaterialWithBuildMetadata:
28
- if not self.use_enforce_convention:
29
- return material
30
- return translate_to_z_level(material, "bottom")
31
-
32
- def _post_process(
33
- self,
34
- item: MaterialWithBuildMetadata,
35
- post_process_parameters: Optional[Any] = None,
36
- configuration: Optional[TypeConfiguration] = None,
37
- ) -> MaterialWithBuildMetadata:
38
- item = super()._post_process(item, post_process_parameters, configuration)
39
- return self._enforce_convention(item)
@@ -1,24 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.esse.models.materials_category_components.entities.reusable.two_dimensional.crystal_lattice_planes import (
4
- CrystalLatticePlanesSchema,
5
- )
6
- from mat3ra.made.material import Material
7
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
8
-
9
- from ......build_components import MaterialWithBuildMetadata
10
- from ....auxiliary.two_dimensional.miller_indices import MillerIndices
11
-
12
-
13
- class CrystalLatticePlanesConfiguration(CrystalLatticePlanesSchema, BaseConfigurationPydantic):
14
- crystal: Union[Material, MaterialWithBuildMetadata]
15
-
16
- @property
17
- def in_plane_vectors(self):
18
- # Two vectors in the plane of the Miller indices
19
- return self.crystal.lattice.vector_arrays[:2, :2]
20
-
21
- @property
22
- def miller_indices_as_string(self) -> str:
23
- miller_indices_cls_instance = MillerIndices(root=self.miller_indices)
24
- return str(miller_indices_cls_instance)
@@ -1,10 +0,0 @@
1
- from .builder import SlabStackBuilder
2
- from .configuration import SlabStackConfiguration
3
- from .helpers import create_slab_stack, recreate_slab_with_fractional_layers
4
-
5
- __all__ = [
6
- "SlabStackBuilder",
7
- "SlabStackConfiguration",
8
- "create_slab_stack",
9
- "recreate_slab_with_fractional_layers",
10
- ]
@@ -1,36 +0,0 @@
1
- from typing import Type
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import TypeConfiguration
4
-
5
- from ......build.pristine_structures.two_dimensional.slab import SlabBuilder
6
- from ......build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
7
- from ..... import MaterialWithBuildMetadata
8
- from .....operations.core.combinations.stack.builder import StackNComponentsBuilder
9
- from .configuration import SlabStackConfiguration
10
-
11
-
12
- class SlabStackBuilder(StackNComponentsBuilder):
13
- _ConfigurationType: Type[SlabStackConfiguration] = SlabStackConfiguration
14
-
15
- @property
16
- def stack_component_types_conversion_map(self):
17
- return {
18
- **super().stack_component_types_conversion_map,
19
- SlabConfiguration: SlabBuilder,
20
- }
21
-
22
- @property
23
- def name_suffix(self) -> str:
24
- return "Slab Stack"
25
-
26
- def get_name_suffix(self, configuration: SlabStackConfiguration) -> str:
27
- return self.name_suffix
28
-
29
- def _update_material_name(
30
- self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
31
- ) -> MaterialWithBuildMetadata:
32
- name_suffix = self.get_name_suffix(configuration) or self.name_suffix
33
- base_name = material.name
34
- name = f"{base_name}, {name_suffix}"
35
- material.name = name
36
- return material
@@ -1,31 +0,0 @@
1
- from mat3ra.esse.models.materials_category_components.entities.reusable.two_dimensional.slab_stack_configuration import ( # noqa: E501
2
- SlabStackConfigurationSchema,
3
- )
4
- from mat3ra.made.material import Material
5
-
6
- from .....operations.core.combinations.stack.configuration import StackConfiguration
7
- from ....core.two_dimensional.vacuum.configuration import VacuumConfiguration
8
-
9
-
10
- class SlabStackConfiguration(StackConfiguration, SlabStackConfigurationSchema):
11
- """
12
- Configuration for stacking a slab, an isolated defect and a vacuum layer.
13
-
14
- Args:
15
- stack_components: List containing [slab, slab_component, vacuum].
16
- direction: Direction of stacking (default: z).
17
- """
18
-
19
- type: str = "SlabStackConfiguration"
20
-
21
- @property
22
- def slab(self) -> Material:
23
- return self.stack_components[0]
24
-
25
- @property
26
- def added_component(self) -> Material:
27
- return self.stack_components[1]
28
-
29
- @property
30
- def vacuum_configuration(self) -> VacuumConfiguration:
31
- return self.stack_components[2]
@@ -1,80 +0,0 @@
1
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
2
- from sympy import ceiling
3
-
4
- from ......analyze.slab import SlabMaterialAnalyzer
5
- from ......build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
6
- from ......build.pristine_structures.two_dimensional.slab.helpers import create_slab
7
- from ......modify import filter_by_box
8
- from ..... import MaterialWithBuildMetadata
9
- from ....core.two_dimensional.vacuum.configuration import VacuumConfiguration
10
- from .builder import SlabStackBuilder
11
- from .configuration import SlabStackConfiguration
12
-
13
-
14
- def create_slab_stack(
15
- slab: MaterialWithBuildMetadata, added_component: MaterialWithBuildMetadata
16
- ) -> MaterialWithBuildMetadata:
17
- """
18
- Create a slab stack by stacking a slab, a slab component, and a vacuum layer.
19
-
20
- Args:
21
- slab: The original slab material.
22
- added_component: The material to be stacked on top of the slab.
23
- Returns:
24
- Material: The new slab stack material.
25
- """
26
- analyzer = SlabMaterialAnalyzer(material=slab)
27
-
28
- slab_without_vacuum_configuration = analyzer.slab_configuration_with_no_vacuum
29
- slab_build_parameters = analyzer.build_parameters
30
-
31
- new_slab = SlabBuilder(build_parameters=slab_build_parameters).get_material(slab_without_vacuum_configuration)
32
-
33
- original_vacuum_config = analyzer.get_slab_vacuum_configuration()
34
- vacuum_config = VacuumConfiguration(
35
- size=original_vacuum_config.size, crystal=new_slab, direction=original_vacuum_config.direction
36
- )
37
-
38
- slab_stack_config = SlabStackConfiguration(
39
- stack_components=[new_slab, added_component, vacuum_config], direction=AxisEnum.z
40
- )
41
-
42
- slab_stack_builder = SlabStackBuilder()
43
- return slab_stack_builder.get_material(slab_stack_config)
44
-
45
-
46
- def recreate_slab_with_fractional_layers(
47
- slab: MaterialWithBuildMetadata, number_of_layers: float
48
- ) -> MaterialWithBuildMetadata:
49
- """
50
- Create a slab with a specified number of fractional layers.
51
-
52
- Args:
53
- slab: The original slab material.
54
- number_of_layers: The total number of layers in the new slab.
55
- Returns:
56
- Material: The new slab material with the specified number of layers and vacuum if needed.
57
- """
58
- analyzer = SlabMaterialAnalyzer(material=slab)
59
- slab_without_vacuum = analyzer.slab_configuration_with_no_vacuum
60
- build_parameters = analyzer.build_parameters
61
-
62
- ceiling_number_of_layers = int(ceiling(number_of_layers))
63
- slab_with_int_layers_without_vacuum = create_slab(
64
- crystal=slab_without_vacuum.atomic_layers.crystal,
65
- miller_indices=slab_without_vacuum.atomic_layers.miller_indices,
66
- termination_top_formula=slab_without_vacuum.atomic_layers.termination_top.formula
67
- if slab_without_vacuum.atomic_layers.termination_top
68
- else None,
69
- termination_bottom_formula=None,
70
- number_of_layers=ceiling_number_of_layers,
71
- vacuum=0,
72
- xy_supercell_matrix=build_parameters.xy_supercell_matrix,
73
- )
74
-
75
- max_z_crystal_coordinate = number_of_layers / ceiling_number_of_layers
76
- return filter_by_box(
77
- slab_with_int_layers_without_vacuum,
78
- max_coordinate=[1, 1, max_z_crystal_coordinate],
79
- reset_ids=True,
80
- )
@@ -1,8 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class CoordinatesShapeEnum(str, Enum):
5
- SPHERE = "sphere"
6
- CYLINDER = "cylinder"
7
- BOX = "rectangle"
8
- TRIANGULAR_PRISM = "triangular_prism"
@@ -1,2 +0,0 @@
1
- from .material_build_metadata import BuildMetadata, MaterialBuildMetadata
2
- from .material_with_build_metadata import MaterialWithBuildMetadata