@mat3ra/made 2026.8.7-0 → 2026.8.18-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/dist/js/Material.d.ts +219 -0
  2. package/dist/js/Material.js +457 -0
  3. package/dist/js/basis/basis.d.ts +14 -9
  4. package/dist/js/basis/basis.js +15 -13
  5. package/dist/js/basis/constrained_basis.d.ts +9 -7
  6. package/dist/js/basis/constrained_basis.js +4 -4
  7. package/dist/js/generated/MaterialSchemaMixin.d.ts +5 -0
  8. package/dist/js/generated/MaterialSchemaMixin.js +69 -0
  9. package/dist/js/lattice/lattice.d.ts +4 -3
  10. package/dist/js/lattice/lattice.js +1 -2
  11. package/dist/js/made.d.ts +12 -12
  12. package/dist/js/made.js +38 -5
  13. package/dist/js/parsers/espresso.d.ts +2 -3
  14. package/dist/js/parsers/espresso.js +0 -1
  15. package/dist/js/parsers/native_format_parsers.d.ts +9 -8
  16. package/dist/js/parsers/native_format_parsers.js +6 -6
  17. package/dist/js/parsers/parsers.d.ts +6 -6
  18. package/dist/js/parsers/poscar.d.ts +5 -4
  19. package/dist/js/parsers/poscar.js +3 -2
  20. package/dist/js/parsers/xyz.d.ts +3 -5
  21. package/dist/js/parsers/xyz.js +3 -4
  22. package/dist/js/parsers/xyz_combinatorial_basis.js +3 -1
  23. package/dist/js/tools/basis.d.ts +1 -1
  24. package/dist/js/tools/index.d.ts +7 -7
  25. package/dist/js/tools/material.d.ts +1 -1
  26. package/dist/js/tools/material.js +8 -7
  27. package/dist/js/tools/supercell.d.ts +4 -5
  28. package/dist/js/tools/supercell.js +2 -4
  29. package/dist/js/tools/surface.d.ts +4 -4
  30. package/dist/js/tools/surface.js +2 -7
  31. package/package.json +12 -8
  32. package/.babelrc +0 -10
  33. package/.eslintrc.json +0 -11
  34. package/.gitattributes +0 -1
  35. package/.husky/post-checkout +0 -3
  36. package/.husky/post-commit +0 -3
  37. package/.husky/post-merge +0 -3
  38. package/.husky/pre-commit +0 -6
  39. package/.husky/pre-push +0 -3
  40. package/.mocharc.json +0 -5
  41. package/.pre-commit-config.yaml +0 -26
  42. package/.prettierignore +0 -2
  43. package/.prettierrc +0 -6
  44. package/AGENTS.md +0 -133
  45. package/MANIFEST.in +0 -1
  46. package/data/constants.json +0 -13
  47. package/data/reciprocal_paths.json +0 -111
  48. package/dist/js/material.d.ts +0 -169
  49. package/dist/js/material.js +0 -362
  50. package/images/made/tools/tools_diagram_general.png +0 -3
  51. package/images/made/tools/tools_diagram_interface.png +0 -3
  52. package/pyproject.toml +0 -123
  53. package/src/__init__.py +0 -0
  54. package/src/js/basis/basis.ts +0 -621
  55. package/src/js/basis/constrained_basis.ts +0 -114
  56. package/src/js/basis/coordinates.ts +0 -93
  57. package/src/js/basis/elements.ts +0 -24
  58. package/src/js/basis/helpers.ts +0 -20
  59. package/src/js/basis/labels.ts +0 -6
  60. package/src/js/cell/cell.ts +0 -150
  61. package/src/js/cell/conventional_cell.ts +0 -86
  62. package/src/js/cell/primitive_cell.ts +0 -166
  63. package/src/js/constants/molecule.ts +0 -18
  64. package/src/js/constants.ts +0 -4
  65. package/src/js/constraints/constraints.ts +0 -45
  66. package/src/js/lattice/lattice.ts +0 -306
  67. package/src/js/lattice/lattice_types.ts +0 -134
  68. package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -193
  69. package/src/js/lattice/reciprocal/paths.ts +0 -39
  70. package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
  71. package/src/js/lattice/unit_cell.ts +0 -66
  72. package/src/js/made.ts +0 -62
  73. package/src/js/material.ts +0 -458
  74. package/src/js/parsers/cif.ts +0 -25
  75. package/src/js/parsers/errors.ts +0 -6
  76. package/src/js/parsers/espresso.ts +0 -30
  77. package/src/js/parsers/native_format_parsers.ts +0 -51
  78. package/src/js/parsers/parsers.ts +0 -13
  79. package/src/js/parsers/poscar.ts +0 -212
  80. package/src/js/parsers/xyz.ts +0 -187
  81. package/src/js/parsers/xyz_combinatorial_basis.ts +0 -265
  82. package/src/js/tools/basis.ts +0 -132
  83. package/src/js/tools/cell.ts +0 -41
  84. package/src/js/tools/index.ts +0 -11
  85. package/src/js/tools/material.ts +0 -62
  86. package/src/js/tools/supercell.ts +0 -88
  87. package/src/js/tools/surface.ts +0 -223
  88. package/src/py/__init__.py +0 -0
  89. package/src/py/mat3ra/__init__.py +0 -1
  90. package/src/py/mat3ra/made/__init__.py +0 -7
  91. package/src/py/mat3ra/made/basis/__init__.py +0 -255
  92. package/src/py/mat3ra/made/basis/coordinates.py +0 -43
  93. package/src/py/mat3ra/made/cell/__init__.py +0 -55
  94. package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
  95. package/src/py/mat3ra/made/data_helper.py +0 -5
  96. package/src/py/mat3ra/made/lattice.py +0 -195
  97. package/src/py/mat3ra/made/material.py +0 -134
  98. package/src/py/mat3ra/made/metadata.py +0 -45
  99. package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
  100. package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
  101. package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
  102. package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
  103. package/src/py/mat3ra/made/tools/README.md +0 -173
  104. package/src/py/mat3ra/made/tools/__init__.py +0 -0
  105. package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
  106. package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
  107. package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
  108. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
  109. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
  110. package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
  111. package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
  112. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
  113. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
  114. package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
  115. package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
  116. package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
  117. package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
  118. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
  119. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
  120. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
  121. package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
  122. package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
  123. package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
  124. package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
  125. package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
  126. package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
  127. package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
  128. package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
  129. package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
  130. package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
  131. package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
  132. package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
  133. package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
  134. package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
  135. package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
  136. package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
  137. package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
  138. package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
  139. package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
  140. package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
  141. package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
  142. package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
  143. package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
  144. package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
  145. package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
  146. package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
  147. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
  148. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
  149. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
  150. package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
  151. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
  152. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
  153. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
  154. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
  155. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
  156. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
  157. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
  158. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
  159. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
  160. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
  161. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
  162. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
  163. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
  164. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
  165. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
  166. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
  167. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
  168. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
  169. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
  170. package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
  171. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
  172. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
  173. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
  174. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
  175. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
  176. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
  177. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
  178. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
  179. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
  180. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
  181. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
  182. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
  183. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
  184. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
  185. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
  186. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
  187. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
  188. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
  189. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
  190. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
  191. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
  192. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
  193. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
  194. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
  195. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
  196. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
  197. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
  198. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
  199. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
  200. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
  201. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
  202. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
  203. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
  204. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
  205. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
  206. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
  207. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
  208. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
  209. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
  210. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
  211. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
  212. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
  213. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
  214. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
  215. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
  216. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
  217. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
  218. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
  219. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
  220. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
  221. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
  222. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
  223. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
  224. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
  225. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
  226. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
  227. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
  228. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
  229. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
  230. package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
  231. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
  232. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
  233. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
  234. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
  235. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
  236. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
  237. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
  238. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
  239. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
  240. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
  241. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
  242. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
  243. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
  244. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
  245. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
  246. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
  247. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
  248. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
  249. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
  250. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
  251. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
  252. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
  253. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
  254. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
  255. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
  256. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
  257. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
  258. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
  259. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
  260. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
  261. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
  262. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
  263. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
  264. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
  265. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
  266. package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
  267. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
  268. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
  269. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
  270. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
  271. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
  272. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
  273. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
  274. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
  275. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
  276. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
  277. package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
  278. package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
  279. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
  280. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
  281. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
  282. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
  283. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
  284. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
  285. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
  286. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
  287. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
  288. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
  289. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
  290. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
  291. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
  292. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
  293. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
  294. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
  295. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
  296. package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
  297. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
  298. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
  299. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
  300. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
  301. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
  302. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
  303. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
  304. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
  305. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
  306. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
  307. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
  308. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
  309. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
  310. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
  311. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
  312. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
  313. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
  314. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
  315. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
  316. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
  317. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
  318. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
  319. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
  320. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
  321. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
  322. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
  323. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
  324. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
  325. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
  326. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
  327. package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
  328. package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
  329. package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
  330. package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
  331. package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
  332. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
  333. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
  334. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
  335. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
  336. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
  337. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
  338. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
  339. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
  340. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
  341. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
  342. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
  343. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
  344. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
  345. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
  346. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
  347. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
  348. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
  349. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
  350. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
  351. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
  352. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
  353. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
  354. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
  355. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
  356. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
  357. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
  358. package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
  359. package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
  360. package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
  361. package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
  362. package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
  363. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
  364. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
  365. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
  366. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
  367. package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
  368. package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
  369. package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
  370. package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
  371. package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
  372. package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
  373. package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
  374. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
  375. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
  376. package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
  377. package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
  378. package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
  379. package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
  380. package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
  381. package/src/py/mat3ra/made/tools/helpers.py +0 -168
  382. package/src/py/mat3ra/made/tools/modify.py +0 -627
  383. package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
  384. package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
  385. package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
  386. package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
  387. package/src/py/mat3ra/made/tools/optimize.py +0 -55
  388. package/src/py/mat3ra/made/tools/third_party.py +0 -69
  389. package/src/py/mat3ra/made/tools/utils.py +0 -182
  390. package/src/py/mat3ra/made/utils.py +0 -144
  391. package/tests/.gitattributes +0 -1
  392. package/tests/fixtures/AsGe-basis.json +0 -3
  393. package/tests/fixtures/C2H4-translated.json +0 -3
  394. package/tests/fixtures/C2H4.json +0 -3
  395. package/tests/fixtures/FeLiSi-basis.json +0 -3
  396. package/tests/fixtures/FeO.json +0 -3
  397. package/tests/fixtures/Ge2-basis.json +0 -3
  398. package/tests/fixtures/Graphene.json +0 -3
  399. package/tests/fixtures/Graphene.poscar +0 -3
  400. package/tests/fixtures/H2+H-final.json +0 -3
  401. package/tests/fixtures/H2+H-image.json +0 -3
  402. package/tests/fixtures/H2+H-initial.json +0 -3
  403. package/tests/fixtures/H2O.poscar +0 -3
  404. package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
  405. package/tests/fixtures/LiFeSi-basis.json +0 -3
  406. package/tests/fixtures/Na.json +0 -3
  407. package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
  408. package/tests/fixtures/Na4Cl4.json +0 -3
  409. package/tests/fixtures/Na4Cl4.poscar +0 -3
  410. package/tests/fixtures/Ni-hex.json +0 -3
  411. package/tests/fixtures/Ni-hex.poscar +0 -3
  412. package/tests/fixtures/OSi-basis.json +0 -3
  413. package/tests/fixtures/Si-hex.poscar +0 -3
  414. package/tests/fixtures/Si-pwscf.in +0 -3
  415. package/tests/fixtures/Si-slab.json +0 -3
  416. package/tests/fixtures/Si-supercell.json +0 -3
  417. package/tests/fixtures/Si2-basis-repeated.json +0 -3
  418. package/tests/fixtures/Si2-basis.json +0 -3
  419. package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
  420. package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
  421. package/tests/fixtures/atomic-constraints.json +0 -3
  422. package/tests/fixtures/hashes.json +0 -3
  423. package/tests/fixtures/si-slab-100.json +0 -3
  424. package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
  425. package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
  426. package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
  427. package/tests/fixtures/si-standata.json +0 -3
  428. package/tests/js/basis/basis.ts +0 -247
  429. package/tests/js/cell/cell.ts +0 -182
  430. package/tests/js/cell/primitive_cell.ts +0 -21
  431. package/tests/js/constraints/constraints.ts +0 -11
  432. package/tests/js/fixtures.ts +0 -120
  433. package/tests/js/lattice/lattice.ts +0 -43
  434. package/tests/js/lattice/lattice_reciprocal.ts +0 -104
  435. package/tests/js/material.test.ts +0 -42
  436. package/tests/js/parsers/espresso.ts +0 -15
  437. package/tests/js/parsers/native_formats.ts +0 -35
  438. package/tests/js/parsers/poscar.ts +0 -89
  439. package/tests/js/parsers/xyz.ts +0 -33
  440. package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
  441. package/tests/js/setup.ts +0 -6
  442. package/tests/js/tools/basis.ts +0 -22
  443. package/tests/js/tools/supercell.ts +0 -58
  444. package/tests/js/tools/surface.ts +0 -115
  445. package/tests/py/conftest.py +0 -34
  446. package/tests/py/mat3ra/debug_utils.py +0 -75
  447. package/tests/py/unit/__init__.py +0 -0
  448. package/tests/py/unit/fixtures/__init__.py +0 -0
  449. package/tests/py/unit/fixtures/adatom.py +0 -60
  450. package/tests/py/unit/fixtures/bulk.py +0 -162
  451. package/tests/py/unit/fixtures/cuts.py +0 -118
  452. package/tests/py/unit/fixtures/grain_boundary.py +0 -875
  453. package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
  454. package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
  455. package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
  456. package/tests/py/unit/fixtures/interface/simple.py +0 -84
  457. package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
  458. package/tests/py/unit/fixtures/interface/zsl.py +0 -756
  459. package/tests/py/unit/fixtures/island.py +0 -336
  460. package/tests/py/unit/fixtures/merge.py +0 -147
  461. package/tests/py/unit/fixtures/monolayer.py +0 -46
  462. package/tests/py/unit/fixtures/nanoparticle.py +0 -116
  463. package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
  464. package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
  465. package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
  466. package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
  467. package/tests/py/unit/fixtures/pair_defects.py +0 -41
  468. package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
  469. package/tests/py/unit/fixtures/passivated/slab.py +0 -58
  470. package/tests/py/unit/fixtures/point_defects.py +0 -158
  471. package/tests/py/unit/fixtures/slab.py +0 -606
  472. package/tests/py/unit/fixtures/strain.py +0 -42
  473. package/tests/py/unit/fixtures/supercell.py +0 -64
  474. package/tests/py/unit/fixtures/terrace.py +0 -70
  475. package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
  476. package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
  477. package/tests/py/unit/test_cell.py +0 -104
  478. package/tests/py/unit/test_data_files.py +0 -68
  479. package/tests/py/unit/test_lattice.py +0 -103
  480. package/tests/py/unit/test_lattice_type_extended.py +0 -53
  481. package/tests/py/unit/test_material.py +0 -158
  482. package/tests/py/unit/test_operations.py +0 -126
  483. package/tests/py/unit/test_primitive_cell.py +0 -118
  484. package/tests/py/unit/test_reciprocal_lattice.py +0 -86
  485. package/tests/py/unit/test_reciprocal_paths.py +0 -64
  486. package/tests/py/unit/test_symmetry_points.py +0 -151
  487. package/tests/py/unit/test_tools_analyze.py +0 -219
  488. package/tests/py/unit/test_tools_analyze_basis.py +0 -105
  489. package/tests/py/unit/test_tools_analyze_interface.py +0 -223
  490. package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
  491. package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
  492. package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
  493. package/tests/py/unit/test_tools_analyze_swap.py +0 -80
  494. package/tests/py/unit/test_tools_build.py +0 -158
  495. package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
  496. package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
  497. package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
  498. package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
  499. package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
  500. package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
  501. package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
  502. package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
  503. package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
  504. package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
  505. package/tests/py/unit/test_tools_build_interface.py +0 -292
  506. package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
  507. package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
  508. package/tests/py/unit/test_tools_build_metadata.py +0 -79
  509. package/tests/py/unit/test_tools_build_monolayer.py +0 -33
  510. package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
  511. package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
  512. package/tests/py/unit/test_tools_build_passivation.py +0 -85
  513. package/tests/py/unit/test_tools_build_perturbation.py +0 -103
  514. package/tests/py/unit/test_tools_build_slab.py +0 -382
  515. package/tests/py/unit/test_tools_build_strain.py +0 -36
  516. package/tests/py/unit/test_tools_build_supercell.py +0 -47
  517. package/tests/py/unit/test_tools_calculate.py +0 -67
  518. package/tests/py/unit/test_tools_convert.py +0 -174
  519. package/tests/py/unit/test_tools_modify.py +0 -248
  520. package/tests/py/unit/utils.py +0 -142
  521. package/tsconfig-transpile.json +0 -3
  522. package/tsconfig.json +0 -3
