@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,106 +0,0 @@
1
- from typing import List, Optional
2
-
3
- import numpy as np
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
6
- from mat3ra.made.material import Material
7
- from mat3ra.made.utils import AXIS_TO_INDEX_MAP
8
-
9
- from ...build_components import MaterialWithBuildMetadata
10
- from ...modify import translate_by_vector
11
- from .utils import merge_two_materials, should_skip_stacking
12
-
13
-
14
- def merge(
15
- materials: List[Material],
16
- merge_method: Optional[MergeMethodsEnum] = MergeMethodsEnum.ADD,
17
- material_name: Optional[str] = None,
18
- distance_tolerance: float = 0.1,
19
- merge_dangerously: bool = False,
20
- ) -> MaterialWithBuildMetadata:
21
- """
22
- Merge multiple materials using a specific merge method.
23
-
24
- Args:
25
- materials (List[Material]): List of materials to merge.
26
- merge_method (MergeMethodsEnum): The merge method to use.
27
- material_name (Optional[str]): Name of the merged material.
28
- distance_tolerance (float): The tolerance for resolving overlapping coordinates.
29
- merge_dangerously (bool): If True, allows merging even if lattices are different.
30
-
31
- Returns:
32
- MaterialWithBuildMetadata: The merged material.
33
- """
34
- merged_material = materials[0]
35
- for material in materials[1:]:
36
- merged_material = merge_two_materials(
37
- merged_material, material, merge_method, material_name, distance_tolerance, merge_dangerously
38
- )
39
- return merged_material
40
-
41
-
42
- def stack(materials: List[Material], direction: AxisEnum) -> MaterialWithBuildMetadata:
43
- result = materials[0]
44
- for material in materials[1:]:
45
- result = stack_two_materials(material_1=result, material_2=material, direction=direction)
46
- return result
47
-
48
-
49
- def stack_two_materials(
50
- material_1: Material,
51
- material_2: Material,
52
- direction: AxisEnum = AxisEnum.z,
53
- ) -> MaterialWithBuildMetadata:
54
- """
55
- Stack two materials along a specified direction by expanding lattices and merging.
56
-
57
- First attempts to stack materials as-is. If that fails due to lattice mismatch,
58
- adjusts the in-plane lattice vectors of material_2 to match material_1 and tries again.
59
-
60
- Args:
61
- material_1: First material to stack.
62
- material_2: Second material to stack.
63
- direction: Direction along which to stack (x, y, or z axis).
64
-
65
- Returns:
66
- MaterialWithBuildMetadata: Stacked material with combined lattice and atoms.
67
- """
68
- lattice_vector_index = AXIS_TO_INDEX_MAP[direction.value]
69
-
70
- try:
71
- if should_skip_stacking(material_1, material_2, lattice_vector_index):
72
- return material_1.clone()
73
-
74
- material_1_lattice_vectors = material_1.lattice.vector_arrays
75
- material_2_lattice_vectors = material_2.lattice.vector_arrays
76
-
77
- stacked_lattice_vectors_values = [vector.copy() for vector in material_1_lattice_vectors]
78
- stacked_lattice_vectors_values[lattice_vector_index] = (
79
- np.array(material_1_lattice_vectors[lattice_vector_index])
80
- + np.array(material_2_lattice_vectors[lattice_vector_index])
81
- ).tolist()
82
-
83
- material_1_final_lattice_config = material_1.clone()
84
- material_1_final_lattice_config.set_lattice_vectors_from_array(stacked_lattice_vectors_values)
85
-
86
- # Translate material2 so its atoms are positioned correctly relative to material1
87
- material_2_adjusted_c = material_2.clone()
88
- material_2_adjusted_c.set_lattice_vectors_from_array(stacked_lattice_vectors_values)
89
- # The translation amount is the original lattice vector of material1 in the stacking direction
90
- translation_vec = material_1_lattice_vectors[lattice_vector_index]
91
- material_2_translated = translate_by_vector(
92
- material_2_adjusted_c, translation_vec, use_cartesian_coordinates=True
93
- )
94
-
95
- stacked_material = merge_two_materials(
96
- material1=material_1_final_lattice_config,
97
- material2=material_2_translated,
98
- distance_tolerance=0,
99
- merge_dangerously=False,
100
- material_name=material_1.name,
101
- )
102
- return stacked_material
103
- except ValueError as e:
104
- raise ValueError(
105
- f"Failed to stack materials {material_1.name} and {material_2.name} due to lattice mismatch: {str(e)}"
106
- ) from e
@@ -1,170 +0,0 @@
1
- from typing import List
2
-
3
- import numpy as np
4
- from mat3ra.code.vector import Vector3D
5
- from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
6
- from mat3ra.made.material import Material
7
-
8
- from ...build_components.metadata import MaterialWithBuildMetadata
9
- from ...build_components.operations.core.modifications.perturb import FunctionHolder
10
- from ...convert import from_ase, to_ase
11
- from ...modify import translate_by_vector, wrap_to_unit_cell
12
- from ...third_party import ase_make_supercell
13
- from ...utils import decorator_convert_supercell_matrix_2x2_to_3x3
14
-
15
-
16
- def translate(material: Material, vector: Vector3D) -> Material:
17
- return translate_by_vector(material, vector, use_cartesian_coordinates=True)
18
-
19
-
20
- def translate_atoms(
21
- material: Material,
22
- atom_ids: List[int],
23
- vector: Vector3D,
24
- use_cartesian_coordinates: bool = True,
25
- ) -> Material:
26
- """
27
- Translate the given atoms by a vector.
28
-
29
- Basis order is preserved.
30
-
31
- Args:
32
- material (Material): The material to translate atoms in.
33
- atom_ids (List[int]): Indices of the atoms to translate.
34
- vector (Vector3D): The vector to translate the atoms by.
35
- use_cartesian_coordinates (bool): Whether `vector` is in cartesian coordinates.
36
-
37
- Returns:
38
- Material: The material with the given atoms translated.
39
-
40
- Raises:
41
- IndexError: If any atom id is out of range for the basis.
42
- """
43
- new_material = material.clone()
44
- if use_cartesian_coordinates:
45
- new_material.to_cartesian()
46
- coordinates: List[List[float]] = [list(coordinate) for coordinate in new_material.basis.coordinates.values]
47
-
48
- out_of_range = [atom_id for atom_id in atom_ids if not -len(coordinates) <= atom_id < len(coordinates)]
49
- if out_of_range:
50
- raise IndexError(f"Atom ids {out_of_range} are out of range for a basis of {len(coordinates)} atoms.")
51
-
52
- for atom_id in atom_ids:
53
- coordinates[atom_id] = (np.array(coordinates[atom_id]) + np.array(vector)).tolist()
54
-
55
- new_material.set_coordinates(coordinates)
56
- if use_cartesian_coordinates:
57
- new_material.to_crystal()
58
- return new_material
59
-
60
-
61
- @decorator_convert_supercell_matrix_2x2_to_3x3
62
- def supercell(material: MaterialWithBuildMetadata, supercell_matrix) -> MaterialWithBuildMetadata:
63
- atoms = to_ase(material)
64
-
65
- supercell_atoms = ase_make_supercell(atoms, supercell_matrix)
66
- material_config = from_ase(supercell_atoms)
67
- # ASE make_supercell drops atoms.info; merge prior build/boundaryConditions when present.
68
- source_metadata = material.to_dict().get("metadata") or {}
69
- if source_metadata:
70
- material_config["metadata"] = {**material_config.get("metadata", {}), **source_metadata}
71
- new_material = MaterialWithBuildMetadata.create(material_config)
72
- new_material.name = material.name
73
- return new_material
74
-
75
-
76
- def edit_cell(material: Material, lattice_vectors=None) -> MaterialWithBuildMetadata:
77
- if lattice_vectors is not None:
78
- material.set_lattice_vectors(
79
- lattice_vector1=lattice_vectors[0], lattice_vector2=lattice_vectors[1], lattice_vector3=lattice_vectors[2]
80
- )
81
- wrapped_material = wrap_to_unit_cell(material)
82
- return wrapped_material
83
-
84
-
85
- def strain(material: Material, strain_matrix: Matrix3x3Schema) -> Material:
86
- """
87
- Applies a strain to the material by modifying its lattice vectors while keeping the basis in crystal coordinates.
88
- """
89
- if not isinstance(strain_matrix, Matrix3x3Schema):
90
- raise ValueError("strain_matrix must be an instance of Matrix3x3Schema")
91
-
92
- strain_matrix_np = np.array([row.root for row in strain_matrix.root])
93
- lattice_vectors_np = np.array(material.lattice.vector_arrays)
94
- new_lattice_vectors_np = lattice_vectors_np @ strain_matrix_np
95
- new_lattice_vectors = new_lattice_vectors_np.tolist()
96
-
97
- new_material = material.clone()
98
-
99
- original_crystal_coords = new_material.basis.coordinates.values
100
-
101
- new_material.set_lattice_vectors_from_array(new_lattice_vectors)
102
- new_material.basis.coordinates.values = original_crystal_coords
103
-
104
- return new_material
105
-
106
-
107
- def perturb(
108
- material: Material, perturbation_function: FunctionHolder, use_cartesian_coordinates: bool = False
109
- ) -> Material:
110
- """
111
- Applies a small delta perturbation to a each atom in the material. Lattice vectors are not modified.
112
-
113
- Args:
114
- material: The input Material instance containing coordinates.
115
- perturbation_function: A PerturbationFunctionHolder that defines
116
- a function f(x,y,z) -> float (or vector) and
117
- optional transform_coordinates behavior.
118
- use_cartesian_coordinates: If True, the perturbation is applied in Cartesian coordinates.
119
- If False, the perturbation is applied in crystal coordinates.
120
-
121
- Returns:
122
- A new Material with perturbed coordinates.
123
- """
124
- new_material = material.clone()
125
- if use_cartesian_coordinates:
126
- new_material.to_cartesian()
127
- original_coordinates = new_material.basis.coordinates.values
128
- perturbed_coordinates: List[List[float]] = []
129
-
130
- for coordinate in original_coordinates:
131
- displacement = perturbation_function.apply_function(coordinate, material=new_material)
132
-
133
- if isinstance(displacement, (list, tuple, np.ndarray)):
134
- delta = np.array(displacement)
135
- else:
136
- delta = np.array([0.0, 0.0, displacement])
137
-
138
- new_coordinate = np.array(coordinate) + delta
139
- perturbed_coordinates.append(new_coordinate.tolist())
140
-
141
- new_material.set_coordinates(perturbed_coordinates)
142
- if use_cartesian_coordinates:
143
- new_material.to_crystal()
144
- return new_material
145
-
146
-
147
- def rotate(material: Material, axis: List[int], angle: float, wrap: bool = True) -> Material:
148
- """
149
- Rotate the basis of the material relative to the lattice.
150
- This operation breaks symmetry and does not modify lattice vectors.
151
-
152
- Args:
153
- material (Material): The material to rotate.
154
- axis (List[int]): The axis to rotate around, expressed as [x, y, z].
155
- angle (float): The angle of rotation in degrees.
156
- wrap (bool): Whether to wrap the material to the unit cell.
157
- Returns:
158
- Atoms: The rotated material.
159
- """
160
- new_material = material.clone()
161
- original_is_in_cartesian_units = new_material.basis.is_in_cartesian_units
162
- new_material.to_crystal()
163
- atoms = to_ase(new_material)
164
- atoms.rotate(v=axis, a=angle, center="COU", rotate_cell=False)
165
- if wrap:
166
- atoms.wrap()
167
- new_material = MaterialWithBuildMetadata.create(from_ase(atoms))
168
- if original_is_in_cartesian_units:
169
- new_material.to_cartesian()
170
- return new_material
@@ -1,138 +0,0 @@
1
- from typing import Optional
2
-
3
- import numpy as np
4
- from mat3ra.code.array_with_ids import ArrayWithIds
5
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
6
- from mat3ra.made.basis import Basis, Coordinates
7
- from mat3ra.made.material import Material
8
-
9
- from ...build_components import MaterialWithBuildMetadata
10
-
11
-
12
- def merge_two_bases(basis1: Basis, basis2: Basis, distance_tolerance: float) -> Basis:
13
- """
14
- Merges two Basis objects into a new Basis object, resolving overlapping coordinates.
15
- The function assumes that both Basis objects have the same lattice structure handled separately.
16
-
17
- Args:
18
- basis1 (Basis): The first Basis object to merge.
19
- basis2 (Basis): The second Basis object to merge.
20
- distance_tolerance (float): The tolerance for resolving overlapping coordinates.
21
-
22
- Returns:
23
- Basis: A new Basis object containing merged elements, coordinates, labels, and constraints.
24
- """
25
- basis1.to_crystal()
26
- basis2.to_crystal()
27
-
28
- merged_elements_values = basis1.elements.values + basis2.elements.values
29
- merged_coordinates_values = basis1.coordinates.values + basis2.coordinates.values
30
- merged_labels_values = basis1.labels.values + basis2.labels.values if basis1.labels and basis2.labels else []
31
- merged_constraints_values = basis1.constraints.values + basis2.constraints.values
32
-
33
- new_basis = basis1.clone()
34
- new_basis.elements = ArrayWithIds.from_values(values=merged_elements_values)
35
- new_basis.coordinates = Coordinates.from_values(values=merged_coordinates_values)
36
- new_basis.labels = ArrayWithIds.from_values(values=merged_labels_values)
37
- new_basis.constraints = ArrayWithIds.from_values(values=merged_constraints_values)
38
- new_basis.resolve_colliding_coordinates(tolerance=distance_tolerance)
39
-
40
- return new_basis
41
-
42
-
43
- def merge_two_materials(
44
- material1: Material,
45
- material2: Material,
46
- merge_method: Optional[MergeMethodsEnum] = MergeMethodsEnum.ADD,
47
- material_name: Optional[str] = None,
48
- distance_tolerance: float = 0.1,
49
- merge_dangerously: bool = False,
50
- ) -> MaterialWithBuildMetadata:
51
- """
52
- Merge two materials using a specific merge method.
53
-
54
- Args:
55
- material1 (Material): The first material to merge.
56
- material2 (Material): The second material to merge.
57
- merge_method (MergeMethodsEnum): The merge method to use.
58
- material_name (Optional[str]): Name of the merged material.
59
- distance_tolerance (float): The tolerance for resolving overlapping coordinates.
60
- merge_dangerously (bool): If True, allows merging even if lattices are different.
61
-
62
- Returns:
63
- MaterialWithBuildMetadata: The merged material.
64
- """
65
- if not np.allclose(material1.lattice.vector_arrays, material2.lattice.vector_arrays) and not merge_dangerously:
66
- raise ValueError("Lattices of the two materials must be the same.")
67
-
68
- if merge_method == MergeMethodsEnum.ADD:
69
- merged_basis = merge_bases_add(material1.basis, material2.basis, distance_tolerance)
70
- elif merge_method == MergeMethodsEnum.REPLACE:
71
- merged_basis = merge_bases_replace(material1.basis, material2.basis, distance_tolerance)
72
- elif merge_method == MergeMethodsEnum.YIELD:
73
- merged_basis = merge_bases_yield(material1.basis, material2.basis, distance_tolerance)
74
- else:
75
- raise ValueError(f"Unknown merge method: {merge_method}")
76
-
77
- name = material_name or "Merged Material"
78
- new_material = MaterialWithBuildMetadata.create(
79
- {"name": name, "lattice": material1.lattice.to_dict(), "basis": merged_basis.to_dict()}
80
- )
81
-
82
- return new_material
83
-
84
-
85
- def should_skip_stacking(
86
- material_1: Material,
87
- material_2: Material,
88
- lattice_vector_index: int,
89
- ) -> bool:
90
- """
91
- Determine if stacking should be skipped due to zero thickness in material_2.
92
-
93
- Also validates that materials are compatible for stacking.
94
-
95
- Args:
96
- material_1: First material to stack.
97
- material_2: Second material to stack.
98
- lattice_vector_index: Index of the lattice vector in the stacking direction.
99
-
100
- Returns:
101
- bool: True if stacking should be skipped (material_2 has zero thickness).
102
-
103
- Raises:
104
- ValueError: If in-plane lattice vectors are not the same.
105
- """
106
- material_1_lattice_vectors = material_1.lattice.vector_arrays
107
- material_2_lattice_vectors = material_2.lattice.vector_arrays
108
-
109
- is_zero_thickness = np.allclose(material_2_lattice_vectors[lattice_vector_index], [0, 0, 0])
110
- if is_zero_thickness:
111
- return True
112
-
113
- # Check that in-plane vectors are the same
114
- all_indices = [0, 1, 2]
115
- in_plane_indices = [i for i in all_indices if i != lattice_vector_index]
116
-
117
- material_1_in_plane_vectors = np.array(material_1_lattice_vectors)[in_plane_indices]
118
- material_2_in_plane_vectors = np.array(material_2_lattice_vectors)[in_plane_indices]
119
-
120
- if not np.allclose(material_1_in_plane_vectors, material_2_in_plane_vectors):
121
- difference = np.abs(material_1_in_plane_vectors - material_2_in_plane_vectors)
122
- raise ValueError(f"In-plane lattice vectors of the two materials must be the same for stacking.\n{difference}")
123
-
124
- return False
125
-
126
-
127
- def merge_bases_add(basis1: Basis, basis2: Basis, distance_tolerance: float) -> Basis:
128
- return merge_two_bases(basis1, basis2, distance_tolerance)
129
-
130
-
131
- def merge_bases_replace(basis1: Basis, basis2: Basis, distance_tolerance: float) -> Basis:
132
- base1 = basis1.clone()
133
- return merge_two_bases(base1, basis2, distance_tolerance)
134
-
135
-
136
- def merge_bases_yield(basis1: Basis, basis2: Basis, distance_tolerance: float) -> Basis:
137
- base2 = basis2.clone()
138
- return merge_two_bases(base2, basis1, distance_tolerance)
@@ -1,53 +0,0 @@
1
- import numpy as np
2
- from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
3
- from mat3ra.made.material import Material
4
-
5
- from ...modify import wrap_to_unit_cell
6
- from ..core.unary import strain
7
-
8
-
9
- def transform_material_by_matrix(material: Material, matrix: np.ndarray) -> Material:
10
- """
11
- Transforms a material by applying a transformation matrix to lattice vectors and coordinates.
12
-
13
- Args:
14
- material: The material to be transformed.
15
- matrix: The 3x3 transformation matrix as a numpy array.
16
-
17
- Returns:
18
- A new material instance with transformed lattice and coordinates, wrapped to unit cell.
19
- """
20
- current_lattice_vectors = np.array(material.lattice.vector_arrays)
21
- current_coordinates = material.basis.coordinates.values
22
-
23
- new_lattice_vectors = (matrix @ current_lattice_vectors.T).tolist()
24
- new_coordinates = (np.linalg.inv(matrix) @ np.array(current_coordinates).T).T.tolist()
25
-
26
- transformed_material = material.clone()
27
- transformed_material.set_lattice_vectors_from_array(new_lattice_vectors)
28
- transformed_material.basis.coordinates.values = new_coordinates
29
- return wrap_to_unit_cell(transformed_material)
30
-
31
-
32
- def strain_to_match_lattice(material_to_strain: Material, target_material: Material) -> Material:
33
- """
34
- Strains a material to match the lattice of a target material.
35
-
36
- Args:
37
- material_to_strain: The material to be strained.
38
- target_material: The material with the target lattice.
39
-
40
- Returns:
41
- A new material instance with the strained lattice.
42
- """
43
- target_lattice_vectors = np.array(target_material.lattice.vector_arrays)
44
- source_lattice_vectors = np.array(material_to_strain.lattice.vector_arrays)
45
-
46
- # Prevent division by zero or singular matrix issues
47
- if np.linalg.det(source_lattice_vectors) == 0:
48
- raise ValueError("Lattice of material to strain is singular and cannot be inverted.")
49
-
50
- strain_matrix_np = np.linalg.inv(source_lattice_vectors) @ target_lattice_vectors
51
- strain_matrix = Matrix3x3Schema(root=strain_matrix_np.tolist())
52
- strained_material = strain(material_to_strain, strain_matrix)
53
- return strained_material
@@ -1,55 +0,0 @@
1
- from typing import Any, Callable, Dict, List, Optional, Tuple
2
-
3
- import numpy as np
4
- from mat3ra.made.material import Material
5
-
6
-
7
- def evaluate_calculator_on_xy_grid(
8
- material: Material,
9
- calculator_function: Callable[[Material], Any],
10
- modifier: Optional[Callable] = None,
11
- modifier_parameters: Dict[str, Any] = {},
12
- grid_size_xy: Tuple[int, int] = (10, 10),
13
- grid_offset_position: List[float] = [0, 0],
14
- grid_range_x: Tuple[float, float] = (-0.5, 0.5),
15
- grid_range_y: Tuple[float, float] = (-0.5, 0.5),
16
- use_cartesian_coordinates: bool = False,
17
- ) -> Tuple[List[np.ndarray], np.ndarray]:
18
- """
19
- Calculate a property on a grid of x-y positions.
20
-
21
- Args:
22
- material (Material): The material object.
23
- modifier (Callable): The modifier function to apply to the material.
24
- modifier_parameters (Dict[str, Any]): The parameters to pass to the modifier.
25
- calculator_function (Callable): The calculator function to apply to the modified material.
26
- grid_size_xy (Tuple[int, int]): The size of the grid in x and y directions.
27
- grid_offset_position (List[float]): The offset position of the grid, in Angstroms or crystal coordinates.
28
- grid_range_x (Tuple[float, float]): The range to search in x direction, in Angstroms or crystal coordinates.
29
- grid_range_y (Tuple[float, float]): The range to search in y direction, in Angstroms or crystal coordinates.
30
- use_cartesian_coordinates (bool): Whether to use Cartesian coordinates.
31
-
32
- Returns:
33
- Tuple[List[np.ndarray[float]], np.ndarray[float]]: The x-y positions and the calculated property values.
34
- """
35
- x_values = np.linspace(grid_range_x[0], grid_range_x[1], grid_size_xy[0]) + grid_offset_position[0]
36
- y_values = np.linspace(grid_range_y[0], grid_range_y[1], grid_size_xy[1]) + grid_offset_position[1]
37
-
38
- xy_matrix = [x_values, y_values]
39
- results_matrix = np.zeros(grid_size_xy)
40
-
41
- for i, x in enumerate(x_values):
42
- for j, y in enumerate(y_values):
43
- if modifier is None:
44
- modified_material = material
45
- else:
46
- modified_material = modifier(
47
- material,
48
- displacement=[x, y, 0],
49
- use_cartesian_coordinates=use_cartesian_coordinates,
50
- **modifier_parameters,
51
- )
52
- result = calculator_function(modified_material)
53
- results_matrix[i, j] = result
54
-
55
- return xy_matrix, results_matrix
@@ -1,69 +0,0 @@
1
- from ase import Atoms as ASEAtoms
2
- from ase.build import add_vacuum as ase_add_vacuum
3
- from ase.build.supercells import make_supercell as ase_make_supercell
4
- from ase.calculators.calculator import Calculator as ASECalculator
5
- from ase.calculators.calculator import all_changes as ase_all_changes
6
- from ase.calculators.emt import EMT as ASECalculatorEMT
7
- from ase.cluster import BodyCenteredCubic as ASEBodyCenteredCubic
8
- from ase.cluster import Decahedron as ASEDecahedron
9
- from ase.cluster import FaceCenteredCubic as ASEFaceCenteredCubic
10
- from ase.cluster import HexagonalClosedPacked as ASEHexagonalClosedPacked
11
- from ase.cluster import Icosahedron as ASEIcosahedron
12
- from ase.cluster import Octahedron as ASEOctahedron
13
- from ase.cluster import SimpleCubic as ASESimpleCubic
14
- from ase.cluster.wulff import wulff_construction as ASEWulffConstruction
15
- from ase.constraints import FixAtoms as ASEFixAtoms
16
- from ase.constraints import FixedPlane as ASEFixedPlane
17
- from pymatgen.analysis.defects.core import Interstitial as PymatgenInterstitial
18
- from pymatgen.analysis.defects.core import Substitution as PymatgenSubstitution
19
- from pymatgen.analysis.defects.core import Vacancy as PymatgenVacancy
20
- from pymatgen.analysis.defects.generators import VoronoiInterstitialGenerator as PymatgenVoronoiInterstitialGenerator
21
- from pymatgen.analysis.local_env import VoronoiNN as PymatgenVoronoiNN
22
- from pymatgen.core import IStructure as PymatgenIStructure
23
- from pymatgen.core import PeriodicSite as PymatgenPeriodicSite
24
- from pymatgen.core.interface import Interface as PymatgenInterface
25
- from pymatgen.core.interface import label_termination as label_pymatgen_slab_termination
26
- from pymatgen.core.structure import Lattice as PymatgenLattice
27
- from pymatgen.core.structure import Structure as PymatgenStructure
28
- from pymatgen.core.surface import Slab as PymatgenSlab
29
- from pymatgen.core.surface import SlabGenerator as PymatgenSlabGenerator
30
- from pymatgen.io.ase import AseAtomsAdaptor as PymatgenAseAtomsAdaptor
31
- from pymatgen.io.vasp.inputs import Poscar as PymatgenPoscar
32
- from pymatgen.symmetry.analyzer import SpacegroupAnalyzer as PymatgenSpacegroupAnalyzer
33
-
34
- # Re-exported imports to allow for both use in type hints and instantiation
35
-
36
- __all__ = [
37
- "ASEAtoms",
38
- "ASECalculator",
39
- "ASECalculatorEMT",
40
- "ASEFixAtoms",
41
- "ASEFixedPlane",
42
- "ase_all_changes",
43
- "PymatgenLattice",
44
- "PymatgenStructure",
45
- "PymatgenIStructure",
46
- "PymatgenSlab",
47
- "PymatgenSlabGenerator",
48
- "PymatgenInterface",
49
- "PymatgenPeriodicSite",
50
- "PymatgenSpacegroupAnalyzer",
51
- "PymatgenVacancy",
52
- "PymatgenSubstitution",
53
- "PymatgenInterstitial",
54
- "PymatgenVoronoiInterstitialGenerator",
55
- "label_pymatgen_slab_termination",
56
- "ase_make_supercell",
57
- "ase_add_vacuum",
58
- "PymatgenAseAtomsAdaptor",
59
- "PymatgenPoscar",
60
- "PymatgenVoronoiNN",
61
- "ASESimpleCubic",
62
- "ASEBodyCenteredCubic",
63
- "ASEFaceCenteredCubic",
64
- "ASEIcosahedron",
65
- "ASEOctahedron",
66
- "ASEDecahedron",
67
- "ASEHexagonalClosedPacked",
68
- "ASEWulffConstruction",
69
- ]