@mat3ra/made 2025.8.5-0 → 2025.8.7-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 (257) hide show
  1. package/package.json +1 -1
  2. package/pyproject.toml +1 -1
  3. package/src/py/mat3ra/made/lattice.py +11 -3
  4. package/src/py/mat3ra/made/tools/__init__.py +0 -28
  5. package/src/py/mat3ra/made/tools/analyze/__init__.py +1 -1
  6. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +1 -1
  7. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +5 -3
  8. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +5 -5
  9. package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +1 -1
  10. package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +1 -1
  11. package/src/py/mat3ra/made/tools/analyze/interface/simple.py +6 -4
  12. package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +3 -2
  13. package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +3 -1
  14. package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +2 -2
  15. package/src/py/mat3ra/made/tools/analyze/lattice.py +1 -1
  16. package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +1 -1
  17. package/src/py/mat3ra/made/tools/analyze/material.py +3 -1
  18. package/src/py/mat3ra/made/tools/analyze/other.py +1 -1
  19. package/src/py/mat3ra/made/tools/analyze/slab.py +4 -4
  20. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +1 -1
  21. package/src/py/mat3ra/made/tools/build/__init__.py +18 -2
  22. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/__init__.py +5 -9
  23. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/builder.py +20 -21
  24. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/configuration.py +8 -5
  25. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/helpers.py +5 -5
  26. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/commensurate/helpers.py +8 -7
  27. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/helpers.py +5 -6
  28. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/utils.py +5 -5
  29. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/zsl/helpers.py +11 -9
  30. package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_build_parameters.py → defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py} +2 -2
  31. package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_builder.py → defective_structures/one_dimensional/grain_boundary_linear/builder.py} +3 -3
  32. package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_configuration.py → defective_structures/one_dimensional/grain_boundary_linear/configuration.py} +2 -2
  33. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +82 -0
  34. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/builder.py +1 -1
  35. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/configuration.py +1 -1
  36. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/helpers.py +7 -7
  37. package/src/py/mat3ra/made/tools/build/{grain_boundary/planar_builder.py → defective_structures/two_dimensional/grain_boundary_planar/builder.py} +6 -7
  38. package/src/py/mat3ra/made/tools/build/{grain_boundary/planar_configuration.py → defective_structures/two_dimensional/grain_boundary_planar/configuration.py} +6 -5
  39. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +75 -0
  40. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/builder.py +1 -1
  41. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/configuration.py +1 -1
  42. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/helpers.py +11 -8
  43. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/build_parameters.py +1 -1
  44. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +30 -0
  45. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/configuration.py +3 -1
  46. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/helpers.py +9 -7
  47. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
  48. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/builder.py +3 -3
  49. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/configuration.py +6 -5
  50. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/helpers.py +1 -1
  51. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +40 -0
  52. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +7 -0
  53. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/base/builder.py +7 -7
  54. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/base/configuration.py +4 -2
  55. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/factories.py +11 -11
  56. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +95 -0
  57. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +7 -0
  58. package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/zero_dimensional/point_defect/interstitial}/configuration.py +4 -2
  59. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +48 -0
  60. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/interstitial}/interstitial_placement_method_enum.py +1 -1
  61. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +7 -0
  62. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/substitutional/configuration.py +4 -2
  63. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +43 -0
  64. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/substitutional}/substitution_placement_method_enum.py +1 -1
  65. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +7 -0
  66. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/vacancy/builder.py +2 -2
  67. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/vacancy/configuration.py +4 -2
  68. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +42 -0
  69. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/vacancy}/vacancy_placement_method_enum.py +1 -1
  70. package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
  71. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
  72. package/src/py/mat3ra/made/tools/build/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/builder.py +4 -4
  73. package/src/py/mat3ra/made/tools/build/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/configurations.py +2 -1
  74. package/src/py/mat3ra/made/tools/build/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/helpers.py +1 -1
  75. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
  76. package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/__init__.py +11 -3
  77. package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/builders.py +3 -4
  78. package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/configuration.py +3 -3
  79. package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/helpers.py +8 -4
  80. package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/__init__.py +2 -1
  81. package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/build_parameters.py +1 -1
  82. package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/builders.py +9 -7
  83. package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/configuration.py +6 -4
  84. package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/helpers.py +6 -3
  85. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +9 -0
  86. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/build_parameters.py +1 -1
  87. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/builder.py +13 -11
  88. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/configuration.py +8 -8
  89. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/helpers.py +4 -43
  90. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/termination_utils.py +1 -1
  91. package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/utils.py +5 -5
  92. package/src/py/mat3ra/made/tools/build/{slab/strained_supercell_slab → pristine_structures/two_dimensional/slab_strained_supercell}/builder.py +4 -4
  93. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
  94. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/analyzer.py +2 -2
  95. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/builder.py +4 -5
  96. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/configuration.py +1 -1
  97. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/enums.py +6 -5
  98. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/helpers.py +18 -12
  99. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/builder.py +8 -8
  100. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/configuration.py +3 -3
  101. package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
  102. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
  103. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
  104. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/coordination_based_passivation_material_analyzer.py +4 -2
  105. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/passivation_material_analyzer.py +2 -2
  106. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/surface_passivation_material_analyzer.py +3 -2
  107. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/builder.py +5 -4
  108. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/configuration.py +3 -3
  109. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/helpers.py +4 -4
  110. package/src/py/mat3ra/made/tools/build_components/__init__.py +11 -0
  111. package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
  112. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
  113. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
  114. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
  115. package/src/py/mat3ra/made/tools/{build/defect/point/defect_site → build_components/entities/auxiliary/zero_dimensional/point_defect_site}/builder.py +5 -1
  116. package/src/py/mat3ra/made/tools/{build/defect/point/defect_site → build_components/entities/auxiliary/zero_dimensional/point_defect_site}/configuration.py +1 -1
  117. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
  118. package/src/py/mat3ra/made/tools/{build → build_components/entities/auxiliary/zero_dimensional}/void_region/builder.py +3 -3
  119. package/src/py/mat3ra/made/tools/{build → build_components/entities/auxiliary/zero_dimensional}/void_region/configuration.py +2 -2
  120. package/src/py/mat3ra/made/tools/{build → build_components/entities/core/two_dimensional}/vacuum/builder.py +14 -3
  121. package/src/py/mat3ra/made/tools/{build → build_components/entities/core/two_dimensional}/vacuum/configuration.py +4 -4
  122. package/src/py/mat3ra/made/tools/{build/defect/point/atom_at_coordinate → build_components/entities/core/zero_dimensional/atom}/builder.py +3 -3
  123. package/src/py/mat3ra/made/tools/{build/defect/point/atom_at_coordinate → build_components/entities/core/zero_dimensional/atom}/configuration.py +2 -2
  124. package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
  125. package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/__init__.py +1 -2
  126. package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/base_single_builder.py +2 -2
  127. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
  128. package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/builder.py +7 -6
  129. package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/configuration.py +3 -1
  130. package/src/py/mat3ra/made/tools/{build/lattice_lines → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/helpers.py +5 -4
  131. package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/builder.py +4 -4
  132. package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/configuration.py +2 -2
  133. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/strained_non_uniform.py +0 -0
  134. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/strained_uniform.py +0 -0
  135. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
  136. package/src/py/mat3ra/made/tools/{build/supercell/supercell_configuration.py → build_components/entities/reusable/three_dimensional/supercell/configuration.py} +1 -1
  137. package/src/py/mat3ra/made/tools/{build → build_components/entities/reusable/three_dimensional}/supercell/helpers.py +5 -5
  138. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +24 -0
  139. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +7 -0
  140. package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/atomic_layers_unique_repeated/builder.py +6 -8
  141. package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/atomic_layers_unique_repeated/configuration.py +1 -1
  142. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +42 -0
  143. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +7 -0
  144. package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/crystal_lattice_planes/builder.py +7 -5
  145. package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/crystal_lattice_planes/configuration.py +4 -2
  146. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +10 -0
  147. package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/builder.py +8 -5
  148. package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/configuration.py +6 -8
  149. package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/helpers.py +6 -6
  150. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
  151. package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +2 -0
  152. package/src/py/mat3ra/made/tools/{build → build_components}/metadata/build_metadata.py +1 -2
  153. package/src/py/mat3ra/made/tools/{build → build_components}/metadata/material_with_build_metadata.py +1 -2
  154. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
  155. package/src/py/mat3ra/made/tools/{build/defect/adatom_placement_method_enum.py → build_components/operations/core/combinations/enums.py} +3 -1
  156. package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/build_parameters.py +1 -1
  157. package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/builder.py +5 -8
  158. package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/configuration.py +3 -4
  159. package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/stack/builder.py +7 -6
  160. package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/stack/configuration.py +2 -2
  161. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +5 -0
  162. package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/builders/base.py +7 -5
  163. package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/builders/isometric.py +3 -3
  164. package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/configuration.py +4 -2
  165. package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/perturbation_function_holder.py +2 -1
  166. package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/helpers.py +5 -6
  167. package/src/py/mat3ra/made/tools/build_components/utils.py +99 -0
  168. package/src/py/mat3ra/made/tools/calculate/__init__.py +2 -3
  169. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +1 -1
  170. package/src/py/mat3ra/made/tools/entities/__init__.py +2 -2
  171. package/src/py/mat3ra/made/tools/entities/termination_holder.py +1 -1
  172. package/src/py/mat3ra/made/tools/helpers.py +48 -22
  173. package/src/py/mat3ra/made/tools/modify.py +1 -26
  174. package/src/py/mat3ra/made/tools/operations/core/binary.py +1 -1
  175. package/src/py/mat3ra/made/tools/operations/core/unary.py +27 -2
  176. package/src/py/mat3ra/made/tools/operations/core/utils.py +1 -2
  177. package/tests/py/unit/test_operations.py +1 -1
  178. package/tests/py/unit/test_tools_analyze.py +4 -2
  179. package/tests/py/unit/test_tools_analyze_interface.py +1 -1
  180. package/tests/py/unit/test_tools_analyze_interface_zsl.py +4 -2
  181. package/tests/py/unit/test_tools_build.py +6 -3
  182. package/tests/py/unit/test_tools_build_defect/test_adatom.py +6 -3
  183. package/tests/py/unit/test_tools_build_defect/test_island.py +2 -2
  184. package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +8 -4
  185. package/tests/py/unit/test_tools_build_defect/test_point_defect.py +6 -4
  186. package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +4 -1
  187. package/tests/py/unit/test_tools_build_defect/test_terrace.py +2 -2
  188. package/tests/py/unit/test_tools_build_grain_boundary.py +12 -3
  189. package/tests/py/unit/test_tools_build_interface.py +14 -7
  190. package/tests/py/unit/test_tools_build_interface_zsl.py +6 -5
  191. package/tests/py/unit/test_tools_build_metadata.py +1 -1
  192. package/tests/py/unit/test_tools_build_monolayer.py +1 -1
  193. package/tests/py/unit/test_tools_build_nanoparticle.py +5 -2
  194. package/tests/py/unit/test_tools_build_nanoribbon.py +5 -2
  195. package/tests/py/unit/test_tools_build_passivation.py +1 -1
  196. package/tests/py/unit/test_tools_build_perturbation.py +7 -5
  197. package/tests/py/unit/test_tools_build_slab.py +16 -10
  198. package/tests/py/unit/test_tools_build_supercell.py +1 -1
  199. package/tests/py/unit/test_tools_modify.py +3 -3
  200. package/src/py/mat3ra/made/tools/build/defect/point/helpers.py +0 -207
  201. package/src/py/mat3ra/made/tools/build/defect/terrace/builder.py +0 -27
  202. package/src/py/mat3ra/made/tools/build/grain_boundary/__init__.py +0 -14
  203. package/src/py/mat3ra/made/tools/build/grain_boundary/build_parameters.py +0 -5
  204. package/src/py/mat3ra/made/tools/build/grain_boundary/helpers.py +0 -152
  205. package/src/py/mat3ra/made/tools/build/lattice_lines/__init__.py +0 -17
  206. package/src/py/mat3ra/made/tools/build/metadata/__init__.py +0 -3
  207. package/src/py/mat3ra/made/tools/build/perturbation/build_parameters.py +0 -5
  208. package/src/py/mat3ra/made/tools/build/perturbation/builders/__init__.py +0 -7
  209. package/src/py/mat3ra/made/tools/build/slab/__init__.py +0 -25
  210. package/src/py/mat3ra/made/tools/build/supercell/__init__.py +0 -1
  211. package/src/py/mat3ra/made/tools/build/utils.py +0 -43
  212. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/__init__.py +0 -0
  213. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/build_parameters.py +0 -0
  214. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/commensurate/__init__.py +0 -0
  215. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/enums.py +0 -0
  216. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/__init__.py +0 -0
  217. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/configuration.py +0 -0
  218. package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/zsl/__init__.py +0 -0
  219. package/src/py/mat3ra/made/tools/build/{defect → defective_structures}/__init__.py +0 -0
  220. package/src/py/mat3ra/made/tools/build/{defect/pair_defect → defective_structures/one_dimensional}/__init__.py +0 -0
  221. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/one_dimensional/grain_boundary_linear}/__init__.py +0 -0
  222. package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/two_dimensional}/__init__.py +0 -0
  223. package/src/py/mat3ra/made/tools/build/{defect/slab → defective_structures/two_dimensional/adatom}/__init__.py +0 -0
  224. package/src/py/mat3ra/made/tools/build/{monolayer → defective_structures/two_dimensional/grain_boundary_planar}/__init__.py +0 -0
  225. package/src/py/mat3ra/made/tools/build/{passivation → defective_structures/zero_dimensional}/__init__.py +0 -0
  226. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/atom_placement_method_enum.py +0 -0
  227. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/complex_defect_type_enum.py +0 -0
  228. package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/zero_dimensional/point_defect/interstitial}/builder.py +0 -0
  229. package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/point_defect_type_enum.py +0 -0
  230. package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/substitutional/builder.py +0 -0
  231. package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/build_parameters.py +0 -0
  232. package/src/py/mat3ra/made/tools/build/{slab/strained_supercell_slab → pristine_structures/two_dimensional/slab_strained_supercell}/configuration.py +0 -0
  233. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/__init__.py +0 -0
  234. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/__init__.py +0 -0
  235. package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/__init__.py +0 -0
  236. package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/__init__.py +0 -0
  237. package/src/py/mat3ra/made/tools/{enums.py → build/processed_structures/two_dimensional/passivation/enums.py} +0 -0
  238. package/src/py/mat3ra/made/tools/{entities → build_components/entities/auxiliary/two_dimensional}/miller_indices.py +0 -0
  239. package/src/py/mat3ra/made/tools/{entities → build_components/entities/auxiliary/two_dimensional}/termination.py +0 -0
  240. package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/__init__.py +0 -0
  241. package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/crystal_site.py +0 -0
  242. package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/crystal_site_list.py +0 -0
  243. package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/base_configuration_pydantic.py +0 -0
  244. package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/build_parameters.py +0 -0
  245. package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/__init__.py +0 -0
  246. package/src/py/mat3ra/made/tools/{build/lattice_lines → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/edge_types.py +1 -1
  247. package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/__init__.py +0 -0
  248. package/src/py/mat3ra/made/tools/{build/defect → build_components/entities/reusable/zero_dimensional}/coordinates_shape_enum.py +0 -0
  249. package/src/py/mat3ra/made/tools/{build → build_components}/metadata/material_build_metadata.py +1 -1
  250. /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/__init__.py +0 -0
  251. /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/convert_generated_items_ase_atoms_mixin.py +0 -0
  252. /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -0
  253. /package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/__init__.py +0 -0
  254. /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/__init__.py +0 -0
  255. /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/__init__.py +0 -0
  256. /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/function_holder.py +0 -0
  257. /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/sine_wave_perturbation_function_holder.py +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mat3ra/made",
3
- "version": "2025.8.5-0",
3
+ "version": "2025.8.7-0",
4
4
  "description": "MAterials DEsign library",
5
5
  "scripts": {
6
6
  "lint": "eslint --cache src/js tests/js && prettier --write src/js tests/js",
package/pyproject.toml CHANGED
@@ -19,7 +19,7 @@ dependencies = [
19
19
  # new verison of numpy==2.0.0 is not handled by pymatgen yet
20
20
  "numpy<=1.26.4",
21
21
  "mat3ra-utils",
22
- "mat3ra-esse>=2025.7.29.post0",
22
+ "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@fe1c134459a1a1fe6646bb0d82a075db256cb09c",
23
23
  "mat3ra-code"
24
24
 
25
25
  ]
@@ -88,9 +88,17 @@ class Lattice(RoundNumericValuesMixin, LatticeSchemaVectorless, InMemoryEntityPy
88
88
  a = np.linalg.norm(vectors[0])
89
89
  b = np.linalg.norm(vectors[1])
90
90
  c = np.linalg.norm(vectors[2])
91
- alpha = np.degrees(np.arccos(np.dot(vectors[1], vectors[2]) / (b * c)))
92
- beta = np.degrees(np.arccos(np.dot(vectors[0], vectors[2]) / (a * c)))
93
- gamma = np.degrees(np.arccos(np.dot(vectors[0], vectors[1]) / (a * b)))
91
+ bc = b * c
92
+ ac = a * c
93
+ ab = a * b
94
+
95
+ if bc == 0 or ac == 0 or ab == 0:
96
+ print("Vectors:", vectors)
97
+ raise ValueError("Vectors must not be zero vectors.")
98
+
99
+ alpha = np.degrees(np.arccos(np.dot(vectors[1], vectors[2]) / bc))
100
+ beta = np.degrees(np.arccos(np.dot(vectors[0], vectors[2]) / ac))
101
+ gamma = np.degrees(np.arccos(np.dot(vectors[0], vectors[1]) / ab))
94
102
 
95
103
  return cls(
96
104
  a=float(a),
@@ -1,28 +0,0 @@
1
- from .bond_directions.bond_directions import BondDirections
2
- from .bond_directions.bond_directions_for_element_list import BondDirectionsForElementList
3
- from .bond_directions.bond_directions_templates_enum import BondDirectionsTemplatesEnum
4
- from .bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
5
- from .crystal_site.crystal_site import CrystalSite
6
- from .crystal_site.crystal_site_list import CrystalSiteList
7
- from .modify import (
8
- add_vacuum,
9
- add_vacuum_sides,
10
- filter_by_box,
11
- filter_by_circle_projection,
12
- filter_by_condition_on_coordinates,
13
- filter_by_ids,
14
- filter_by_label,
15
- filter_by_layers,
16
- filter_by_rectangle_projection,
17
- filter_by_sphere,
18
- filter_by_triangle_projection,
19
- interface_displace_part,
20
- interface_get_part,
21
- remove_vacuum,
22
- rotate,
23
- translate_by_vector,
24
- translate_to_center,
25
- translate_to_z_level,
26
- wrap_to_unit_cell,
27
- )
28
- from .optimize import evaluate_calculator_on_xy_grid
@@ -5,7 +5,7 @@ from mat3ra.made.material import Material
5
5
  from pydantic import BaseModel
6
6
  from scipy.spatial.distance import pdist
7
7
 
8
- from ..build.metadata.material_with_build_metadata import MaterialWithBuildMetadata
8
+ from ..build_components.metadata.material_with_build_metadata import MaterialWithBuildMetadata
9
9
  from .other import get_chemical_formula_empirical
10
10
  from .utils import decorator_perform_operation_in_cartesian_coordinates
11
11
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Generic, Type, TypeVar
4
4
 
5
- from ..build import BuildMetadata, MaterialWithBuildMetadata
5
+ from ..build_components.metadata import BuildMetadata, MaterialWithBuildMetadata
6
6
  from . import BaseMaterialAnalyzer
7
7
 
8
8
  TypeConfiguration = TypeVar("TypeConfiguration")
@@ -1,10 +1,12 @@
1
1
  from typing import List
2
2
 
3
3
  from mat3ra.made.material import Material
4
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
4
5
 
5
- from ...build import MaterialWithBuildMetadata
6
- from ...build.defect.slab.helpers import recreate_slab_with_fractional_layers
7
- from ...build.slab.slab.builder import SlabBuilder
6
+ from ...build_components.entities.reusable.two_dimensional.slab_stack.helpers import (
7
+ recreate_slab_with_fractional_layers,
8
+ )
9
+ from ...build_components.metadata import MaterialWithBuildMetadata
8
10
  from .adatom_material_analyzer import AdatomMaterialAnalyzer
9
11
  from .crystal_site_analyzer import CrystalSiteAnalyzer
10
12
 
@@ -2,11 +2,11 @@ from typing import List
2
2
 
3
3
  from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
4
4
 
5
- from ...build import MaterialWithBuildMetadata
6
- from ...build.defect.point.atom_at_coordinate.builder import AtomAtCoordinateBuilder
7
- from ...build.defect.point.atom_at_coordinate.configuration import AtomAtCoordinateConfiguration
8
- from ...build.vacuum.builder import VacuumBuilder
9
- from ...build.vacuum.configuration import VacuumConfiguration
5
+ from ...build_components.entities.core.two_dimensional.vacuum.builder import VacuumBuilder
6
+ from ...build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
7
+ from ...build_components.entities.core.zero_dimensional.atom.builder import AtomAtCoordinateBuilder
8
+ from ...build_components.entities.core.zero_dimensional.atom.configuration import AtomAtCoordinateConfiguration
9
+ from ...build_components.metadata import MaterialWithBuildMetadata
10
10
  from ..slab import SlabMaterialAnalyzer
11
11
 
12
12
 
@@ -1,7 +1,7 @@
1
1
  from typing import List
2
2
 
3
3
  from ....utils import get_center_of_coordinates
4
- from ...build.supercell.helpers import create_supercell
4
+ from ...build_components.entities.reusable.three_dimensional.supercell.helpers import create_supercell
5
5
  from ...modify import filter_by_condition_on_coordinates
6
6
  from ...utils import transform_coordinate_to_supercell
7
7
  from .. import BaseMaterialAnalyzer
@@ -6,9 +6,9 @@ from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dim
6
6
  SupercellMatrix2DSchema,
7
7
  )
8
8
  from mat3ra.made.material import Material
9
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
9
10
  from pydantic import model_validator
10
11
 
11
- from ...build.slab.slab.configuration import SlabConfiguration
12
12
  from .utils.holders import MatchedSubstrateFilmConfigurationHolder
13
13
  from .zsl import ZSLInterfaceAnalyzer
14
14
 
@@ -7,11 +7,13 @@ from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
7
7
  from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
8
8
  SupercellMatrix2DSchema,
9
9
  )
10
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.build_parameters import SlabBuilderParameters
11
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
12
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
10
13
 
11
- from ...build.slab.slab.build_parameters import SlabBuilderParameters
12
- from ...build.slab.slab.builder import SlabBuilder
13
- from ...build.slab.slab.configuration import SlabConfiguration
14
- from ...build.slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
14
+ from ...build.pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
15
+ SlabStrainedSupercellConfiguration,
16
+ )
15
17
  from ..interface.utils.holders import MatchedSubstrateFilmConfigurationHolder
16
18
 
17
19
 
@@ -1,9 +1,10 @@
1
1
  from typing import Tuple
2
2
 
3
3
  from mat3ra.made.material import Material
4
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
4
5
 
5
- from ...build.slab.slab.configuration import SlabConfiguration
6
- from ...modify import rotate, translate_to_center
6
+ from ...modify import translate_to_center
7
+ from ...operations.core.unary import rotate
7
8
  from ..other import get_surface_area
8
9
  from . import InterfaceAnalyzer
9
10
  from .utils.holders import MatchedSubstrateFilmConfigurationHolder
@@ -2,7 +2,9 @@ from typing import Optional
2
2
 
3
3
  from mat3ra.code.entity import InMemoryEntityPydantic
4
4
 
5
- from ....build.slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
5
+ from ....build.pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
6
+ SlabStrainedSupercellConfiguration,
7
+ )
6
8
 
