@mat3ra/made 2026.8.13-0 → 2026.8.26-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 (493) hide show
  1. package/package.json +9 -5
  2. package/.babelrc +0 -10
  3. package/.eslintrc.json +0 -11
  4. package/.gitattributes +0 -1
  5. package/.husky/post-checkout +0 -3
  6. package/.husky/post-commit +0 -3
  7. package/.husky/post-merge +0 -3
  8. package/.husky/pre-commit +0 -6
  9. package/.husky/pre-push +0 -3
  10. package/.mocharc.json +0 -5
  11. package/.pre-commit-config.yaml +0 -26
  12. package/.prettierignore +0 -2
  13. package/.prettierrc +0 -6
  14. package/AGENTS.md +0 -133
  15. package/MANIFEST.in +0 -1
  16. package/data/constants.json +0 -13
  17. package/data/reciprocal_paths.json +0 -111
  18. package/images/made/tools/tools_diagram_general.png +0 -3
  19. package/images/made/tools/tools_diagram_interface.png +0 -3
  20. package/pyproject.toml +0 -123
  21. package/scripts/generate-mixins.ts +0 -28
  22. package/src/__init__.py +0 -0
  23. package/src/js/Material.ts +0 -618
  24. package/src/js/basis/basis.ts +0 -634
  25. package/src/js/basis/constrained_basis.ts +0 -115
  26. package/src/js/basis/coordinates.ts +0 -92
  27. package/src/js/basis/elements.ts +0 -24
  28. package/src/js/basis/helpers.ts +0 -20
  29. package/src/js/basis/labels.ts +0 -6
  30. package/src/js/cell/cell.ts +0 -149
  31. package/src/js/cell/conventional_cell.ts +0 -86
  32. package/src/js/cell/primitive_cell.ts +0 -166
  33. package/src/js/constants/molecule.ts +0 -18
  34. package/src/js/constants.ts +0 -4
  35. package/src/js/constraints/constraints.ts +0 -45
  36. package/src/js/generated/MaterialSchemaMixin.ts +0 -79
  37. package/src/js/lattice/lattice.ts +0 -308
  38. package/src/js/lattice/lattice_types.ts +0 -134
  39. package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -206
  40. package/src/js/lattice/reciprocal/paths.ts +0 -39
  41. package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
  42. package/src/js/lattice/unit_cell.ts +0 -66
  43. package/src/js/made.ts +0 -62
  44. package/src/js/parsers/cif.ts +0 -25
  45. package/src/js/parsers/errors.ts +0 -6
  46. package/src/js/parsers/espresso.ts +0 -29
  47. package/src/js/parsers/native_format_parsers.ts +0 -52
  48. package/src/js/parsers/parsers.ts +0 -13
  49. package/src/js/parsers/poscar.ts +0 -218
  50. package/src/js/parsers/xyz.ts +0 -190
  51. package/src/js/parsers/xyz_combinatorial_basis.ts +0 -268
  52. package/src/js/tools/basis.ts +0 -131
  53. package/src/js/tools/cell.ts +0 -40
  54. package/src/js/tools/index.ts +0 -11
  55. package/src/js/tools/material.ts +0 -64
  56. package/src/js/tools/supercell.ts +0 -89
  57. package/src/js/tools/surface.ts +0 -213
  58. package/src/py/__init__.py +0 -0
  59. package/src/py/mat3ra/__init__.py +0 -1
  60. package/src/py/mat3ra/made/__init__.py +0 -7
  61. package/src/py/mat3ra/made/basis/__init__.py +0 -255
  62. package/src/py/mat3ra/made/basis/coordinates.py +0 -43
  63. package/src/py/mat3ra/made/cell/__init__.py +0 -55
  64. package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
  65. package/src/py/mat3ra/made/data_helper.py +0 -5
  66. package/src/py/mat3ra/made/lattice.py +0 -195
  67. package/src/py/mat3ra/made/material.py +0 -135
  68. package/src/py/mat3ra/made/metadata.py +0 -45
  69. package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
  70. package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
  71. package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
  72. package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
  73. package/src/py/mat3ra/made/tools/README.md +0 -173
  74. package/src/py/mat3ra/made/tools/__init__.py +0 -0
  75. package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
  76. package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
  77. package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
  78. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
  79. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
  80. package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
  81. package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
  82. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
  83. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
  84. package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
  85. package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
  86. package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
  87. package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
  88. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
  89. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
  90. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
  91. package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
  92. package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
  93. package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
  94. package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
  95. package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
  96. package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
  97. package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
  98. package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
  99. package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
  100. package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
  101. package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
  102. package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
  103. package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
  104. package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
  105. package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
  106. package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
  107. package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
  108. package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
  109. package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
  110. package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
  111. package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
  112. package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
  113. package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
  114. package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
  115. package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
  116. package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
  117. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
  118. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
  119. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
  120. package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
  121. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
  122. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
  123. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
  124. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
  125. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
  126. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
  127. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
  128. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
  129. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
  130. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
  131. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
  132. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
  133. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
  134. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
  135. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
  136. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
  137. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
  138. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
  139. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
  140. package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
  141. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
  142. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
  143. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
  144. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
  145. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
  146. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
  147. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
  148. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
  149. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
  150. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
  151. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
  152. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
  153. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
  154. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
  155. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
  156. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
  157. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
  158. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
  159. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
  160. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
  161. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
  162. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
  163. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
  164. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
  165. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
  166. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
  167. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
  168. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
  169. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
  170. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
  171. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
  172. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
  173. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
  174. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
  175. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
  176. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
  177. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
  178. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
  179. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
  180. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
  181. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
  182. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
  183. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
  184. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
  185. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
  186. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
  187. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
  188. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
  189. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
  190. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
  191. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
  192. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
  193. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
  194. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
  195. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
  196. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
  197. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
  198. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
  199. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
  200. package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
  201. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
  202. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
  203. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
  204. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
  205. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
  206. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
  207. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
  208. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
  209. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
  210. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
  211. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
  212. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
  213. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
  214. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
  215. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
  216. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
  217. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
  218. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
  219. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
  220. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
  221. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
  222. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
  223. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
  224. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
  225. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
  226. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
  227. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
  228. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
  229. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
  230. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
  231. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
  232. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
  233. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
  234. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
  235. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
  236. package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
  237. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
  238. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
  239. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
  240. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
  241. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
  242. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
  243. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
  244. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
  245. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
  246. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
  247. package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
  248. package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
  249. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
  250. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
  251. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
  252. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
  253. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
  254. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
  255. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
  256. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
  257. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
  258. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
  259. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
  260. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
  261. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
  262. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
  263. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
  264. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
  265. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
  266. package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
  267. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
  268. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
  269. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
  270. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
  271. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
  272. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
  273. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
  274. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
  275. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
  276. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
  277. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
  278. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
  279. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
  280. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
  281. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
  282. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
  283. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
  284. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
  285. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
  286. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
  287. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
  288. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
  289. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
  290. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
  291. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
  292. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
  293. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
  294. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
  295. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
  296. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
  297. package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
  298. package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
  299. package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
  300. package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
  301. package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
  302. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
  303. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
  304. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
  305. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
  306. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
  307. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
  308. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
  309. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
  310. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
  311. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
  312. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
  313. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
  314. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
  315. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
  316. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
  317. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
  318. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
  319. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
  320. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
  321. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
  322. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
  323. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
  324. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
  325. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
  326. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
  327. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
  328. package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
  329. package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
  330. package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
  331. package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
  332. package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
  333. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
  334. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
  335. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
  336. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
  337. package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
  338. package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
  339. package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
  340. package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
  341. package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
  342. package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
  343. package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
  344. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
  345. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
  346. package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
  347. package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
  348. package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
  349. package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
  350. package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
  351. package/src/py/mat3ra/made/tools/helpers.py +0 -168
  352. package/src/py/mat3ra/made/tools/modify.py +0 -627
  353. package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
  354. package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
  355. package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
  356. package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
  357. package/src/py/mat3ra/made/tools/optimize.py +0 -55
  358. package/src/py/mat3ra/made/tools/third_party.py +0 -69
  359. package/src/py/mat3ra/made/tools/utils.py +0 -182
  360. package/src/py/mat3ra/made/utils.py +0 -144
  361. package/tests/.gitattributes +0 -1
  362. package/tests/fixtures/AsGe-basis.json +0 -3
  363. package/tests/fixtures/C2H4-translated.json +0 -3
  364. package/tests/fixtures/C2H4.json +0 -3
  365. package/tests/fixtures/FeLiSi-basis.json +0 -3
  366. package/tests/fixtures/FeO.json +0 -3
  367. package/tests/fixtures/Ge2-basis.json +0 -3
  368. package/tests/fixtures/Graphene.json +0 -3
  369. package/tests/fixtures/Graphene.poscar +0 -3
  370. package/tests/fixtures/H2+H-final.json +0 -3
  371. package/tests/fixtures/H2+H-image.json +0 -3
  372. package/tests/fixtures/H2+H-initial.json +0 -3
  373. package/tests/fixtures/H2O.poscar +0 -3
  374. package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
  375. package/tests/fixtures/LiFeSi-basis.json +0 -3
  376. package/tests/fixtures/Na.json +0 -3
  377. package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
  378. package/tests/fixtures/Na4Cl4.json +0 -3
  379. package/tests/fixtures/Na4Cl4.poscar +0 -3
  380. package/tests/fixtures/Ni-hex.json +0 -3
  381. package/tests/fixtures/Ni-hex.poscar +0 -3
  382. package/tests/fixtures/OSi-basis.json +0 -3
  383. package/tests/fixtures/Si-hex.poscar +0 -3
  384. package/tests/fixtures/Si-pwscf.in +0 -3
  385. package/tests/fixtures/Si-slab.json +0 -3
  386. package/tests/fixtures/Si-supercell.json +0 -3
  387. package/tests/fixtures/Si2-basis-repeated.json +0 -3
  388. package/tests/fixtures/Si2-basis.json +0 -3
  389. package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
  390. package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
  391. package/tests/fixtures/atomic-constraints.json +0 -3
  392. package/tests/fixtures/hashes.json +0 -3
  393. package/tests/fixtures/si-slab-100.json +0 -3
  394. package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
  395. package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
  396. package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
  397. package/tests/fixtures/si-standata.json +0 -3
  398. package/tests/js/basis/basis.ts +0 -247
  399. package/tests/js/cell/cell.ts +0 -182
  400. package/tests/js/cell/primitive_cell.ts +0 -21
  401. package/tests/js/constraints/constraints.ts +0 -11
  402. package/tests/js/fixtures.ts +0 -123
  403. package/tests/js/lattice/lattice.ts +0 -43
  404. package/tests/js/lattice/lattice_reciprocal.ts +0 -104
  405. package/tests/js/material/material.ts +0 -161
  406. package/tests/js/parsers/espresso.ts +0 -12
  407. package/tests/js/parsers/native_formats.ts +0 -35
  408. package/tests/js/parsers/poscar.ts +0 -89
  409. package/tests/js/parsers/xyz.ts +0 -33
  410. package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
  411. package/tests/js/register-esse-schemas.cjs +0 -10
  412. package/tests/js/setup.ts +0 -6
  413. package/tests/js/tools/basis.ts +0 -22
  414. package/tests/js/tools/supercell.ts +0 -58
  415. package/tests/js/tools/surface.ts +0 -111
  416. package/tests/py/conftest.py +0 -34
  417. package/tests/py/mat3ra/debug_utils.py +0 -75
  418. package/tests/py/unit/__init__.py +0 -0
  419. package/tests/py/unit/fixtures/__init__.py +0 -0
  420. package/tests/py/unit/fixtures/adatom.py +0 -60
  421. package/tests/py/unit/fixtures/bulk.py +0 -162
  422. package/tests/py/unit/fixtures/cuts.py +0 -118
  423. package/tests/py/unit/fixtures/grain_boundary.py +0 -875
  424. package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
  425. package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
  426. package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
  427. package/tests/py/unit/fixtures/interface/simple.py +0 -84
  428. package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
  429. package/tests/py/unit/fixtures/interface/zsl.py +0 -756
  430. package/tests/py/unit/fixtures/island.py +0 -336
  431. package/tests/py/unit/fixtures/merge.py +0 -147
  432. package/tests/py/unit/fixtures/monolayer.py +0 -46
  433. package/tests/py/unit/fixtures/nanoparticle.py +0 -116
  434. package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
  435. package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
  436. package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
  437. package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
  438. package/tests/py/unit/fixtures/pair_defects.py +0 -41
  439. package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
  440. package/tests/py/unit/fixtures/passivated/slab.py +0 -58
  441. package/tests/py/unit/fixtures/point_defects.py +0 -158
  442. package/tests/py/unit/fixtures/slab.py +0 -606
  443. package/tests/py/unit/fixtures/strain.py +0 -42
  444. package/tests/py/unit/fixtures/supercell.py +0 -64
  445. package/tests/py/unit/fixtures/terrace.py +0 -70
  446. package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
  447. package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
  448. package/tests/py/unit/test_cell.py +0 -104
  449. package/tests/py/unit/test_data_files.py +0 -68
  450. package/tests/py/unit/test_lattice.py +0 -103
  451. package/tests/py/unit/test_lattice_type_extended.py +0 -53
  452. package/tests/py/unit/test_material.py +0 -158
  453. package/tests/py/unit/test_operations.py +0 -126
  454. package/tests/py/unit/test_primitive_cell.py +0 -118
  455. package/tests/py/unit/test_reciprocal_lattice.py +0 -86
  456. package/tests/py/unit/test_reciprocal_paths.py +0 -64
  457. package/tests/py/unit/test_symmetry_points.py +0 -151
  458. package/tests/py/unit/test_tools_analyze.py +0 -219
  459. package/tests/py/unit/test_tools_analyze_basis.py +0 -105
  460. package/tests/py/unit/test_tools_analyze_interface.py +0 -223
  461. package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
  462. package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
  463. package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
  464. package/tests/py/unit/test_tools_analyze_swap.py +0 -80
  465. package/tests/py/unit/test_tools_build.py +0 -158
  466. package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
  467. package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
  468. package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
  469. package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
  470. package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
  471. package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
  472. package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
  473. package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
  474. package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
  475. package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
  476. package/tests/py/unit/test_tools_build_interface.py +0 -292
  477. package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
  478. package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
  479. package/tests/py/unit/test_tools_build_metadata.py +0 -79
  480. package/tests/py/unit/test_tools_build_monolayer.py +0 -33
  481. package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
  482. package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
  483. package/tests/py/unit/test_tools_build_passivation.py +0 -85
  484. package/tests/py/unit/test_tools_build_perturbation.py +0 -103
  485. package/tests/py/unit/test_tools_build_slab.py +0 -382
  486. package/tests/py/unit/test_tools_build_strain.py +0 -36
  487. package/tests/py/unit/test_tools_build_supercell.py +0 -47
  488. package/tests/py/unit/test_tools_calculate.py +0 -67
  489. package/tests/py/unit/test_tools_convert.py +0 -174
  490. package/tests/py/unit/test_tools_modify.py +0 -248
  491. package/tests/py/unit/utils.py +0 -142
  492. package/tsconfig-transpile.json +0 -3
  493. package/tsconfig.json +0 -3
