@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,7 +0,0 @@
1
- from mat3ra.made.metadata import BaseMetadata
2
- from pydantic import Field
3
-
4
-
5
- class BuildMetadata(BaseMetadata):
6
- configuration: dict = Field(default_factory=dict)
7
- build_parameters: dict = Field(default_factory=dict)
@@ -1,35 +0,0 @@
1
- from typing import List, Optional
2
-
3
- from mat3ra.made.metadata import BaseMetadata
4
- from pydantic import Field
5
-
6
- from .build_metadata import BuildMetadata
7
-
8
-
9
- class MaterialBuildMetadata(BaseMetadata):
10
- # Other metadata fields can be added as needed
11
- build: List[BuildMetadata] = Field([])
12
-
13
- def get_latest_build_metadata(self) -> BuildMetadata:
14
- if not self.build:
15
- raise ValueError("No metadata.build on the material.")
16
- return self.build[-1]
17
-
18
- def get_build_metadata_of_type(self, configuration_type: str) -> Optional[BuildMetadata]:
19
- """
20
- Returns the first build configuration of the specified type.
21
- Args:
22
- configuration_type (str): The type of configuration to search for.
23
- Returns:
24
- Optional[dict]: The build configuration if found, otherwise None.
25
- """
26
- for build_step in reversed(self.build):
27
- if build_step.configuration.get("type") == configuration_type:
28
- return BuildMetadata(
29
- configuration=build_step.configuration, build_parameters=build_step.build_parameters
30
- )
31
- return None
32
-
33
- def add_build_metadata_step(self, configuration: dict, build_parameters: Optional[dict] = None) -> None:
34
- build_metadata = BuildMetadata(configuration=configuration, build_parameters=build_parameters)
35
- self.build.append(build_metadata)
@@ -1,8 +0,0 @@
1
- from mat3ra.made.material import Material
2
- from pydantic import Field
3
-
4
- from .material_build_metadata import MaterialBuildMetadata
5
-
6
-
7
- class MaterialWithBuildMetadata(Material):
8
- metadata: MaterialBuildMetadata = Field(default_factory=MaterialBuildMetadata)
@@ -1,2 +0,0 @@
1
- from .convert_generated_items_ase_atoms_mixin import ConvertGeneratedItemsASEAtomsMixin
2
- from .convert_generated_items_pymatgen_structure_mixin import ConvertGeneratedItemsPymatgenStructureMixin
@@ -1,8 +0,0 @@
1
- from ...convert import from_ase
2
- from ...third_party import ASEAtoms
3
-
4
-
5
- class ConvertGeneratedItemsASEAtomsMixin:
6
- @staticmethod
7
- def _convert_generated_item(item: ASEAtoms):
8
- return from_ase(item)
@@ -1,8 +0,0 @@
1
- from ...convert import from_pymatgen
2
- from ...third_party import PymatgenStructure
3
-
4
-
5
- class ConvertGeneratedItemsPymatgenStructureMixin:
6
- @staticmethod
7
- def _convert_generated_item(item: PymatgenStructure):
8
- return from_pymatgen(item)
@@ -1,11 +0,0 @@
1
- from enum import Enum
2
-
3
- from .....build.defective_structures.zero_dimensional.point_defect.atom_placement_method_enum import (
4
- AtomPlacementMethodEnum,
5
- )
6
-
7
-
8
- class AdatomPlacementMethodEnum(Enum):
9
- EXACT_COORDINATE = AtomPlacementMethodEnum.EXACT_COORDINATE
10
- EQUIDISTANT = AtomPlacementMethodEnum.EQUIDISTANT
11
- NEW_CRYSTAL_SITE = AtomPlacementMethodEnum.NEW_CRYSTAL_SITE
@@ -1,6 +0,0 @@
1
- from .builder import MergeBuilder, MergeBuilderParameters
2
-
3
- __all__ = [
4
- "MergeBuilder",
5
- "MergeBuilderParameters",
6
- ]
@@ -1,18 +0,0 @@
1
- from typing import Optional
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
4
-
5
-
6
- class MergeBuilderParameters(BaseBuilderParameters):
7
- """
8
- Parameters for merging materials.
9
-
10
- Args:
11
- material_name: Optional name for the merged material.
12
- distance_tolerance: Tolerance for resolving overlapping coordinates.
13
- merge_dangerously: If True, allows merging even if lattices are different.
14
- """
15
-
16
- material_name: Optional[str] = "New Material"
17
- distance_tolerance: float = 0.1
18
- merge_dangerously: bool = False
@@ -1,93 +0,0 @@
1
- from typing import Any, Dict, List, Optional, Type
2
-
3
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import MergeMethodsEnum
4
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
5
-
6
- from ......operations.core.binary import merge
7
- from ..... import MaterialWithBuildMetadata
8
- from .....entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
9
- from .build_parameters import MergeBuilderParameters
10
- from .configuration import MergeConfiguration
11
-
12
-
13
- class MergeBuilder(BaseSingleBuilder):
14
- """
15
- Builder class for merging materials based on parameters.
16
- """
17
-
18
- _ConfigurationType: Type[MergeConfiguration] = MergeConfiguration
19
- _BuildParametersType: Type[MergeBuilderParameters] = MergeBuilderParameters
20
- _DefaultBuildParameters: MergeBuilderParameters = MergeBuilderParameters()
21
-
22
- @property
23
- def merge_component_types_conversion_map(self) -> Dict[Type, Type]:
24
- return {}
25
-
26
- @property
27
- def merge_component_types_conversion_pre_process_map(self) -> Dict[Type, Any]:
28
- return {}
29
-
30
- def _merge_component_to_material(
31
- self,
32
- merge_component_configuration_or_material: Any,
33
- configuration: MergeConfiguration,
34
- merge_component_build_parameters: Any = None,
35
- ) -> Optional[MaterialWithBuildMetadata]:
36
- builder = self.merge_component_types_conversion_map.get(type(merge_component_configuration_or_material))
37
- pre_process_function = self.merge_component_types_conversion_pre_process_map.get(
38
- type(merge_component_configuration_or_material), lambda x, y: x
39
- )
40
-
41
- if builder:
42
- merge_component_configuration_or_material = pre_process_function(
43
- merge_component_configuration_or_material, configuration
44
- )
45
- return builder(build_parameters=merge_component_build_parameters).get_material(
46
- merge_component_configuration_or_material
47
- )
48
- elif isinstance(merge_component_configuration_or_material, VacuumConfiguration):
49
- raise ValueError("Merge with VacuumConfiguration is not supported by design.")
50
- else:
51
- return merge_component_configuration_or_material
52
-
53
- def _merge_by_method(
54
- self,
55
- materials: List[MaterialWithBuildMetadata],
56
- parameters: MergeBuilderParameters,
57
- method: MergeMethodsEnum = MergeMethodsEnum.ADD,
58
- ) -> MaterialWithBuildMetadata:
59
- if method not in MergeMethodsEnum:
60
- raise ValueError(f"Unknown merge method: {method}")
61
- return merge(
62
- materials=materials,
63
- merge_method=method,
64
- material_name=parameters.material_name or materials[0].name,
65
- distance_tolerance=parameters.distance_tolerance,
66
- merge_dangerously=parameters.merge_dangerously,
67
- )
68
-
69
- def _generate(self, configuration: TypeConfiguration) -> MaterialWithBuildMetadata:
70
- materials = []
71
- for component in configuration.merge_components:
72
- material = self._merge_component_to_material(component, configuration)
73
- if material is not None:
74
- materials.append(material)
75
-
76
- if len(materials) == 0:
77
- raise ValueError("No valid materials found after processing merge components")
78
-
79
- if len(materials) == 1:
80
- return materials[0]
81
-
82
- # Optimization: when there are many materials to merge, combine all non-first
83
- # materials into one before merging with the base to avoid N sequential merges.
84
- if len(materials) > 2:
85
- base = materials[0]
86
- combined = materials[1]
87
- for m in materials[2:]:
88
- combined.basis.add_atoms_from_another_basis(m.basis)
89
- materials = [base, combined]
90
-
91
- parameters = self.build_parameters or self._DefaultBuildParameters
92
- merge_method = getattr(configuration, "merge_method", None)
93
- return self._merge_by_method(materials, parameters, merge_method)
@@ -1,20 +0,0 @@
1
- from typing import Any, List
2
-
3
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.merge import (
4
- MergeMethodsEnum,
5
- MergeSchema,
6
- )
7
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
8
-
9
-
10
- class MergeConfiguration(MergeSchema, BaseConfigurationPydantic):
11
- """
12
- Parameters for merging materials.
13
-
14
- Args:
15
- merge_components: List of materials or configurations to merge.
16
- merge_method: Method to use for merging
17
- """
18
-
19
- merge_components: List[Any]
20
- merge_method: MergeMethodsEnum
@@ -1,83 +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.material import Material
5
- from mat3ra.made.utils import adjust_material_cell_to_set_gap_along_direction
6
-
7
- from ......build_components import MaterialWithBuildMetadata
8
- from ......operations.core.binary import stack
9
- from .....entities.core.two_dimensional.vacuum.builder import VacuumBuilder
10
- from .....entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
11
- from .....entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
12
- from .configuration import StackConfiguration
13
-
14
-
15
- class StackNComponentsBuilder(BaseSingleBuilder):
16
- _ConfigurationType: Type[StackConfiguration] = StackConfiguration
17
- _StackComponentTypes = [MaterialWithBuildMetadata, VacuumConfiguration]
18
-
19
- @property
20
- def stack_component_types_conversion_map(self):
21
- return {
22
- VacuumConfiguration: VacuumBuilder,
23
- }
24
-
25
- @property
26
- def stack_component_types_conversion_pre_process_map(self):
27
- return {
28
- VacuumConfiguration: self.vacuum_configuration_set_crystal,
29
- }
30
-
31
- def vacuum_configuration_set_crystal(
32
- self, vacuum_configuration: VacuumConfiguration, stack_configuration: StackConfiguration
33
- ) -> VacuumConfiguration:
34
- # NOTE: we assume that the first component in the stack is used to define the vacuum crystal
35
- vacuum_prototype_crystal = stack_configuration.stack_components[0]
36
- vacuum_configuration.crystal = self._stack_component_to_material(vacuum_prototype_crystal, stack_configuration)
37
- return vacuum_configuration
38
-
39
- def _stack_component_to_material(
40
- self,
41
- stack_component_configuration_or_material: Any,
42
- configuration: StackConfiguration,
43
- stack_component_build_parameters: Any = None,
44
- ) -> Optional[MaterialWithBuildMetadata]:
45
- cache = getattr(self, "_stack_component_cache", None)
46
- cache_key = id(stack_component_configuration_or_material)
47
- if cache is not None and cache_key in cache:
48
- return cache[cache_key]
49
-
50
- builder = self.stack_component_types_conversion_map.get(type(stack_component_configuration_or_material))
51
- pre_process_function = self.stack_component_types_conversion_pre_process_map.get(
52
- type(stack_component_configuration_or_material), lambda x, y: x
53
- )
54
- if builder:
55
- stack_component_configuration_or_material = pre_process_function(
56
- stack_component_configuration_or_material, configuration
57
- )
58
- result = builder(build_parameters=stack_component_build_parameters).get_material(
59
- stack_component_configuration_or_material
60
- )
61
- else:
62
- result = stack_component_configuration_or_material
63
-
64
- if cache is not None:
65
- cache[cache_key] = result
66
- return result
67
-
68
- def _generate(self, configuration: TypeConfiguration) -> Material:
69
- self._stack_component_cache: Optional[dict] = {}
70
- try:
71
- materials = []
72
- for index, stack_component_config in enumerate(configuration.stack_components):
73
- material = self._stack_component_to_material(stack_component_config, configuration)
74
- gap = configuration.get_gap_by_id(index)
75
- if gap is not None:
76
- material = adjust_material_cell_to_set_gap_along_direction(material, gap, configuration.direction)
77
- materials.append(material)
78
- # Filter out None values in case some stack components are V
79
- materials = [m for m in materials if m is not None]
80
- stacked_material = stack(materials, configuration.direction or AxisEnum.z)
81
- return stacked_material
82
- finally:
83
- self._stack_component_cache = None
@@ -1,24 +0,0 @@
1
- from typing import Any, List
2
-
3
- from mat3ra.code.array_with_ids import ArrayWithIds
4
- from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
5
- from mat3ra.esse.models.materials_category_components.operations.core.combinations.stack import StackSchema
6
-
7
- from .....entities.reusable.base_builder import BaseConfigurationPydantic
8
-
9
-
10
- class StackConfiguration(StackSchema, BaseConfigurationPydantic):
11
- type: str = "StackConfiguration"
12
-
13
- stack_components: List[Any] # Configuration objects only, no Materials
14
- gaps: ArrayWithIds = ArrayWithIds.from_values([])
15
- direction: AxisEnum = AxisEnum.z
16
-
17
- def __init__(self, **data):
18
- gaps = data.get("gaps", [])
19
- if not isinstance(gaps, ArrayWithIds):
20
- data["gaps"] = ArrayWithIds.from_values(gaps)
21
- super().__init__(**data)
22
-
23
- def get_gap_by_id(self, gap_id: int) -> float:
24
- return self.gaps.get_element_value_by_index(gap_id)
@@ -1,15 +0,0 @@
1
- from .functions import (
2
- AtomicMassDependentFunctionHolder,
3
- FunctionHolder,
4
- MaxwellBoltzmannDisplacementHolder,
5
- PerturbationFunctionHolder,
6
- SineWavePerturbationFunctionHolder,
7
- )
8
-
9
- __all__ = [
10
- "AtomicMassDependentFunctionHolder",
11
- "FunctionHolder",
12
- "MaxwellBoltzmannDisplacementHolder",
13
- "PerturbationFunctionHolder",
14
- "SineWavePerturbationFunctionHolder",
15
- ]
@@ -1,5 +0,0 @@
1
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
2
-
3
-
4
- class PerturbationBuildParameters(BaseBuilderParameters):
5
- center_material: bool = True
@@ -1,33 +0,0 @@
1
- from typing import Any, Type
2
-
3
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder
4
-
5
- from .......modify import translate_to_z_level, wrap_to_unit_cell
6
- from .......operations.core.unary import perturb
7
- from ...... import MaterialWithBuildMetadata
8
- from ..build_parameters import PerturbationBuildParameters
9
- from ..configuration import PerturbationConfiguration
10
-
11
-
12
- class PerturbationBuilder(BaseSingleBuilder):
13
- _ConfigurationType: Type[PerturbationConfiguration] = PerturbationConfiguration
14
- _BuildParametersType: Type[PerturbationBuildParameters] = PerturbationBuildParameters
15
- _DefaultBuildParameters: PerturbationBuildParameters = PerturbationBuildParameters()
16
- _PostProcessParametersType: Any = None
17
-
18
- def _generate(self, configuration: PerturbationConfiguration) -> MaterialWithBuildMetadata:
19
- new_material = translate_to_z_level(configuration.material, "center").clone()
20
- new_material = perturb(
21
- new_material,
22
- configuration.perturbation_function_holder,
23
- configuration.use_cartesian_coordinates,
24
- )
25
- new_material = wrap_to_unit_cell(new_material)
26
- return new_material
27
-
28
- def _update_material_name(
29
- self, material: MaterialWithBuildMetadata, configuration: PerturbationConfiguration
30
- ) -> MaterialWithBuildMetadata:
31
- perturbation_details = f"Perturbation: {configuration.perturbation_function_holder.function_str}"
32
- material.name = f"{material.name} ({perturbation_details})"
33
- return material
@@ -1,25 +0,0 @@
1
- from .......operations.core.unary import edit_cell
2
- from ...... import MaterialWithBuildMetadata
3
- from ..configuration import PerturbationConfiguration
4
- from .base import PerturbationBuilder
5
-
6
-
7
- class IsometricPerturbationBuilder(PerturbationBuilder):
8
- def _generate(self, configuration: PerturbationConfiguration) -> MaterialWithBuildMetadata:
9
- new_material = configuration.material.clone()
10
- renormalized_coordinates = [
11
- configuration.perturbation_function_holder.normalize_coordinates(coord)
12
- for coord in new_material.basis.coordinates.values
13
- ]
14
- new_material.set_coordinates(renormalized_coordinates)
15
-
16
- configuration.material = new_material
17
-
18
- new_material = super()._generate(configuration)
19
-
20
- new_lattice_vectors = [
21
- configuration.perturbation_function_holder.normalize_coordinates(vector)
22
- for vector in new_material.lattice.vector_arrays
23
- ]
24
- renormalized_material = edit_cell(new_material, new_lattice_vectors)
25
- return renormalized_material
@@ -1,24 +0,0 @@
1
- from typing import Union
2
-
3
- from mat3ra.made.material import Material
4
- from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
5
-
6
- from ..... import MaterialWithBuildMetadata
7
- from .functions import FunctionHolder, PerturbationFunctionHolder, SineWavePerturbationFunctionHolder
8
-
9
-
10
- class PerturbationConfiguration(BaseConfigurationPydantic):
11
- """
12
- Configuration for a geometrical perturbation.
13
-
14
- Args:
15
- material (Material): The Material object.
16
- perturbation_function_holder (PerturbationFunctionHolder): The perturbation function holder.
17
- use_cartesian_coordinates (bool): Whether to use cartesian coordinates
18
- """
19
-
20
- material: Union[Material, MaterialWithBuildMetadata]
21
- perturbation_function_holder: Union[
22
- SineWavePerturbationFunctionHolder, PerturbationFunctionHolder, FunctionHolder
23
- ] = SineWavePerturbationFunctionHolder()
24
- use_cartesian_coordinates: bool = True
@@ -1,13 +0,0 @@
1
- from .atomic_mass_dependent_function_holder import AtomicMassDependentFunctionHolder
2
- from .function_holder import FunctionHolder
3
- from .maxwell_boltzmann import MaxwellBoltzmannDisplacementHolder
4
- from .perturbation_function_holder import PerturbationFunctionHolder
5
- from .sine_wave_perturbation_function_holder import SineWavePerturbationFunctionHolder
6
-
7
- __all__ = [
8
- "AtomicMassDependentFunctionHolder",
9
- "FunctionHolder",
10
- "MaxwellBoltzmannDisplacementHolder",
11
- "PerturbationFunctionHolder",
12
- "SineWavePerturbationFunctionHolder",
13
- ]
@@ -1,32 +0,0 @@
1
- from typing import Any, List, Optional, Union
2
-
3
- import sympy as sp
4
- from mat3ra.periodic_table.helpers import get_atomic_mass_from_element
5
-
6
- from .function_holder import FunctionHolder
7
-
8
-
9
- class AtomicMassDependentFunctionHolder(FunctionHolder):
10
- variables: List[str] = ["x", "y", "z", "m"]
11
-
12
- def __init__(
13
- self,
14
- function: Union[sp.Expr, str] = sp.Symbol("f"),
15
- variables: Optional[List[str]] = None,
16
- **data: Any,
17
- ):
18
- if variables is None:
19
- expr = self._to_expr(function)
20
- vs = sorted(expr.free_symbols, key=lambda s: s.name)
21
- variables = [str(v) for v in vs] or ["x", "y", "z", "m"]
22
-
23
- super().__init__(function=function, variables=variables, **data)
24
-
25
- @staticmethod
26
- def get_atomic_mass(coordinate: List[float], material) -> float:
27
- if material is None:
28
- raise ValueError("Material is required to extract atomic mass")
29
-
30
- atom_id = material.basis.coordinates.get_element_id_by_value(coordinate)
31
- element = material.basis.elements.get_element_value_by_index(atom_id)
32
- return get_atomic_mass_from_element(element)
@@ -1,80 +0,0 @@
1
- from typing import Any, Callable, List, Optional, Union
2
-
3
- import sympy as sp
4
- from mat3ra.code.entity import InMemoryEntityPydantic
5
- from mat3ra.made.utils import AXIS_TO_INDEX_MAP
6
- from pydantic import field_serializer
7
- from sympy import parse_expr
8
-
9
-
10
- def default_function() -> sp.Expr:
11
- return sp.Symbol("f")
12
-
13
-
14
- class FunctionHolder(InMemoryEntityPydantic):
15
- variables: List[str] = ["x"]
16
- symbols: List[sp.Symbol] = sp.symbols(variables)
17
- function: sp.Expr = sp.Symbol("f")
18
- function_numeric: Callable = sp.lambdify(sp.symbols(variables), sp.Symbol("f"), modules=["numpy"])
19
- derivatives_numeric: dict = {}
20
-
21
- def __init__(self, function: Union[sp.Expr, str], variables: Optional[List[str]] = None, **data: Any):
22
- # normalize string → Expr
23
- expr = self._to_expr(function)
24
-
25
- # if no variables list given, infer from free symbols (defaults to x,y,z)
26
- if variables is None:
27
- vs = sorted(expr.free_symbols, key=lambda s: s.name)
28
- variables = [str(v) for v in vs] or ["x", "y", "z"]
29
- super().__init__(**data)
30
-
31
- self.variables = variables
32
- self.symbols = sp.symbols(variables)
33
- self.function = expr
34
-
35
- self.function_numeric = sp.lambdify(self.symbols, self.function, modules=["numpy"])
36
- self.derivatives_numeric = {
37
- var: sp.lambdify(sp.symbols(variables), sp.diff(self.function, var), modules=["numpy"])
38
- for var in self.variables
39
- }
40
-
41
- @staticmethod
42
- def _to_expr(expr_or_str: Union[sp.Expr, str]) -> sp.Expr:
43
- if isinstance(expr_or_str, sp.Expr):
44
- return expr_or_str
45
- if isinstance(expr_or_str, str):
46
- # We can swap in sympy.sympify for slightly laxer parsing,
47
- # or configure parse_expr with custom transformations.
48
- return parse_expr(expr_or_str, evaluate=True)
49
- raise TypeError(f"Expected sympy.Expr or str, got {type(expr_or_str)}")
50
-
51
- @property
52
- def function_str(self) -> str:
53
- return str(self.function)
54
-
55
- def apply_function(self, coordinate: List[float], **kwargs: Any) -> float:
56
- values = [coordinate[AXIS_TO_INDEX_MAP[var]] for var in self.variables]
57
- return self.function_numeric(*values)
58
-
59
- def calculate_derivative(self, coordinate: List[float], axis: str) -> float:
60
- if axis in self.variables:
61
- values = [coordinate[AXIS_TO_INDEX_MAP[var]] for var in self.variables]
62
- return self.derivatives_numeric[axis](*values)
63
- else:
64
- return 0
65
-
66
- @field_serializer("function")
67
- def serialize_function(self, value: sp.Expr) -> str:
68
- return str(value)
69
-
70
- @field_serializer("symbols")
71
- def serialize_symbols(self, value: List[sp.Symbol]) -> List[str]:
72
- return [str(symbol) for symbol in value]
73
-
74
- @field_serializer("function_numeric")
75
- def serialize_function_numeric(self, value: Callable) -> str:
76
- return "lambdified_function"
77
-
78
- @field_serializer("derivatives_numeric")
79
- def serialize_derivatives_numeric(self, value: dict) -> dict:
80
- return {k: "lambdified_derivative" for k, v in value.items()}
@@ -1,39 +0,0 @@
1
- from typing import Any, List, Optional
2
-
3
- import numpy as np
4
- from pydantic import Field, model_validator
5
-
6
- from .atomic_mass_dependent_function_holder import AtomicMassDependentFunctionHolder
7
-
8
- DEFAULT_DISORDER_PARAMETER = 1.0
9
-
10
-
11
- class MaxwellBoltzmannDisplacementHolder(AtomicMassDependentFunctionHolder):
12
- disorder_parameter: float = Field(
13
- default=DEFAULT_DISORDER_PARAMETER,
14
- exclude=True,
15
- description="Disorder parameter. Can be viewed as effective temperature in eV.",
16
- )
17
- random_seed: Optional[int] = Field(default=None, exclude=True)
18
- random_state: Any = Field(default=None, exclude=True)
19
- is_mass_used: bool = Field(default=True, exclude=True)
20
-
21
- @model_validator(mode="after")
22
- def setup_random_state(self):
23
- if self.random_state is None:
24
- self.random_state = np.random.RandomState(self.random_seed) if self.random_seed is not None else np.random
25
- return self
26
-
27
- def apply_function(self, coordinate, material=None) -> List[float]:
28
- if material is None:
29
- raise ValueError("MaxwellBoltzmannDisplacementHolder requires 'material' kwargs")
30
-
31
- if self.is_mass_used:
32
- mass = self.get_atomic_mass(coordinate, material)
33
- variance = self.disorder_parameter / mass
34
- else:
35
- variance = self.disorder_parameter
36
-
37
- std_dev = np.sqrt(variance)
38
- displacement = self.random_state.normal(0.0, std_dev, size=3)
39
- return displacement.tolist()