7
9
 
8
10
  class MatchedSubstrateFilmConfigurationHolder(InMemoryEntityPydantic):
@@ -8,11 +8,11 @@ from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
8
8
  from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
9
9
  SupercellMatrix2DSchema,
10
10
  )
11
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
11
12
  from mat3ra.utils.matrix import convert_2x2_to_3x3
12
13
  from pymatgen.analysis.interfaces.coherent_interfaces import ZSLGenerator as PymatgenZSLGenerator
13
14
 
14
- from ...build import MaterialWithBuildMetadata
15
- from ...build.slab.slab.builder import SlabBuilder
15
+ from ...build_components import MaterialWithBuildMetadata
16
16
  from ..interface.simple import InterfaceAnalyzer
17
17
  from ..interface.utils.holders import MatchedSubstrateFilmConfigurationHolder
18
18
  from ..utils import calculate_von_mises_strain
@@ -1,4 +1,4 @@
1
- from ..build import MaterialWithBuildMetadata
1
+ from ..build_components.metadata import MaterialWithBuildMetadata
2
2
  from ..convert import from_pymatgen, to_pymatgen
3
3
  from ..third_party import PymatgenSpacegroupAnalyzer
4
4
  from . import BaseMaterialAnalyzer
@@ -4,7 +4,7 @@ from mat3ra.code.vector import Vector3D
4
4
  from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