@@ -1,48 +0,0 @@
1
- from typing import Union, List
2
-
3
- from mat3ra.made.material import Material
4
- from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
5
- from ......analyze.crystal_site.voronoi_crystal_site_analyzer import VoronoiCrystalSiteAnalyzer
6
- from .builder import InterstitialDefectBuilder
7
- from .configuration import InterstitialDefectConfiguration
8
- from .interstitial_placement_method_enum import InterstitialPlacementMethodEnum
9
- from ......build_components import MaterialWithBuildMetadata
10
-
11
-
12
- def create_defect_point_interstitial(
13
- material: Union[Material, MaterialWithBuildMetadata],
14
- coordinate: List[float],
15
- element: str,
16
- placement_method: str,
17
- use_cartesian_coordinates: bool = False,
18
- ) -> Material:
19
- """
20
- Create an interstitial defect in the given material.
21
-
22
- Args:
23
- material (Material): The host material.
24
- coordinate (List[float]): The coordinate where the interstitial atom will be placed.
25
- element (str): The chemical element of the interstitial atom.
26
- placement_method (InterstitialPlacementMethodEnum): Method to resolve the final coordinate.
27
- use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
28
-
29
- Returns:
30
- Material: A new material with the interstitial defect.
31
- """
32
- if use_cartesian_coordinates:
33
- coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
34
-
35
- if placement_method == InterstitialPlacementMethodEnum.VORONOI_SITE.value:
36
- analyzer = VoronoiCrystalSiteAnalyzer(material=material, coordinate=coordinate)
37
- resolved_coordinate = analyzer.voronoi_site_coordinate
38
- elif placement_method == InterstitialPlacementMethodEnum.EXACT_COORDINATE.value:
39
- analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
40
- resolved_coordinate = analyzer.exact_coordinate
41
- else:
42
- raise ValueError(f"Unsupported placement method for interstitial: {placement_method}")
43
-
44
- config = InterstitialDefectConfiguration.from_parameters(
45
- crystal=material, coordinate=resolved_coordinate, element=element
46
- )
47
- builder = InterstitialDefectBuilder()
48
- return builder.get_material(config)
@@ -1,8 +0,0 @@
1
- from enum import Enum
2
-
3
- from ..atom_placement_method_enum import AtomPlacementMethodEnum
4
-
5
-
6
- class InterstitialPlacementMethodEnum(Enum):
7
- EXACT_COORDINATE = AtomPlacementMethodEnum.EXACT_COORDINATE
8
- VORONOI_SITE = AtomPlacementMethodEnum.VORONOI_SITE
@@ -1,8 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class PointDefectTypeEnum(str, Enum):
5
- VACANCY = "vacancy"
6
- SUBSTITUTION = "substitution"
7
- INTERSTITIAL = "interstitial"
8
- ADATOM = "adatom"
@@ -1,7 +0,0 @@
1
- from .configuration import SubstitutionalDefectConfiguration
2
- from .substitution_placement_method_enum import SubstitutionPlacementMethodEnum
3
-
4
- __all__ = [
5
- "SubstitutionalDefectConfiguration",
6
- "SubstitutionPlacementMethodEnum",
7
- ]
@@ -1,6 +0,0 @@
1
- from ..base.builder import PointDefectBuilder
2
- from .configuration import SubstitutionalDefectConfiguration
3
-
4
-
5
- class SubstitutionalDefectBuilder(PointDefectBuilder):
6
- _ConfigurationType = SubstitutionalDefectConfiguration
@@ -1,41 +0,0 @@
1
- from typing import Union, List
2
-
3
- from mat3ra.esse.models.materials_category.defective_structures.zero_dimensional.point_defect.substitutional import (
4
- SubstitutionalPointDefectSchema,
5
- )
6
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
7
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
8
-
9
- from mat3ra.made.material import Material
10
- from mat3ra.made.tools.analyze.other import get_closest_site_id_from_coordinate
11
- from ..base.configuration import PointDefectConfiguration
12
- from ......build_components import MaterialWithBuildMetadata
13
- from ......build_components.entities.auxiliary.zero_dimensional.point_defect_site.configuration import (
14
- PointDefectSiteConfiguration,
15
- )
16
-
17
-
18
- def _host_atom_label_at_coordinate(
19
- crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float]
20
- ) -> Union[int, str, None]:
21
- host_labels = crystal.basis.labels.values
22
- if not host_labels:
23
- return None
24
- site_index = get_closest_site_id_from_coordinate(crystal, coordinate)
25
- return host_labels[site_index]
26
-
27
-
28
- class SubstitutionalDefectConfiguration(PointDefectConfiguration, SubstitutionalPointDefectSchema):
29
- type: str = "SubstitutionalDefectConfiguration"
30
-
31
- @classmethod
32
- def from_parameters(
33
- cls, crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float], element: str, **kwargs
34
- ):
35
- substitution_site = PointDefectSiteConfiguration(
36
- crystal=crystal,
37
- element=AtomSchema(chemical_element=element),
38
- coordinate=coordinate,
39
- host_atom_label=_host_atom_label_at_coordinate(crystal, coordinate),
40
- )
41
- return cls(merge_components=[crystal, substitution_site], merge_method=MergeMethodsEnum.REPLACE, **kwargs)
@@ -1,43 +0,0 @@
1
- from typing import Union, List
2
-
3
- from mat3ra.made.material import Material
4
- from .builder import SubstitutionalDefectBuilder
5
- from .configuration import SubstitutionalDefectConfiguration
6
- from .substitution_placement_method_enum import SubstitutionPlacementMethodEnum
7
- from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
8
- from ......build_components import MaterialWithBuildMetadata
9
-
10
-
11
- def create_defect_point_substitution(
12
- material: Union[Material, MaterialWithBuildMetadata],
13
- coordinate: List[float],
14
- element: str,
15
- placement_method: str,
16
- use_cartesian_coordinates: bool = False,
17
- ) -> Material:
18
- """
19
- Create a substitution defect in the given material.
20
-
21
- Args:
22
- material (Material): The host material.
23
- coordinate (List[float]): The coordinate of the atom to be substituted.
24
- element (str): The chemical element to substitute with.
25
- placement_method (SubstitutionPlacementMethodEnum): Method to resolve the final coordinate.
26
- use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
27
-
28
- Returns:
29
- Material: A new material with the substitution defect.
30
- """
31
- if placement_method not in [e.value for e in SubstitutionPlacementMethodEnum]:
32
- raise ValueError(f"Unsupported placement method: {placement_method}")
33
-
34
- if use_cartesian_coordinates:
35
- coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
36
-
37
- analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
38
- resolved_coordinate = analyzer.closest_site_coordinate
39
- config = SubstitutionalDefectConfiguration.from_parameters(
40
- crystal=material, coordinate=resolved_coordinate, element=element
41
- )
42
- builder = SubstitutionalDefectBuilder()
43
- return builder.get_material(config)
@@ -1,7 +0,0 @@
1
- from enum import Enum
2
-
3
- from ..atom_placement_method_enum import AtomPlacementMethodEnum
4
-
5
-
6
- class SubstitutionPlacementMethodEnum(Enum):
7
- CLOSEST_SITE = AtomPlacementMethodEnum.CLOSEST_SITE
@@ -1,24 +0,0 @@
1
- from typing import List, Literal, Optional
2
-
3
- from pydantic import BaseModel, Field
4
-
5
-
6
- class PointDefectDict(BaseModel):
7
- """
8
- Pydantic model for point defect configurations used with create_multiple_defects.
9
-
10
- Required fields:
11
- type: The type of defect ("vacancy", "substitution", "interstitial")
12
- coordinate: Position coordinates as [x, y, z] list
13
-
14
- Optional fields:
15
- element: Chemical element (required for substitution and interstitial)
16
- placement_method: Method for placing the defect
17
- use_cartesian_coordinates: Whether coordinates are in Cartesian units
18
- """
19
-
20
- type: Literal["vacancy", "substitution", "interstitial"]
21
- coordinate: List[float] = Field(..., min_items=3, max_items=3, description="Position coordinates as [x, y, z]")
22
- element: Optional[str] = None
23
- placement_method: Optional[Literal["closest_site", "exact_coordinate", "voronoi_site"]] = None
24
- use_cartesian_coordinates: bool = False
@@ -1,7 +0,0 @@
1
- from .configuration import VacancyDefectConfiguration
2
- from .vacancy_placement_method_enum import VacancyPlacementMethodEnum
3
-
4
- __all__ = [
5
- "VacancyDefectConfiguration",
6
- "VacancyPlacementMethodEnum",
7
- ]
@@ -1,19 +0,0 @@
1
- from typing import Optional, Any
2
-
3
- from .configuration import VacancyDefectConfiguration
4
- from ..base.builder import PointDefectBuilder
5
- from ......build_components import MaterialWithBuildMetadata, TypeConfiguration
6
-
7
-
8
- class VacancyDefectBuilder(PointDefectBuilder):
9
- _ConfigurationType = VacancyDefectConfiguration
10
-
11
- def _post_process(
12
- self,
13
- material: MaterialWithBuildMetadata,
14
- post_process_parameters: Optional[Any] = None,
15
- configuration: Optional[TypeConfiguration] = None,
16
- ) -> MaterialWithBuildMetadata:
17
- material = super()._post_process(material, post_process_parameters, configuration)
18
- material.basis.remove_atoms_by_elements("Vac")
19
- return material
@@ -1,27 +0,0 @@
1
- from typing import Union, List
2
-
3
- from mat3ra.esse.models.materials_category.defective_structures.zero_dimensional.point_defect.vacancy import (
4
- VacancyPointDefectSchema,
5
- )
6
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.vacancy import VacancySchema
7
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
8
-
9
- from mat3ra.made.material import Material
10
- from ..base.configuration import PointDefectConfiguration
11
- from ......build_components import MaterialWithBuildMetadata
12
- from ......build_components.entities.auxiliary.zero_dimensional.point_defect_site.configuration import (
13
- PointDefectSiteConfiguration,
14
- )
15
-
16
-
17
- class VacancyDefectConfiguration(PointDefectConfiguration, VacancyPointDefectSchema):
18
- type: str = "VacancyDefectConfiguration"
19
-
20
- @classmethod
21
- def from_parameters(cls, crystal: Union[Material, MaterialWithBuildMetadata], coordinate: List[float], **kwargs):
22
- point_defect_site = PointDefectSiteConfiguration(
23
- crystal=crystal,
24
- element=VacancySchema(),
25
- coordinate=coordinate,
26
- )
27
- return cls(merge_components=[crystal, point_defect_site], merge_method=MergeMethodsEnum.REPLACE, **kwargs)
@@ -1,42 +0,0 @@
1
- from typing import Union, List
2
-
3
- from mat3ra.made.material import Material
4
- from ......analyze.crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
5
- from .....defective_structures.zero_dimensional.point_defect.vacancy.builder import VacancyDefectBuilder
6
- from .....defective_structures.zero_dimensional.point_defect.vacancy.configuration import VacancyDefectConfiguration
7
- from .....defective_structures.zero_dimensional.point_defect.vacancy.vacancy_placement_method_enum import (
8
- VacancyPlacementMethodEnum,
9
- )
10
- from ......build_components import MaterialWithBuildMetadata
11
-
12
-
13
- def create_defect_point_vacancy(
14
- material: Union[Material, MaterialWithBuildMetadata],
15
- coordinate: List[float],
16
- placement_method: str,
17
- use_cartesian_coordinates: bool = False,
18
- ) -> Material:
19
- """
20
- Create a vacancy defect in the given material at the specified coordinate.
21
-
22
- Args:
23
- material (Material): The host material.
24
- coordinate (List[float]): The coordinate where the vacancy will be created.
25
- placement_method (VacancyPlacementMethodEnum): Method to resolve the final coordinate.
26
- use_cartesian_coordinates (bool): Whether the input coordinate is in Cartesian units.
27
-
28
- Returns:
29
- Material: A new material with the vacancy defect.
30
- """
31
- if placement_method not in [e.value for e in VacancyPlacementMethodEnum]:
32
- raise ValueError(f"Unsupported placement method: {placement_method}")
33
-
34
- # Convert coordinate to crystal if needed
35
- if use_cartesian_coordinates:
36
- coordinate = material.basis.cell.convert_point_to_crystal(coordinate)
37
-
38
- analyzer = CrystalSiteAnalyzer(material=material, coordinate=coordinate)
39
- resolved_coordinate = analyzer.closest_site_coordinate
40
- config = VacancyDefectConfiguration.from_parameters(crystal=material, coordinate=resolved_coordinate)
41
- builder = VacancyDefectBuilder()
42
- return builder.get_material(config)
@@ -1,7 +0,0 @@
1
- from enum import Enum
2
-
3
- from ..atom_placement_method_enum import AtomPlacementMethodEnum
4
-
5
-
6
- class VacancyPlacementMethodEnum(Enum):
7
- CLOSEST_SITE = AtomPlacementMethodEnum.CLOSEST_SITE
@@ -1,80 +0,0 @@
1
- from typing import Optional, Any, Union, Tuple
2
-
3
- from mat3ra.made.material import Material
4
- from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
5
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
6
- from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
7
- from .....modify import translate_to_z_level, filter_by_box
8
- from .configurations import MonolayerConfiguration
9
-
10
-
11
- class MonolayerBuilder(SlabBuilder):
12
- """
13
- Builder for creating monolayer structures from crystal materials.
14
-
15
- The builder creates different monolayer structures based on the crystal type:
16
- - HEX: Creates a slab with Miller indices (0,0,1), thickness=1, then filters half
17
- - FCC/CUB: Creates a slab with Miller indices (1,1,1), thickness=1 using primitive cell
18
- """
19
-
20
- _ConfigurationType = MonolayerConfiguration
21
- _GeneratedItemType = Material
22
-
23
- def _get_miller_indices_for_lattice_type(self, crystal) -> Tuple[int, int, int]:
24
- lattice_type_str = str(crystal.lattice.type.value)
25
-
26
- if lattice_type_str == "HEX":
27
- return (0, 0, 1)
28
- else:
29
- return (1, 1, 1)
30
-
31
- def _generate(self, configuration: MonolayerConfiguration) -> Material:
32
- crystal = configuration.crystal
33
- miller_indices = self._get_miller_indices_for_lattice_type(crystal)
34
- vacuum = configuration.vacuum
35
-
36
- slab_config = SlabConfiguration.from_parameters(
37
- material_or_dict=crystal,
38
- miller_indices=miller_indices,
39
- number_of_layers=1,
40
- vacuum=vacuum,
41
- use_conventional_cell=False,
42
- )
43
- slab = super()._generate(slab_config)
44
-
45
- lattice_type_str = crystal.lattice.type.value
46
- if lattice_type_str == "HEX":
47
- slab = self._apply_hex_filtering(slab)
48
-
49
- return slab
50
-
51
- def _apply_hex_filtering(self, slab: Material) -> Material:
52
- centered_slab = translate_to_z_level(slab, z_level="center")
53
-
54
- half_filtered_slab = filter_by_box(
55
- centered_slab, min_coordinate=[0, 0, 0.0], max_coordinate=[1, 1, 0.5], use_cartesian_coordinates=False
56
- )
57
-
58
- return half_filtered_slab
59
-
60
- # TODO: we need to move this to a common place for this and CLPBuilder
61
- def _enforce_convention(self, material: Union[Material, MaterialWithBuildMetadata]) -> Material:
62
- return translate_to_z_level(material, "bottom")
63
-
64
- def _post_process(
65
- self,
66
- item: Material,
67
- post_process_parameters: Optional[Any] = None,
68
- configuration: Optional[TypeConfiguration] = None,
69
- ) -> Material:
70
- item = super()._post_process(item, post_process_parameters, configuration)
71
- return self._enforce_convention(item)
72
-
73
- def _update_material_name(
74
- self, material: Union[Material, MaterialWithBuildMetadata], configuration: MonolayerConfiguration
75
- ) -> Material:
76
- crystal = configuration.crystal
77
-
78
- original_name = crystal.name or "Crystal"
79
- material.name = f"{original_name} - Monolayer"
80
- return material
@@ -1,22 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.made.material import Material
4
- from .....build_components import MaterialWithBuildMetadata
5
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
6
-
7
-
8
- class MonolayerConfiguration(BaseConfigurationPydantic):
9
- """
10
- Configuration for creating monolayer structures.
11
-
12
- Miller indices are automatically determined based on crystal type:
13
- - HEX crystals: (0, 0, 1)
14
- - FCC/CUB crystals: (1, 1, 1) with primitive cell
15
-
16
- Args:
17
- crystal: The crystal material to create the monolayer from.
18
- vacuum: Size of the vacuum layer in Angstroms.
19
- """
20
-
21
- crystal: Union[Material, MaterialWithBuildMetadata]
22
- vacuum: float = 10.0
@@ -1,40 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.made.material import Material
4
- from .....build_components import MaterialWithBuildMetadata
5
- from .builder import MonolayerBuilder
6
- from .configurations import MonolayerConfiguration
7
-
8
-
9
- def create_monolayer(
10
- crystal: Union[Material, MaterialWithBuildMetadata],
11
- vacuum: float = 10.0,
12
- ) -> Material:
13
- """
14
- Creates a monolayer material from a crystal material.
15
-
16
- Miller indices are automatically determined based on crystal type:
17
- - HEX crystals: (0, 0, 1) - basal plane
18
- - FCC/CUB crystals: (1, 1, 1) with primitive cell
19
- - Other types: (1, 1, 1) as generic fallback
20
-
21
- The function creates different monolayer structures based on the crystal type:
22
- - HEX: Creates a slab with thickness=1, translates to center, then filters half
23
- - FCC/CUB: Creates a slab with thickness=1 using primitive cell, then applies
24
- specific filtering and centering operations
25
-
26
- Args:
27
- crystal: The crystal material to create the monolayer from.
28
- vacuum: Size of the vacuum layer in Angstroms (default: 10.0).
29
-
30
- Returns:
31
- Material: The generated monolayer material.
32
-
33
- """
34
- configuration = MonolayerConfiguration(
35
- crystal=crystal,
36
- vacuum=vacuum,
37
- )
38
-
39
- builder = MonolayerBuilder()
40
- return builder.get_material(configuration)
@@ -1,29 +0,0 @@
1
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines import (
2
- CrystalLatticeLinesBuilder,
3
- CrystalLatticeLinesConfiguration,
4
- )
5
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
6
- EdgeTypesEnum,
7
- )
8
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
9
- CrystalLatticeLinesRepeatedBuilder,
10
- )
11
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
12
- CrystalLatticeLinesUniqueRepeatedConfiguration,
13
- )
14
-
15
-
16
- from .configuration import NanoribbonConfiguration
17
- from .helpers import (
18
- create_nanoribbon,
19
- )
20
-
21
- __all__ = [
22
- "CrystalLatticeLinesConfiguration",
23
- "CrystalLatticeLinesUniqueRepeatedConfiguration",
24
- "NanoribbonConfiguration",
25
- "CrystalLatticeLinesBuilder",
26
- "CrystalLatticeLinesRepeatedBuilder",
27
- "create_nanoribbon",
28
- "EdgeTypesEnum",
29
- ]
@@ -1,5 +0,0 @@
1
- from ..nanotape import NanoTapeBuilderParameters
2
-
3
-
4
- class NanoribbonBuilderParameters(NanoTapeBuilderParameters):
5
- pass
@@ -1,56 +0,0 @@
1
- from typing import Optional, Any, Type, Union
2
-
3
- from mat3ra.made.material import Material
4
- from . import NanoribbonConfiguration
5
- from .build_parameters import NanoribbonBuilderParameters
6
- from ..nanotape import NanoTapeBuilder, NanoTapeConfiguration
7
- from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
8
- from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
9
- get_edge_type_from_miller_indices,
10
- )
11
- from .....modify import translate_to_center
12
-
13
-
14
- class NanoribbonBuilder(NanoTapeBuilder):
15
- _ConfigurationType: Type[NanoribbonConfiguration] = NanoribbonConfiguration
16
- _BuilderParametersType: Type[NanoribbonBuilderParameters] = NanoribbonBuilderParameters
17
- _DefaultBuildParameters = NanoribbonBuilderParameters(
18
- use_rectangular_lattice=True,
19
- )
20
-
21
- @property
22
- def stack_component_types_conversion_map(self):
23
- return {**super().stack_component_types_conversion_map, NanoTapeConfiguration: NanoTapeBuilder}
24
-
25
- def _post_process(
26
- self,
27
- item: Material,
28
- post_process_parameters: Optional[Any] = None,
29
- configuration: Optional[TypeConfiguration] = None,
30
- ) -> Material:
31
- item = super()._post_process(item, post_process_parameters, configuration)
32
- item = translate_to_center(item, axes=["x", "y"])
33
- return item
34
-
35
- def _update_material_name(
36
- self, material: Union[Material, MaterialWithBuildMetadata], configuration: Any
37
- ) -> Material:
38
- if isinstance(configuration, NanoribbonConfiguration):
39
- nanotape = configuration.nanotape
40
- material = self._update_material_name_with_edge_type(
41
- material, nanotape.lattice_lines.crystal.name, nanotape.lattice_lines.miller_indices_2d, "Nanoribbon"
42
- )
43
- return material
44
- return super()._update_material_name(material, configuration)
45
-
46
- def _update_material_name_with_edge_type(
47
- self,
48
- material: Union[Material, MaterialWithBuildMetadata],
49
- crystal_name: str,
50
- miller_indices_2d: tuple,
51
- structure_type: str,
52
- ) -> Material:
53
- edge_type = get_edge_type_from_miller_indices(miller_indices_2d)
54
- miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
55
- material.name = f"{crystal_name} - {edge_type} {structure_type} ({miller_str})"
56
- return material
@@ -1,33 +0,0 @@
1
- from typing import List, Union
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.nanoribbon import (
5
- NanoribbonConfigurationSchema,
6
- )
7
-
8
- from ..nanotape.configuration import NanoTapeConfiguration
9
- from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
10
- from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
11
-
12
-
13
- class NanoribbonConfiguration(StackConfiguration, NanoribbonConfigurationSchema):
14
- """
15
- Configuration for building a nanoribbon from a nanotape.
16
- Nanoribbon = [NanoTape, vacuum] stacked in X or Y direction.
17
-
18
- Args:
19
- stack_components: List of configuration objects for nanoribbon components.
20
- direction: Direction along which to stack components.
21
- """
22
-
23
- type: str = "NanoribbonConfiguration"
24
- stack_components: List[Union[NanoTapeConfiguration, VacuumConfiguration]]
25
- direction: AxisEnum = AxisEnum.x
26
-
27
- @property
28
- def nanotape(self):
29
- return self.stack_components[0]
30
-
31
- @property
32
- def vacuum_configuration(self) -> VacuumConfiguration:
33
- return self.stack_components[1]