@mat3ra/made 2026.8.13-0 → 2026.8.26-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/package.json +9 -5
  2. package/.babelrc +0 -10
  3. package/.eslintrc.json +0 -11
  4. package/.gitattributes +0 -1
  5. package/.husky/post-checkout +0 -3
  6. package/.husky/post-commit +0 -3
  7. package/.husky/post-merge +0 -3
  8. package/.husky/pre-commit +0 -6
  9. package/.husky/pre-push +0 -3
  10. package/.mocharc.json +0 -5
  11. package/.pre-commit-config.yaml +0 -26
  12. package/.prettierignore +0 -2
  13. package/.prettierrc +0 -6
  14. package/AGENTS.md +0 -133
  15. package/MANIFEST.in +0 -1
  16. package/data/constants.json +0 -13
  17. package/data/reciprocal_paths.json +0 -111
  18. package/images/made/tools/tools_diagram_general.png +0 -3
  19. package/images/made/tools/tools_diagram_interface.png +0 -3
  20. package/pyproject.toml +0 -123
  21. package/scripts/generate-mixins.ts +0 -28
  22. package/src/__init__.py +0 -0
  23. package/src/js/Material.ts +0 -618
  24. package/src/js/basis/basis.ts +0 -634
  25. package/src/js/basis/constrained_basis.ts +0 -115
  26. package/src/js/basis/coordinates.ts +0 -92
  27. package/src/js/basis/elements.ts +0 -24
  28. package/src/js/basis/helpers.ts +0 -20
  29. package/src/js/basis/labels.ts +0 -6
  30. package/src/js/cell/cell.ts +0 -149
  31. package/src/js/cell/conventional_cell.ts +0 -86
  32. package/src/js/cell/primitive_cell.ts +0 -166
  33. package/src/js/constants/molecule.ts +0 -18
  34. package/src/js/constants.ts +0 -4
  35. package/src/js/constraints/constraints.ts +0 -45
  36. package/src/js/generated/MaterialSchemaMixin.ts +0 -79
  37. package/src/js/lattice/lattice.ts +0 -308
  38. package/src/js/lattice/lattice_types.ts +0 -134
  39. package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -206
  40. package/src/js/lattice/reciprocal/paths.ts +0 -39
  41. package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
  42. package/src/js/lattice/unit_cell.ts +0 -66
  43. package/src/js/made.ts +0 -62
  44. package/src/js/parsers/cif.ts +0 -25
  45. package/src/js/parsers/errors.ts +0 -6
  46. package/src/js/parsers/espresso.ts +0 -29
  47. package/src/js/parsers/native_format_parsers.ts +0 -52
  48. package/src/js/parsers/parsers.ts +0 -13
  49. package/src/js/parsers/poscar.ts +0 -218
  50. package/src/js/parsers/xyz.ts +0 -190
  51. package/src/js/parsers/xyz_combinatorial_basis.ts +0 -268
  52. package/src/js/tools/basis.ts +0 -131
  53. package/src/js/tools/cell.ts +0 -40
  54. package/src/js/tools/index.ts +0 -11
  55. package/src/js/tools/material.ts +0 -64
  56. package/src/js/tools/supercell.ts +0 -89
  57. package/src/js/tools/surface.ts +0 -213
  58. package/src/py/__init__.py +0 -0
  59. package/src/py/mat3ra/__init__.py +0 -1
  60. package/src/py/mat3ra/made/__init__.py +0 -7
  61. package/src/py/mat3ra/made/basis/__init__.py +0 -255
  62. package/src/py/mat3ra/made/basis/coordinates.py +0 -43
  63. package/src/py/mat3ra/made/cell/__init__.py +0 -55
  64. package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
  65. package/src/py/mat3ra/made/data_helper.py +0 -5
  66. package/src/py/mat3ra/made/lattice.py +0 -195
  67. package/src/py/mat3ra/made/material.py +0 -135
  68. package/src/py/mat3ra/made/metadata.py +0 -45
  69. package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
  70. package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
  71. package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
  72. package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
  73. package/src/py/mat3ra/made/tools/README.md +0 -173
  74. package/src/py/mat3ra/made/tools/__init__.py +0 -0
  75. package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
  76. package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
  77. package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
  78. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
  79. package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
  80. package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
  81. package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
  82. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
  83. package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
  84. package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
  85. package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
  86. package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
  87. package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
  88. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
  89. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
  90. package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
  91. package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
  92. package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
  93. package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
  94. package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
  95. package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
  96. package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
  97. package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
  98. package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
  99. package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
  100. package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
  101. package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
  102. package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
  103. package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
  104. package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
  105. package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
  106. package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
  107. package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
  108. package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
  109. package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
  110. package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
  111. package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
  112. package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
  113. package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
  114. package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
  115. package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
  116. package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
  117. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
  118. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
  119. package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
  120. package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
  121. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
  122. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
  123. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
  124. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
  125. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
  126. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
  127. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
  128. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
  129. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
  130. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
  131. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
  132. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
  133. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
  134. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
  135. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
  136. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
  137. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
  138. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
  139. package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
  140. package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
  141. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
  142. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
  143. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
  144. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
  145. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
  146. package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
  147. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
  148. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
  149. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
  150. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
  151. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
  152. package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
  153. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
  154. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
  155. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
  156. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
  157. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
  158. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
  159. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
  160. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
  161. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
  162. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
  163. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
  164. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
  165. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
  166. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
  167. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
  168. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
  169. package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
  170. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
  171. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
  172. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
  173. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
  174. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
  175. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
  176. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
  177. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
  178. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
  179. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
  180. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
  181. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
  182. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
  183. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
  184. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
  185. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
  186. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
  187. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
  188. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
  189. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
  190. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
  191. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
  192. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
  193. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
  194. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
  195. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
  196. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
  197. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
  198. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
  199. package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
  200. package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
  201. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
  202. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
  203. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
  204. package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
  205. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
  206. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
  207. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
  208. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
  209. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
  210. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
  211. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
  212. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
  213. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
  214. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
  215. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
  216. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
  217. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
  218. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
  219. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
  220. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
  221. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
  222. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
  223. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
  224. package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
  225. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
  226. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
  227. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
  228. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
  229. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
  230. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
  231. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
  232. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
  233. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
  234. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
  235. package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
  236. package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
  237. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
  238. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
  239. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
  240. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
  241. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
  242. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
  243. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
  244. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
  245. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
  246. package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
  247. package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
  248. package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
  249. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
  250. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
  251. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
  252. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
  253. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
  254. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
  255. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
  256. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
  257. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
  258. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
  259. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
  260. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
  261. package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
  262. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
  263. package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
  264. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
  265. package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
  266. package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
  267. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
  268. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
  269. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
  270. package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
  271. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
  272. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
  273. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
  274. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
  275. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
  276. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
  277. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
  278. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
  279. package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
  280. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
  281. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
  282. package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
  283. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
  284. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
  285. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
  286. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
  287. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
  288. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
  289. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
  290. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
  291. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
  292. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
  293. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
  294. package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
  295. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
  296. package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
  297. package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
  298. package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
  299. package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
  300. package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
  301. package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
  302. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
  303. package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
  304. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
  305. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
  306. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
  307. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
  308. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
  309. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
  310. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
  311. package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
  312. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
  313. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
  314. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
  315. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
  316. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
  317. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
  318. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
  319. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
  320. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
  321. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
  322. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
  323. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
  324. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
  325. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
  326. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
  327. package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
  328. package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
  329. package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
  330. package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
  331. package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
  332. package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
  333. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
  334. package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
  335. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
  336. package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
  337. package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
  338. package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
  339. package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
  340. package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
  341. package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
  342. package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
  343. package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
  344. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
  345. package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
  346. package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
  347. package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
  348. package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
  349. package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
  350. package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
  351. package/src/py/mat3ra/made/tools/helpers.py +0 -168
  352. package/src/py/mat3ra/made/tools/modify.py +0 -627
  353. package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
  354. package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
  355. package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
  356. package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
  357. package/src/py/mat3ra/made/tools/optimize.py +0 -55
  358. package/src/py/mat3ra/made/tools/third_party.py +0 -69
  359. package/src/py/mat3ra/made/tools/utils.py +0 -182
  360. package/src/py/mat3ra/made/utils.py +0 -144
  361. package/tests/.gitattributes +0 -1
  362. package/tests/fixtures/AsGe-basis.json +0 -3
  363. package/tests/fixtures/C2H4-translated.json +0 -3
  364. package/tests/fixtures/C2H4.json +0 -3
  365. package/tests/fixtures/FeLiSi-basis.json +0 -3
  366. package/tests/fixtures/FeO.json +0 -3
  367. package/tests/fixtures/Ge2-basis.json +0 -3
  368. package/tests/fixtures/Graphene.json +0 -3
  369. package/tests/fixtures/Graphene.poscar +0 -3
  370. package/tests/fixtures/H2+H-final.json +0 -3
  371. package/tests/fixtures/H2+H-image.json +0 -3
  372. package/tests/fixtures/H2+H-initial.json +0 -3
  373. package/tests/fixtures/H2O.poscar +0 -3
  374. package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
  375. package/tests/fixtures/LiFeSi-basis.json +0 -3
  376. package/tests/fixtures/Na.json +0 -3
  377. package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
  378. package/tests/fixtures/Na4Cl4.json +0 -3
  379. package/tests/fixtures/Na4Cl4.poscar +0 -3
  380. package/tests/fixtures/Ni-hex.json +0 -3
  381. package/tests/fixtures/Ni-hex.poscar +0 -3
  382. package/tests/fixtures/OSi-basis.json +0 -3
  383. package/tests/fixtures/Si-hex.poscar +0 -3
  384. package/tests/fixtures/Si-pwscf.in +0 -3
  385. package/tests/fixtures/Si-slab.json +0 -3
  386. package/tests/fixtures/Si-supercell.json +0 -3
  387. package/tests/fixtures/Si2-basis-repeated.json +0 -3
  388. package/tests/fixtures/Si2-basis.json +0 -3
  389. package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
  390. package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
  391. package/tests/fixtures/atomic-constraints.json +0 -3
  392. package/tests/fixtures/hashes.json +0 -3
  393. package/tests/fixtures/si-slab-100.json +0 -3
  394. package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
  395. package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
  396. package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
  397. package/tests/fixtures/si-standata.json +0 -3
  398. package/tests/js/basis/basis.ts +0 -247
  399. package/tests/js/cell/cell.ts +0 -182
  400. package/tests/js/cell/primitive_cell.ts +0 -21
  401. package/tests/js/constraints/constraints.ts +0 -11
  402. package/tests/js/fixtures.ts +0 -123
  403. package/tests/js/lattice/lattice.ts +0 -43
  404. package/tests/js/lattice/lattice_reciprocal.ts +0 -104
  405. package/tests/js/material/material.ts +0 -161
  406. package/tests/js/parsers/espresso.ts +0 -12
  407. package/tests/js/parsers/native_formats.ts +0 -35
  408. package/tests/js/parsers/poscar.ts +0 -89
  409. package/tests/js/parsers/xyz.ts +0 -33
  410. package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
  411. package/tests/js/register-esse-schemas.cjs +0 -10
  412. package/tests/js/setup.ts +0 -6
  413. package/tests/js/tools/basis.ts +0 -22
  414. package/tests/js/tools/supercell.ts +0 -58
  415. package/tests/js/tools/surface.ts +0 -111
  416. package/tests/py/conftest.py +0 -34
  417. package/tests/py/mat3ra/debug_utils.py +0 -75
  418. package/tests/py/unit/__init__.py +0 -0
  419. package/tests/py/unit/fixtures/__init__.py +0 -0
  420. package/tests/py/unit/fixtures/adatom.py +0 -60
  421. package/tests/py/unit/fixtures/bulk.py +0 -162
  422. package/tests/py/unit/fixtures/cuts.py +0 -118
  423. package/tests/py/unit/fixtures/grain_boundary.py +0 -875
  424. package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
  425. package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
  426. package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
  427. package/tests/py/unit/fixtures/interface/simple.py +0 -84
  428. package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
  429. package/tests/py/unit/fixtures/interface/zsl.py +0 -756
  430. package/tests/py/unit/fixtures/island.py +0 -336
  431. package/tests/py/unit/fixtures/merge.py +0 -147
  432. package/tests/py/unit/fixtures/monolayer.py +0 -46
  433. package/tests/py/unit/fixtures/nanoparticle.py +0 -116
  434. package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
  435. package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
  436. package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
  437. package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
  438. package/tests/py/unit/fixtures/pair_defects.py +0 -41
  439. package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
  440. package/tests/py/unit/fixtures/passivated/slab.py +0 -58
  441. package/tests/py/unit/fixtures/point_defects.py +0 -158
  442. package/tests/py/unit/fixtures/slab.py +0 -606
  443. package/tests/py/unit/fixtures/strain.py +0 -42
  444. package/tests/py/unit/fixtures/supercell.py +0 -64
  445. package/tests/py/unit/fixtures/terrace.py +0 -70
  446. package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
  447. package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
  448. package/tests/py/unit/test_cell.py +0 -104
  449. package/tests/py/unit/test_data_files.py +0 -68
  450. package/tests/py/unit/test_lattice.py +0 -103
  451. package/tests/py/unit/test_lattice_type_extended.py +0 -53
  452. package/tests/py/unit/test_material.py +0 -158
  453. package/tests/py/unit/test_operations.py +0 -126
  454. package/tests/py/unit/test_primitive_cell.py +0 -118
  455. package/tests/py/unit/test_reciprocal_lattice.py +0 -86
  456. package/tests/py/unit/test_reciprocal_paths.py +0 -64
  457. package/tests/py/unit/test_symmetry_points.py +0 -151
  458. package/tests/py/unit/test_tools_analyze.py +0 -219
  459. package/tests/py/unit/test_tools_analyze_basis.py +0 -105
  460. package/tests/py/unit/test_tools_analyze_interface.py +0 -223
  461. package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
  462. package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
  463. package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
  464. package/tests/py/unit/test_tools_analyze_swap.py +0 -80
  465. package/tests/py/unit/test_tools_build.py +0 -158
  466. package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
  467. package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
  468. package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
  469. package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
  470. package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
  471. package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
  472. package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
  473. package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
  474. package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
  475. package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
  476. package/tests/py/unit/test_tools_build_interface.py +0 -292
  477. package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
  478. package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
  479. package/tests/py/unit/test_tools_build_metadata.py +0 -79
  480. package/tests/py/unit/test_tools_build_monolayer.py +0 -33
  481. package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
  482. package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
  483. package/tests/py/unit/test_tools_build_passivation.py +0 -85
  484. package/tests/py/unit/test_tools_build_perturbation.py +0 -103
  485. package/tests/py/unit/test_tools_build_slab.py +0 -382
  486. package/tests/py/unit/test_tools_build_strain.py +0 -36
  487. package/tests/py/unit/test_tools_build_supercell.py +0 -47
  488. package/tests/py/unit/test_tools_calculate.py +0 -67
  489. package/tests/py/unit/test_tools_convert.py +0 -174
  490. package/tests/py/unit/test_tools_modify.py +0 -248
  491. package/tests/py/unit/utils.py +0 -142
  492. package/tsconfig-transpile.json +0 -3
  493. package/tsconfig.json +0 -3