5
5
  from mat3ra.made.material import Material
6
6
 
7
- from ..build import MaterialWithBuildMetadata
7
+ from ..build_components.metadata import MaterialWithBuildMetadata
8
8
  from ..convert import from_pymatgen, to_pymatgen
9
9
  from ..entities import MillerIndices, Termination, TerminationHolder
10
10
  from ..third_party import PymatgenSlab, PymatgenSlabGenerator, label_pymatgen_slab_termination
@@ -5,7 +5,9 @@ from mat3ra.code.array_with_ids import ArrayWithIds
5
5
  from mat3ra.made.material import Material
6
6
  from scipy.spatial._ckdtree import cKDTree
7
7
 
8
- from .. import BondDirections, BondDirectionsTemplatesForElement, CrystalSite, CrystalSiteList
8
+ from ..bond_directions.bond_directions import BondDirections
9
+ from ..bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
10
+ from ..build_components.entities.auxiliary.zero_dimensional.crystal_site import CrystalSite, CrystalSiteList
9
11
  from .rdf import RadialDistributionFunction
10
12
  from .utils import decorator_handle_periodic_boundary_conditions
11
13
 
@@ -2,10 +2,10 @@ from typing import Callable, List, Literal, Optional
2
2
 
3
3
  import numpy as np
