@mat3ra/made 2025.8.5-0 → 2025.8.7-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/py/mat3ra/made/lattice.py +11 -3
- package/src/py/mat3ra/made/tools/__init__.py +0 -28
- package/src/py/mat3ra/made/tools/analyze/__init__.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +5 -3
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +5 -5
- package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/interface/simple.py +6 -4
- package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +3 -2
- package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +3 -1
- package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +2 -2
- package/src/py/mat3ra/made/tools/analyze/lattice.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/material.py +3 -1
- package/src/py/mat3ra/made/tools/analyze/other.py +1 -1
- package/src/py/mat3ra/made/tools/analyze/slab.py +4 -4
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +1 -1
- package/src/py/mat3ra/made/tools/build/__init__.py +18 -2
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/__init__.py +5 -9
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/builder.py +20 -21
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/configuration.py +8 -5
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/helpers.py +5 -5
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/commensurate/helpers.py +8 -7
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/helpers.py +5 -6
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/utils.py +5 -5
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/zsl/helpers.py +11 -9
- package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_build_parameters.py → defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py} +2 -2
- package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_builder.py → defective_structures/one_dimensional/grain_boundary_linear/builder.py} +3 -3
- package/src/py/mat3ra/made/tools/build/{grain_boundary/linear_configuration.py → defective_structures/one_dimensional/grain_boundary_linear/configuration.py} +2 -2
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +82 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/builder.py +1 -1
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/configuration.py +1 -1
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/adatom/helpers.py +7 -7
- package/src/py/mat3ra/made/tools/build/{grain_boundary/planar_builder.py → defective_structures/two_dimensional/grain_boundary_planar/builder.py} +6 -7
- package/src/py/mat3ra/made/tools/build/{grain_boundary/planar_configuration.py → defective_structures/two_dimensional/grain_boundary_planar/configuration.py} +6 -5
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +75 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/builder.py +1 -1
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/configuration.py +1 -1
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/island/helpers.py +11 -8
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/build_parameters.py +1 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +30 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/configuration.py +3 -1
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/two_dimensional}/terrace/helpers.py +9 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/builder.py +3 -3
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/configuration.py +6 -5
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional}/pair_defect/helpers.py +1 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +40 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/base/builder.py +7 -7
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/base/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/factories.py +11 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +95 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/zero_dimensional/point_defect/interstitial}/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +48 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/interstitial}/interstitial_placement_method_enum.py +1 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/substitutional/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +43 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/substitutional}/substitution_placement_method_enum.py +1 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/vacancy/builder.py +2 -2
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/vacancy/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +42 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect/vacancy}/vacancy_placement_method_enum.py +1 -1
- 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/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/builder.py +4 -4
- package/src/py/mat3ra/made/tools/build/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/configurations.py +2 -1
- package/src/py/mat3ra/made/tools/build/{monolayer → pristine_structures/three_dimensional/ideal_crystal}/helpers.py +1 -1
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/__init__.py +11 -3
- package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/builders.py +3 -4
- package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/configuration.py +3 -3
- package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/helpers.py +8 -4
- package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/__init__.py +2 -1
- package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/build_parameters.py +1 -1
- package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/builders.py +9 -7
- package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/configuration.py +6 -4
- package/src/py/mat3ra/made/tools/build/{nanotape → pristine_structures/two_dimensional/nanotape}/helpers.py +6 -3
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +9 -0
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/build_parameters.py +1 -1
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/builder.py +13 -11
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional}/slab/configuration.py +8 -8
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/helpers.py +4 -43
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/termination_utils.py +1 -1
- package/src/py/mat3ra/made/tools/build/{slab → pristine_structures/two_dimensional/slab}/utils.py +5 -5
- package/src/py/mat3ra/made/tools/build/{slab/strained_supercell_slab → pristine_structures/two_dimensional/slab_strained_supercell}/builder.py +4 -4
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/analyzer.py +2 -2
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/builder.py +4 -5
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/configuration.py +1 -1
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/enums.py +6 -5
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/helpers.py +18 -12
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/builder.py +8 -8
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/configuration.py +3 -3
- 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/{passivation → processed_structures/two_dimensional/passivation}/analyzers/coordination_based_passivation_material_analyzer.py +4 -2
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/passivation_material_analyzer.py +2 -2
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/surface_passivation_material_analyzer.py +3 -2
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/builder.py +5 -4
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/configuration.py +3 -3
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/helpers.py +4 -4
- package/src/py/mat3ra/made/tools/build_components/__init__.py +11 -0
- 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/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/defect/point/defect_site → build_components/entities/auxiliary/zero_dimensional/point_defect_site}/builder.py +5 -1
- package/src/py/mat3ra/made/tools/{build/defect/point/defect_site → build_components/entities/auxiliary/zero_dimensional/point_defect_site}/configuration.py +1 -1
- 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 → build_components/entities/auxiliary/zero_dimensional}/void_region/builder.py +3 -3
- package/src/py/mat3ra/made/tools/{build → build_components/entities/auxiliary/zero_dimensional}/void_region/configuration.py +2 -2
- package/src/py/mat3ra/made/tools/{build → build_components/entities/core/two_dimensional}/vacuum/builder.py +14 -3
- package/src/py/mat3ra/made/tools/{build → build_components/entities/core/two_dimensional}/vacuum/configuration.py +4 -4
- package/src/py/mat3ra/made/tools/{build/defect/point/atom_at_coordinate → build_components/entities/core/zero_dimensional/atom}/builder.py +3 -3
- package/src/py/mat3ra/made/tools/{build/defect/point/atom_at_coordinate → build_components/entities/core/zero_dimensional/atom}/configuration.py +2 -2
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/__init__.py +1 -2
- package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/base_single_builder.py +2 -2
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/builder.py +7 -6
- package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/configuration.py +3 -1
- package/src/py/mat3ra/made/tools/{build/lattice_lines → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/helpers.py +5 -4
- package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/builder.py +4 -4
- package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/configuration.py +2 -2
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/strained_non_uniform.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/strained_uniform.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/supercell/supercell_configuration.py → build_components/entities/reusable/three_dimensional/supercell/configuration.py} +1 -1
- package/src/py/mat3ra/made/tools/{build → build_components/entities/reusable/three_dimensional}/supercell/helpers.py +5 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +24 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/atomic_layers_unique_repeated/builder.py +6 -8
- package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/atomic_layers_unique_repeated/configuration.py +1 -1
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +42 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +7 -0
- package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/crystal_lattice_planes/builder.py +7 -5
- package/src/py/mat3ra/made/tools/{build/slab → build_components/entities/reusable/two_dimensional}/crystal_lattice_planes/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +10 -0
- package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/builder.py +8 -5
- package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/configuration.py +6 -8
- package/src/py/mat3ra/made/tools/{build/defect/slab → build_components/entities/reusable/two_dimensional/slab_stack}/helpers.py +6 -6
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +2 -0
- package/src/py/mat3ra/made/tools/{build → build_components}/metadata/build_metadata.py +1 -2
- package/src/py/mat3ra/made/tools/{build → build_components}/metadata/material_with_build_metadata.py +1 -2
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/defect/adatom_placement_method_enum.py → build_components/operations/core/combinations/enums.py} +3 -1
- package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/build_parameters.py +1 -1
- package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/builder.py +5 -8
- package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/configuration.py +3 -4
- package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/stack/builder.py +7 -6
- package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/stack/configuration.py +2 -2
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +5 -0
- package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/builders/base.py +7 -5
- package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/builders/isometric.py +3 -3
- package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/configuration.py +4 -2
- package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/perturbation_function_holder.py +2 -1
- package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/helpers.py +5 -6
- package/src/py/mat3ra/made/tools/build_components/utils.py +99 -0
- package/src/py/mat3ra/made/tools/calculate/__init__.py +2 -3
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +1 -1
- package/src/py/mat3ra/made/tools/entities/__init__.py +2 -2
- package/src/py/mat3ra/made/tools/entities/termination_holder.py +1 -1
- package/src/py/mat3ra/made/tools/helpers.py +48 -22
- package/src/py/mat3ra/made/tools/modify.py +1 -26
- package/src/py/mat3ra/made/tools/operations/core/binary.py +1 -1
- package/src/py/mat3ra/made/tools/operations/core/unary.py +27 -2
- package/src/py/mat3ra/made/tools/operations/core/utils.py +1 -2
- package/tests/py/unit/test_operations.py +1 -1
- package/tests/py/unit/test_tools_analyze.py +4 -2
- package/tests/py/unit/test_tools_analyze_interface.py +1 -1
- package/tests/py/unit/test_tools_analyze_interface_zsl.py +4 -2
- package/tests/py/unit/test_tools_build.py +6 -3
- package/tests/py/unit/test_tools_build_defect/test_adatom.py +6 -3
- package/tests/py/unit/test_tools_build_defect/test_island.py +2 -2
- package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +8 -4
- package/tests/py/unit/test_tools_build_defect/test_point_defect.py +6 -4
- package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +4 -1
- package/tests/py/unit/test_tools_build_defect/test_terrace.py +2 -2
- package/tests/py/unit/test_tools_build_grain_boundary.py +12 -3
- package/tests/py/unit/test_tools_build_interface.py +14 -7
- package/tests/py/unit/test_tools_build_interface_zsl.py +6 -5
- package/tests/py/unit/test_tools_build_metadata.py +1 -1
- package/tests/py/unit/test_tools_build_monolayer.py +1 -1
- package/tests/py/unit/test_tools_build_nanoparticle.py +5 -2
- package/tests/py/unit/test_tools_build_nanoribbon.py +5 -2
- package/tests/py/unit/test_tools_build_passivation.py +1 -1
- package/tests/py/unit/test_tools_build_perturbation.py +7 -5
- package/tests/py/unit/test_tools_build_slab.py +16 -10
- package/tests/py/unit/test_tools_build_supercell.py +1 -1
- package/tests/py/unit/test_tools_modify.py +3 -3
- package/src/py/mat3ra/made/tools/build/defect/point/helpers.py +0 -207
- package/src/py/mat3ra/made/tools/build/defect/terrace/builder.py +0 -27
- package/src/py/mat3ra/made/tools/build/grain_boundary/__init__.py +0 -14
- package/src/py/mat3ra/made/tools/build/grain_boundary/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/grain_boundary/helpers.py +0 -152
- package/src/py/mat3ra/made/tools/build/lattice_lines/__init__.py +0 -17
- package/src/py/mat3ra/made/tools/build/metadata/__init__.py +0 -3
- package/src/py/mat3ra/made/tools/build/perturbation/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/perturbation/builders/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/slab/__init__.py +0 -25
- package/src/py/mat3ra/made/tools/build/supercell/__init__.py +0 -1
- package/src/py/mat3ra/made/tools/build/utils.py +0 -43
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/build_parameters.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/commensurate/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/enums.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/configuration.py +0 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/zsl/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/pair_defect → defective_structures/one_dimensional}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/one_dimensional/grain_boundary_linear}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/two_dimensional}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/slab → defective_structures/two_dimensional/adatom}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{monolayer → defective_structures/two_dimensional/grain_boundary_planar}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{passivation → defective_structures/zero_dimensional}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/atom_placement_method_enum.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/complex_defect_type_enum.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/point/intersitital → defective_structures/zero_dimensional/point_defect/interstitial}/builder.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect → defective_structures/zero_dimensional/point_defect}/point_defect_type_enum.py +0 -0
- package/src/py/mat3ra/made/tools/build/{defect/point → defective_structures/zero_dimensional/point_defect}/substitutional/builder.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoribbon → pristine_structures/two_dimensional/nanoribbon}/build_parameters.py +0 -0
- package/src/py/mat3ra/made/tools/build/{slab/strained_supercell_slab → pristine_structures/two_dimensional/slab_strained_supercell}/configuration.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/ase_based/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{nanoparticle → pristine_structures/zero_dimensional/nanoparticle}/merge_based/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/{passivation → processed_structures/two_dimensional/passivation}/analyzers/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{enums.py → build/processed_structures/two_dimensional/passivation/enums.py} +0 -0
- package/src/py/mat3ra/made/tools/{entities → build_components/entities/auxiliary/two_dimensional}/miller_indices.py +0 -0
- package/src/py/mat3ra/made/tools/{entities → build_components/entities/auxiliary/two_dimensional}/termination.py +0 -0
- package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/crystal_site.py +0 -0
- package/src/py/mat3ra/made/tools/{crystal_site → build_components/entities/auxiliary/zero_dimensional/crystal_site}/crystal_site_list.py +0 -0
- package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/base_configuration_pydantic.py +0 -0
- package/src/py/mat3ra/made/tools/{build/base → build_components/entities/reusable/base_builder}/build_parameters.py +0 -0
- package/src/py/mat3ra/made/tools/{build/lattice_lines/base → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/lattice_lines → build_components/entities/reusable/one_dimensional/crystal_lattice_lines}/edge_types.py +1 -1
- package/src/py/mat3ra/made/tools/{build/lattice_lines/repeated → build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated}/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/{build/defect → build_components/entities/reusable/zero_dimensional}/coordinates_shape_enum.py +0 -0
- package/src/py/mat3ra/made/tools/{build → build_components}/metadata/material_build_metadata.py +1 -1
- /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/__init__.py +0 -0
- /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/convert_generated_items_ase_atoms_mixin.py +0 -0
- /package/src/py/mat3ra/made/tools/{build → build_components}/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -0
- /package/src/py/mat3ra/made/tools/{build → build_components/operations/core/combinations}/merge/__init__.py +0 -0
- /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/__init__.py +0 -0
- /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/__init__.py +0 -0
- /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/function_holder.py +0 -0
- /package/src/py/mat3ra/made/tools/{build/perturbation → build_components/operations/core/modifications/perturb}/functions/sine_wave_perturbation_function_holder.py +0 -0
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -19,7 +19,7 @@ dependencies = [
|
|
|
19
19
|
# new verison of numpy==2.0.0 is not handled by pymatgen yet
|
|
20
20
|
"numpy<=1.26.4",
|
|
21
21
|
"mat3ra-utils",
|
|
22
|
-
"mat3ra-esse
|
|
22
|
+
"mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@fe1c134459a1a1fe6646bb0d82a075db256cb09c",
|
|
23
23
|
"mat3ra-code"
|
|
24
24
|
|
|
25
25
|
]
|
|
@@ -88,9 +88,17 @@ class Lattice(RoundNumericValuesMixin, LatticeSchemaVectorless, InMemoryEntityPy
|
|
|
88
88
|
a = np.linalg.norm(vectors[0])
|
|
89
89
|
b = np.linalg.norm(vectors[1])
|
|
90
90
|
c = np.linalg.norm(vectors[2])
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
bc = b * c
|
|
92
|
+
ac = a * c
|
|
93
|
+
ab = a * b
|
|
94
|
+
|
|
95
|
+
if bc == 0 or ac == 0 or ab == 0:
|
|
96
|
+
print("Vectors:", vectors)
|
|
97
|
+
raise ValueError("Vectors must not be zero vectors.")
|
|
98
|
+
|
|
99
|
+
alpha = np.degrees(np.arccos(np.dot(vectors[1], vectors[2]) / bc))
|
|
100
|
+
beta = np.degrees(np.arccos(np.dot(vectors[0], vectors[2]) / ac))
|
|
101
|
+
gamma = np.degrees(np.arccos(np.dot(vectors[0], vectors[1]) / ab))
|
|
94
102
|
|
|
95
103
|
return cls(
|
|
96
104
|
a=float(a),
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
from .bond_directions.bond_directions import BondDirections
|
|
2
|
-
from .bond_directions.bond_directions_for_element_list import BondDirectionsForElementList
|
|
3
|
-
from .bond_directions.bond_directions_templates_enum import BondDirectionsTemplatesEnum
|
|
4
|
-
from .bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
|
|
5
|
-
from .crystal_site.crystal_site import CrystalSite
|
|
6
|
-
from .crystal_site.crystal_site_list import CrystalSiteList
|
|
7
|
-
from .modify import (
|
|
8
|
-
add_vacuum,
|
|
9
|
-
add_vacuum_sides,
|
|
10
|
-
filter_by_box,
|
|
11
|
-
filter_by_circle_projection,
|
|
12
|
-
filter_by_condition_on_coordinates,
|
|
13
|
-
filter_by_ids,
|
|
14
|
-
filter_by_label,
|
|
15
|
-
filter_by_layers,
|
|
16
|
-
filter_by_rectangle_projection,
|
|
17
|
-
filter_by_sphere,
|
|
18
|
-
filter_by_triangle_projection,
|
|
19
|
-
interface_displace_part,
|
|
20
|
-
interface_get_part,
|
|
21
|
-
remove_vacuum,
|
|
22
|
-
rotate,
|
|
23
|
-
translate_by_vector,
|
|
24
|
-
translate_to_center,
|
|
25
|
-
translate_to_z_level,
|
|
26
|
-
wrap_to_unit_cell,
|
|
27
|
-
)
|
|
28
|
-
from .optimize import evaluate_calculator_on_xy_grid
|
|
@@ -5,7 +5,7 @@ from mat3ra.made.material import Material
|
|
|
5
5
|
from pydantic import BaseModel
|
|
6
6
|
from scipy.spatial.distance import pdist
|
|
7
7
|
|
|
8
|
-
from ..
|
|
8
|
+
from ..build_components.metadata.material_with_build_metadata import MaterialWithBuildMetadata
|
|
9
9
|
from .other import get_chemical_formula_empirical
|
|
10
10
|
from .utils import decorator_perform_operation_in_cartesian_coordinates
|
|
11
11
|
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Generic, Type, TypeVar
|
|
4
4
|
|
|
5
|
-
from ..
|
|
5
|
+
from ..build_components.metadata import BuildMetadata, MaterialWithBuildMetadata
|
|
6
6
|
from . import BaseMaterialAnalyzer
|
|
7
7
|
|
|
8
8
|
TypeConfiguration = TypeVar("TypeConfiguration")
|
package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
3
|
from mat3ra.made.material import Material
|
|
4
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
|
|
4
5
|
|
|
5
|
-
from ...
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
from ...build_components.entities.reusable.two_dimensional.slab_stack.helpers import (
|
|
7
|
+
recreate_slab_with_fractional_layers,
|
|
8
|
+
)
|
|
9
|
+
from ...build_components.metadata import MaterialWithBuildMetadata
|
|
8
10
|
from .adatom_material_analyzer import AdatomMaterialAnalyzer
|
|
9
11
|
from .crystal_site_analyzer import CrystalSiteAnalyzer
|
|
10
12
|
|
|
@@ -2,11 +2,11 @@ from typing import List
|
|
|
2
2
|
|
|
3
3
|
from mat3ra.esse.models.materials_category_components.entities.core.zero_dimensional.atom import AtomSchema
|
|
4
4
|
|
|
5
|
-
from ...
|
|
6
|
-
from ...
|
|
7
|
-
from ...
|
|
8
|
-
from ...
|
|
9
|
-
from ...
|
|
5
|
+
from ...build_components.entities.core.two_dimensional.vacuum.builder import VacuumBuilder
|
|
6
|
+
from ...build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
7
|
+
from ...build_components.entities.core.zero_dimensional.atom.builder import AtomAtCoordinateBuilder
|
|
8
|
+
from ...build_components.entities.core.zero_dimensional.atom.configuration import AtomAtCoordinateConfiguration
|
|
9
|
+
from ...build_components.metadata import MaterialWithBuildMetadata
|
|
10
10
|
from ..slab import SlabMaterialAnalyzer
|
|
11
11
|
|
|
12
12
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
3
|
from ....utils import get_center_of_coordinates
|
|
4
|
-
from ...
|
|
4
|
+
from ...build_components.entities.reusable.three_dimensional.supercell.helpers import create_supercell
|
|
5
5
|
from ...modify import filter_by_condition_on_coordinates
|
|
6
6
|
from ...utils import transform_coordinate_to_supercell
|
|
7
7
|
from .. import BaseMaterialAnalyzer
|
|
@@ -6,9 +6,9 @@ from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dim
|
|
|
6
6
|
SupercellMatrix2DSchema,
|
|
7
7
|
)
|
|
8
8
|
from mat3ra.made.material import Material
|
|
9
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
9
10
|
from pydantic import model_validator
|
|
10
11
|
|
|
11
|
-
from ...build.slab.slab.configuration import SlabConfiguration
|
|
12
12
|
from .utils.holders import MatchedSubstrateFilmConfigurationHolder
|
|
13
13
|
from .zsl import ZSLInterfaceAnalyzer
|
|
14
14
|
|
|
@@ -7,11 +7,13 @@ from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
|
|
|
7
7
|
from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
|
|
8
8
|
SupercellMatrix2DSchema,
|
|
9
9
|
)
|
|
10
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.build_parameters import SlabBuilderParameters
|
|
11
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
|
|
12
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
10
13
|
|
|
11
|
-
from ...build.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
from ...build.slab.strained_supercell_slab.configuration import SlabStrainedSupercellConfiguration
|
|
14
|
+
from ...build.pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
|
|
15
|
+
SlabStrainedSupercellConfiguration,
|
|
16
|
+
)
|
|
15
17
|
from ..interface.utils.holders import MatchedSubstrateFilmConfigurationHolder
|
|
16
18
|
|
|
17
19
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
from typing import Tuple
|
|
2
2
|
|
|
3
3
|
from mat3ra.made.material import Material
|
|
4
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
4
5
|
|
|
5
|
-
from ...
|
|
6
|
-
from ...
|
|
6
|
+
from ...modify import translate_to_center
|
|
7
|
+
from ...operations.core.unary import rotate
|
|
7
8
|
from ..other import get_surface_area
|
|
8
9
|
from . import InterfaceAnalyzer
|
|
9
10
|
from .utils.holders import MatchedSubstrateFilmConfigurationHolder
|
|
@@ -2,7 +2,9 @@ from typing import Optional
|
|
|
2
2
|
|
|
3
3
|
from mat3ra.code.entity import InMemoryEntityPydantic
|
|
4
4
|
|
|
5
|
-
from ....build.
|
|
5
|
+
from ....build.pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
|
|
6
|
+
SlabStrainedSupercellConfiguration,
|
|
7
|
+
)
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
class MatchedSubstrateFilmConfigurationHolder(InMemoryEntityPydantic):
|
|
@@ -8,11 +8,11 @@ from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
|
|
|
8
8
|
from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
|
|
9
9
|
SupercellMatrix2DSchema,
|
|
10
10
|
)
|
|
11
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.builder import SlabBuilder
|
|
11
12
|
from mat3ra.utils.matrix import convert_2x2_to_3x3
|
|
12
13
|
from pymatgen.analysis.interfaces.coherent_interfaces import ZSLGenerator as PymatgenZSLGenerator
|
|
13
14
|
|
|
14
|
-
from ...
|
|
15
|
-
from ...build.slab.slab.builder import SlabBuilder
|
|
15
|
+
from ...build_components import MaterialWithBuildMetadata
|
|
16
16
|
from ..interface.simple import InterfaceAnalyzer
|
|
17
17
|
from ..interface.utils.holders import MatchedSubstrateFilmConfigurationHolder
|
|
18
18
|
from ..utils import calculate_von_mises_strain
|
|
@@ -4,7 +4,7 @@ from mat3ra.code.vector import Vector3D
|
|
|
4
4
|
from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
6
|
|
|
7
|
-
from ..
|
|
7
|
+
from ..build_components.metadata import MaterialWithBuildMetadata
|
|
8
8
|
from ..convert import from_pymatgen, to_pymatgen
|
|
9
9
|
from ..entities import MillerIndices, Termination, TerminationHolder
|
|
10
10
|
from ..third_party import PymatgenSlab, PymatgenSlabGenerator, label_pymatgen_slab_termination
|
|
@@ -5,7 +5,9 @@ from mat3ra.code.array_with_ids import ArrayWithIds
|
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
6
|
from scipy.spatial._ckdtree import cKDTree
|
|
7
7
|
|
|
8
|
-
from .. import BondDirections
|
|
8
|
+
from ..bond_directions.bond_directions import BondDirections
|
|
9
|
+
from ..bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
|
|
10
|
+
from ..build_components.entities.auxiliary.zero_dimensional.crystal_site import CrystalSite, CrystalSiteList
|
|
9
11
|
from .rdf import RadialDistributionFunction
|
|
10
12
|
from .utils import decorator_handle_periodic_boundary_conditions
|
|
11
13
|
|
|
@@ -2,10 +2,10 @@ from typing import Callable, List, Literal, Optional
|
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
from mat3ra.made.material import Material
|
|
5
|
+
from mat3ra.made.tools.build.processed_structures.two_dimensional.passivation.enums import SurfaceTypesEnum
|
|
5
6
|
from scipy.spatial import cKDTree
|
|
6
7
|
|
|
7
8
|
from ..convert import decorator_convert_material_args_kwargs_to_atoms, to_pymatgen
|
|
8
|
-
from ..enums import SurfaceTypesEnum
|
|
9
9
|
from ..third_party import ASEAtoms, PymatgenIStructure
|
|
10
10
|
from ..utils import decorator_convert_position_to_coordinate
|
|
11
11
|
from .utils import decorator_handle_periodic_boundary_conditions
|
|
@@ -2,12 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Type
|
|
4
4
|
|
|
5
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.build_parameters import SlabBuilderParameters
|
|
6
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
5
7
|
from mat3ra.made.utils import adjust_material_cell_to_set_gap_along_direction, get_atomic_coordinates_extremum
|
|
6
8
|
|
|
7
|
-
from ..
|
|
8
|
-
from ..
|
|
9
|
-
from ..build.slab.slab.configuration import SlabConfiguration
|
|
10
|
-
from ..build.vacuum.configuration import VacuumConfiguration
|
|
9
|
+
from ..build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
10
|
+
from ..build_components.metadata import MaterialWithBuildMetadata
|
|
11
11
|
from .build_metadata_analyzer import BuildMetadataAnalyzer
|
|
12
12
|
from .crystal_site.crystal_site_analyzer import CrystalSiteAnalyzer
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
|
-
from .bond_directions_templates_for_element import BondDirectionsTemplatesForElement
|
|
3
|
+
from ...bond_directions.bond_directions_templates_for_element import BondDirectionsTemplatesForElement
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class BondDirectionsForElementList(List[BondDirectionsTemplatesForElement]):
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
from .metadata import
|
|
2
|
-
|
|
1
|
+
from ..build_components.metadata import (
|
|
2
|
+
BuildMetadata,
|
|
3
|
+
MaterialBuildMetadata,
|
|
4
|
+
MaterialWithBuildMetadata,
|
|
5
|
+
)
|
|
6
|
+
from ..build_components import (
|
|
3
7
|
BaseConfigurationPydantic,
|
|
4
8
|
BaseBuilderParameters,
|
|
5
9
|
BaseSingleBuilder,
|
|
@@ -7,3 +11,15 @@ from .base import (
|
|
|
7
11
|
TypeBuildParameters,
|
|
8
12
|
BaseConfigurationPydanticChild,
|
|
9
13
|
)
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"BuildMetadata",
|
|
17
|
+
"MaterialBuildMetadata",
|
|
18
|
+
"MaterialWithBuildMetadata",
|
|
19
|
+
"BaseConfigurationPydantic",
|
|
20
|
+
"BaseBuilderParameters",
|
|
21
|
+
"BaseSingleBuilder",
|
|
22
|
+
"TypeConfiguration",
|
|
23
|
+
"TypeBuildParameters",
|
|
24
|
+
"BaseConfigurationPydanticChild",
|
|
25
|
+
]
|
|
@@ -4,24 +4,20 @@ from .base import (
|
|
|
4
4
|
InterfaceBuilderParameters,
|
|
5
5
|
create_simple_interface_between_slabs,
|
|
6
6
|
)
|
|
7
|
-
from .zsl import (
|
|
8
|
-
create_zsl_interface,
|
|
9
|
-
create_zsl_interface_between_slabs,
|
|
10
|
-
)
|
|
11
7
|
from .commensurate import (
|
|
12
8
|
create_commensurate_interface,
|
|
13
9
|
get_commensurate_strained_configurations,
|
|
14
10
|
)
|
|
11
|
+
from .enums import StrainModes
|
|
15
12
|
from .twisted import (
|
|
16
13
|
TwistedNanoribbonsInterfaceConfiguration,
|
|
17
14
|
create_twisted_interface,
|
|
18
15
|
)
|
|
19
|
-
from .utils import
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
from .utils import get_optimal_film_displacement, get_slab, remove_duplicate_interfaces
|
|
17
|
+
from .zsl import (
|
|
18
|
+
create_zsl_interface,
|
|
19
|
+
create_zsl_interface_between_slabs,
|
|
23
20
|
)
|
|
24
|
-
from .enums import StrainModes
|
|
25
21
|
|
|
26
22
|
__all__ = [
|
|
27
23
|
# Base interface classes
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
from typing import Optional, Any, Type, Union
|
|
1
|
+
from typing import Optional, Any, Type, Union, cast
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
|
-
from .
|
|
6
|
+
from mat3ra.made.utils import AXIS_TO_INDEX_MAP
|
|
7
7
|
from .build_parameters import InterfaceBuilderParameters
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
|
|
12
|
-
from ...stack.configuration import StackConfiguration
|
|
13
|
-
from ....analyze import BaseMaterialAnalyzer
|
|
14
|
-
from ....analyze.lattice import get_material_with_primitive_lattice
|
|
15
|
-
from ....convert.interface_parts_enum import InterfacePartsEnum
|
|
16
|
-
from ....modify import (
|
|
17
|
-
translate_by_vector,
|
|
18
|
-
wrap_to_unit_cell,
|
|
19
|
-
translate_to_center,
|
|
8
|
+
from .configuration import InterfaceConfiguration
|
|
9
|
+
from .....pristine_structures.two_dimensional.slab_strained_supercell.builder import SlabStrainedSupercellBuilder
|
|
10
|
+
from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
|
|
11
|
+
SlabStrainedSupercellConfiguration,
|
|
20
12
|
)
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
13
|
+
from ......analyze import BaseMaterialAnalyzer
|
|
14
|
+
from ......analyze.lattice import get_material_with_primitive_lattice
|
|
15
|
+
from ......build_components import MaterialWithBuildMetadata
|
|
16
|
+
from ......build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
|
|
17
|
+
from ......build_components.operations.core.combinations.stack.configuration import StackConfiguration
|
|
18
|
+
from ......convert.interface_parts_enum import InterfacePartsEnum
|
|
19
|
+
from ......modify import translate_by_vector, translate_to_center, wrap_to_unit_cell
|
|
20
|
+
from ......operations.core.unary import supercell
|
|
21
|
+
from ......operations.core.utils import should_skip_stacking
|
|
24
22
|
|
|
25
23
|
|
|
26
24
|
class InterfaceBuilder(StackNComponentsBuilder):
|
|
@@ -40,7 +38,7 @@ class InterfaceBuilder(StackNComponentsBuilder):
|
|
|
40
38
|
SlabStrainedSupercellConfiguration: SlabStrainedSupercellBuilder,
|
|
41
39
|
}
|
|
42
40
|
|
|
43
|
-
def _generate(self, configuration:
|
|
41
|
+
def _generate(self, configuration: InterfaceConfiguration) -> MaterialWithBuildMetadata:
|
|
44
42
|
film_material = self._stack_component_to_material(configuration.film_configuration, configuration)
|
|
45
43
|
substrate_material = self._stack_component_to_material(configuration.substrate_configuration, configuration)
|
|
46
44
|
|
|
@@ -80,9 +78,10 @@ class InterfaceBuilder(StackNComponentsBuilder):
|
|
|
80
78
|
self,
|
|
81
79
|
material: MaterialWithBuildMetadata,
|
|
82
80
|
post_process_parameters: Optional[Any],
|
|
83
|
-
configuration: Optional[
|
|
81
|
+
configuration: Optional[InterfaceConfiguration] = None,
|
|
84
82
|
) -> MaterialWithBuildMetadata:
|
|
85
|
-
|
|
83
|
+
build_params = cast(InterfaceBuilderParameters, self.build_parameters)
|
|
84
|
+
if build_params.make_primitive:
|
|
86
85
|
# TODO: check that this doesn't warp material or flip it -- otherwise raise and skip
|
|
87
86
|
primitive_material = get_material_with_primitive_lattice(material, return_original_if_not_reduced=True)
|
|
88
87
|
|
|
@@ -115,7 +114,7 @@ class InterfaceBuilder(StackNComponentsBuilder):
|
|
|
115
114
|
return f"Interface, Strain {strain:.3f}pct"
|
|
116
115
|
|
|
117
116
|
def _update_material_name(
|
|
118
|
-
self, material: Union[Material, MaterialWithBuildMetadata], configuration:
|
|
117
|
+
self, material: Union[Material, MaterialWithBuildMetadata], configuration: InterfaceConfiguration
|
|
119
118
|
) -> MaterialWithBuildMetadata:
|
|
120
119
|
base_name = self.get_base_name_from_configuration(
|
|
121
120
|
configuration.film_configuration, configuration.substrate_configuration
|
|
@@ -5,11 +5,13 @@ from mat3ra.esse.models.materials_category.compound_pristine_structures.two_dime
|
|
|
5
5
|
InterfaceConfigurationSchema,
|
|
6
6
|
)
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from
|
|
12
|
-
from
|
|
8
|
+
from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
|
|
9
|
+
SlabStrainedSupercellConfiguration,
|
|
10
|
+
)
|
|
11
|
+
from ......analyze.utils import calculate_von_mises_strain
|
|
12
|
+
from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
13
|
+
from ......build_components.operations.core.combinations.stack.configuration import StackConfiguration
|
|
14
|
+
from ......utils import unwrap
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class InterfaceConfiguration(StackConfiguration, InterfaceConfigurationSchema):
|
|
@@ -21,6 +23,7 @@ class InterfaceConfiguration(StackConfiguration, InterfaceConfigurationSchema):
|
|
|
21
23
|
]
|
|
22
24
|
]
|
|
23
25
|
xy_shift: List[float] = InterfaceConfigurationSchema.model_fields["xy_shift"].default # in Angstroms
|
|
26
|
+
|
|
24
27
|
type: str = "InterfaceConfiguration"
|
|
25
28
|
|
|
26
29
|
@property
|
|
@@ -3,13 +3,13 @@ from typing import List, Optional
|
|
|
3
3
|
from mat3ra.code.array_with_ids import ArrayWithIds
|
|
4
4
|
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
|
-
from ....analyze.interface import InterfaceAnalyzer
|
|
7
|
-
from .builder import InterfaceBuilder
|
|
8
6
|
from .build_parameters import InterfaceBuilderParameters
|
|
7
|
+
from .builder import InterfaceBuilder
|
|
9
8
|
from .configuration import InterfaceConfiguration
|
|
10
|
-
from
|
|
11
|
-
from
|
|
12
|
-
from
|
|
9
|
+
from ......analyze.interface import InterfaceAnalyzer
|
|
10
|
+
from ......analyze.slab import SlabMaterialAnalyzer
|
|
11
|
+
from ......build_components import MaterialWithBuildMetadata
|
|
12
|
+
from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def create_simple_interface_between_slabs(
|
|
@@ -4,13 +4,14 @@ from mat3ra.code.array_with_ids import ArrayWithIds
|
|
|
4
4
|
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
5
5
|
|
|
6
6
|
from mat3ra.made.material import Material
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from
|
|
12
|
-
from
|
|
13
|
-
from
|
|
7
|
+
from .. import InterfaceBuilder, InterfaceConfiguration
|
|
8
|
+
from .....pristine_structures.two_dimensional.slab_strained_supercell.configuration import (
|
|
9
|
+
SlabStrainedSupercellConfiguration,
|
|
10
|
+
)
|
|
11
|
+
from ......analyze.interface import CommensurateLatticeInterfaceAnalyzer
|
|
12
|
+
from ......analyze.lattice import get_material_with_conventional_lattice
|
|
13
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
14
|
+
from ......build_components.metadata import MaterialWithBuildMetadata
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
def get_commensurate_strained_configurations(
|
|
@@ -4,12 +4,11 @@ from mat3ra.code.array_with_ids import ArrayWithIds
|
|
|
4
4
|
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
5
5
|
|
|
6
6
|
from mat3ra.made.material import Material
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
12
|
-
from ....analyze.lattice import get_material_with_conventional_lattice
|
|
7
|
+
from .. import InterfaceBuilder, InterfaceConfiguration
|
|
8
|
+
from ......analyze.interface import TwistedNanoribbonsInterfaceAnalyzer
|
|
9
|
+
from ......analyze.lattice import get_material_with_conventional_lattice
|
|
10
|
+
from ......build_components import MaterialWithBuildMetadata
|
|
11
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
def create_twisted_interface(
|
|
@@ -4,11 +4,11 @@ import numpy as np
|
|
|
4
4
|
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
6
|
from .enums import StrainModes
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
7
|
+
from .....build_components import MaterialWithBuildMetadata
|
|
8
|
+
from .....convert.interface_parts_enum import INTERFACE_LABELS_MAP
|
|
9
|
+
from .....modify import interface_displace_part, filter_by_label
|
|
10
|
+
from .....optimize import evaluate_calculator_on_xy_grid
|
|
11
|
+
from .....third_party import PymatgenInterface
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def remove_duplicate_interfaces(
|
|
@@ -3,15 +3,17 @@ from typing import List, Optional, Tuple, Union
|
|
|
3
3
|
from mat3ra.code.array_with_ids import ArrayWithIds
|
|
4
4
|
|
|
5
5
|
from mat3ra.made.material import Material
|
|
6
|
-
from
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
from
|
|
6
|
+
from ......analyze.interface import ZSLInterfaceAnalyzer
|
|
7
|
+
from ......analyze.lattice import get_material_with_conventional_lattice
|
|
8
|
+
from ......analyze.slab import SlabMaterialAnalyzer
|
|
9
|
+
from ......build.compound_pristine_structures.two_dimensional.interface import (
|
|
10
|
+
InterfaceBuilderParameters,
|
|
11
|
+
InterfaceBuilder,
|
|
12
|
+
InterfaceConfiguration,
|
|
13
|
+
)
|
|
14
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.helpers import create_slab
|
|
15
|
+
from ......build_components import MaterialWithBuildMetadata
|
|
16
|
+
from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
def create_zsl_interface(
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
|
|
3
|
-
from .
|
|
3
|
+
from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilderParameters
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class GrainBoundaryLinearBuilderParameters(
|
|
6
|
+
class GrainBoundaryLinearBuilderParameters(InterfaceBuilderParameters):
|
|
7
7
|
max_supercell_matrix_int: Optional[int] = None
|
|
8
8
|
limit_max_int: Optional[int] = 30
|
|
9
9
|
angle_tolerance: float = 0.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .
|
|
3
|
-
from
|
|
1
|
+
from .build_parameters import GrainBoundaryLinearBuilderParameters
|
|
2
|
+
from .configuration import GrainBoundaryLinearConfiguration
|
|
3
|
+
from ....compound_pristine_structures.two_dimensional.interface import InterfaceBuilder
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class GrainBoundaryLinearBuilder(InterfaceBuilder):
|
|
@@ -6,8 +6,8 @@ from mat3ra.esse.models.materials_category.defective_structures.one_dimensional.
|
|
|
6
6
|
grain_boundary_linear.configuration import GrainBoundaryLinearConfigurationSchema
|
|
7
7
|
|
|
8
8
|
# fmt: on
|
|
9
|
-
from
|
|
10
|
-
from
|
|
9
|
+
from ....compound_pristine_structures.two_dimensional.interface import InterfaceConfiguration
|
|
10
|
+
from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class GrainBoundaryLinearConfiguration(InterfaceConfiguration, GrainBoundaryLinearConfigurationSchema):
|