@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.
- package/dist/js/Material.d.ts +219 -0
- package/dist/js/Material.js +457 -0
- package/dist/js/basis/basis.d.ts +14 -9
- package/dist/js/basis/basis.js +15 -13
- package/dist/js/basis/constrained_basis.d.ts +9 -7
- package/dist/js/basis/constrained_basis.js +4 -4
- package/dist/js/generated/MaterialSchemaMixin.d.ts +5 -0
- package/dist/js/generated/MaterialSchemaMixin.js +69 -0
- package/dist/js/lattice/lattice.d.ts +4 -3
- package/dist/js/lattice/lattice.js +1 -2
- package/dist/js/made.d.ts +12 -12
- package/dist/js/made.js +38 -5
- package/dist/js/parsers/espresso.d.ts +2 -3
- package/dist/js/parsers/espresso.js +0 -1
- package/dist/js/parsers/native_format_parsers.d.ts +9 -8
- package/dist/js/parsers/native_format_parsers.js +6 -6
- package/dist/js/parsers/parsers.d.ts +6 -6
- package/dist/js/parsers/poscar.d.ts +5 -4
- package/dist/js/parsers/poscar.js +3 -2
- package/dist/js/parsers/xyz.d.ts +3 -5
- package/dist/js/parsers/xyz.js +3 -4
- package/dist/js/parsers/xyz_combinatorial_basis.js +3 -1
- package/dist/js/tools/basis.d.ts +1 -1
- package/dist/js/tools/index.d.ts +7 -7
- package/dist/js/tools/material.d.ts +1 -1
- package/dist/js/tools/material.js +8 -7
- package/dist/js/tools/supercell.d.ts +4 -5
- package/dist/js/tools/supercell.js +2 -4
- package/dist/js/tools/surface.d.ts +4 -4
- package/dist/js/tools/surface.js +2 -7
- package/package.json +12 -8
- package/.babelrc +0 -10
- package/.eslintrc.json +0 -11
- package/.gitattributes +0 -1
- package/.husky/post-checkout +0 -3
- package/.husky/post-commit +0 -3
- package/.husky/post-merge +0 -3
- package/.husky/pre-commit +0 -6
- package/.husky/pre-push +0 -3
- package/.mocharc.json +0 -5
- package/.pre-commit-config.yaml +0 -26
- package/.prettierignore +0 -2
- package/.prettierrc +0 -6
- package/AGENTS.md +0 -133
- package/MANIFEST.in +0 -1
- package/data/constants.json +0 -13
- package/data/reciprocal_paths.json +0 -111
- package/dist/js/material.d.ts +0 -169
- package/dist/js/material.js +0 -362
- package/images/made/tools/tools_diagram_general.png +0 -3
- package/images/made/tools/tools_diagram_interface.png +0 -3
- package/pyproject.toml +0 -123
- package/src/__init__.py +0 -0
- package/src/js/basis/basis.ts +0 -621
- package/src/js/basis/constrained_basis.ts +0 -114
- package/src/js/basis/coordinates.ts +0 -93
- package/src/js/basis/elements.ts +0 -24
- package/src/js/basis/helpers.ts +0 -20
- package/src/js/basis/labels.ts +0 -6
- package/src/js/cell/cell.ts +0 -150
- package/src/js/cell/conventional_cell.ts +0 -86
- package/src/js/cell/primitive_cell.ts +0 -166
- package/src/js/constants/molecule.ts +0 -18
- package/src/js/constants.ts +0 -4
- package/src/js/constraints/constraints.ts +0 -45
- package/src/js/lattice/lattice.ts +0 -306
- package/src/js/lattice/lattice_types.ts +0 -134
- package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -193
- package/src/js/lattice/reciprocal/paths.ts +0 -39
- package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
- package/src/js/lattice/unit_cell.ts +0 -66
- package/src/js/made.ts +0 -62
- package/src/js/material.ts +0 -458
- package/src/js/parsers/cif.ts +0 -25
- package/src/js/parsers/errors.ts +0 -6
- package/src/js/parsers/espresso.ts +0 -30
- package/src/js/parsers/native_format_parsers.ts +0 -51
- package/src/js/parsers/parsers.ts +0 -13
- package/src/js/parsers/poscar.ts +0 -212
- package/src/js/parsers/xyz.ts +0 -187
- package/src/js/parsers/xyz_combinatorial_basis.ts +0 -265
- package/src/js/tools/basis.ts +0 -132
- package/src/js/tools/cell.ts +0 -41
- package/src/js/tools/index.ts +0 -11
- package/src/js/tools/material.ts +0 -62
- package/src/js/tools/supercell.ts +0 -88
- package/src/js/tools/surface.ts +0 -223
- package/src/py/__init__.py +0 -0
- package/src/py/mat3ra/__init__.py +0 -1
- package/src/py/mat3ra/made/__init__.py +0 -7
- package/src/py/mat3ra/made/basis/__init__.py +0 -255
- package/src/py/mat3ra/made/basis/coordinates.py +0 -43
- package/src/py/mat3ra/made/cell/__init__.py +0 -55
- package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
- package/src/py/mat3ra/made/data_helper.py +0 -5
- package/src/py/mat3ra/made/lattice.py +0 -195
- package/src/py/mat3ra/made/material.py +0 -134
- package/src/py/mat3ra/made/metadata.py +0 -45
- package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
- package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
- package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
- package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
- package/src/py/mat3ra/made/tools/README.md +0 -173
- package/src/py/mat3ra/made/tools/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
- package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
- package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
- package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
- package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
- package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
- package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
- package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
- package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
- package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
- package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
- package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
- package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
- package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
- package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
- package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
- package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
- package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
- package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
- package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
- package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
- package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
- package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
- package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
- package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
- package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
- package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
- package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
- package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
- package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
- package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
- package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
- package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
- package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
- package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
- package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
- package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
- package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
- package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
- package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
- package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
- package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
- package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
- package/src/py/mat3ra/made/tools/helpers.py +0 -168
- package/src/py/mat3ra/made/tools/modify.py +0 -627
- package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
- package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
- package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
- package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
- package/src/py/mat3ra/made/tools/optimize.py +0 -55
- package/src/py/mat3ra/made/tools/third_party.py +0 -69
- package/src/py/mat3ra/made/tools/utils.py +0 -182
- package/src/py/mat3ra/made/utils.py +0 -144
- package/tests/.gitattributes +0 -1
- package/tests/fixtures/AsGe-basis.json +0 -3
- package/tests/fixtures/C2H4-translated.json +0 -3
- package/tests/fixtures/C2H4.json +0 -3
- package/tests/fixtures/FeLiSi-basis.json +0 -3
- package/tests/fixtures/FeO.json +0 -3
- package/tests/fixtures/Ge2-basis.json +0 -3
- package/tests/fixtures/Graphene.json +0 -3
- package/tests/fixtures/Graphene.poscar +0 -3
- package/tests/fixtures/H2+H-final.json +0 -3
- package/tests/fixtures/H2+H-image.json +0 -3
- package/tests/fixtures/H2+H-initial.json +0 -3
- package/tests/fixtures/H2O.poscar +0 -3
- package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
- package/tests/fixtures/LiFeSi-basis.json +0 -3
- package/tests/fixtures/Na.json +0 -3
- package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
- package/tests/fixtures/Na4Cl4.json +0 -3
- package/tests/fixtures/Na4Cl4.poscar +0 -3
- package/tests/fixtures/Ni-hex.json +0 -3
- package/tests/fixtures/Ni-hex.poscar +0 -3
- package/tests/fixtures/OSi-basis.json +0 -3
- package/tests/fixtures/Si-hex.poscar +0 -3
- package/tests/fixtures/Si-pwscf.in +0 -3
- package/tests/fixtures/Si-slab.json +0 -3
- package/tests/fixtures/Si-supercell.json +0 -3
- package/tests/fixtures/Si2-basis-repeated.json +0 -3
- package/tests/fixtures/Si2-basis.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
- package/tests/fixtures/atomic-constraints.json +0 -3
- package/tests/fixtures/hashes.json +0 -3
- package/tests/fixtures/si-slab-100.json +0 -3
- package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
- package/tests/fixtures/si-standata.json +0 -3
- package/tests/js/basis/basis.ts +0 -247
- package/tests/js/cell/cell.ts +0 -182
- package/tests/js/cell/primitive_cell.ts +0 -21
- package/tests/js/constraints/constraints.ts +0 -11
- package/tests/js/fixtures.ts +0 -120
- package/tests/js/lattice/lattice.ts +0 -43
- package/tests/js/lattice/lattice_reciprocal.ts +0 -104
- package/tests/js/material.test.ts +0 -42
- package/tests/js/parsers/espresso.ts +0 -15
- package/tests/js/parsers/native_formats.ts +0 -35
- package/tests/js/parsers/poscar.ts +0 -89
- package/tests/js/parsers/xyz.ts +0 -33
- package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
- package/tests/js/setup.ts +0 -6
- package/tests/js/tools/basis.ts +0 -22
- package/tests/js/tools/supercell.ts +0 -58
- package/tests/js/tools/surface.ts +0 -115
- package/tests/py/conftest.py +0 -34
- package/tests/py/mat3ra/debug_utils.py +0 -75
- package/tests/py/unit/__init__.py +0 -0
- package/tests/py/unit/fixtures/__init__.py +0 -0
- package/tests/py/unit/fixtures/adatom.py +0 -60
- package/tests/py/unit/fixtures/bulk.py +0 -162
- package/tests/py/unit/fixtures/cuts.py +0 -118
- package/tests/py/unit/fixtures/grain_boundary.py +0 -875
- package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
- package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
- package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
- package/tests/py/unit/fixtures/interface/simple.py +0 -84
- package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
- package/tests/py/unit/fixtures/interface/zsl.py +0 -756
- package/tests/py/unit/fixtures/island.py +0 -336
- package/tests/py/unit/fixtures/merge.py +0 -147
- package/tests/py/unit/fixtures/monolayer.py +0 -46
- package/tests/py/unit/fixtures/nanoparticle.py +0 -116
- package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
- package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
- package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
- package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
- package/tests/py/unit/fixtures/pair_defects.py +0 -41
- package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
- package/tests/py/unit/fixtures/passivated/slab.py +0 -58
- package/tests/py/unit/fixtures/point_defects.py +0 -158
- package/tests/py/unit/fixtures/slab.py +0 -606
- package/tests/py/unit/fixtures/strain.py +0 -42
- package/tests/py/unit/fixtures/supercell.py +0 -64
- package/tests/py/unit/fixtures/terrace.py +0 -70
- package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
- package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
- package/tests/py/unit/test_cell.py +0 -104
- package/tests/py/unit/test_data_files.py +0 -68
- package/tests/py/unit/test_lattice.py +0 -103
- package/tests/py/unit/test_lattice_type_extended.py +0 -53
- package/tests/py/unit/test_material.py +0 -158
- package/tests/py/unit/test_operations.py +0 -126
- package/tests/py/unit/test_primitive_cell.py +0 -118
- package/tests/py/unit/test_reciprocal_lattice.py +0 -86
- package/tests/py/unit/test_reciprocal_paths.py +0 -64
- package/tests/py/unit/test_symmetry_points.py +0 -151
- package/tests/py/unit/test_tools_analyze.py +0 -219
- package/tests/py/unit/test_tools_analyze_basis.py +0 -105
- package/tests/py/unit/test_tools_analyze_interface.py +0 -223
- package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
- package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
- package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
- package/tests/py/unit/test_tools_analyze_swap.py +0 -80
- package/tests/py/unit/test_tools_build.py +0 -158
- package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
- package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
- package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
- package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
- package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
- package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
- package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
- package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
- package/tests/py/unit/test_tools_build_interface.py +0 -292
- package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
- package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
- package/tests/py/unit/test_tools_build_metadata.py +0 -79
- package/tests/py/unit/test_tools_build_monolayer.py +0 -33
- package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
- package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
- package/tests/py/unit/test_tools_build_passivation.py +0 -85
- package/tests/py/unit/test_tools_build_perturbation.py +0 -103
- package/tests/py/unit/test_tools_build_slab.py +0 -382
- package/tests/py/unit/test_tools_build_strain.py +0 -36
- package/tests/py/unit/test_tools_build_supercell.py +0 -47
- package/tests/py/unit/test_tools_calculate.py +0 -67
- package/tests/py/unit/test_tools_convert.py +0 -174
- package/tests/py/unit/test_tools_modify.py +0 -248
- package/tests/py/unit/utils.py +0 -142
- package/tsconfig-transpile.json +0 -3
- package/tsconfig.json +0 -3
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from typing import Tuple, 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
|
-
|
|
8
|
-
|
|
9
|
-
class CrystalLatticeLinesConfiguration(BaseConfigurationPydantic):
|
|
10
|
-
"""
|
|
11
|
-
Configuration for creating crystal lattice lines from a material.
|
|
12
|
-
|
|
13
|
-
Args:
|
|
14
|
-
crystal: The monolayer material to create the lattice lines from.
|
|
15
|
-
miller_indices_2d: The (u,v) Miller indices for the line direction.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
crystal: Union[Material, MaterialWithBuildMetadata]
|
|
19
|
-
miller_indices_2d: Tuple[int, int]
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
from enum import Enum
|
|
2
|
-
from typing import Tuple
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class EdgeTypesEnum(str, Enum):
|
|
6
|
-
"""
|
|
7
|
-
Enum for nanoribbon/nanotape edge types.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
zigzag = "zigzag"
|
|
11
|
-
armchair = "armchair"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
MILLER_INDICES_TO_EDGE_TYPE_MAP = {
|
|
15
|
-
(0, 1): EdgeTypesEnum.zigzag,
|
|
16
|
-
(1, 1): EdgeTypesEnum.armchair,
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_miller_indices_from_edge_type(edge_type: EdgeTypesEnum) -> Tuple[int, int]:
|
|
21
|
-
"""
|
|
22
|
-
Convert edge type shorthand to (u,v) Miller indices.
|
|
23
|
-
|
|
24
|
-
Args:
|
|
25
|
-
edge_type: "zigzag" or "armchair"
|
|
26
|
-
|
|
27
|
-
Returns:
|
|
28
|
-
Tuple of (u,v) Miller indices.
|
|
29
|
-
"""
|
|
30
|
-
for miller_indices, mapped_edge_type in MILLER_INDICES_TO_EDGE_TYPE_MAP.items():
|
|
31
|
-
if mapped_edge_type == edge_type:
|
|
32
|
-
return miller_indices
|
|
33
|
-
raise ValueError(f"Unknown edge type: {edge_type}. Use 'zigzag' or 'armchair'.")
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def get_edge_type_from_miller_indices(miller_indices_2d: Tuple[int, int]) -> str:
|
|
37
|
-
"""
|
|
38
|
-
Convert (u,v) Miller indices to edge type string.
|
|
39
|
-
|
|
40
|
-
Args:
|
|
41
|
-
miller_indices_2d: Tuple of (u,v) Miller indices
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
Edge type string: "Zigzag", "Armchair", or "(uv)" for other indices
|
|
45
|
-
"""
|
|
46
|
-
edge_type = MILLER_INDICES_TO_EDGE_TYPE_MAP.get(miller_indices_2d)
|
|
47
|
-
if edge_type:
|
|
48
|
-
return edge_type.value.capitalize()
|
|
49
|
-
else:
|
|
50
|
-
miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
|
|
51
|
-
return f"({miller_str})"
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Tuple, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
|
|
5
|
-
from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
|
|
6
|
-
from ......build.pristine_structures.two_dimensional.slab.termination_utils import select_slab_termination
|
|
7
|
-
from ..... import MaterialWithBuildMetadata
|
|
8
|
-
from ..crystal_lattice_lines_unique_repeated.configuration import CrystalLatticeLinesUniqueRepeatedConfiguration
|
|
9
|
-
from .edge_types import EdgeTypesEnum, get_miller_indices_from_edge_type
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def create_lattice_lines_config_and_material(
|
|
13
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
14
|
-
miller_indices_2d: Optional[Tuple[int, int]],
|
|
15
|
-
edge_type: Optional[EdgeTypesEnum],
|
|
16
|
-
width: int,
|
|
17
|
-
length: int,
|
|
18
|
-
termination_formula: Optional[str] = None,
|
|
19
|
-
):
|
|
20
|
-
"""
|
|
21
|
-
Create a lattice lines configuration from a material.
|
|
22
|
-
|
|
23
|
-
Args:
|
|
24
|
-
material: The monolayer material to create the lattice lines from.
|
|
25
|
-
miller_indices_2d: The (u,v) Miller indices for the line direction.
|
|
26
|
-
edge_type: Edge type ("zigzag" or "armchair") - alternative to miller_indices_2d.
|
|
27
|
-
width: Number of repetitions in width direction.
|
|
28
|
-
length: Number of repetitions in length direction.
|
|
29
|
-
termination_formula: Formula of the termination to use.
|
|
30
|
-
|
|
31
|
-
Returns:
|
|
32
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration: The configuration object.
|
|
33
|
-
"""
|
|
34
|
-
if miller_indices_2d is None and edge_type is None:
|
|
35
|
-
raise ValueError("Either miller_indices_2d or edge_type must be provided")
|
|
36
|
-
|
|
37
|
-
resolved_miller_indices: Tuple[int, int]
|
|
38
|
-
if miller_indices_2d is not None:
|
|
39
|
-
resolved_miller_indices = miller_indices_2d
|
|
40
|
-
elif edge_type is not None:
|
|
41
|
-
resolved_miller_indices = get_miller_indices_from_edge_type(edge_type)
|
|
42
|
-
else:
|
|
43
|
-
raise ValueError("Either miller_indices_2d or edge_type must be provided")
|
|
44
|
-
|
|
45
|
-
lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
|
|
46
|
-
material=material, miller_indices_2d=resolved_miller_indices
|
|
47
|
-
)
|
|
48
|
-
terminations = lattice_lines_analyzer.terminations
|
|
49
|
-
termination = select_slab_termination(terminations, termination_formula)
|
|
50
|
-
|
|
51
|
-
lattice_lines_config = CrystalLatticeLinesUniqueRepeatedConfiguration(
|
|
52
|
-
crystal=material,
|
|
53
|
-
miller_indices_2d=resolved_miller_indices,
|
|
54
|
-
termination_top=termination,
|
|
55
|
-
number_of_repetitions_width=width,
|
|
56
|
-
number_of_repetitions_length=length,
|
|
57
|
-
)
|
|
58
|
-
return lattice_lines_config
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
|
|
5
|
-
from ......analyze.lattice_lines import CrystalLatticeLinesMaterialAnalyzer
|
|
6
|
-
from ......modify import wrap_to_unit_cell
|
|
7
|
-
from ......operations.core.unary import supercell, translate
|
|
8
|
-
from ..crystal_lattice_lines.builder import CrystalLatticeLinesBuilder
|
|
9
|
-
from .configuration import CrystalLatticeLinesUniqueRepeatedConfiguration
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class CrystalLatticeLinesRepeatedBuilder(CrystalLatticeLinesBuilder):
|
|
13
|
-
"""
|
|
14
|
-
Builder for creating repeated crystal lattice lines with termination.
|
|
15
|
-
This is similar to AtomicLayersUniqueRepeatedBuilder but for 1D lines.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
_ConfigurationType: Type[
|
|
19
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration
|
|
20
|
-
] = CrystalLatticeLinesUniqueRepeatedConfiguration
|
|
21
|
-
|
|
22
|
-
def _generate(self, configuration: CrystalLatticeLinesUniqueRepeatedConfiguration) -> Material:
|
|
23
|
-
crystal_lattice_lines_material = super()._generate(configuration)
|
|
24
|
-
|
|
25
|
-
crystal_lattice_lines_analyzer = CrystalLatticeLinesMaterialAnalyzer(
|
|
26
|
-
material=configuration.crystal, miller_indices_2d=configuration.miller_indices_2d
|
|
27
|
-
)
|
|
28
|
-
translation_vector = crystal_lattice_lines_analyzer.get_translation_vector_for_termination_without_vacuum(
|
|
29
|
-
configuration.termination_top
|
|
30
|
-
)
|
|
31
|
-
material_translated = translate(crystal_lattice_lines_material, translation_vector)
|
|
32
|
-
material_translated_wrapped = wrap_to_unit_cell(material_translated)
|
|
33
|
-
|
|
34
|
-
material_translated_wrapped_repeated = supercell(
|
|
35
|
-
material_translated_wrapped,
|
|
36
|
-
[
|
|
37
|
-
[configuration.number_of_repetitions_length, 0, 0],
|
|
38
|
-
[0, configuration.number_of_repetitions_width, 0],
|
|
39
|
-
[0, 0, 1],
|
|
40
|
-
],
|
|
41
|
-
)
|
|
42
|
-
return material_translated_wrapped_repeated
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
from ....auxiliary.two_dimensional.termination import Termination
|
|
4
|
-
from ..crystal_lattice_lines.configuration import CrystalLatticeLinesConfiguration
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class CrystalLatticeLinesUniqueRepeatedConfiguration(CrystalLatticeLinesConfiguration):
|
|
8
|
-
"""
|
|
9
|
-
Configuration for creating repeated crystal lattice lines with termination.
|
|
10
|
-
|
|
11
|
-
Args:
|
|
12
|
-
crystal: The monolayer material to create the lattice lines from.
|
|
13
|
-
miller_indices_2d: The (u,v) Miller indices for the line direction.
|
|
14
|
-
termination_top: The termination to use for the lattice lines.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
# TODO: right and left for x terminations
|
|
18
|
-
termination_top: Termination
|
|
19
|
-
termination_bottom: Optional[Termination] = None
|
|
20
|
-
number_of_repetitions_width: int = 1
|
|
21
|
-
number_of_repetitions_length: int = 1
|
|
File without changes
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.three_dimensional.supercell_matrix_3d import (
|
|
3
|
-
SupercellMatrix3DSchema,
|
|
4
|
-
)
|
|
5
|
-
|
|
6
|
-
from ...base_builder import BaseConfigurationPydantic
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class SupercellConfiguration(BaseConfigurationPydantic):
|
|
10
|
-
type: str = "SupercellConfiguration"
|
|
11
|
-
supercell_matrix: SupercellMatrix3DSchema = SupercellMatrix3DSchema(root=np.eye(3).tolist())
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional, Union
|
|
2
|
-
|
|
3
|
-
import numpy as np
|
|
4
|
-
from mat3ra.made.material import Material
|
|
5
|
-
|
|
6
|
-
from ......operations.core.unary import supercell
|
|
7
|
-
from ..... import MaterialWithBuildMetadata
|
|
8
|
-
from .configuration import SupercellConfiguration
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def create_supercell(
|
|
12
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
13
|
-
supercell_matrix: Optional[List[List[int]]] = None,
|
|
14
|
-
scaling_factor: Optional[List[int]] = None,
|
|
15
|
-
) -> Material:
|
|
16
|
-
"""
|
|
17
|
-
Create a supercell of the atoms.
|
|
18
|
-
|
|
19
|
-
Args:
|
|
20
|
-
material (Material): The atoms to create a supercell of.
|
|
21
|
-
supercell_matrix (List[List[int]]): The supercell matrix (e.g. [[3,0,0],[0,3,0],[0,0,1]]).
|
|
22
|
-
scaling_factor (List[int], optional): The scaling factor instead of matrix (e.g. [3,3,1]).
|
|
23
|
-
If provided, supercell_matrix is ignored.
|
|
24
|
-
|
|
25
|
-
Returns:
|
|
26
|
-
Material: The supercell material.
|
|
27
|
-
"""
|
|
28
|
-
if scaling_factor is not None:
|
|
29
|
-
supercell_matrix = np.multiply(scaling_factor, np.eye(3)).tolist()
|
|
30
|
-
new_material = supercell(material, supercell_matrix)
|
|
31
|
-
|
|
32
|
-
# Convert to MaterialWithBuildMetadata and set metadata
|
|
33
|
-
material_with_metadata = MaterialWithBuildMetadata.create(new_material.to_dict())
|
|
34
|
-
configuration = SupercellConfiguration(supercell_matrix=supercell_matrix)
|
|
35
|
-
material_with_metadata.metadata.add_build_metadata_step(
|
|
36
|
-
configuration=configuration.to_dict(), build_parameters={"supercell_matrix": supercell_matrix}
|
|
37
|
-
)
|
|
38
|
-
return material_with_metadata
|
package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from .atomic_layers_unique_repeated import AtomicLayersUniqueRepeatedBuilder, AtomicLayersUniqueRepeatedConfiguration
|
|
2
|
-
from .crystal_lattice_planes import CrystalLatticePlanesBuilder, CrystalLatticePlanesConfiguration
|
|
3
|
-
|
|
4
|
-
# from .slab_stack import (
|
|
5
|
-
# SlabStackBuilder,
|
|
6
|
-
# SlabStackConfiguration,
|
|
7
|
-
# create_slab_stack,
|
|
8
|
-
# recreate_slab_with_fractional_layers,
|
|
9
|
-
# )
|
|
10
|
-
|
|
11
|
-
__all__ = [
|
|
12
|
-
# atomic_layers
|
|
13
|
-
# atomic_layers_unique_repeated
|
|
14
|
-
"AtomicLayersUniqueRepeatedBuilder",
|
|
15
|
-
"AtomicLayersUniqueRepeatedConfiguration",
|
|
16
|
-
# crystal_lattice_planes
|
|
17
|
-
"CrystalLatticePlanesBuilder",
|
|
18
|
-
"CrystalLatticePlanesConfiguration",
|
|
19
|
-
# slab_stack
|
|
20
|
-
# "SlabStackBuilder",
|
|
21
|
-
# "SlabStackConfiguration",
|
|
22
|
-
# "create_slab_stack",
|
|
23
|
-
# "recreate_slab_with_fractional_layers",
|
|
24
|
-
]
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
|
-
from ......analyze import BaseMaterialAnalyzer
|
|
4
|
-
from ......modify import wrap_to_unit_cell
|
|
5
|
-
from ......operations.core.unary import rotate, supercell, translate
|
|
6
|
-
from ..... import MaterialWithBuildMetadata
|
|
7
|
-
from ....auxiliary.two_dimensional.miller_indices import MillerIndices
|
|
8
|
-
from ..crystal_lattice_planes.builder import CrystalLatticePlanesBuilder
|
|
9
|
-
from .configuration import AtomicLayersUniqueRepeatedConfiguration
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class AtomicLayersUniqueRepeatedBuilder(CrystalLatticePlanesBuilder):
|
|
13
|
-
_ConfigurationType: Type[AtomicLayersUniqueRepeatedConfiguration] = AtomicLayersUniqueRepeatedConfiguration
|
|
14
|
-
|
|
15
|
-
def _generate(self, configuration: AtomicLayersUniqueRepeatedConfiguration) -> MaterialWithBuildMetadata:
|
|
16
|
-
crystal_lattice_planes_material = super()._generate(configuration)
|
|
17
|
-
|
|
18
|
-
crystal_lattice_planes_material_analyzer = self.get_analyzer(configuration)
|
|
19
|
-
|
|
20
|
-
if configuration.termination_top is not None:
|
|
21
|
-
termination = configuration.termination_top
|
|
22
|
-
should_rotate = False
|
|
23
|
-
elif configuration.termination_bottom is not None:
|
|
24
|
-
termination = configuration.termination_bottom
|
|
25
|
-
should_rotate = True
|
|
26
|
-
else:
|
|
27
|
-
raise ValueError(
|
|
28
|
-
"Either termination_top or termination_bottom is required for AtomicLayersUniqueRepeatedBuilder"
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
translation_vector = (
|
|
32
|
-
crystal_lattice_planes_material_analyzer.get_translation_vector_for_termination_without_vacuum(termination)
|
|
33
|
-
)
|
|
34
|
-
material_translated = translate(crystal_lattice_planes_material, translation_vector)
|
|
35
|
-
material_translated_wrapped = wrap_to_unit_cell(material_translated)
|
|
36
|
-
|
|
37
|
-
if should_rotate:
|
|
38
|
-
# Rotation of basis around [1,0,0] yielded the same material, probably due to the symmetry of unit cell.
|
|
39
|
-
# rotation around X and Z simultaneously gives the mirroring effect. (x,y,z) ⟶ (z,−y,x)
|
|
40
|
-
material_translated_wrapped = rotate(material_translated_wrapped, angle=180, axis=[1, 0, 1])
|
|
41
|
-
material_translated_wrapped_layered = supercell(
|
|
42
|
-
material_translated_wrapped, [[1, 0, 0], [0, 1, 0], [0, 0, configuration.number_of_repetitions]]
|
|
43
|
-
)
|
|
44
|
-
return material_translated_wrapped_layered
|
|
45
|
-
|
|
46
|
-
def _update_material_name(
|
|
47
|
-
self, material: MaterialWithBuildMetadata, configuration: AtomicLayersUniqueRepeatedConfiguration
|
|
48
|
-
) -> MaterialWithBuildMetadata:
|
|
49
|
-
material_analyzer = BaseMaterialAnalyzer(material=material)
|
|
50
|
-
material.formula = material_analyzer.formula
|
|
51
|
-
miller_indices_str = str(MillerIndices(root=configuration.miller_indices))
|
|
52
|
-
|
|
53
|
-
if configuration.termination_top is not None:
|
|
54
|
-
termination_str = f"termination {configuration.termination_top}"
|
|
55
|
-
elif configuration.termination_bottom is not None:
|
|
56
|
-
termination_str = f"bottom termination {configuration.termination_bottom}"
|
|
57
|
-
else:
|
|
58
|
-
termination_str = ""
|
|
59
|
-
|
|
60
|
-
new_name = f"{material.formula}{miller_indices_str}, {termination_str}"
|
|
61
|
-
material.name = new_name
|
|
62
|
-
return material
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category.defective_structures.two_dimensional.base_configuration import (
|
|
4
|
-
AtomicLayersUniqueRepeatedSchema,
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
from ....auxiliary.two_dimensional.termination import Termination
|
|
8
|
-
from ..crystal_lattice_planes.configuration import CrystalLatticePlanesConfiguration
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class AtomicLayersUniqueRepeatedConfiguration(CrystalLatticePlanesConfiguration, AtomicLayersUniqueRepeatedSchema):
|
|
12
|
-
termination_top: Optional[Termination] = None
|
|
13
|
-
termination_bottom: Optional[Termination] = None
|
|
14
|
-
number_of_repetitions: int
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Tuple, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
|
|
5
|
-
from ..... import MaterialWithBuildMetadata
|
|
6
|
-
from ....auxiliary.two_dimensional.termination import Termination
|
|
7
|
-
from .. import AtomicLayersUniqueRepeatedBuilder, AtomicLayersUniqueRepeatedConfiguration
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def create_atomic_layers(
|
|
11
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
12
|
-
miller_indices: Tuple[int, int, int] = (0, 0, 1),
|
|
13
|
-
termination: Optional[Termination] = None,
|
|
14
|
-
number_of_layers: int = 1,
|
|
15
|
-
) -> Material:
|
|
16
|
-
"""
|
|
17
|
-
Creates a material composed of repeated unique atomic layers from a given crystal.
|
|
18
|
-
|
|
19
|
-
This function identifies the sequence of unique atomic layers for the given Miller
|
|
20
|
-
indices and then constructs the material by repeating this sequence, starting
|
|
21
|
-
with a given surface termination.
|
|
22
|
-
|
|
23
|
-
Args:
|
|
24
|
-
material (Material): The crystal material to create atomic layers from.
|
|
25
|
-
miller_indices (Tuple[int, int, int]): Miller indices for the atomic layers.
|
|
26
|
-
termination (Termination): The termination to use for the atomic layers.
|
|
27
|
-
number_of_layers (int): Number of times to repeat the sequence of unique atomic layers.
|
|
28
|
-
Returns:
|
|
29
|
-
Material: The atomic layers material.
|
|
30
|
-
|
|
31
|
-
"""
|
|
32
|
-
atomic_layers_config = AtomicLayersUniqueRepeatedConfiguration(
|
|
33
|
-
crystal=material,
|
|
34
|
-
miller_indices=miller_indices,
|
|
35
|
-
termination_top=termination,
|
|
36
|
-
number_of_repetitions=number_of_layers,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
atomic_layers_builder = AtomicLayersUniqueRepeatedBuilder()
|
|
40
|
-
atomic_layers_material = atomic_layers_builder.get_material(atomic_layers_config)
|
|
41
|
-
|
|
42
|
-
return atomic_layers_material
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
from typing import Any, Optional
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseSingleBuilder, TypeConfiguration
|
|
4
|
-
|
|
5
|
-
from ......analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
|
|
6
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
7
|
-
from ......modify import translate_to_z_level
|
|
8
|
-
from ......operations.core.unary import supercell
|
|
9
|
-
from .configuration import CrystalLatticePlanesConfiguration
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class CrystalLatticePlanesBuilder(BaseSingleBuilder):
|
|
13
|
-
_PostProcessParametersType: Any = None
|
|
14
|
-
use_enforce_convention: bool = True
|
|
15
|
-
|
|
16
|
-
def get_analyzer(self, configuration: CrystalLatticePlanesConfiguration) -> CrystalLatticePlanesMaterialAnalyzer:
|
|
17
|
-
return CrystalLatticePlanesMaterialAnalyzer(
|
|
18
|
-
material=configuration.crystal, miller_indices=configuration.miller_indices
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
def _generate(self, configuration: CrystalLatticePlanesConfiguration) -> MaterialWithBuildMetadata:
|
|
22
|
-
crystal_lattice_planes_analyzer = self.get_analyzer(configuration)
|
|
23
|
-
miller_supercell_matrix = crystal_lattice_planes_analyzer.miller_supercell_matrix
|
|
24
|
-
miller_supercell_material = supercell(configuration.crystal, miller_supercell_matrix)
|
|
25
|
-
return miller_supercell_material
|
|
26
|
-
|
|
27
|
-
def _enforce_convention(self, material: MaterialWithBuildMetadata) -> MaterialWithBuildMetadata:
|
|
28
|
-
if not self.use_enforce_convention:
|
|
29
|
-
return material
|
|
30
|
-
return translate_to_z_level(material, "bottom")
|
|
31
|
-
|
|
32
|
-
def _post_process(
|
|
33
|
-
self,
|
|
34
|
-
item: MaterialWithBuildMetadata,
|
|
35
|
-
post_process_parameters: Optional[Any] = None,
|
|
36
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
37
|
-
) -> MaterialWithBuildMetadata:
|
|
38
|
-
item = super()._post_process(item, post_process_parameters, configuration)
|
|
39
|
-
return self._enforce_convention(item)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from typing import Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.materials_category_components.entities.reusable.two_dimensional.crystal_lattice_planes import (
|
|
4
|
-
CrystalLatticePlanesSchema,
|
|
5
|
-
)
|
|
6
|
-
from mat3ra.made.material import Material
|
|
7
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseConfigurationPydantic
|
|
8
|
-
|
|
9
|
-
from ......build_components import MaterialWithBuildMetadata
|
|
10
|
-
from ....auxiliary.two_dimensional.miller_indices import MillerIndices
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class CrystalLatticePlanesConfiguration(CrystalLatticePlanesSchema, BaseConfigurationPydantic):
|
|
14
|
-
crystal: Union[Material, MaterialWithBuildMetadata]
|
|
15
|
-
|
|
16
|
-
@property
|
|
17
|
-
def in_plane_vectors(self):
|
|
18
|
-
# Two vectors in the plane of the Miller indices
|
|
19
|
-
return self.crystal.lattice.vector_arrays[:2, :2]
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def miller_indices_as_string(self) -> str:
|
|
23
|
-
miller_indices_cls_instance = MillerIndices(root=self.miller_indices)
|
|
24
|
-
return str(miller_indices_cls_instance)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
from .builder import SlabStackBuilder
|
|
2
|
-
from .configuration import SlabStackConfiguration
|
|
3
|
-
from .helpers import create_slab_stack, recreate_slab_with_fractional_layers
|
|
4
|
-
|
|
5
|
-
__all__ = [
|
|
6
|
-
"SlabStackBuilder",
|
|
7
|
-
"SlabStackConfiguration",
|
|
8
|
-
"create_slab_stack",
|
|
9
|
-
"recreate_slab_with_fractional_layers",
|
|
10
|
-
]
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import TypeConfiguration
|
|
4
|
-
|
|
5
|
-
from ......build.pristine_structures.two_dimensional.slab import SlabBuilder
|
|
6
|
-
from ......build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
7
|
-
from ..... import MaterialWithBuildMetadata
|
|
8
|
-
from .....operations.core.combinations.stack.builder import StackNComponentsBuilder
|
|
9
|
-
from .configuration import SlabStackConfiguration
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class SlabStackBuilder(StackNComponentsBuilder):
|
|
13
|
-
_ConfigurationType: Type[SlabStackConfiguration] = SlabStackConfiguration
|
|
14
|
-
|
|
15
|
-
@property
|
|
16
|
-
def stack_component_types_conversion_map(self):
|
|
17
|
-
return {
|
|
18
|
-
**super().stack_component_types_conversion_map,
|
|
19
|
-
SlabConfiguration: SlabBuilder,
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def name_suffix(self) -> str:
|
|
24
|
-
return "Slab Stack"
|
|
25
|
-
|
|
26
|
-
def get_name_suffix(self, configuration: SlabStackConfiguration) -> str:
|
|
27
|
-
return self.name_suffix
|
|
28
|
-
|
|
29
|
-
def _update_material_name(
|
|
30
|
-
self, material: MaterialWithBuildMetadata, configuration: TypeConfiguration
|
|
31
|
-
) -> MaterialWithBuildMetadata:
|
|
32
|
-
name_suffix = self.get_name_suffix(configuration) or self.name_suffix
|
|
33
|
-
base_name = material.name
|
|
34
|
-
name = f"{base_name}, {name_suffix}"
|
|
35
|
-
material.name = name
|
|
36
|
-
return material
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
from mat3ra.esse.models.materials_category_components.entities.reusable.two_dimensional.slab_stack_configuration import ( # noqa: E501
|
|
2
|
-
SlabStackConfigurationSchema,
|
|
3
|
-
)
|
|
4
|
-
from mat3ra.made.material import Material
|
|
5
|
-
|
|
6
|
-
from .....operations.core.combinations.stack.configuration import StackConfiguration
|
|
7
|
-
from ....core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class SlabStackConfiguration(StackConfiguration, SlabStackConfigurationSchema):
|
|
11
|
-
"""
|
|
12
|
-
Configuration for stacking a slab, an isolated defect and a vacuum layer.
|
|
13
|
-
|
|
14
|
-
Args:
|
|
15
|
-
stack_components: List containing [slab, slab_component, vacuum].
|
|
16
|
-
direction: Direction of stacking (default: z).
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
type: str = "SlabStackConfiguration"
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def slab(self) -> Material:
|
|
23
|
-
return self.stack_components[0]
|
|
24
|
-
|
|
25
|
-
@property
|
|
26
|
-
def added_component(self) -> Material:
|
|
27
|
-
return self.stack_components[1]
|
|
28
|
-
|
|
29
|
-
@property
|
|
30
|
-
def vacuum_configuration(self) -> VacuumConfiguration:
|
|
31
|
-
return self.stack_components[2]
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
2
|
-
from sympy import ceiling
|
|
3
|
-
|
|
4
|
-
from ......analyze.slab import SlabMaterialAnalyzer
|
|
5
|
-
from ......build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
|
|
6
|
-
from ......build.pristine_structures.two_dimensional.slab.helpers import create_slab
|
|
7
|
-
from ......modify import filter_by_box
|
|
8
|
-
from ..... import MaterialWithBuildMetadata
|
|
9
|
-
from ....core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
10
|
-
from .builder import SlabStackBuilder
|
|
11
|
-
from .configuration import SlabStackConfiguration
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def create_slab_stack(
|
|
15
|
-
slab: MaterialWithBuildMetadata, added_component: MaterialWithBuildMetadata
|
|
16
|
-
) -> MaterialWithBuildMetadata:
|
|
17
|
-
"""
|
|
18
|
-
Create a slab stack by stacking a slab, a slab component, and a vacuum layer.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
slab: The original slab material.
|
|
22
|
-
added_component: The material to be stacked on top of the slab.
|
|
23
|
-
Returns:
|
|
24
|
-
Material: The new slab stack material.
|
|
25
|
-
"""
|
|
26
|
-
analyzer = SlabMaterialAnalyzer(material=slab)
|
|
27
|
-
|
|
28
|
-
slab_without_vacuum_configuration = analyzer.slab_configuration_with_no_vacuum
|
|
29
|
-
slab_build_parameters = analyzer.build_parameters
|
|
30
|
-
|
|
31
|
-
new_slab = SlabBuilder(build_parameters=slab_build_parameters).get_material(slab_without_vacuum_configuration)
|
|
32
|
-
|
|
33
|
-
original_vacuum_config = analyzer.get_slab_vacuum_configuration()
|
|
34
|
-
vacuum_config = VacuumConfiguration(
|
|
35
|
-
size=original_vacuum_config.size, crystal=new_slab, direction=original_vacuum_config.direction
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
slab_stack_config = SlabStackConfiguration(
|
|
39
|
-
stack_components=[new_slab, added_component, vacuum_config], direction=AxisEnum.z
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
slab_stack_builder = SlabStackBuilder()
|
|
43
|
-
return slab_stack_builder.get_material(slab_stack_config)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def recreate_slab_with_fractional_layers(
|
|
47
|
-
slab: MaterialWithBuildMetadata, number_of_layers: float
|
|
48
|
-
) -> MaterialWithBuildMetadata:
|
|
49
|
-
"""
|
|
50
|
-
Create a slab with a specified number of fractional layers.
|
|
51
|
-
|
|
52
|
-
Args:
|
|
53
|
-
slab: The original slab material.
|
|
54
|
-
number_of_layers: The total number of layers in the new slab.
|
|
55
|
-
Returns:
|
|
56
|
-
Material: The new slab material with the specified number of layers and vacuum if needed.
|
|
57
|
-
"""
|
|
58
|
-
analyzer = SlabMaterialAnalyzer(material=slab)
|
|
59
|
-
slab_without_vacuum = analyzer.slab_configuration_with_no_vacuum
|
|
60
|
-
build_parameters = analyzer.build_parameters
|
|
61
|
-
|
|
62
|
-
ceiling_number_of_layers = int(ceiling(number_of_layers))
|
|
63
|
-
slab_with_int_layers_without_vacuum = create_slab(
|
|
64
|
-
crystal=slab_without_vacuum.atomic_layers.crystal,
|
|
65
|
-
miller_indices=slab_without_vacuum.atomic_layers.miller_indices,
|
|
66
|
-
termination_top_formula=slab_without_vacuum.atomic_layers.termination_top.formula
|
|
67
|
-
if slab_without_vacuum.atomic_layers.termination_top
|
|
68
|
-
else None,
|
|
69
|
-
termination_bottom_formula=None,
|
|
70
|
-
number_of_layers=ceiling_number_of_layers,
|
|
71
|
-
vacuum=0,
|
|
72
|
-
xy_supercell_matrix=build_parameters.xy_supercell_matrix,
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
max_z_crystal_coordinate = number_of_layers / ceiling_number_of_layers
|
|
76
|
-
return filter_by_box(
|
|
77
|
-
slab_with_int_layers_without_vacuum,
|
|
78
|
-
max_coordinate=[1, 1, max_z_crystal_coordinate],
|
|
79
|
-
reset_ids=True,
|
|
80
|
-
)
|
package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py
DELETED
|
File without changes
|