4
4
  from mat3ra.made.material import Material
5
+ from mat3ra.made.tools.build.processed_structures.two_dimensional.passivation.enums import SurfaceTypesEnum
5
6
  from scipy.spatial import cKDTree
6
7
 
7
8
  from ..convert import decorator_convert_material_args_kwargs_to_atoms, to_pymatgen
8
- from ..enums import SurfaceTypesEnum
9
9
  from ..third_party import ASEAtoms, PymatgenIStructure
10
10
  from ..utils import decorator_convert_position_to_coordinate
11
11
  from .utils import decorator_handle_periodic_boundary_conditions
@@ -2,12 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Type
4
4
 
5
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.build_parameters import SlabBuilderParameters
6
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
5
7
  from mat3ra.made.utils import adjust_material_cell_to_set_gap_along_direction, get_atomic_coordinates_extremum
6
8
 
7
- from ..build import MaterialWithBuildMetadata
8
- from ..build.slab.slab.build_parameters import SlabBuilderParameters
9
- from ..build.slab.slab.configuration import SlabConfiguration
10
- from ..build.vacuum.configuration import VacuumConfiguration
9
+ from ..build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
10
+ from ..build_components.metadata import MaterialWithBuildMetadata
11
11
  from .build_metadata_analyzer import BuildMetadataAnalyzer