@@ -1,151 +0,0 @@
1
- from collections import Counter
2
- from typing import List, Dict
3
-
4
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
5
-
6
- from .analyzers import (
7
- SurfacePassivationMaterialAnalyzer,
8
- CoordinationBasedPassivationMaterialAnalyzer,
9
- )
10
- from .builder import PassivationBuilder
11
- from .configuration import PassivationConfiguration
12
- from .... import MaterialWithBuildMetadata
13
- from .....analyze.material import MaterialWithCrystalSites
14
- from .....build_components.entities.core.zero_dimensional.atom.configuration import AtomAtCoordinateConfiguration
15
- from mat3ra.made.tools.build.processed_structures.two_dimensional.passivation.enums import SurfaceTypesEnum
16
-
17
-
18
- def passivate_surface(
19
- material: MaterialWithBuildMetadata,
20
- passivant: str = "H",
21
- bond_length: float = 1.0,
22
- shadowing_radius: float = 2.5,
23
- depth: float = 5.0,
24
- surface: SurfaceTypesEnum = SurfaceTypesEnum.TOP,
25
- ) -> MaterialWithBuildMetadata:
26
- """
27
- Create a passivated material by adding passivant atoms to the surface of the provided material.
28
-
29
- Args:
30
- material (Material): The material to be passivated. Should have vacuum space above or below the surface.
31
- passivant (str): The chemical symbol of the passivating atom (default is 'H').
32
- bond_length (float): The bond length for the passivation (default is 1.0). Å
33
- shadowing_radius (float): The radius with which an atom shadows/covers underlying atom from being exposed. Å
34
- depth (float): The depth from the most top (or bottom) atom into the slab to search for exposed atoms. Å
35
- surface (SurfaceTypesEnum): The surface to passivate (TOP, BOTTOM, or BOTH).
36
- Returns:
37
- Material: The passivated material.
38
- """
39
- analyzer = SurfacePassivationMaterialAnalyzer(
40
- material=material,
41
- passivant=passivant,
42
- bond_length=bond_length,
43
- shadowing_radius=shadowing_radius,
44
- depth=depth,
45
- surface=surface,
46
- )
47
-
48
- passivant_coordinates = analyzer.passivant_coordinates
49
- passivant_configs = [
50
- AtomAtCoordinateConfiguration(
51
- crystal=material, element=AtomSchema(chemical_element=passivant), coordinate=coord
52
- )
53
- for coord in passivant_coordinates
54
- ]
55
- config = PassivationConfiguration(
56
- merge_components=[material, *passivant_configs], passivant=passivant, bond_length=bond_length
57
- )
58
-
59
- builder = PassivationBuilder()
60
- return builder.get_material(config)
61
-
62
-
63
- def passivate_dangling_bonds(
64
- material: MaterialWithBuildMetadata,
65
- passivant: str = "H",
66
- bond_length: float = 1.0,
67
- coordination_threshold: int = 3,
68
- number_of_bonds_to_passivate: int = 1,
69
- symmetry_tolerance: float = 0.1,
70
- shadowing_radius: float = 2.5,
71
- depth: float = 5.0,
72
- ) -> MaterialWithBuildMetadata:
73
- """
74
- Create a passivated material by adding passivant atoms to the undercoordinated atoms of the provided material.
75
-
76
- Args:
77
- material (MaterialWithBuildMetadata): The material to be passivated.
78
- passivant (str): The chemical symbol of the passivating atom (default is 'H').
79
- bond_length (float): The bond length for the passivation (default is 1.0). Å
80
- coordination_threshold (int): The coordination number threshold for an atom to be considered undercoordinated.
81
- number_of_bonds_to_passivate (int): The maximum number of bonds to passivate for each undercoordinated atom.
82
- symmetry_tolerance (float): The tolerance for symmetry comparison of vectors for bonds.
83
- shadowing_radius (float): The radius with which an atom shadows/covers underlying atom from being exposed. Å
84
- depth (float): The depth from the most top (or bottom) atom into the slab to search for exposed atoms. Å
85
-
86
- Returns:
87
- MaterialWithBuildMetadata: The passivated material with dangling bonds filled.
88
- """
89
- analyzer = CoordinationBasedPassivationMaterialAnalyzer(
90
- material=material,
91
- passivant=passivant,
92
- bond_length=bond_length,
93
- coordination_threshold=coordination_threshold,
94
- number_of_bonds_to_passivate=number_of_bonds_to_passivate,
95
- symmetry_tolerance=symmetry_tolerance,
96
- shadowing_radius=shadowing_radius,
97
- depth=depth,
98
- )
99
-
100
- passivant_coordinates = analyzer.passivant_coordinates
101
- passivant_configs = [
102
- AtomAtCoordinateConfiguration(
103
- crystal=material, element=AtomSchema(chemical_element=passivant), coordinate=coord
104
- )
105
- for coord in passivant_coordinates
106
- ]
107
- config = PassivationConfiguration(
108
- merge_components=[material, *passivant_configs], passivant=passivant, bond_length=bond_length
109
- )
110
-
111
- builder = PassivationBuilder()
112
- return builder.get_material(config)
113
-
114
-
115
- def get_unique_coordination_numbers(
116
- material: MaterialWithBuildMetadata,
117
- cutoff: float = 3.0,
118
- ) -> List[int]:
119
- """
120
- Get the unique coordination numbers for the provided passivation configuration and cutoff radius.
121
-
122
- Args:
123
- material (MaterialWithBuildMetadata): The material object.
124
- cutoff (float): The cutoff radius for defining neighbors.
125
- Returns:
126
- set: The unique coordination numbers.
127
- """
128
- material_with_crystal_sites = MaterialWithCrystalSites.from_material(material)
129
- material_with_crystal_sites.analyze()
130
- return material_with_crystal_sites.get_unique_coordination_numbers(cutoff=cutoff)
131
-
132
-
133
- def get_coordination_numbers_distribution(
134
- material: MaterialWithBuildMetadata,
135
- cutoff: float = 3.0,
136
- ) -> Dict[int, int]:
137
- """
138
- Get the unique coordination numbers for the provided passivation configuration and cutoff radius.
139
-
140
- Args:
141
- material (MaterialWithBuildMetadata): The material object.
142
- cutoff (float): The cutoff radius for defining neighbors.
143
- Returns:
144
- set: The unique coordination numbers.
145
- """
146
- material_with_crystal_sites = MaterialWithCrystalSites.from_material(material)
147
- material_with_crystal_sites.analyze()
148
- coordinatation_numbers = material_with_crystal_sites.get_coordination_numbers(cutoff=cutoff)
149
- sorted_coordinatation_numbers = sorted(coordinatation_numbers.values)
150
- distribution = dict(Counter(sorted_coordinatation_numbers))
151
- return distribution
@@ -1,10 +0,0 @@
1
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import (
2
- BaseBuilderParameters,
3
- BaseConfigurationPydantic,
4
- BaseConfigurationPydanticChild,
5
- BaseSingleBuilder,
6
- TypeBuildParameters,
7
- TypeConfiguration,
8
- )
9
-
10
- from .metadata import BuildMetadata, MaterialBuildMetadata, MaterialWithBuildMetadata
@@ -1,18 +0,0 @@
1
- from typing import Tuple
2
-
3
- from mat3ra.code.entity import InMemoryEntityPydantic
4
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.miller_indices import (
5
- MillerIndicesSchema,
6
- )
7
-
8
-
9
- class MillerIndices(MillerIndicesSchema, InMemoryEntityPydantic):
10
- def to_tuple(self) -> Tuple[int, int, int]:
11
- return (self.root[0], self.root[1], self.root[2])
12
-
13
- @staticmethod
14
- def format_index(index: int) -> str:
15
- return f"{index}" + chr(0x0302) if index < 0 else f"{index}"
16
-
17
- def __str__(self) -> str:
18
- return f"({''.join([self.format_index(i) for i in self.root])})"
@@ -1,33 +0,0 @@
1
- from mat3ra.code.entity import InMemoryEntityPydantic
2
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.termination import (
3
- TerminationSchema,
4
- )
5
-
6
-
7
- class Termination(TerminationSchema, InMemoryEntityPydantic):
8
- def __str__(self):
9
- return f"{self.chemical_elements}_{self.space_group_symmetry_label}"
10
-
11
- def __repr__(self):
12
- return self.__str__()
13
-
14
- def __init__(self, chemical_elements: str, space_group_symmetry_label: str):
15
- super().__init__(chemical_elements=chemical_elements, space_group_symmetry_label=space_group_symmetry_label)
16
-
17
- def __eq__(self, other):
18
- if not isinstance(other, Termination):
19
- return NotImplemented
20
- return (
21
- self.chemical_elements == other.chemical_elements
22
- and self.space_group_symmetry_label == other.space_group_symmetry_label
23
- )
24
-
25
- @property
26
- def formula(self):
27
- return self.chemical_elements
28
-
29
- @classmethod
30
- def from_string(cls, termination: str):
31
- chemical_elements = termination.split("_")[0]
32
- space_group_symmetry_label = "_".join(termination.split("_")[1:])
33
- return cls(chemical_elements=chemical_elements, space_group_symmetry_label=space_group_symmetry_label)
@@ -1,2 +0,0 @@
1
- from .crystal_site import CrystalSite
2
- from .crystal_site_list import CrystalSiteList
@@ -1,24 +0,0 @@
1
- from typing import List, Optional
2
-
3
- import numpy as np
4
- from mat3ra.code.entity import InMemoryEntityPydantic
5
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.zero_dimensional.crystal_site import (
6
- CrystalSiteSchema,
7
- )
8
- from mat3ra.made.material import Material
9
- from pydantic import Field
10
-
11
-
12
- class CrystalSite(CrystalSiteSchema, InMemoryEntityPydantic):
13
- crystal: Optional[Material] = Field(None, exclude=True)
14
- # element: str
15
- coordinate: Optional[List[float]] = None
16
- nearest_neighbor_vectors: List[np.ndarray] = Field([], exclude=True)
17
- # coordination_number: int = 0
18
- # see https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-wp-list for an example
19
-
20
- wyckoff_letter: Optional[str] = None
21
-
22
- @property
23
- def coordination_number(self):
24
- return len(self.nearest_neighbor_vectors)
@@ -1,9 +0,0 @@
1
- from typing import List
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
-
5
- from .crystal_site import CrystalSite
6
-
7
-
8
- class CrystalSiteList(ArrayWithIds):
9
- values: List[CrystalSite]
@@ -1,32 +0,0 @@
1
- from mat3ra.code.array_with_ids import ArrayWithIds
2
- from mat3ra.made.basis import Basis, Coordinates
3
-
4
- from ......build_components import MaterialWithBuildMetadata
5
- from ..... import BaseSingleBuilder
6
- from .configuration import PointDefectSiteConfiguration
7
-
8
-
9
- class PointDefectSiteBuilder(BaseSingleBuilder):
10
- """
11
- Builder class for creating a material from a PointDefectSite configuration.
12
- """
13
-
14
- _ConfigurationType = PointDefectSiteConfiguration
15
-
16
- def _generate(self, configuration: PointDefectSiteConfiguration) -> MaterialWithBuildMetadata:
17
- if configuration.crystal is None:
18
- raise ValueError("Crystal configuration is required for PointDefectSiteBuilder")
19
-
20
- crystal = configuration.crystal
21
- basis = Basis(
22
- elements=ArrayWithIds(values=[], ids=[]),
23
- coordinates=Coordinates(values=[], ids=[]),
24
- units=crystal.basis.units,
25
- cell=crystal.basis.cell,
26
- )
27
- basis.add_atom(
28
- element=configuration.element.chemical_element,
29
- coordinate=configuration.coordinate,
30
- label=configuration.host_atom_label,
31
- )
32
- return MaterialWithBuildMetadata(name=crystal.name, lattice=crystal.lattice, basis=basis)
@@ -1,14 +0,0 @@
1
- from typing import Optional, Union
2
-
3
- from mat3ra.esse.models.materials_category.defective_structures.two_dimensional.adatom.configuration import (
4
- PointDefectSiteSchema,
5
- )
6
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
7
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.vacancy import VacancySchema
8
-
9
- from ..crystal_site import CrystalSite
10
-
11
-
12
- class PointDefectSiteConfiguration(CrystalSite, PointDefectSiteSchema):
13
- element: Union[VacancySchema, AtomSchema]
14
- host_atom_label: Optional[Union[int, str]] = None
@@ -1,29 +0,0 @@
1
- from typing import Type
2
-
3
- from ......build_components import MaterialWithBuildMetadata
4
- from ......modify import filter_by_condition_on_coordinates
5
- from ..point_defect_site.builder import PointDefectSiteBuilder
6
- from ..void_region.configuration import VoidRegionConfiguration
7
-
8
-
9
- class VoidRegionBuilder(PointDefectSiteBuilder):
10
- """
11
- Builder class for creating a material with a void region based on a coordinate condition.
12
- Uses "Vac" as the element for all atoms that fall outside the specified coordinate condition
13
- and those positions will void elements in target crystal when merging.
14
- """
15
-
16
- _ConfigurationType: Type[VoidRegionConfiguration] = VoidRegionConfiguration
17
-
18
- def _generate(self, configuration: VoidRegionConfiguration) -> MaterialWithBuildMetadata:
19
- filtered_material = filter_by_condition_on_coordinates(
20
- configuration.crystal,
21
- configuration.coordinate_condition.condition,
22
- use_cartesian_coordinates=configuration.use_cartesian_coordinates,
23
- invert_selection=not configuration.invert_selection,
24
- )
25
-
26
- # Replace all elements with "Vac"
27
- filtered_material.basis.elements.values = ["Vac"] * len(filtered_material.basis.elements.values)
28
-
29
- return filtered_material
@@ -1,19 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.esse.models.materials_category_components.entities.auxiliary.zero_dimensional.void_region import (
4
- VoidRegionSchema,
5
- )
6
-
7
- from ......entities.coordinate import BoxCoordinateCondition, CoordinateCondition, SphereCoordinateCondition
8
- from ..... import MaterialWithBuildMetadata
9
-
10
-
11
- class VoidRegionConfiguration(VoidRegionSchema):
12
- crystal: MaterialWithBuildMetadata
13
- coordinate_condition: Union[SphereCoordinateCondition, BoxCoordinateCondition, CoordinateCondition]
14
- use_cartesian_coordinates: bool = False
15
- invert_selection: bool = False
16
-
17
- @property
18
- def condition_name(self):
19
- return self.coordinate_condition.__class__.__name__.replace("CoordinateCondition", "")
@@ -1,48 +0,0 @@
1
- from typing import Any, Optional, Type
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- from mat3ra.made.utils import AXIS_TO_INDEX_MAP
5
-
6
- from ..... import MaterialWithBuildMetadata
7
- from ....reusable.base_builder import BaseSingleBuilder, TypeConfiguration
8
- from .configuration import VacuumConfiguration
9
-
10
-
11
- class VacuumBuilder(BaseSingleBuilder):
12
- _ConfigurationType: Type[VacuumConfiguration] = VacuumConfiguration
13
-
14
- def get_material(
15
- self,
16
- configuration: TypeConfiguration,
17
- post_process_parameters: Optional[Any] = None,
18
- ) -> Optional[MaterialWithBuildMetadata]:
19
- if configuration.size == 0.0:
20
- return None
21
- return super().get_material(configuration, post_process_parameters)
22
-
23
- def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
24
- reference = configuration.crystal
25
- if reference is None:
26
- raise ValueError("VacuumConfiguration.crystal must be provided to build a vacuum material.")
27
- size = configuration.size
28
- direction: AxisEnum = configuration.direction
29
-
30
- lattice_vectors = reference.lattice.vector_arrays.copy()
31
-
32
- # Replace the target direction with the vacuum vector
33
- axis = AXIS_TO_INDEX_MAP[direction.value]
34
- vacuum_vector = [0.0, 0.0, 0.0]
35
- vacuum_vector[axis] = size
36
- lattice_vectors[axis] = vacuum_vector
37
-
38
- vacuum_lattice = reference.lattice.from_vectors_array(
39
- lattice_vectors, reference.lattice.units, reference.lattice.type
40
- )
41
-
42
- return MaterialWithBuildMetadata.create(
43
- {
44
- "name": "Vacuum",
45
- "lattice": vacuum_lattice.to_dict(),
46
- "basis": {"elements": [], "coordinates": []},
47
- }
48
- )
@@ -1,17 +0,0 @@
1
- from typing import Optional, Union
2
-
3
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
4
- from mat3ra.esse.models.materials_category_components.entities.core.two_dimensional.vacuum import (
5
- VacuumConfigurationSchema,
6
- )
7
- from mat3ra.made.material import Material
8
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
9
-
10
- from ..... import MaterialWithBuildMetadata
11
-
12
-
13
- class VacuumConfiguration(VacuumConfigurationSchema, BaseConfigurationPydantic):
14
- type: str = "VacuumConfiguration"
15
- size: float = VacuumConfigurationSchema.model_fields["size"].default
16
- crystal: Union[Material, MaterialWithBuildMetadata, None] = None
17
- direction: Optional[AxisEnum] = AxisEnum.z
@@ -1,25 +0,0 @@
1
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
2
-
3
- from ..... import MaterialWithBuildMetadata
4
- from ...two_dimensional.vacuum.builder import VacuumBuilder
5
- from ...two_dimensional.vacuum.configuration import VacuumConfiguration
6
- from .configuration import AtomAtCoordinateConfiguration
7
-
8
-
9
- class AtomAtCoordinateBuilder(VacuumBuilder):
10
- _ConfigurationType = AtomAtCoordinateConfiguration
11
-
12
- def _generate(self, configuration: AtomAtCoordinateConfiguration) -> MaterialWithBuildMetadata:
13
- if not configuration.crystal:
14
- raise ValueError("Crystal must be provided for AtomAtCoordinateConfiguration")
15
- vacuum_configuration = VacuumConfiguration(
16
- crystal=configuration.crystal,
17
- size=configuration.crystal.lattice.c,
18
- direction=AxisEnum.z,
19
- )
20
- new_material = super()._generate(vacuum_configuration)
21
- new_material.basis.add_atom(
22
- element=configuration.element.chemical_element.value,
23
- coordinate=configuration.coordinate,
24
- )
25
- return new_material
@@ -1,8 +0,0 @@
1
- from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
2
-
3
- from ....auxiliary.zero_dimensional.point_defect_site.configuration import PointDefectSiteConfiguration
4
- from ...two_dimensional.vacuum.configuration import VacuumConfiguration
5
-
6
-
7
- class AtomAtCoordinateConfiguration(VacuumConfiguration, PointDefectSiteConfiguration):
8
- element: AtomSchema
@@ -1,16 +0,0 @@
1
- from typing import TypeVar
2
-
3
- from .base_configuration_pydantic import BaseConfigurationPydantic
4
- from .base_single_builder import BaseSingleBuilder, TypeBuildParameters, TypeConfiguration
5
- from .build_parameters import BaseBuilderParameters
6
-
7
- BaseConfigurationPydanticChild = TypeVar("BaseConfigurationPydanticChild", bound="BaseConfigurationPydantic")
8
-
9
- __all__ = [
10
- "BaseConfigurationPydantic",
11
- "BaseBuilderParameters",
12
- "BaseSingleBuilder",
13
- "TypeConfiguration",
14
- "TypeBuildParameters",
15
- "BaseConfigurationPydanticChild",
16
- ]
@@ -1,5 +0,0 @@
1
- from mat3ra.code.entity import InMemoryEntityPydantic
2
-
3
-
4
- class BaseConfigurationPydantic(InMemoryEntityPydantic):
5
- pass
@@ -1,87 +0,0 @@
1
- from typing import Any, Generic, Optional, Type, TypeVar
2
-
3
- from mat3ra.made.tools.build_components.metadata import MaterialWithBuildMetadata
4
- from pydantic import BaseModel
5
-
6
- from .base_configuration_pydantic import BaseConfigurationPydantic
7
- from .build_parameters import BaseBuilderParameters
8
-
9
- TypeConfiguration = TypeVar("TypeConfiguration", bound=BaseConfigurationPydantic)
10
- TypeBuildParameters = TypeVar("TypeBuildParameters", bound=BaseBuilderParameters)
11
-
12
-
13
- class BaseSingleBuilder(BaseModel, Generic[TypeConfiguration, TypeBuildParameters]):
14
- """
15
- Base class for material builders.
16
- This class provides an interface for generating materials and getter functions.
17
- The builder is meant as a description of the process, while its functions require a
18
- "Configuration" class instance to perform the generation.
19
-
20
- The class is designed to be subclassed and the subclass should implement the following methods:
21
-
22
- - `_generate`: Generate the material items, possibly using third-party tools/implementation for items.
23
- - `_sort`: Sort the items.
24
- - `_select`: Select a subset of the items.
25
- - `_post_process`: Post-process the items to convert them to materials (Material class).
26
- - `_finalize`: Finalize the materials.
27
-
28
- The subclass should also define the following attributes:
29
-
30
- - `_BuildParametersType`: The data structure model for the build parameters.
31
- - `_DefaultBuildParameters`: The default build parameters.
32
- - `_ConfigurationType`: The data structure model for the Configuration used during the build.
33
- - `_GeneratedItemType`: The type of the generated item.
34
- - `_SelectorParametersType`: The data structure model for the selector parameters.
35
- - `_PostProcessParametersType`: The data structure model for the post-process parameters.
36
- """
37
-
38
- model_config = {"arbitrary_types_allowed": True}
39
-
40
- build_parameters: Optional[TypeBuildParameters] = None
41
- _BuildParametersType: Type[TypeBuildParameters] = BaseBuilderParameters
42
- _DefaultBuildParameters: TypeBuildParameters = BaseBuilderParameters()
43
-
44
- _ConfigurationType: Type[TypeConfiguration] = BaseConfigurationPydantic
45
- _PostProcessParametersType: Any = None
46
-
47
- def __init__(self, build_parameters: Optional[TypeBuildParameters] = None):
48
- super().__init__()
49
- self.build_parameters = build_parameters if build_parameters is not None else self._DefaultBuildParameters
50
-
51
- def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
52
- raise NotImplementedError
53
-
54
- def _post_process(
55
- self,
56
- item: MaterialWithBuildMetadata,
57
- post_process_parameters: Optional[Any],
58
- configuration: Optional[TypeConfiguration] = None,
59
- ) -> MaterialWithBuildMetadata:
60
- return item
61
-
62
- def _finalize(
63
- self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
64
- ) -> MaterialWithBuildMetadata:
65
- material_with_metadata = self._update_material_metadata(material, configuration)
66
- return self._update_material_name(material_with_metadata, configuration)
67
-
68
- def get_material(
69
- self,
70
- configuration: TypeConfiguration,
71
- post_process_parameters: Optional[Any] = None,
72
- ) -> MaterialWithBuildMetadata:
73
- generated_item = self._generate(configuration)
74
- material = self._post_process(generated_item, post_process_parameters, configuration)
75
- finalized_material = self._finalize(material, configuration)
76
- return finalized_material
77
-
78
- def _update_material_name(
79
- self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
80
- ) -> MaterialWithBuildMetadata:
81
- return material
82
-
83
- def _update_material_metadata(
84
- self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
85
- ) -> MaterialWithBuildMetadata:
86
- material.metadata.add_build_metadata_step(configuration=configuration, build_parameters=self.build_parameters)
87
- return material
@@ -1,5 +0,0 @@
1
- from mat3ra.code.entity import InMemoryEntityPydantic
2
-
3
-
4
- class BaseBuilderParameters(InMemoryEntityPydantic):
5
- pass
@@ -1,4 +0,0 @@
1
- from .builder import CrystalLatticeLinesBuilder
2
- from .configuration import CrystalLatticeLinesConfiguration
3
-
4
- __all__ = ["CrystalLatticeLinesBuilder", "CrystalLatticeLinesConfiguration"]
@@ -1,46 +0,0 @@
1
- from typing import Any, Optional, Union
2
-
3
- from mat3ra.made.material import Material
4
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
5
-
6
- from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
7
- from ......build.pristine_structures.two_dimensional.slab.utils import get_orthogonal_c_slab
8
- from ......modify import translate_to_z_level
9
- from ......operations.core.unary import supercell
10
- from ..... import MaterialWithBuildMetadata
11
- from .configuration import CrystalLatticeLinesConfiguration
12
-
13
-
14
- class CrystalLatticeLinesBuilder(BaseSingleBuilder):
15
- """
16
- Builder for creating a single crystal lattice line with termination.
17
- This is similar to CrystalLatticePlanesBuilder but for 1D lines.
18
- """
19
-
20
- _PostProcessParametersType: Any = None
21
- use_enforce_convention: bool = True
22
-
23
- def _generate(self, configuration: CrystalLatticeLinesConfiguration) -> Material:
24
- crystal_lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
25
- material=configuration.crystal, miller_indices_2d=configuration.miller_indices_2d
26
- )
27
- miller_supercell_matrix = crystal_lattice_lines_analyzer.miller_supercell_matrix
28
- miller_supercell_material = supercell(configuration.crystal, miller_supercell_matrix)
29
- # Lattice returned with vector B being treated as the direction to the surface, needs to be swaped with C
30
- rotated_material = supercell(miller_supercell_material, [[1, 0, 0], [0, 0, 1], [0, 1, 0]])
31
- orthogonal_material = get_orthogonal_c_slab(rotated_material)
32
- return orthogonal_material
33
-
34
- def _enforce_convention(self, material: Union[Material, MaterialWithBuildMetadata]) -> Material:
35
- if not self.use_enforce_convention:
36
- return material
37
- return translate_to_z_level(material, "bottom")
38
-
39
- def _post_process(
40
- self,
41
- item: Material,
42
- post_process_parameters: Optional[Any],
43
- configuration: Optional[TypeConfiguration] = None,
44
- ) -> Material:
45
- item = super()._post_process(item, post_process_parameters, configuration)
46
- return self._enforce_convention(item)