@@ -1,66 +0,0 @@
1
- import { Vector3DSchema } from "@mat3ra/esse/dist/js/types";
2
-
3
- export type UnitCellProps = [
4
- number,
5
- number,
6
- number,
7
- number,
8
- number,
9
- number,
10
- number,
11
- number,
12
- number,
13
- string,
14
- ];
15
-
16
- // TODO: refactor and remove the need for UnitCell
17
- export class UnitCell {
18
- ax: number;
19
-
20
- ay: number;
21
-
22
- az: number;
23
-
24
- bx: number;
25
-
26
- by: number;
27
-
28
- bz: number;
29
-
30
- cx: number;
31
-
32
- cy: number;
33
-
34
- cz: number;
35
-
36
- units: string;
37
-
38
- constructor([ax, ay, az, bx, by, bz, cx, cy, cz, units]: UnitCellProps) {
39
- this.ax = ax;
40
- this.ay = ay;
41
- this.az = az;
42
- this.bx = bx;
43
- this.by = by;
44
- this.bz = bz;
45
- this.cx = cx;
46
- this.cy = cy;
47
- this.cz = cz;
48
- this.units = units;
49
- }
50
-
51
- vectorA(): Vector3DSchema {
52
- return [this.ax, this.ay, this.az];
53
- }
54
-
55
- vectorB(): Vector3DSchema {
56
- return [this.bx, this.by, this.bz];
57
- }
58
-
59
- vectorC(): Vector3DSchema {
60
- return [this.cx, this.cy, this.cz];
61
- }
62
-
63
- axes(): [Vector3DSchema, Vector3DSchema, Vector3DSchema] {
64
- return [this.vectorA(), this.vectorB(), this.vectorC()];
65
- }
66
- }
package/src/js/made.ts DELETED
@@ -1,62 +0,0 @@
1
- import { Basis } from "./basis/basis";
2
- import { Cell } from "./cell/cell";
3
- import { ATOMIC_COORD_UNITS, coefficients, tolerance, units } from "./constants";
4
- import { AtomicConstraints } from "./constraints/constraints";
5
- import {
6
- defaultNonPeriodicMinimumLatticeSize,
7
- diatomicLatticePaddingFactor,
8
- Lattice,
9
- molecularLatticePaddingFactor,
10
- } from "./lattice/lattice";
11
- import { DEFAULT_LATTICE_UNITS, LATTICE_TYPE_CONFIGS } from "./lattice/lattice_types";
12
- import { ReciprocalLattice } from "./lattice/reciprocal/lattice_reciprocal";
13
- import { UnitCell } from "./lattice/unit_cell";
14
- import Material, { defaultMaterialConfig } from "./Material";
15
- import parsers from "./parsers/parsers";
16
- import tools from "./tools/index";
17
-
18
- export const Made = {
19
- coefficients,
20
- tolerance,
21
- units,
22
- ATOMIC_COORD_UNITS,
23
-
24
- Material,
25
- defaultMaterialConfig,
26
- Lattice,
27
- Cell,
28
- UnitCell,
29
- defaultNonPeriodicMinimumLatticeSize,
30
- diatomicLatticePaddingFactor,
31
- molecularLatticePaddingFactor,
32
- ReciprocalLattice,
33
- Basis,
34
- AtomicConstraints,
35
-
36
- parsers,
37
- tools,
38
- LATTICE_TYPE_CONFIGS,
39
- DEFAULT_LATTICE_UNITS,
40
- };
41
-
42
- export {
43
- coefficients,
44
- tolerance,
45
- units,
46
- ATOMIC_COORD_UNITS,
47
- Material,
48
- defaultMaterialConfig,
49
- Lattice,
50
- Cell,
51
- UnitCell,
52
- defaultNonPeriodicMinimumLatticeSize,
53
- diatomicLatticePaddingFactor,
54
- molecularLatticePaddingFactor,
55
- ReciprocalLattice,
56
- Basis,
57
- AtomicConstraints,
58
- parsers,
59
- tools,
60
- LATTICE_TYPE_CONFIGS,
61
- DEFAULT_LATTICE_UNITS,
62
- };
@@ -1,25 +0,0 @@
1
- export interface Meta {
2
- icsdId?: number;
3
- }
4
-
5
- /**
6
- * Extracts meta information from a CIF file
7
- * @param txt - CIF file text.
8
- */
9
- function parseMeta(txt: string): Meta {
10
- const REGEX = {
11
- ICSD_ID: /_database_code_ICSD\s+(\d+)/,
12
- };
13
- const meta: Meta = {};
14
- const groups = txt.match(REGEX.ICSD_ID);
15
-
16
- if (groups) {
17
- meta.icsdId = Number(groups[1]);
18
- }
19
-
20
- return meta;
21
- }
22
-
23
- export default {
24
- parseMeta,
25
- };
@@ -1,6 +0,0 @@
1
- export class InvalidLineError extends Error {
2
- constructor(num: number, content: string) {
3
- super(`Invalid line: ${num}`);
4
- console.log(`Invalid line: ${num}, content: ${content}`);
5
- }
6
- }
@@ -1,29 +0,0 @@
1
- import { MaterialEnhancedSchema, MaterialSchema } from "@mat3ra/esse/dist/js/types";
2
- import { map } from "lodash";
3
- import s from "underscore.string";
4
-
5
- import { Lattice } from "../lattice/lattice";
6
- import xyz from "./xyz";
7
-
8
- /**
9
- * Construct textual representation of a materialOrConfig according to Quantum ESPRESSO pw.x input format.
10
- */
11
- function toEspressoFormat(materialOrConfig: MaterialSchema | MaterialEnhancedSchema): string {
12
- const l = new Lattice(materialOrConfig.lattice);
13
- const vectors = l.vectorArrays;
14
- const vectorsAsString = map(vectors, (v) => {
15
- return `${s.sprintf("%14.9f", v[0])}\t${s.sprintf("%14.9f", v[1])}\t${s.sprintf(
16
- "%14.9f",
17
- v[2],
18
- )}`;
19
- }).join("\n");
20
- return s.sprintf(
21
- "CELL_PARAMETERS (angstroms)\n%s\n\nATOMIC_POSITIONS (crystal)\n%s",
22
- vectorsAsString,
23
- xyz.fromMaterial(materialOrConfig),
24
- );
25
- }
26
-
27
- export default {
28
- toEspressoFormat,
29
- };
@@ -1,52 +0,0 @@
1
- import type { MaterialConfig } from "../Material";
2
- import Poscar from "./poscar";
3
-
4
- const NATIVE_FORMAT = {
5
- JSON: "json",
6
- POSCAR: "poscar",
7
- CIF: "cif",
8
- PWX: "pwx",
9
- XYZ: "xyz",
10
- UNKNOWN: "unknown",
11
- } as const;
12
-
13
- /**
14
- * @summary Detects the format of the input string
15
- * @throws If the input string is unknown format
16
- * @param text input string to detect format
17
- * @returns Format of the input string
18
- */
19
- function detectFormat(text: string) {
20
- const jsonRegex = /^\s*\{/;
21
- if (jsonRegex.test(text)) return NATIVE_FORMAT.JSON;
22
- if (Poscar.isPoscar(text)) return NATIVE_FORMAT.POSCAR;
23
-
24
- return NATIVE_FORMAT.UNKNOWN;
25
- }
26
-
27
- /**
28
- * @summary Function to handle conversion from native formats
29
- * @param text - input string to detect format and convert
30
- * @throws If the input string is of unknown format
31
- * @return Material config
32
- */
33
- function convertFromNativeFormat(text: string): MaterialConfig {
34
- const format = detectFormat(text);
35
-
36
- switch (format) {
37
- case NATIVE_FORMAT.JSON:
38
- return JSON.parse(text);
39
- case NATIVE_FORMAT.POSCAR:
40
- return Poscar.fromPoscar(text);
41
- case NATIVE_FORMAT.UNKNOWN:
42
- throw new Error(`Unknown format`);
43
- // TODO: add more formats
44
- default:
45
- throw new Error(`Unsupported format: ${format}`);
46
- }
47
- }
48
-
49
- export default {
50
- detectFormat,
51
- convertFromNativeFormat,
52
- };
@@ -1,13 +0,0 @@
1
- import cif from "./cif";
2
- import espresso from "./espresso";
3
- import nativeFormatParsers from "./native_format_parsers";
4
- import poscar from "./poscar";
5
- import xyz from "./xyz";
6
-
7
- export default {
8
- xyz,
9
- poscar,
10
- cif,
11
- espresso,
12
- nativeFormatParsers,
13
- };
@@ -1,218 +0,0 @@
1
- import {
2
- BasisSchema,
3
- Coordinate3DSchema,
4
- MaterialEnhancedSchema,
5
- MaterialSchema,
6
- Vector3DSchema,
7
- } from "@mat3ra/esse/dist/js/types";
8
- import { Utils } from "@mat3ra/utils";
9
- import s from "underscore.string";
10
-
11
- import { ConstrainedBasis } from "../basis/constrained_basis";
12
- import { AtomicCoordinateValue } from "../basis/coordinates";
13
- import { AtomicElementValue } from "../basis/elements";
14
- import { Cell } from "../cell/cell";
15
- import { ATOMIC_COORD_UNITS } from "../constants";
16
- import { AtomicConstraintValue } from "../constraints/constraints";
17
- import { Lattice } from "../lattice/lattice";
18
- import type { MaterialConfig } from "../Material";
19
-
20
- const _print = (x: number, printFormat = "%14.9f") => s.sprintf(printFormat, Utils.math.precise(x));
21
- const _latticeVectorsToString = (vectors: Vector3DSchema[]) =>
22
- vectors.map((v) => v.map((c) => _print(c)).join("\t")).join("\n");
23
- const atomicConstraintsCharFromBool = (bool: boolean): string => (bool ? "T" : "F");
24
-
25
- /**
26
- * Obtain a textual representation of a material in POSCAR format.
27
- * @param materialOrConfig - material class instance or config object.
28
- * @param omitConstraints - whether to discard constraints when serializing.
29
- */
30
- function toPoscar(
31
- materialOrConfig: MaterialSchema | MaterialEnhancedSchema,
32
- omitConstraints = false,
33
- ): string {
34
- const lattice = new Lattice(materialOrConfig.lattice);
35
- const vectorsAsString = _latticeVectorsToString(lattice.vectorArrays);
36
- const constraints =
37
- "constraints" in materialOrConfig.basis ? materialOrConfig.basis.constraints : [];
38
- const basis = new ConstrainedBasis({
39
- ...materialOrConfig.basis,
40
- cell: Cell.fromVectorsArray(lattice.vectorArrays),
41
- constraints: omitConstraints ? [] : constraints,
42
- });
43
- const BasisLines: string[] = [];
44
- let addSelectiveDynamics = false;
45
- basis._elements.values.forEach((item, idx) => {
46
- const coord = basis.getCoordinateValueByIndex(idx).map((x) => _print(x));
47
- const constraintsAsString = omitConstraints
48
- ? ""
49
- : basis.AtomicConstraints.getAsStringByIndex(idx, atomicConstraintsCharFromBool);
50
- if (constraintsAsString && !omitConstraints) addSelectiveDynamics = true;
51
- BasisLines.push([coord.join(" "), constraintsAsString, item].join(" "));
52
- });
53
- const basisContent = BasisLines.join("\n");
54
- const elementsLine = basis.elementCounts.map((e) => e.value).join(" ");
55
- const countsLine = basis.elementCounts.map((e) => parseInt(`${e.count}`, 10)).join(" ");
56
- const coordsType =
57
- materialOrConfig.basis.units === ATOMIC_COORD_UNITS.cartesian ? "cartesian" : "direct";
58
-
59
- return [
60
- materialOrConfig.name,
61
- "1.0",
62
- vectorsAsString,
63
- elementsLine,
64
- countsLine,
65
- // add selective dynamics only if there are some constraints!
66
- ...(addSelectiveDynamics ? ["Selective dynamics"] : []),
67
- coordsType,
68
- basisContent,
69
- ].join("\n");
70
- }
71
-
72
- /**
73
- * @summary calculates the number of atoms in a poscar file based on the summation of the numbers in line 7 of the file.
74
- * Poscar file formatting: https://www.vasp.at/wiki/index.php/POSCAR
75
- */
76
- export function atomsCount(poscarFileContent: string): number {
77
- const lines = Utils.str.removeCommentsFromSourceCode(poscarFileContent).split("\n");
78
- const atomsLine = lines[6].split(/\s+/);
79
- return atomsLine.map((x) => parseInt(x, 10)).reduce((a, b) => a + b);
80
- }
81
-
82
- /**
83
- * Parses POSCAR file into a Material config object.
84
- * @param fileContent - POSCAR file content.
85
- * @return Material config.
86
- */
87
- function fromPoscar(fileContent: string): MaterialConfig {
88
- const cleanContent = Utils.str.removeCommentsFromSourceCode(fileContent, "fortran");
89
- const lines = cleanContent.split("\n");
90
-
91
- const comment = lines[0];
92
- // TODO: alat should be handled!!!!
93
- // const latticeConstant = parseFloat(lines[1].trim());
94
-
95
- // Atom symbols and counts
96
- const atomSymbols = lines[5].trim().split(/\s+/);
97
- const atomCounts = lines[6].trim().split(/\s+/).map(Number);
98
-
99
- // Check if selective dynamics and coordinates type is used
100
- let selectiveDynamics = false;
101
- let coordinateType = "";
102
- let startLine = 7;
103
- if (lines[startLine].trim()[0].toLowerCase() === "s") {
104
- selectiveDynamics = true;
105
- coordinateType = lines[8].trim()[0].toLowerCase();
106
- startLine = 9;
107
- } else {
108
- coordinateType = lines[7].trim()[0].toLowerCase();
109
- startLine = 8;
110
- }
111
-
112
- const elements = atomSymbols
113
- .map((symbol: string, i: number): string[] => Array(atomCounts[i]).fill(symbol))
114
- .reduce((a, b) => a.concat(b), []) as AtomicElementValue[];
115
-
116
- // Atom coordinates and constraints
117
- const coordinates: AtomicCoordinateValue[] = [];
118
- const constraints: AtomicConstraintValue[] = [];
119
- let atomIndex = 0;
120
- for (let i = 0; i < atomSymbols.length; i++) {
121
- for (let j = 0; j < atomCounts[i]; j++) {
122
- const lineComponents = lines[startLine + atomIndex].trim().split(/\s+/);
123
- const coordinate: AtomicCoordinateValue = [
124
- parseFloat(lineComponents[0]),
125
- parseFloat(lineComponents[1]),
126
- parseFloat(lineComponents[2]),
127
- ];
128
- coordinates.push(coordinate as Coordinate3DSchema);
129
-
130
- // Add constraints if selective dynamics is used
131
- if (selectiveDynamics) {
132
- const constraint: AtomicConstraintValue = [
133
- lineComponents[3] === "T",
134
- lineComponents[4] === "T",
135
- lineComponents[5] === "T",
136
- ];
137
- constraints.push(constraint);
138
- }
139
- atomIndex += 1;
140
- }
141
- }
142
-
143
- const lattice = Lattice.fromVectorsArray([
144
- lines[2].trim().split(/\s+/).map(Number) as Vector3DSchema,
145
- lines[3].trim().split(/\s+/).map(Number) as Vector3DSchema,
146
- lines[4].trim().split(/\s+/).map(Number) as Vector3DSchema,
147
- ]);
148
-
149
- const basis = ConstrainedBasis.fromElementsCoordinatesAndConstraints({
150
- elements,
151
- coordinates,
152
- units:
153
- coordinateType === "c"
154
- ? (ATOMIC_COORD_UNITS.cartesian as BasisSchema["units"])
155
- : (ATOMIC_COORD_UNITS.crystal as BasisSchema["units"]),
156
- cell: Cell.fromVectorsArray(lattice.vectorArrays),
157
- constraints,
158
- });
159
-
160
- const materialConfig: MaterialConfig = {
161
- lattice: lattice.toJSON(),
162
- basis: basis.toJSON(),
163
- name: comment,
164
- isNonPeriodic: false,
165
- };
166
-
167
- return materialConfig;
168
- }
169
-
170
- /**
171
- * @summary Checks if a string has a POSCAR format (first 8 lines are read)
172
- * @param text - string to check
173
- */
174
- function isPoscar(text: string): boolean {
175
- const lines = Utils.str.removeCommentsFromSourceCode(text, "fortran").split("\n");
176
-
177
- // Checking number of lines, minimum requirement for POSCAR
178
- if (lines.length < 7) {
179
- return false;
180
- }
181
-
182
- // Check the lattice constant (a single floating point number)
183
- if (!/^[+-]?[\d.]+$/.test(lines[1].trim())) {
184
- return false;
185
- }
186
-
187
- // Check the lattice vectors (three lines, each with three floating point numbers)
188
- for (let i = 2; i <= 4; i++) {
189
- if (!/^[-+]?\d*\.\d+\s+[-+]?\d*\.\d+\s+[-+]?\d*\.\d+$/.test(lines[i].trim())) {
190
- return false;
191
- }
192
- }
193
-
194
- // Check the atomic species line (alphabetic characters, space-separated)
195
- if (!/^[a-zA-Z\s]+$/.test(lines[5].trim())) {
196
- return false;
197
- }
198
-
199
- // Check the number of atoms per species line (digits, space-separated)
200
- if (!/^[\d\s]+$/.test(lines[6].trim())) {
201
- return false;
202
- }
203
-
204
- // Check the coordinate type line (only first character is neccessary, "s" or "S" for "Selective dynamics",
205
- // "d" or "D" for "Direct", or "c" or "C" for "Cartesian")
206
- if (!/^[sdc]/.test(lines[7].trim().toLowerCase())) {
207
- return false;
208
- }
209
- return true;
210
- }
211
-
212
- export default {
213
- isPoscar,
214
- toPoscar,
215
- fromPoscar,
216
- atomicConstraintsCharFromBool,
217
- atomsCount,
218
- };
@@ -1,190 +0,0 @@
1
- import { MaterialEnhancedSchema, MaterialSchema } from "@mat3ra/esse/dist/js/types";
2
- import { isEmpty, isNaN, map } from "lodash";
3
- import s from "underscore.string";
4
-
5
- import { ConstrainedBasis, ConstrainedBasisConfig } from "../basis/constrained_basis";
6
- import { AtomicCoordinateValue } from "../basis/coordinates";
7
- import { AtomicElementValue } from "../basis/elements";
8
- import { Cell } from "../cell/cell";
9
- import { AtomicConstraintValue } from "../constraints/constraints";
10
- import { Lattice } from "../lattice/lattice";
11
- import { InvalidLineError } from "./errors";
12
- import { CombinatorialBasis } from "./xyz_combinatorial_basis";
13
-
14
- // Regular expression for an XYZ line with atomic constraints, eg. Si 0.000000 0.500000 0.446678 1 1 1`
15
- // eslint-disable-next-line max-len
16
- const XYZ_LINE_REGEX =
17
- /[A-Z][a-z]?(\d)?\s+((-?\d+\.?\d*|\.\d+)\s+(-?\d+\.?\d*|\.\d+)\s+(-?\d+\.?\d*|\.\d+)(\s+)?(\s+[0-1]\s+[0-1]\s+[0-1](\s+)?)?)$/;
18
-
19
- export const XYZ_COORDINATE_PRECISION = 4;
20
- /**
21
- * Validates XYZ file's line. Line should be in following format "Si 0.5 0.5 0.5".
22
- * Raises an error if line is in wrong format.
23
- */
24
- function validateLine(xyzLine: string, index: number) {
25
- const words = xyzLine.split(" ").filter((x) => x.trim() !== "");
26
-
27
- if (!xyzLine.match(XYZ_LINE_REGEX)) {
28
- throw new InvalidLineError(index, xyzLine);
29
- }
30
-
31
- const coordinates = [parseFloat(words[1]), parseFloat(words[2]), parseFloat(words[3])];
32
- coordinates.forEach((num, i) => {
33
- if (isNaN(num)) {
34
- throw new Error(`Coordinates should be a number. Possible error in ${i} coordinate`);
35
- }
36
- });
37
- }
38
-
39
- /**
40
- * Validates that passed string is well-formed XYZ file.
41
- */
42
- export function validate(xyzTxt: string) {
43
- // The @types/underscore.string package does not provide interfaces for function chaining at the moment. Disable TS here
44
- // @ts-ignore
45
- s(xyzTxt)
46
- .trim()
47
- .lines()
48
- .filter((x: string) => x.trim() !== "")
49
- .forEach(validateLine);
50
- }
51
-
52
- export interface ParsedObject {
53
- element: AtomicElementValue;
54
- coordinate: AtomicCoordinateValue;
55
- constraints: AtomicConstraintValue;
56
- label?: number;
57
- }
58
-
59
- /**
60
- * Parses XYZ line and returns an object.
61
- * @param line - line of text
62
- */
63
- function _parseXYZLineAsWords(line: string): ParsedObject {
64
- const words = s.words(line);
65
- const elementWithOptionalLabel = words[0];
66
- const element = elementWithOptionalLabel.replace(/\d$/, "") as AtomicElementValue; // Fe1 => Fe
67
- const generateConstraintValue = (n: number) => parseInt(`${n}`, 10) !== 0;
68
-
69
- const basisLineConfig: ParsedObject = {
70
- element,
71
- coordinate: [+words[1], +words[2], +words[3]],
72
- // Below maps zero values to false (atom is fixed) and non-zero values to true (atom is moving)
73
- constraints: [
74
- generateConstraintValue(+words[4]),
75
- generateConstraintValue(+words[5]),
76
- generateConstraintValue(+words[6]),
77
- ],
78
- };
79
-
80
- if (elementWithOptionalLabel !== element) {
81
- return {
82
- ...basisLineConfig,
83
- label: parseInt(elementWithOptionalLabel[elementWithOptionalLabel.length - 1], 10),
84
- };
85
- }
86
-
87
- return basisLineConfig;
88
- }
89
-
90
- /**
91
- * Parse XYZ text for basis.
92
- * @param txt Text
93
- * @param units Coordinate units
94
- * @param cell Basis Cell
95
- */
96
- function toBasisConfig(txt: string, units = "angstrom", cell = new Cell()): ConstrainedBasisConfig {
97
- // @ts-ignore
98
- const lines: string[] = s(txt).trim().lines();
99
- const listOfObjects = map(lines, _parseXYZLineAsWords);
100
-
101
- const basisConfig = {
102
- elements: listOfObjects.map((elm, idx) => {
103
- return {
104
- id: idx,
105
- value: elm.element,
106
- };
107
- }),
108
- coordinates: listOfObjects.map((elm, idx) => {
109
- return {
110
- id: idx,
111
- value: elm.coordinate,
112
- };
113
- }),
114
- units,
115
- cell,
116
- constraints: listOfObjects.map((elm, idx) => {
117
- return {
118
- id: idx,
119
- value: elm.constraints,
120
- };
121
- }),
122
- };
123
-
124
- const labels: {
125
- id: number;
126
- value: number;
127
- }[] = [];
128
-
129
- listOfObjects.forEach((elm, idx) => {
130
- if (elm.label) {
131
- labels.push({
132
- id: idx,
133
- value: elm.label,
134
- });
135
- }
136
- });
137
-
138
- if (!isEmpty(labels)) {
139
- return {
140
- ...basisConfig,
141
- labels,
142
- } as ConstrainedBasisConfig;
143
- }
144
-
145
- return basisConfig as ConstrainedBasisConfig;
146
- }
147
-
148
- /**
149
- * Create XYZ from Basis class instance.
150
- * @param basisClsInstance Basis class instance.
151
- * @param coordinatePrintFormat Output format for coordinates.
152
- * @return Basis string in XYZ format
153
- */
154
- function fromBasis(basisClsInstance: ConstrainedBasis, coordinatePrintFormat: string): string {
155
- const XYZArray = basisClsInstance.getAtomicPositionsWithConstraintsAsStrings(
156
- coordinatePrintFormat,
157
- XYZ_COORDINATE_PRECISION,
158
- );
159
- return `${XYZArray.join("\n")}\n`;
160
- }
161
-
162
- /**
163
- * Create XYZ from Material class instance (or its JSON config).
164
- * Prefer fromBasis when you already have a ConstrainedBasis instance.
165
- */
166
- function fromMaterial(
167
- materialOrConfig: MaterialSchema | MaterialEnhancedSchema,
168
- fractional = false,
169
- ): string {
170
- const lattice = new Lattice(materialOrConfig.lattice);
171
- const constraints =
172
- "constraints" in materialOrConfig.basis ? materialOrConfig.basis.constraints : [];
173
- const basis = new ConstrainedBasis({
174
- ...materialOrConfig.basis,
175
- cell: Cell.fromVectorsArray(lattice.vectorArrays),
176
- constraints,
177
- });
178
- if (fractional) {
179
- basis.toCrystal();
180
- }
181
- return fromBasis(basis, "%11.6f");
182
- }
183
-
184
- export default {
185
- validate,
186
- fromMaterial,
187
- toBasisConfig,
188
- fromBasis,
189
- CombinatorialBasis,
190
- };