12
12
  from .crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
13
13
 
@@ -1,6 +1,6 @@
1
1
  from typing import List
2
2
 
3
- from .bond_directions_templates_for_element import BondDirectionsTemplatesForElement
3
+ from ...bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
4
4
 
5
5
 
6
6
  class BondDirectionsForElementList(List[BondDirectionsTemplatesForElement]):
@@ -1,5 +1,9 @@
1
- from .metadata import BuildMetadata, MaterialBuildMetadata, MaterialWithBuildMetadata
2
- from .base import (
1
+ from ..build_components.metadata import (
2
+ BuildMetadata,
3
+ MaterialBuildMetadata,
4
+ MaterialWithBuildMetadata,
5
+ )
6
+ from ..build_components import (
3
7
  BaseConfigurationPydantic,
4
8
  BaseBuilderParameters,
5
9
  BaseSingleBuilder,
@@ -7,3 +11,15 @@ from .base import (
7
11
  TypeBuildParameters,
8
12
  BaseConfigurationPydanticChild,
9
13
  )
14
+
15
+ __all__ = [
16
+ "BuildMetadata",
17
+ "MaterialBuildMetadata",
18
+ "MaterialWithBuildMetadata",
19
+ "BaseConfigurationPydantic",
20
+ "BaseBuilderParameters",
21
+ "BaseSingleBuilder",
22
+ "TypeConfiguration",
23
+ "TypeBuildParameters",
24
+ "BaseConfigurationPydanticChild",
25
+ ]
@@ -4,24 +4,20 @@ from .base import (
4
4
  InterfaceBuilderParameters,
5
5
  create_simple_interface_between_slabs,
6
6
  )
7
- from .zsl import (
8
- create_zsl_interface,
9
- create_zsl_interface_between_slabs,
10
- )
11
7
  from .commensurate import (
12
8
  create_commensurate_interface,
13
9
  get_commensurate_strained_configurations,
14
10
  )
11
+ from .enums import StrainModes
15
12
  from .twisted import (
16
13
  TwistedNanoribbonsInterfaceConfiguration,
17
14
  create_twisted_interface,
18
15
  )
19
- from .utils import (
20
- get_optimal_film_displacement,
21
- get_slab,
22
- remove_duplicate_interfaces,
16
+ from .utils import get_optimal_film_displacement, get_slab, remove_duplicate_interfaces
17
+ from .zsl import (
18
+ create_zsl_interface,
19
+ create_zsl_interface_between_slabs,
23
20
  )
24
- from .enums import StrainModes
25
21
 
26
22
  __all__ = [
27
23
  # Base interface classes
@@ -1,26 +1,24 @@
1
- from typing import Optional, Any, Type, Union
1
+ from typing import Optional, Any, Type, Union, cast
2
2
 
3
3
  import numpy as np
4
4
 
5
5
  from mat3ra.made.material import Material
6
- from .configuration import InterfaceConfiguration
6
+ from mat3ra.made.utils import AXIS_TO_INDEX_MAP
7
7
  from .build_parameters import InterfaceBuilderParameters
8
- from ... import MaterialWithBuildMetadata, TypeConfiguration
9
- from ...slab.strained_supercell_slab.builder import SlabStrainedSupercellBuilder
10
- from ...slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
11
- from ...stack.builder import StackNComponentsBuilder
12
- from ...stack.configuration import StackConfiguration
13
- from ....analyze import BaseMaterialAnalyzer
14
- from ....analyze.lattice import get_material_with_primitive_lattice
15
- from ....convert.interface_parts_enum import InterfacePartsEnum
16
- from ....modify import (
17
- translate_by_vector,
18
- wrap_to_unit_cell,
19
- translate_to_center,
8
+ from .configuration import InterfaceConfiguration
9
+ from .....pristine_structures.two_dimensional.slab_strained_supercell.builder import SlabStrainedSupercellBuilder
10
+ from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
11
+ SlabStrainedSupercellConfiguration,
20
12
  )
21
- from ....operations.core.unary import supercell
22
- from ....operations.core.utils import should_skip_stacking
23
- from .....utils import AXIS_TO_INDEX_MAP
13
+ from ......analyze import BaseMaterialAnalyzer
14
+ from ......analyze.lattice import get_material_with_primitive_lattice
15
+ from ......build_components import MaterialWithBuildMetadata
16
+ from ......build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
17
+ from ......build_components.operations.core.combinations.stack.configuration import StackConfiguration
18
+ from ......convert.interface_parts_enum import InterfacePartsEnum
19
+ from ......modify import translate_by_vector, translate_to_center, wrap_to_unit_cell
20
+ from ......operations.core.unary import supercell
21
+ from ......operations.core.utils import should_skip_stacking
24
22
 
25
23
 
26
24
  class InterfaceBuilder(StackNComponentsBuilder):
@@ -40,7 +38,7 @@ class InterfaceBuilder(StackNComponentsBuilder):
40
38
  SlabStrainedSupercellConfiguration: SlabStrainedSupercellBuilder,
41
39
  }
42
40
 
43
- def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
41
+ def _generate(self, configuration: InterfaceConfiguration) -> MaterialWithBuildMetadata:
44
42
  film_material = self._stack_component_to_material(configuration.film_configuration, configuration)
45
43
  substrate_material = self._stack_component_to_material(configuration.substrate_configuration, configuration)
46
44
 
@@ -80,9 +78,10 @@ class InterfaceBuilder(StackNComponentsBuilder):
80
78
  self,
81
79
  material: MaterialWithBuildMetadata,
82
80
  post_process_parameters: Optional[Any],
83
- configuration: Optional[TypeConfiguration] = None,
81
+ configuration: Optional[InterfaceConfiguration] = None,
84
82
  ) -> MaterialWithBuildMetadata:
85
- if self.build_parameters.make_primitive:
83
+ build_params = cast(InterfaceBuilderParameters, self.build_parameters)
84
+ if build_params.make_primitive:
86
85
  # TODO: check that this doesn't warp material or flip it -- otherwise raise and skip
87
86
  primitive_material = get_material_with_primitive_lattice(material, return_original_if_not_reduced=True)
88
87
 
@@ -115,7 +114,7 @@ class InterfaceBuilder(StackNComponentsBuilder):
115
114
  return f"Interface, Strain {strain:.3f}pct"
116
115
 
117
116
  def _update_material_name(
118
- self, material: Union[Material, MaterialWithBuildMetadata], configuration: TypeConfiguration
117
+ self, material: Union[Material, MaterialWithBuildMetadata], configuration: InterfaceConfiguration
119
118
  ) -> MaterialWithBuildMetadata:
120
119
  base_name = self.get_base_name_from_configuration(
121
120
  configuration.film_configuration, configuration.substrate_configuration
@@ -5,11 +5,13 @@ from mat3ra.esse.models.materials_category.compound_pristine_structures.two_dime
5
5
  InterfaceConfigurationSchema,
6
6
  )
7
7
 
8
- from ....utils import unwrap
9
- from ...slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
10
- from ...stack.configuration import StackConfiguration
11
- from ...vacuum.configuration import VacuumConfiguration
12
- from ....analyze.utils import calculate_von_mises_strain
8
+ from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
9
+ SlabStrainedSupercellConfiguration,
10
+ )
11
+ from ......analyze.utils import calculate_von_mises_strain
12
+ from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
13
+ from ......build_components.operations.core.combinations.stack.configuration import StackConfiguration
14
+ from ......utils import unwrap
13
15
 
14
16
 
15
17
  class InterfaceConfiguration(StackConfiguration, InterfaceConfigurationSchema):
@@ -21,6 +23,7 @@ class InterfaceConfiguration(StackConfiguration, InterfaceConfigurationSchema):
21
23
  ]
