@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,157 +0,0 @@
1
- from typing import List, Optional, Tuple, Union
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
-
6
- from mat3ra.made.material import Material
7
- from .. import InterfaceBuilder, InterfaceConfiguration
8
- from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
9
- from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
10
- SlabStrainedSupercellConfiguration,
11
- )
12
- from ......analyze.interface import CommensurateLatticeInterfaceAnalyzer
13
- from ......analyze.lattice import get_material_with_conventional_lattice
14
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
15
- from ......build_components.metadata import MaterialWithBuildMetadata
16
-
17
-
18
- def get_commensurate_strained_configurations(
19
- material: Union[Material, MaterialWithBuildMetadata],
20
- target_angle: float,
21
- angle_tolerance: float,
22
- max_repetition_int: Optional[int],
23
- limit_max_int: int,
24
- return_first_match: bool,
25
- miller_indices: Tuple[int, int, int],
26
- number_of_layers: int,
27
- vacuum: float,
28
- match_id: int = 0,
29
- use_conventional_cell: bool = True,
30
- ) -> Tuple[List[SlabStrainedSupercellConfiguration], float]:
31
- """
32
- Get strained configurations for commensurate lattice matching.
33
-
34
- This function creates strained configurations for both substrate and film phases
35
- based on commensurate lattice matching at a specified twist angle.
36
-
37
- Args:
38
- material (Material): The material to create configurations from.
39
- target_angle (float): The target twist angle in degrees.
40
- angle_tolerance (float): Tolerance for matching angles in degrees.
41
- max_repetition_int (Optional[int]): Maximum integer for supercell matrix elements.
42
- limit_max_int (int): Limit for maximum integer to search for supercell matrices.
43
- return_first_match (bool): Whether to return the first match or all matches.
44
- miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
45
- number_of_layers (int): Number of atomic layers in the slab.
46
- vacuum (float): Size of the vacuum layer in Angstroms.
47
- match_id (int): ID of the match to use (0 for first match).
48
-
49
- Returns:
50
- Tuple[List[SlabStrainedSupercellConfiguration], float]:
51
- List of strained configurations [substrate, film] and the actual angle.
52
-
53
- Raises:
54
- ValueError: If no commensurate lattice matches are found.
55
- """
56
- if use_conventional_cell:
57
- material = get_material_with_conventional_lattice(material)
58
-
59
- slab_config = SlabConfiguration.from_parameters(
60
- material_or_dict=material,
61
- miller_indices=miller_indices,
62
- number_of_layers=number_of_layers,
63
- vacuum=vacuum,
64
- )
65
-
66
- analyzer = CommensurateLatticeInterfaceAnalyzer(
67
- substrate_slab_configuration=slab_config,
68
- target_angle=target_angle,
69
- angle_tolerance=angle_tolerance,
70
- max_supercell_matrix_int=max_repetition_int,
71
- limit_max_int=limit_max_int,
72
- return_first_match=return_first_match,
73
- )
74
-
75
- match_holders = analyzer.commensurate_lattice_match_holders
76
- if not match_holders:
77
- raise ValueError(f"No commensurate lattice matches found for angle {target_angle}°")
78
-
79
- selected_config = analyzer.get_strained_configuration_by_match_id(match_id)
80
- actual_angle = match_holders[match_id].actual_angle
81
- return [selected_config.substrate_configuration, selected_config.film_configuration], actual_angle
82
-
83
-
84
- def create_interface_commensurate(
85
- material: Union[Material, MaterialWithBuildMetadata],
86
- target_angle: float = 0.0,
87
- angle_tolerance: float = 0.1,
88
- max_repetition_int: Optional[int] = None,
89
- limit_max_int: int = 20,
90
- return_first_match: bool = True,
91
- direction: AxisEnum = AxisEnum.z,
92
- gap: float = 3.0,
93
- miller_indices: Tuple[int, int, int] = (0, 0, 1),
94
- number_of_layers: int = 1,
95
- vacuum: float = 0.0,
96
- match_id: int = 0,
97
- use_conventional_cell: bool = True,
98
- remove_overlapping_atoms: bool = True,
99
- tolerance_for_overlap: float = 1.0,
100
- ) -> MaterialWithBuildMetadata:
101
- """
102
- Create a commensurate lattice interface (twisted interface) from a material with specified twist angle.
103
-
104
- This function creates a commensurate interface by:
105
- 1. Creating a slab configuration from the material
106
- 2. Finding commensurate lattice matches at the target angle using CommensurateLatticeInterfaceAnalyzer
107
- 3. Creating strained configurations with directional gaps for both phases
108
- 4. Stacking them along the specified direction
109
-
110
- Args:
111
- material (Material): The material to create the interface from.
112
- target_angle (float): The target twist angle in degrees.
113
- angle_tolerance (float): Tolerance for matching angles in degrees.
114
- max_repetition_int (Optional[int]): Maximum integer for supercell matrix elements.
115
- limit_max_int (int): Limit for maximum integer to search for supercell matrices.
116
- return_first_match (bool): Whether to return the first match or all matches.
117
- direction (AxisEnum): Direction along which to stack components (x, y, or z).
118
- gap (float): The gap between the two phases in Angstroms.
119
- miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
120
- number_of_layers (int): Number of atomic layers in the slab.
121
- vacuum (float): Size of the vacuum layer in Angstroms.
122
- match_id (int): ID of the match to use (0 for first match).
123
- use_conventional_cell (bool): Whether to use the conventional cell for the material.
124
- remove_overlapping_atoms (bool): Whether to resolve overlapping atoms in the interface after creation.
125
- tolerance_for_overlap (float): Tolerance for resolving overlapping atoms, in Angstroms.
126
- Returns:
127
- Material: The commensurate interface material.
128
-
129
- Raises:
130
- ValueError: If no commensurate lattice matches are found.
131
- """
132
- strained_configs, _ = get_commensurate_strained_configurations(
133
- material=material,
134
- target_angle=target_angle,
135
- angle_tolerance=angle_tolerance,
136
- max_repetition_int=max_repetition_int,
137
- limit_max_int=limit_max_int,
138
- return_first_match=return_first_match,
139
- miller_indices=miller_indices,
140
- number_of_layers=number_of_layers,
141
- vacuum=vacuum,
142
- match_id=match_id,
143
- use_conventional_cell=use_conventional_cell,
144
- )
145
-
146
- vacuum_config = VacuumConfiguration(size=vacuum, crystal=None, direction=direction)
147
- interface_config = InterfaceConfiguration(
148
- stack_components=strained_configs + [vacuum_config],
149
- gaps=ArrayWithIds.from_values([gap, gap]),
150
- direction=direction,
151
- )
152
-
153
- builder = InterfaceBuilder()
154
- interface = builder.get_material(interface_config)
155
- if remove_overlapping_atoms:
156
- interface.basis.resolve_colliding_coordinates(tolerance=tolerance_for_overlap)
157
- return interface
@@ -1,7 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class StrainModes(str, Enum):
5
- strain = "strain"
6
- von_mises_strain = "von_mises_strain"
7
- mean_abs_strain = "mean_abs_strain"
@@ -1,7 +0,0 @@
1
- from .configuration import TwistedNanoribbonsInterfaceConfiguration
2
- from .helpers import create_interface_twisted
3
-
4
- __all__ = [
5
- "TwistedNanoribbonsInterfaceConfiguration",
6
- "create_interface_twisted",
7
- ]
@@ -1,13 +0,0 @@
1
- from ..base.configuration import InterfaceConfiguration
2
-
3
-
4
- class TwistedNanoribbonsInterfaceConfiguration(InterfaceConfiguration):
5
- """
6
- Configuration for creating a twisted interface between two nanoribbons with specified twist angle.
7
-
8
- Args:
9
- stack_components (List[SlabConfiguration]): List of two nanoribbons as slab configurations.
10
- angle (float): Twist angle in degrees for provenance.
11
- """
12
-
13
- angle: float = 0.0
@@ -1,70 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
-
6
- from mat3ra.made.material import Material
7
- from .. import InterfaceBuilder, InterfaceConfiguration
8
- from ......analyze.interface import TwistedNanoribbonsInterfaceAnalyzer
9
- from ......analyze.lattice import get_material_with_conventional_lattice
10
- from ......build_components import MaterialWithBuildMetadata
11
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
12
-
13
-
14
- def create_interface_twisted(
15
- material1: Union[Material, MaterialWithBuildMetadata],
16
- material2: Union[Material, MaterialWithBuildMetadata],
17
- angle: float = 0.0,
18
- vacuum_x: float = 5.0,
19
- vacuum_y: float = 5.0,
20
- gap: float = 3.0,
21
- use_conventional_cell: bool = False,
22
- ) -> MaterialWithBuildMetadata:
23
- """
24
- Create a twisted interface between two nanoribbons.
25
-
26
- Args:
27
- material1 (Material): First nanoribbon material.
28
- material2 (Material): Second nanoribbon material.
29
- angle (float): Twist angle in degrees.
30
- vacuum_x (float): Vacuum along x on both sides, in Angstroms.
31
- vacuum_y (float): Vacuum along y on both sides, in Angstroms.
32
- gap (float): Gap between the nanoribbons in Angstroms.
33
-
34
- Returns:
35
- Material: The twisted interface material.
36
- """
37
- if use_conventional_cell:
38
- material1 = get_material_with_conventional_lattice(material1)
39
- material2 = get_material_with_conventional_lattice(material2)
40
- slab1 = SlabConfiguration.from_parameters(
41
- material_or_dict=material1,
42
- miller_indices=(0, 0, 1),
43
- number_of_layers=1,
44
- vacuum=0.0,
45
- use_conventional_cell=use_conventional_cell,
46
- )
47
- slab2 = SlabConfiguration.from_parameters(
48
- material_or_dict=material2,
49
- miller_indices=(0, 0, 1),
50
- number_of_layers=1,
51
- vacuum=0.0,
52
- use_conventional_cell=use_conventional_cell,
53
- )
54
- analyzer = TwistedNanoribbonsInterfaceAnalyzer(
55
- substrate_slab_configuration=slab1,
56
- film_slab_configuration=slab2,
57
- angle=angle,
58
- vacuum_x=vacuum_x,
59
- vacuum_y=vacuum_y,
60
- )
61
- processed_slab1 = analyzer.substrate_nanoribbon_configuration
62
- processed_slab2 = analyzer.film_nanoribbon_configuration
63
-
64
- configuration = InterfaceConfiguration(
65
- stack_components=[processed_slab1, processed_slab2],
66
- gaps=ArrayWithIds.from_values([gap, gap]),
67
- direction=AxisEnum.z,
68
- )
69
- builder = InterfaceBuilder()
70
- return builder.get_material(configuration)
@@ -1,87 +0,0 @@
1
- from typing import List, Tuple, Union
2
-
3
- import numpy as np
4
-
5
- from mat3ra.made.material import Material
6
- from .enums import StrainModes
7
- from .....build_components import MaterialWithBuildMetadata
8
- from .....convert.interface_parts_enum import INTERFACE_LABELS_MAP
9
- from .....modify import interface_displace_part, filter_by_label
10
- from .....optimize import evaluate_calculator_on_xy_grid
11
- from .....third_party import PymatgenInterface
12
-
13
-
14
- def remove_duplicate_interfaces(
15
- interfaces: List[PymatgenInterface], strain_mode: StrainModes = StrainModes.mean_abs_strain
16
- ):
17
- def are_interfaces_duplicate(interface1: PymatgenInterface, interface2: PymatgenInterface):
18
- are_sizes_equivalent = interface1.num_sites == interface2.num_sites and np.allclose(
19
- interface1.interface_properties[strain_mode], interface2.interface_properties[strain_mode]
20
- )
21
- are_strains_equivalent = np.allclose(
22
- interface1.interface_properties[strain_mode], interface2.interface_properties[strain_mode]
23
- )
24
- return are_sizes_equivalent and are_strains_equivalent
25
-
26
- filtered_interfaces = [interfaces[0]] if interfaces else []
27
-
28
- for interface in interfaces[1:]:
29
- if not any(are_interfaces_duplicate(interface, unique_interface) for unique_interface in filtered_interfaces):
30
- filtered_interfaces.append(interface)
31
- return filtered_interfaces
32
-
33
-
34
- def get_slab(interface: Material, part: str = "film"):
35
- try:
36
- return filter_by_label(interface, INTERFACE_LABELS_MAP[part])
37
- except ValueError:
38
- raise ValueError(f"Material does not contain label for {part}.")
39
-
40
-
41
- def get_optimal_film_displacement(
42
- material: Union[Material, MaterialWithBuildMetadata],
43
- calculator,
44
- grid_size_xy: Tuple[int, int] = (10, 10),
45
- grid_offset_position: List[float] = [0, 0],
46
- grid_range_x=(-0.5, 0.5),
47
- grid_range_y=(-0.5, 0.5),
48
- use_cartesian_coordinates=False,
49
- ):
50
- """
51
- Calculate the optimal displacement in of the film to minimize the interaction energy
52
- between the film and the substrate. The displacement is calculated on a grid.
53
-
54
- This function evaluates the interaction energy between the film and substrate
55
- over a specified grid of (x,y) displacements. It returns the displacement vector that
56
- results in the minimum interaction energy.
57
-
58
- Args:
59
- material (Material): The interface Material object.
60
- grid_size_xy (Tuple[int, int]): The size of the grid to search for the optimal displacement.
61
- grid_offset_position (List[float]): The offset position of the grid.
62
- grid_range_x (Tuple[float, float]): The range of the grid in x.
63
- grid_range_y (Tuple[float, float]): The range of the grid in y.
64
- use_cartesian_coordinates (bool): Whether to use Cartesian coordinates.
65
- calculator: The calculator to use for the calculation of the interaction energy.
66
-
67
- Returns:
68
- List[float]: The optimal displacement vector.
69
-
70
- """
71
- xy_matrix, results_matrix = evaluate_calculator_on_xy_grid(
72
- material=material,
73
- calculator_function=calculator.get_energy,
74
- modifier=interface_displace_part,
75
- modifier_parameters={},
76
- grid_size_xy=grid_size_xy,
77
- grid_offset_position=grid_offset_position,
78
- grid_range_x=grid_range_x,
79
- grid_range_y=grid_range_y,
80
- use_cartesian_coordinates=use_cartesian_coordinates,
81
- )
82
- min_index = np.unravel_index(np.argmin(results_matrix), results_matrix.shape)
83
-
84
- optimal_x = xy_matrix[0][min_index[0]]
85
- optimal_y = xy_matrix[1][min_index[1]]
86
-
87
- return [optimal_x, optimal_y, 0]
@@ -1,6 +0,0 @@
1
- from .helpers import create_interface_zsl, create_interface_zsl_between_slabs
2
-
3
- __all__ = [
4
- "create_interface_zsl",
5
- "create_interface_zsl_between_slabs",
6
- ]
@@ -1,129 +0,0 @@
1
- from typing import List, Optional, Tuple, Union
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
-
5
- from mat3ra.made.material import Material
6
- from ......analyze.interface import ZSLInterfaceAnalyzer
7
- from ......analyze.lattice import get_material_with_conventional_lattice
8
- from ......analyze.slab import SlabMaterialAnalyzer
9
- from ......build.compound_pristine_structures.two_dimensional.interface import (
10
- InterfaceBuilderParameters,
11
- InterfaceBuilder,
12
- InterfaceConfiguration,
13
- )
14
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.helpers import create_slab
15
- from ......build_components import MaterialWithBuildMetadata
16
- from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
17
-
18
-
19
- def create_interface_zsl(
20
- substrate_crystal: Union[Material, MaterialWithBuildMetadata],
21
- film_crystal: Union[Material, MaterialWithBuildMetadata],
22
- substrate_miller_indices: Tuple[int, int, int] = (0, 0, 1),
23
- film_miller_indices: Tuple[int, int, int] = (0, 0, 1),
24
- substrate_number_of_layers: int = 1,
25
- film_number_of_layers: int = 1,
26
- substrate_termination_formula: Optional[str] = None,
27
- film_termination_formula: Optional[str] = None,
28
- gap: Optional[float] = None,
29
- vacuum: float = 10.0,
30
- xy_shift: List[float] = [0, 0],
31
- max_area: float = 50.0,
32
- match_id: int = 0,
33
- max_area_ratio_tol: float = 0.09,
34
- max_length_tol: float = 0.03,
35
- max_angle_tol: float = 0.01,
36
- use_conventional_cell: bool = True,
37
- reduce_result_cell: bool = True,
38
- reduce_result_cell_to_primitive: bool = False,
39
- ) -> MaterialWithBuildMetadata:
40
- if use_conventional_cell:
41
- substrate_crystal = get_material_with_conventional_lattice(substrate_crystal)
42
- film_crystal = get_material_with_conventional_lattice(film_crystal)
43
-
44
- substrate_slab = create_slab(
45
- crystal=substrate_crystal,
46
- miller_indices=substrate_miller_indices,
47
- number_of_layers=substrate_number_of_layers,
48
- vacuum=0,
49
- termination_bottom_formula=substrate_termination_formula,
50
- use_conventional_cell=use_conventional_cell,
51
- )
52
- film_slab = create_slab(
53
- crystal=film_crystal,
54
- miller_indices=film_miller_indices,
55
- number_of_layers=film_number_of_layers,
56
- vacuum=0,
57
- termination_top_formula=film_termination_formula,
58
- use_conventional_cell=use_conventional_cell,
59
- )
60
-
61
- return create_interface_zsl_between_slabs(
62
- substrate_slab=substrate_slab,
63
- film_slab=film_slab,
64
- gap=gap,
65
- vacuum=vacuum,
66
- xy_shift=xy_shift,
67
- max_area=max_area,
68
- max_area_ratio_tol=max_area_ratio_tol,
69
- max_length_tol=max_length_tol,
70
- max_angle_tol=max_angle_tol,
71
- match_id=match_id,
72
- reduce_result_cell=reduce_result_cell,
73
- reduce_result_cell_to_primitive=reduce_result_cell_to_primitive,
74
- )
75
-
76
-
77
- def create_interface_zsl_between_slabs(
78
- substrate_slab: MaterialWithBuildMetadata,
79
- film_slab: MaterialWithBuildMetadata,
80
- gap: Optional[float] = None,
81
- vacuum: float = 10.0,
82
- xy_shift: Optional[List[float]] = None,
83
- max_area: float = 200.0,
84
- max_area_ratio_tol: float = 0.1,
85
- max_length_tol: float = 0.03,
86
- max_angle_tol: float = 0.01,
87
- match_id: int = 0,
88
- reduce_result_cell: bool = True,
89
- reduce_result_cell_to_primitive: bool = False,
90
- ) -> MaterialWithBuildMetadata:
91
- if xy_shift is None:
92
- xy_shift = [0, 0]
93
-
94
- substrate_slab_config = SlabMaterialAnalyzer(material=substrate_slab).build_configuration
95
- film_slab_config = SlabMaterialAnalyzer(material=film_slab).build_configuration
96
-
97
- analyzer = ZSLInterfaceAnalyzer(
98
- substrate_slab_configuration=substrate_slab_config,
99
- film_slab_configuration=film_slab_config,
100
- max_area=max_area,
101
- max_area_ratio_tol=max_area_ratio_tol,
102
- max_length_tol=max_length_tol,
103
- max_angle_tol=max_angle_tol,
104
- reduce_result_cell=reduce_result_cell,
105
- )
106
-
107
- interface_configurations = analyzer.get_strained_configurations()
108
- if not interface_configurations:
109
- raise ValueError("No ZSL match found for the given parameters.")
110
-
111
- if match_id >= len(interface_configurations):
112
- raise IndexError(f"match_id {match_id} is out of bounds for {len(interface_configurations)} matches found.")
113
-
114
- selected_config = interface_configurations[match_id]
115
-
116
- vacuum_configuration = VacuumConfiguration(size=vacuum)
117
- stack_components = [
118
- selected_config.substrate_configuration,
119
- selected_config.film_configuration,
120
- vacuum_configuration,
121
- ]
122
-
123
- interface_config = InterfaceConfiguration(
124
- stack_components=stack_components, gaps=ArrayWithIds.from_values([gap, gap]), xy_shift=xy_shift
125
- )
126
- builder = InterfaceBuilder(
127
- build_parameters=InterfaceBuilderParameters(make_primitive=reduce_result_cell_to_primitive)
128
- )
129
- return builder.get_material(interface_config)
@@ -1,12 +0,0 @@
1
- from typing import Optional
2
-
3
- from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilderParameters
4
-
5
-
6
- class GrainBoundaryLinearBuilderParameters(InterfaceBuilderParameters):
7
- max_supercell_matrix_int: Optional[int] = None
8
- limit_max_int: Optional[int] = 30
9
- angle_tolerance: float = 0.1
10
- return_first_match: bool = False
11
- edge_inclusion_tolerance: float = 1.0
12
- distance_tolerance: float = 1.0
@@ -1,17 +0,0 @@
1
- from .build_parameters import GrainBoundaryLinearBuilderParameters
2
- from .configuration import GrainBoundaryLinearConfiguration
3
- from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilder
4
-
5
-
6
- class GrainBoundaryLinearBuilder(InterfaceBuilder):
7
- """
8
- Creates a linear grain boundary by stacking two materials along x or y direction.
9
- """
10
-
11
- _ConfigurationType = GrainBoundaryLinearConfiguration
12
- _BuildParametersType = GrainBoundaryLinearBuilderParameters
13
- _DefaultBuildParameters = GrainBoundaryLinearBuilderParameters()
14
-
15
- def get_name_suffix(self, configuration: GrainBoundaryLinearConfiguration) -> str:
16
- angle_str = f"{configuration.actual_angle:.2f} degrees" if configuration.actual_angle is not None else ""
17
- return f"Linear Grain Boundary, {angle_str}"
@@ -1,40 +0,0 @@
1
- from typing import Optional
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- # fmt: off
5
- from mat3ra.esse.models.materials_category.defective_structures.one_dimensional. \
6
- grain_boundary_linear.configuration import GrainBoundaryLinearConfigurationSchema
7
-
8
- # fmt: on
9
- from ....compound_pristine_structures.two_dimensional.interface import InterfaceConfiguration
10
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
11
-
12
-
13
- class GrainBoundaryLinearConfiguration(InterfaceConfiguration, GrainBoundaryLinearConfigurationSchema):
14
- """
15
- Configuration for creating a linear grain boundary.
16
-
17
- Args:
18
- stack_components (: of configuration objects for grain boundary components.
19
- direction (AxisEnum): Direction along which to stack components (x or y).
20
- """
21
-
22
- type: str = "GrainBoundaryLinearConfiguration"
23
- direction: AxisEnum = AxisEnum.x
24
- actual_angle: Optional[float] = None
25
-
26
- @property
27
- def phase_1_configuration(self) -> SlabConfiguration:
28
- return self.stack_components[0]
29
-
30
- @property
31
- def phase_2_configuration(self) -> SlabConfiguration:
32
- return self.stack_components[1]
33
-
34
- @property
35
- def substrate_configuration(self) -> SlabConfiguration:
36
- return self.phase_1_configuration
37
-
38
- @property
39
- def film_configuration(self) -> SlabConfiguration:
40
- return self.phase_2_configuration
@@ -1,82 +0,0 @@
1
- from typing import Optional, Tuple, Union
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
-
6
- from mat3ra.made.material import Material
7
- from .builder import GrainBoundaryLinearBuilder
8
- from .configuration import GrainBoundaryLinearConfiguration
9
- from ....compound_pristine_structures.two_dimensional.interface import get_commensurate_strained_configurations
10
- from .....analyze.lattice import get_material_with_conventional_lattice
11
- from .....build_components import MaterialWithBuildMetadata
12
-
13
-
14
- def create_grain_boundary_linear(
15
- material: Union[Material, MaterialWithBuildMetadata],
16
- target_angle: float = 0.0,
17
- angle_tolerance: float = 0.1,
18
- max_repetition_int: Optional[int] = None,
19
- limit_max_int: int = 20,
20
- return_first_match: bool = True,
21
- direction: AxisEnum = AxisEnum.x,
22
- gap: float = 3.0,
23
- miller_indices: Tuple[int, int, int] = (0, 0, 1),
24
- number_of_layers: int = 1,
25
- vacuum: float = 0.0,
26
- use_conventional_cell: bool = True,
27
- ) -> Material:
28
- """
29
- Create a linear grain boundary from a material with specified twist angle.
30
-
31
- This function creates a grain boundary by:
32
- 1. Creating a slab configuration from the material
33
- 2. Finding commensurate lattice matches at the target angle using CommensurateLatticeInterfaceAnalyzer
34
- 3. Creating strained configurations with directional gaps for both phases
35
- 4. Stacking them along the specified direction
36
-
37
- Args:
38
- material (Material): The material to create the grain boundary from.
39
- target_angle (float): The target twist angle in degrees.
40
- angle_tolerance (float): Tolerance for matching angles in degrees.
41
- max_repetition_int (Optional[int]): Maximum integer for supercell matrix elements.
42
- limit_max_int (int): Limit for maximum integer to search for supercell matrices.
43
- return_first_match (bool): Whether to return the first match or all matches.
44
- direction (AxisEnum): Direction along which to stack components (x or y).
45
- gap (float): The gap between the two phases in Angstroms.
46
- miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
47
- number_of_layers (int): Number of atomic layers in the slab.
48
- vacuum (float): Size of the vacuum layer in Angstroms.
49
-
50
- Returns:
51
- Material: The grain boundary material.
52
-
53
- Raises:
54
- ValueError: If no commensurate lattice matches are found.
55
- """
56
- if use_conventional_cell:
57
- material = get_material_with_conventional_lattice(material)
58
-
59
- strained_configs, actual_angle = get_commensurate_strained_configurations(
60
- material=material,
61
- target_angle=target_angle,
62
- angle_tolerance=angle_tolerance,
63
- max_repetition_int=max_repetition_int,
64
- limit_max_int=limit_max_int,
65
- return_first_match=return_first_match,
66
- miller_indices=miller_indices,
67
- number_of_layers=number_of_layers,
68
- vacuum=vacuum,
69
- use_conventional_cell=use_conventional_cell,
70
- )
71
-
72
- grain_boundary_config = GrainBoundaryLinearConfiguration(
73
- stack_components=strained_configs,
74
- direction=direction,
75
- gaps=ArrayWithIds.from_values([gap, gap]),
76
- actual_angle=actual_angle,
77
- )
78
-
79
- builder = GrainBoundaryLinearBuilder()
80
- grain_boundary = builder.get_material(grain_boundary_config)
81
-
82
- return grain_boundary
@@ -1,9 +0,0 @@
1
- from .builder import SolidSolutionBuilder
2
- from .configuration import SolidSolutionConfiguration
3
- from .enums import SiteSelectionMethodEnum
4
-
5
- __all__ = [
6
- "SiteSelectionMethodEnum",
7
- "SolidSolutionBuilder",
8
- "SolidSolutionConfiguration",
9
- ]