@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,76 +0,0 @@
1
- from typing import Optional, Tuple, Union
2
- from typing import TypeVar
3
-
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
-
6
- from mat3ra.made.material import Material
7
- from . import NanoribbonConfiguration
8
- from .builders import NanoribbonBuilder, NanoribbonBuilderParameters
9
- from ..nanotape import NanoTapeConfiguration
10
- from .....build_components import MaterialWithBuildMetadata
11
- from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
12
- from .....build_components.entities.reusable.base_builder import BaseBuilderParameters
13
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import EdgeTypesEnum
14
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.helpers import (
15
- create_lattice_lines_config_and_material,
16
- )
17
-
18
- P = TypeVar("P", bound=BaseBuilderParameters)
19
-
20
-
21
- def create_nanoribbon(
22
- material: Union[Material, MaterialWithBuildMetadata],
23
- miller_indices_2d: Optional[Tuple[int, int]] = None,
24
- edge_type: EdgeTypesEnum = EdgeTypesEnum.zigzag,
25
- width: int = 2,
26
- length: int = 2,
27
- vacuum_width: float = 10.0,
28
- vacuum_length: float = 10.0,
29
- use_rectangular_lattice: bool = True,
30
- termination_formula: Optional[str] = None,
31
- ) -> Material:
32
- """
33
- Creates a nanoribbon material from a monolayer material.
34
-
35
- Args:
36
- material: The monolayer material to create the nanoribbon from (assumes vacuum is present).
37
- miller_indices_2d: The (u,v) Miller indices for the nanoribbon direction.
38
- edge_type: Edge type string ("zigzag"/"armchair"). Optional if miller_indices_2d is provided.
39
- width: The width of the nanoribbon in number of unit cells.
40
- length: The length of the nanoribbon in number of unit cells.
41
- vacuum_width: The width of the vacuum region in Angstroms (cartesian).
42
- vacuum_length: The length of the vacuum region in Angstroms (cartesian).
43
- use_rectangular_lattice: Whether the nanoribbon is rectangular.
44
- termination_formula: The termination formula to use for the nanoribbon (e.g., "Si").
45
-
46
- Returns:
47
- Material: The generated nanoribbon material.
48
- """
49
- lattice_lines_config = create_lattice_lines_config_and_material(
50
- material=material,
51
- miller_indices_2d=miller_indices_2d,
52
- edge_type=edge_type,
53
- width=width,
54
- length=length,
55
- termination_formula=termination_formula,
56
- )
57
- nanotape_vacuum_config = VacuumConfiguration(
58
- size=vacuum_width,
59
- direction=AxisEnum.y,
60
- )
61
- nanotape_config = NanoTapeConfiguration(
62
- stack_components=[lattice_lines_config, nanotape_vacuum_config],
63
- direction=AxisEnum.y,
64
- )
65
- vacuum_config = VacuumConfiguration(
66
- size=vacuum_length,
67
- direction=AxisEnum.x,
68
- )
69
- config = NanoribbonConfiguration(
70
- stack_components=[nanotape_config, vacuum_config],
71
- direction=AxisEnum.x,
72
- )
73
- builder = NanoribbonBuilder(
74
- build_parameters=NanoribbonBuilderParameters(use_rectangular_lattice=use_rectangular_lattice)
75
- )
76
- return builder.get_material(config)
@@ -1,11 +0,0 @@
1
- from .build_parameters import NanoTapeBuilderParameters
2
- from .configuration import NanoTapeConfiguration
3
- from .builders import NanoTapeBuilder
4
- from .helpers import create_nanotape
5
-
6
- __all__ = [
7
- "NanoTapeConfiguration",
8
- "NanoTapeBuilder",
9
- "NanoTapeBuilderParameters",
10
- "create_nanotape",
11
- ]
@@ -1,9 +0,0 @@
1
- from pydantic import Field
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
4
-
5
-
6
- class NanoTapeBuilderParameters(BaseBuilderParameters):
7
- use_rectangular_lattice: bool = Field(
8
- True, description="If True, set the XY lattice to be rectangular after stacking."
9
- )
@@ -1,83 +0,0 @@
1
- from typing import Any, Optional, Union, Type
2
-
3
- from mat3ra.made.lattice import Lattice
4
- from mat3ra.made.material import Material
5
-
6
- from . import NanoTapeBuilderParameters
7
- from .configuration import NanoTapeConfiguration
8
- from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
9
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
10
- get_edge_type_from_miller_indices,
11
- )
12
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
13
- CrystalLatticeLinesUniqueRepeatedConfiguration,
14
- )
15
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated.builder import (
16
- CrystalLatticeLinesRepeatedBuilder,
17
- )
18
- from .....build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
19
- from .....modify import wrap_to_unit_cell
20
-
21
-
22
- class NanoTapeBuilder(StackNComponentsBuilder):
23
- _ConfigurationType: Type[NanoTapeConfiguration] = NanoTapeConfiguration
24
- _GeneratedItemType: Type[Material] = Material
25
- _BuildParametersType: Type[NanoTapeBuilderParameters] = NanoTapeBuilderParameters
26
- _DefaultBuildParameters: NanoTapeBuilderParameters = NanoTapeBuilderParameters(
27
- use_rectangular_lattice=True,
28
- )
29
-
30
- @property
31
- def stack_component_types_conversion_map(self):
32
- return {
33
- **super().stack_component_types_conversion_map,
34
- CrystalLatticeLinesUniqueRepeatedConfiguration: CrystalLatticeLinesRepeatedBuilder,
35
- }
36
-
37
- def _make_rectangular_lattice(self, item: Material) -> Material:
38
- lattice_vectors = item.lattice.vector_arrays
39
- new_lattice_vectors = [
40
- [lattice_vectors[0][0], 0.0, 0.0],
41
- [0.0, lattice_vectors[1][1], 0.0],
42
- [0.0, 0.0, lattice_vectors[2][2]],
43
- ]
44
- new_lattice = Lattice.from_vectors_array(vectors=new_lattice_vectors)
45
- item.set_lattice(new_lattice)
46
- return item
47
-
48
- def _update_material_name_with_edge_type(
49
- self,
50
- material: Union[Material, MaterialWithBuildMetadata],
51
- crystal_name: str,
52
- miller_indices_2d: tuple,
53
- structure_type: str,
54
- ) -> Material:
55
- edge_type = get_edge_type_from_miller_indices(miller_indices_2d)
56
- miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
57
- material.name = f"{crystal_name} - {edge_type} {structure_type} ({miller_str})"
58
- return material
59
-
60
- def _update_material_name(
61
- self, material: Union[Material, MaterialWithBuildMetadata], configuration: Any
62
- ) -> Material:
63
- if isinstance(configuration, NanoTapeConfiguration):
64
- lattice_lines = configuration.lattice_lines
65
- material = self._update_material_name_with_edge_type(
66
- material, lattice_lines.crystal.name, lattice_lines.miller_indices_2d, "Nanotape"
67
- )
68
- return material
69
- return super()._update_material_name(material, configuration)
70
-
71
- def _post_process(
72
- self,
73
- item: Material,
74
- post_process_parameters: Optional[Any] = None,
75
- configuration: Optional[TypeConfiguration] = None,
76
- ) -> Material:
77
- item = super()._post_process(item, post_process_parameters, configuration)
78
- # wrapping before changing lattice to avoid singular atoms beyond the boundaries
79
- item = wrap_to_unit_cell(item)
80
- params = self.build_parameters or self._DefaultBuildParameters
81
- if params.use_rectangular_lattice:
82
- item = self._make_rectangular_lattice(item)
83
- return wrap_to_unit_cell(item)
@@ -1,35 +0,0 @@
1
- from typing import List, Union
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.nanotape import (
5
- NanoTapeConfigurationSchema,
6
- )
7
-
8
- from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
9
- from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
10
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
11
- CrystalLatticeLinesUniqueRepeatedConfiguration,
12
- )
13
-
14
-
15
- class NanoTapeConfiguration(StackConfiguration, NanoTapeConfigurationSchema):
16
- """
17
- Configuration for building a nanotape from crystal lattice lines.
18
- NanoTape = [CrystalLatticeLinesUniqueRepeatedConfiguration, vacuum] stacked in X or Y direction.
19
-
20
- Args:
21
- stack_components: List of configuration objects for nanotape components.
22
- direction: Direction along which to stack components.
23
- """
24
-
25
- type: str = "NanoTapeConfiguration"
26
- stack_components: List[Union[CrystalLatticeLinesUniqueRepeatedConfiguration, VacuumConfiguration]]
27
- direction: AxisEnum = AxisEnum.y
28
-
29
- @property
30
- def lattice_lines(self):
31
- return self.stack_components[0]
32
-
33
- @property
34
- def vacuum_configuration(self) -> VacuumConfiguration:
35
- return self.stack_components[1]
@@ -1,62 +0,0 @@
1
- from typing import Optional, Tuple, Union
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
-
5
- from mat3ra.made.material import Material
6
- from . import NanoTapeConfiguration
7
- from .builders import NanoTapeBuilder, NanoTapeBuilderParameters
8
- from .....build_components import MaterialWithBuildMetadata
9
- from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
10
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import EdgeTypesEnum
11
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.helpers import (
12
- create_lattice_lines_config_and_material,
13
- )
14
-
15
-
16
- def create_nanotape(
17
- material: Union[Material, MaterialWithBuildMetadata],
18
- miller_indices_2d: Optional[Tuple[int, int]] = None,
19
- edge_type: EdgeTypesEnum = EdgeTypesEnum.zigzag,
20
- width: int = 2,
21
- length: int = 2,
22
- vacuum_width: float = 10.0,
23
- use_rectangular_lattice: bool = True,
24
- termination_formula: Optional[str] = None,
25
- ) -> Material:
26
- """
27
- Creates a nanotape material from a monolayer material.
28
-
29
- Args:
30
- material: The monolayer material to create the nanotape from (assumes vacuum is present).
31
- miller_indices_2d: The (u,v) Miller indices for the nanotape direction.
32
- edge_type: Edge type string ("zigzag"/"armchair"). Optional if miller_indices_2d is provided.
33
- width: The width of the nanotape in number of unit cells.
34
- length: The length of the nanotape in number of unit cells.
35
- vacuum_width: The width of the vacuum region in Angstroms (cartesian).
36
- use_rectangular_lattice: Whether the nanotape is rectangular.
37
- termination_formula: The termination formula to use for the nanotape (e.g., "Si").
38
-
39
- Returns:
40
- Material: The generated nanotape material.
41
- """
42
- lattice_lines_config = create_lattice_lines_config_and_material(
43
- material=material,
44
- miller_indices_2d=miller_indices_2d,
45
- edge_type=edge_type,
46
- width=width,
47
- length=length,
48
- termination_formula=termination_formula,
49
- )
50
- vacuum_config = VacuumConfiguration(
51
- size=vacuum_width,
52
- crystal=material,
53
- direction=AxisEnum.y,
54
- )
55
- config = NanoTapeConfiguration(
56
- stack_components=[lattice_lines_config, vacuum_config],
57
- direction=AxisEnum.y,
58
- )
59
- builder = NanoTapeBuilder(
60
- build_parameters=NanoTapeBuilderParameters(use_rectangular_lattice=use_rectangular_lattice)
61
- )
62
- return builder.get_material(config)
@@ -1,9 +0,0 @@
1
- from .build_parameters import SlabBuilderParameters
2
- from .builder import SlabBuilder
3
- from .configuration import SlabConfiguration
4
-
5
- __all__ = [
6
- "SlabBuilderParameters",
7
- "SlabBuilder",
8
- "SlabConfiguration",
9
- ]
@@ -1,8 +0,0 @@
1
- from typing import List
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
4
-
5
-
6
- class SlabBuilderParameters(BaseBuilderParameters):
7
- use_orthogonal_c: bool = True
8
- xy_supercell_matrix: List[List[int]] = [[1, 0], [0, 1]]
@@ -1,42 +0,0 @@
1
- from typing import Type, cast
2
-
3
- from .build_parameters import SlabBuilderParameters
4
- from .configuration import SlabConfiguration
5
- from .utils import get_orthogonal_c_slab
6
- from .....build_components import MaterialWithBuildMetadata
7
- from .....build_components.entities.reusable.two_dimensional import (
8
- AtomicLayersUniqueRepeatedConfiguration,
9
- AtomicLayersUniqueRepeatedBuilder,
10
- )
11
-
12
- from .....build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
13
- from .....operations.core.unary import supercell
14
-
15
-
16
- class SlabBuilder(StackNComponentsBuilder):
17
- _BuildParametersType: Type[SlabBuilderParameters] = SlabBuilderParameters
18
- _DefaultBuildParameters: SlabBuilderParameters = SlabBuilderParameters()
19
-
20
- @property
21
- def stack_component_types_conversion_map(self):
22
- return {
23
- **super().stack_component_types_conversion_map,
24
- AtomicLayersUniqueRepeatedConfiguration: AtomicLayersUniqueRepeatedBuilder,
25
- }
26
-
27
- def _generate(self, configuration: SlabConfiguration) -> MaterialWithBuildMetadata:
28
- stack_as_material = super()._generate(configuration)
29
- build_params = cast(SlabBuilderParameters, self.build_parameters)
30
- supercell_slab = supercell(stack_as_material, build_params.xy_supercell_matrix)
31
- if build_params.use_orthogonal_c:
32
- supercell_slab = get_orthogonal_c_slab(supercell_slab)
33
- return supercell_slab
34
-
35
- def _update_material_name(
36
- self, material: MaterialWithBuildMetadata, configuration: SlabConfiguration
37
- ) -> MaterialWithBuildMetadata:
38
- # for example: "Si(001), termination Si_P4/mmm_1, Slab"
39
- material = AtomicLayersUniqueRepeatedBuilder()._update_material_name(material, configuration.atomic_layers)
40
- new_name = f"{material.name}, Slab"
41
- material.name = new_name
42
- return material
@@ -1,99 +0,0 @@
1
- from typing import List, Optional, Tuple, Union
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.slab import SlabConfigurationSchema
5
- from mat3ra.made.material import Material
6
- from .termination_utils import select_slab_termination
7
-
8
- from .....analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
9
- from .....build_components.entities.reusable.two_dimensional.atomic_layers_unique_repeated.configuration import (
10
- AtomicLayersUniqueRepeatedConfiguration,
11
- )
12
- from .....build_components.metadata import MaterialWithBuildMetadata
13
- from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
14
- from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
15
- from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
16
-
17
-
18
- class SlabConfiguration(StackConfiguration, SlabConfigurationSchema):
19
- type: str = "SlabConfiguration"
20
- stack_components: List[Union[AtomicLayersUniqueRepeatedConfiguration, VacuumConfiguration]] # No Materials!
21
- direction: AxisEnum = AxisEnum.z
22
-
23
- termination_top: Optional[Termination] = None
24
- termination_bottom: Optional[Termination] = None
25
-
26
- @property
27
- def number_of_layers(self):
28
- return self.atomic_layers.number_of_repetitions
29
-
30
- @property
31
- def vacuum(self):
32
- return self.vacuum_configuration.size
33
-
34
- @property
35
- def atomic_layers(self):
36
- return self.stack_components[0]
37
-
38
- @property
39
- def vacuum_configuration(self) -> VacuumConfiguration:
40
- return self.stack_components[1]
41
-
42
- def set_vacuum(self, vacuum: float) -> None:
43
- vacuum_configuration = self.vacuum_configuration
44
- vacuum_configuration.size = vacuum
45
- self.stack_components[1] = vacuum_configuration
46
-
47
- @classmethod
48
- def from_parameters(
49
- cls,
50
- material_or_dict: Union[Material, dict],
51
- miller_indices: Tuple[int, int, int],
52
- number_of_layers: int,
53
- termination_top_formula: Optional[str] = None,
54
- termination_bottom_formula: Optional[str] = None,
55
- vacuum: float = 10.0,
56
- use_conventional_cell: bool = True,
57
- ) -> "SlabConfiguration":
58
- """
59
- Creates a SlabConfiguration from the given parameters.
60
- Args:
61
- material_or_dict (Union[Material, dict]): Material or dictionary representation of the material.
62
- miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
63
- number_of_layers (int): Number of atomic layers in the slab, in the number of unit cells.
64
- termination_top_formula (Optional[str]): Formula of the top termination to use for the slab (i.e. "SrTiO").
65
- termination_bottom_formula (Optional[str]): Formula of the bottom termination to use for the slab.
66
-
67
- vacuum (float): Size of the vacuum layer in Angstroms.
68
-
69
- Returns:
70
- SlabConfiguration: The created slab configuration.
71
- """
72
- if isinstance(material_or_dict, dict):
73
- material = MaterialWithBuildMetadata.create(material_or_dict)
74
- else:
75
- material = material_or_dict
76
-
77
- crystal_lattice_planes_analyzer = CrystalLatticePlanesMaterialAnalyzer(
78
- material=material, miller_indices=miller_indices
79
- )
80
- terminations = crystal_lattice_planes_analyzer.terminations
81
- termination_top = select_slab_termination(terminations, termination_top_formula)
82
- termination_bottom = select_slab_termination(terminations, termination_bottom_formula)
83
-
84
- if use_conventional_cell:
85
- material = crystal_lattice_planes_analyzer.material_with_conventional_lattice
86
- atomic_layers_repeated_configuration = AtomicLayersUniqueRepeatedConfiguration(
87
- crystal=material,
88
- miller_indices=miller_indices,
89
- termination_top=termination_top,
90
- termination_bottom=termination_bottom,
91
- number_of_repetitions=number_of_layers,
92
- )
93
-
94
- vacuum_configuration = VacuumConfiguration(size=vacuum, crystal=None, direction=AxisEnum.z)
95
-
96
- return cls(
97
- stack_components=[atomic_layers_repeated_configuration, vacuum_configuration],
98
- direction=AxisEnum.z,
99
- )
@@ -1,95 +0,0 @@
1
- from typing import List, Tuple, Union, Optional
2
-
3
- from mat3ra.made.material import Material
4
- from . import SlabBuilderParameters, SlabConfiguration, SlabBuilder
5
- from .....analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
6
- from .....build_components import MaterialWithBuildMetadata
7
- from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
8
-
9
-
10
- DEFAULT_XY_SUPERCELL_MATRIX = ([1, 0], [0, 1])
11
-
12
-
13
- def create_slab(
14
- crystal: Union[Material, MaterialWithBuildMetadata],
15
- miller_indices: Tuple[int, int, int] = (0, 0, 1),
16
- use_conventional_cell=True,
17
- use_orthogonal_c: bool = True,
18
- termination_top: Optional[Termination] = None,
19
- termination_bottom: Optional[Termination] = None,
20
- termination_top_formula: Optional[str] = None,
21
- termination_bottom_formula: Optional[str] = None,
22
- number_of_layers=1,
23
- vacuum=10.0,
24
- xy_supercell_matrix=DEFAULT_XY_SUPERCELL_MATRIX,
25
- ) -> MaterialWithBuildMetadata:
26
- """
27
- Creates a slab material from a crystal material with specified Miller indices and other parameters.
28
-
29
- Args:
30
- crystal (Material): The crystal material to create the slab from.
31
- miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
32
- use_conventional_cell (bool): Whether to use the conventional cell for the crystal to apply Miller indices.
33
- use_orthogonal_c (bool): Whether to make slab with c-lattice orthogonal to miller indices plane, along z-axis.
34
- termination (Termination): The termination to use for the slab, supply a class instance of Termination.
35
- termination_formula (str): The stoichiometric formula of the termination, e.g. "Si", "TiO", "SrTiO", "Hf2O".
36
- number_of_layers (int): Number of atomic layers in the slab, in the number of unit cells.
37
- vacuum (float): Size of the vacuum layer in Angstroms.
38
- xy_supercell_matrix (List[List[int]]): Supercell matrix for the xy plane to apply to the generated slab.
39
-
40
- Returns:
41
- Material: The generated slab material.
42
- """
43
- if termination_top is not None:
44
- termination_top_formula = termination_top.formula
45
- if termination_bottom is not None:
46
- termination_bottom_formula = termination_bottom.formula
47
-
48
- slab_builder_parameters = SlabBuilderParameters(
49
- xy_supercell_matrix=xy_supercell_matrix,
50
- use_orthogonal_c=use_orthogonal_c,
51
- )
52
- slab_configuration = SlabConfiguration.from_parameters(
53
- material_or_dict=crystal,
54
- miller_indices=miller_indices,
55
- number_of_layers=number_of_layers,
56
- termination_top_formula=termination_top_formula,
57
- termination_bottom_formula=termination_bottom_formula,
58
- vacuum=vacuum,
59
- use_conventional_cell=use_conventional_cell,
60
- )
61
- builder = SlabBuilder(build_parameters=slab_builder_parameters)
62
- return builder.get_material(slab_configuration)
63
-
64
-
65
- def create_slab_if_not(
66
- material: MaterialWithBuildMetadata, default_slab_configuration: SlabConfiguration
67
- ) -> MaterialWithBuildMetadata:
68
- slab = material
69
- build_metadata_slab = slab.metadata.get_build_metadata_of_type("SlabConfiguration")
70
- if build_metadata_slab is None:
71
- print("The material is not a slab. Creating a new slab...")
72
- slab = SlabBuilder().get_material(default_slab_configuration)
73
- return slab
74
-
75
-
76
- def get_slab_terminations(
77
- material: Union[Material, MaterialWithBuildMetadata], miller_indices: Tuple[int, int, int] = (0, 0, 1)
78
- ) -> List[Termination]:
79
- crystal_lattice_planes_analyzer = CrystalLatticePlanesMaterialAnalyzer(
80
- material=material, miller_indices=miller_indices
81
- )
82
- return crystal_lattice_planes_analyzer.terminations
83
-
84
-
85
- def get_slab_material_in_standard_representation(slab_material: Union[Material, MaterialWithBuildMetadata]) -> Material:
86
- """
87
- Get the slab material in a standard representation.
88
-
89
- Args:
90
- slab_material (Material): The slab material to convert.
91
-
92
- Returns:
93
- Material: The slab material in standard representation.
94
- """
95
- pass
@@ -1,14 +0,0 @@
1
- from typing import List, Optional
2
-
3
- from mat3ra.made.tools.build_components.entities.auxiliary.two_dimensional.termination import Termination
4
-
5
-
6
- def select_slab_termination(terminations: List[Termination], formula: Optional[str] = None) -> Termination:
7
- if not terminations:
8
- raise ValueError("No terminations available.")
9
- if formula is None:
10
- return terminations[0]
11
- for termination in terminations:
12
- if termination.formula == formula:
13
- return termination
14
- raise ValueError(f"Termination with formula {formula} not found in available terminations: {terminations}")
@@ -1,61 +0,0 @@
1
- from typing import Union, Optional, List
2
-
3
- import numpy as np
4
-
5
- from mat3ra.made.lattice import Lattice
6
- from mat3ra.made.material import Material
7
- from .....build_components import MaterialWithBuildMetadata
8
- from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
9
- from .....modify import wrap_to_unit_cell
10
- from .....operations.core.unary import edit_cell
11
-
12
-
13
- def select_slab_termination(terminations: List[Termination], formula: Optional[str] = None) -> Termination:
14
- if not terminations:
15
- raise ValueError("No terminations available.")
16
- if formula is None:
17
- return terminations[0]
18
- for termination in terminations:
19
- if termination.formula == formula:
20
- return termination
21
- raise ValueError(f"Termination with formula {formula} not found in available terminations: {terminations}")
22
-
23
-
24
- def get_orthogonal_c_slab(material: Union[Material, MaterialWithBuildMetadata]) -> Material:
25
- """
26
- Make the c-vector orthogonal to the ab plane and update the basis.
27
-
28
- This function calculates a new c-vector that is orthogonal to the a and b vectors
29
- of the lattice. It then computes the transformation matrix between the old and new
30
- lattice vectors and applies this transformation to the atomic coordinates.
31
-
32
- A new material is returned with an updated lattice and basis, where the new
33
- lattice is defined by its parameters (a, b, c, alpha, beta, gamma) to avoid
34
- storing raw vectors, preserving a standard representation.
35
-
36
- Args:
37
- material (Material): The input material object.
38
-
39
- Returns:
40
- Material: A new material object with an orthogonalized c-vector and
41
- updated basis.
42
- """
43
- new_material = material.clone()
44
- current_vectors = np.array(new_material.lattice.vector_arrays)
45
- a_vec, b_vec, c_old_vec = current_vectors
46
-
47
- normal = np.cross(a_vec, b_vec)
48
- n_hat = normal / np.linalg.norm(normal)
49
- height = float(np.dot(c_old_vec, n_hat))
50
- c_new_vec = n_hat * height
51
-
52
- new_vectors = np.array([a_vec, b_vec, c_new_vec])
53
- transform_matrix = np.dot(current_vectors, np.linalg.inv(new_vectors))
54
-
55
- new_basis = new_material.basis.clone()
56
- new_basis.transform_by_matrix(transform_matrix)
57
- new_lattice_from_vectors = Lattice.from_vectors_array(new_vectors.tolist())
58
- new_material = edit_cell(new_material, new_lattice_from_vectors.vector_arrays)
59
- new_material.basis = new_basis
60
- new_material = wrap_to_unit_cell(new_material)
61
- return new_material
@@ -1,22 +0,0 @@
1
- from typing import Type
2
-
3
- from .configuration import SlabStrainedSupercellConfiguration
4
- from ..slab import SlabBuilder
5
- from .....build_components import MaterialWithBuildMetadata
6
- from .....operations.core.unary import strain, supercell
7
-
8
-
9
- class SlabStrainedSupercellBuilder(SlabBuilder):
10
- _ConfigurationType: Type[SlabStrainedSupercellConfiguration] = SlabStrainedSupercellConfiguration
11
-
12
- def _generate(self, configuration: SlabStrainedSupercellConfiguration) -> MaterialWithBuildMetadata:
13
- slab_material = super()._generate(configuration)
14
- if configuration.xy_supercell_matrix:
15
- slab_material = supercell(slab_material, configuration.xy_supercell_matrix)
16
-
17
- strained_slab_material = strain(
18
- slab_material,
19
- configuration.strain_matrix,
20
- )
21
-
22
- return strained_slab_material
@@ -1,17 +0,0 @@
1
- from typing import Optional
2
-
3
- import numpy as np
4
- from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
5
- from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.slab_strained_supercell import (
6
- SlabStrainedSupercellConfigurationSchema,
7
- )
8
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
9
- SupercellMatrix2DSchema,
10
- )
11
-
12
- from ..slab.configuration import SlabConfiguration
13
-
14
-
15
- class SlabStrainedSupercellConfiguration(SlabConfiguration, SlabStrainedSupercellConfigurationSchema):
16
- strain_matrix: Matrix3x3Schema = Matrix3x3Schema(root=np.eye(3).tolist())
17
- xy_supercell_matrix: Optional[SupercellMatrix2DSchema] = SupercellMatrix2DSchema(root=[[1, 0], [0, 1]])