22
24
  ]
23
25
  xy_shift: List[float] = InterfaceConfigurationSchema.model_fields["xy_shift"].default # in Angstroms
26
+
24
27
  type: str = "InterfaceConfiguration"
25
28
 
26
29
  @property
@@ -3,13 +3,13 @@ from typing import List, Optional
3
3
  from mat3ra.code.array_with_ids import ArrayWithIds
4
4
 
5
5
  from mat3ra.made.material import Material
6
- from ....analyze.interface import InterfaceAnalyzer
7
- from .builder import InterfaceBuilder
8
6
  from .build_parameters import InterfaceBuilderParameters
7
+ from .builder import InterfaceBuilder
9
8
  from .configuration import InterfaceConfiguration
10
- from ... import MaterialWithBuildMetadata
11
- from ...vacuum.configuration import VacuumConfiguration
12
- from ....analyze.slab import SlabMaterialAnalyzer
9
+ from ......analyze.interface import InterfaceAnalyzer
10
+ from ......analyze.slab import SlabMaterialAnalyzer
11
+ from ......build_components import MaterialWithBuildMetadata
12
+ from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
13
13
 
14
14
 
15
15
  def create_simple_interface_between_slabs(
@@ -4,13 +4,14 @@ from mat3ra.code.array_with_ids import ArrayWithIds
4
4
  from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
5
 
6
6
  from mat3ra.made.material import Material
7
- from ....analyze.interface.commensurate import CommensurateLatticeInterfaceAnalyzer
8
- from ..base.builder import InterfaceBuilder
9
- from ..base.configuration import InterfaceConfiguration
10
- from ... import MaterialWithBuildMetadata
11
- from ...slab.slab.configuration import SlabConfiguration
12
- from ...slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
13
- from ....analyze.lattice import get_material_with_conventional_lattice
7
+ from .. import InterfaceBuilder, InterfaceConfiguration
8
+ from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
9
+ SlabStrainedSupercellConfiguration,
10
+ )
11
+ from ......analyze.interface import CommensurateLatticeInterfaceAnalyzer
12
+ from ......analyze.lattice import get_material_with_conventional_lattice
13
+ from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
14
+ from ......build_components.metadata import MaterialWithBuildMetadata
14
15
 
15
16
 
16
17
  def get_commensurate_strained_configurations(
@@ -4,12 +4,11 @@ from mat3ra.code.array_with_ids import ArrayWithIds
4
4
  from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
5
 
6
6
  from mat3ra.made.material import Material
7
- from ....analyze.interface.twisted_nanoribbons import TwistedNanoribbonsInterfaceAnalyzer
8
- from ..base.builder import InterfaceBuilder
9
- from ..base.configuration import InterfaceConfiguration
10
- from ... import MaterialWithBuildMetadata
11
- from ...slab.slab.configuration import SlabConfiguration
12
- from ....analyze.lattice import get_material_with_conventional_lattice
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
13
12
 
14
13
 
15
14
  def create_twisted_interface(
@@ -4,11 +4,11 @@ import numpy as np
4
4
 
5
5
  from mat3ra.made.material import Material
6
6
  from .enums import StrainModes
7
- from ...convert import PymatgenInterface
8
- from ...convert.interface_parts_enum import INTERFACE_LABELS_MAP
9
- from ...modify import filter_by_label, interface_displace_part
10
- from ...optimize import evaluate_calculator_on_xy_grid
11
- from .. import MaterialWithBuildMetadata
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
12
 
13
13
 
14
14
  def remove_duplicate_interfaces(
@@ -3,15 +3,17 @@ from typing import List, Optional, Tuple, Union
3
3
  from mat3ra.code.array_with_ids import ArrayWithIds
4
4
 
5
5
  from mat3ra.made.material import Material
6
- from ....analyze.interface import ZSLInterfaceAnalyzer
7
- from ..base.builder import InterfaceBuilder
8
- from ..base.build_parameters import InterfaceBuilderParameters
9
- from ..base.configuration import InterfaceConfiguration
10
- from ... import MaterialWithBuildMetadata
11
- from ...slab.helpers import create_slab
12
- from ...vacuum.configuration import VacuumConfiguration
13
- from ....analyze.lattice import get_material_with_conventional_lattice
14
- from ....analyze.slab import SlabMaterialAnalyzer
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
15
17
 
16
18
 
17
19
  def create_zsl_interface(
@@ -1,9 +1,9 @@
1
1
  from typing import Optional
2
2
 
3
- from .build_parameters import GrainBoundaryBuilderParameters
3
+ from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilderParameters
4
4
 
5
5
 
6
- class GrainBoundaryLinearBuilderParameters(GrainBoundaryBuilderParameters):
6
+ class GrainBoundaryLinearBuilderParameters(InterfaceBuilderParameters):
7
7
  max_supercell_matrix_int: Optional[int] = None
8
8
  limit_max_int: Optional[int] = 30
9
9
  angle_tolerance: float = 0.1
@@ -1,6 +1,6 @@
1
- from .linear_configuration import GrainBoundaryLinearConfiguration
2
- from .linear_build_parameters import GrainBoundaryLinearBuilderParameters
3
- from ..interface import InterfaceBuilder
1
+ from .build_parameters import GrainBoundaryLinearBuilderParameters
2
+ from .configuration import GrainBoundaryLinearConfiguration
3
+ from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilder
4
4
 
5
5
 
6
6
  class GrainBoundaryLinearBuilder(InterfaceBuilder):
@@ -6,8 +6,8 @@ from mat3ra.esse.models.materials_category.defective_structures.one_dimensional.
6
6
  grain_boundary_linear.configuration import GrainBoundaryLinearConfigurationSchema
7
7
 
8
8
  # fmt: on
9
- from ..interface import InterfaceConfiguration
10
- from ..slab.slab.configuration import SlabConfiguration
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
11
 
12
12
 
13
13
  class GrainBoundaryLinearConfiguration(InterfaceConfiguration, GrainBoundaryLinearConfigurationSchema):