@mat3ra/made 2025.8.5-0 → 2025.8.7-1
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 +13 -17
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/base/__init__.py +2 -2
- 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/compound_pristine_structures/two_dimensional/interface/base/helpers.py +134 -0
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +6 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/commensurate/helpers.py +9 -8
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/__init__.py +2 -2
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/twisted/helpers.py +6 -7
- 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/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +6 -0
- package/src/py/mat3ra/made/tools/build/{interface → compound_pristine_structures/two_dimensional/interface}/zsl/helpers.py +14 -12
- 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 +8 -8
- 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 +12 -9
- 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 +10 -8
- 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 +10 -8
- 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 +107 -37
- 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 +7 -4
- package/tests/py/unit/test_tools_build_defect/test_island.py +3 -3
- 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 +12 -10
- 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 +3 -3
- package/tests/py/unit/test_tools_build_grain_boundary.py +12 -3
- package/tests/py/unit/test_tools_build_interface.py +34 -12
- package/tests/py/unit/test_tools_build_interface_zsl.py +10 -9
- 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/interface/base/helpers.py +0 -63
- package/src/py/mat3ra/made/tools/build/interface/commensurate/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/interface/zsl/__init__.py +0 -6
- 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/build_parameters.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/configuration.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
|
+
]
|
|
@@ -2,26 +2,22 @@ from .base import (
|
|
|
2
2
|
InterfaceConfiguration,
|
|
3
3
|
InterfaceBuilder,
|
|
4
4
|
InterfaceBuilderParameters,
|
|
5
|
-
|
|
6
|
-
)
|
|
7
|
-
from .zsl import (
|
|
8
|
-
create_zsl_interface,
|
|
9
|
-
create_zsl_interface_between_slabs,
|
|
5
|
+
create_interface_simple_between_slabs,
|
|
10
6
|
)
|
|
11
7
|
from .commensurate import (
|
|
12
|
-
|
|
8
|
+
create_interface_commensurate,
|
|
13
9
|
get_commensurate_strained_configurations,
|
|
14
10
|
)
|
|
11
|
+
from .enums import StrainModes
|
|
15
12
|
from .twisted import (
|
|
16
13
|
TwistedNanoribbonsInterfaceConfiguration,
|
|
17
|
-
|
|
14
|
+
create_interface_twisted,
|
|
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_interface_zsl,
|
|
19
|
+
create_interface_zsl_between_slabs,
|
|
23
20
|
)
|
|
24
|
-
from .enums import StrainModes
|
|
25
21
|
|
|
26
22
|
__all__ = [
|
|
27
23
|
# Base interface classes
|
|
@@ -29,16 +25,16 @@ __all__ = [
|
|
|
29
25
|
"InterfaceBuilder",
|
|
30
26
|
"InterfaceBuilderParameters",
|
|
31
27
|
# Simple interface
|
|
32
|
-
"
|
|
28
|
+
"create_interface_simple_between_slabs",
|
|
33
29
|
# ZSL interface
|
|
34
|
-
"
|
|
35
|
-
"
|
|
30
|
+
"create_interface_zsl",
|
|
31
|
+
"create_interface_zsl_between_slabs",
|
|
36
32
|
# Commensurate interface
|
|
37
|
-
"
|
|
33
|
+
"create_interface_commensurate",
|
|
38
34
|
"get_commensurate_strained_configurations",
|
|
39
35
|
# Twisted interface
|
|
40
36
|
"TwistedNanoribbonsInterfaceConfiguration",
|
|
41
|
-
"
|
|
37
|
+
"create_interface_twisted",
|
|
42
38
|
# Utilities
|
|
43
39
|
"get_optimal_film_displacement",
|
|
44
40
|
"get_slab",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from .configuration import InterfaceConfiguration
|
|
2
2
|
from .builder import InterfaceBuilder
|
|
3
3
|
from .build_parameters import InterfaceBuilderParameters
|
|
4
|
-
from .helpers import
|
|
4
|
+
from .helpers import create_interface_simple_between_slabs
|
|
5
5
|
|
|
6
6
|
__all__ = [
|
|
7
7
|
"InterfaceConfiguration",
|
|
8
8
|
"InterfaceBuilder",
|
|
9
9
|
"InterfaceBuilderParameters",
|
|
10
|
-
"
|
|
10
|
+
"create_interface_simple_between_slabs",
|
|
11
11
|
]
|
|
@@ -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
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
from typing import List, Optional, Tuple, Union
|
|
2
|
+
|
|
3
|
+
from mat3ra.code.array_with_ids import ArrayWithIds
|
|
4
|
+
|
|
5
|
+
from mat3ra.made.material import Material
|
|
6
|
+
from .build_parameters import InterfaceBuilderParameters
|
|
7
|
+
from .builder import InterfaceBuilder
|
|
8
|
+
from .configuration import InterfaceConfiguration
|
|
9
|
+
from ......analyze.interface import InterfaceAnalyzer
|
|
10
|
+
from ......analyze.slab import SlabMaterialAnalyzer
|
|
11
|
+
from ......build.pristine_structures.two_dimensional.slab.helpers import create_slab
|
|
12
|
+
from ......build_components import MaterialWithBuildMetadata
|
|
13
|
+
from ......build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def create_interface_simple_between_slabs(
|
|
17
|
+
substrate_slab: MaterialWithBuildMetadata,
|
|
18
|
+
film_slab: MaterialWithBuildMetadata,
|
|
19
|
+
gap: Optional[float] = None,
|
|
20
|
+
vacuum: float = 10.0,
|
|
21
|
+
xy_shift: List[float] = [0, 0],
|
|
22
|
+
reduce_result_cell_to_primitive: bool = False,
|
|
23
|
+
) -> Material:
|
|
24
|
+
"""
|
|
25
|
+
Create an interface between two slab materials with specified parameters.
|
|
26
|
+
No strain matching is performed, the interface is created as a simple stack of two slabs.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
substrate_slab (MaterialWithBuildMetadata): Substrate slab material.
|
|
30
|
+
film_slab (MaterialWithBuildMetadata): Film slab material.
|
|
31
|
+
gap (Optional[float]): Gap between the two materials, in Angstroms.
|
|
32
|
+
Distance between top most atom of the substrate and bottom most atom of the film.
|
|
33
|
+
vacuum (float): Size of the vacuum layer in Angstroms.
|
|
34
|
+
xy_shift (List[float]): Shift in x and y directions, in Angstroms.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
Material: The interface material.
|
|
38
|
+
"""
|
|
39
|
+
substrate_analyzer = SlabMaterialAnalyzer(material=substrate_slab)
|
|
40
|
+
film_analyzer = SlabMaterialAnalyzer(material=film_slab)
|
|
41
|
+
|
|
42
|
+
analyzer = InterfaceAnalyzer(
|
|
43
|
+
substrate_slab_configuration=substrate_analyzer.build_configuration,
|
|
44
|
+
film_slab_configuration=film_analyzer.build_configuration,
|
|
45
|
+
substrate_build_parameters=substrate_analyzer.build_parameters,
|
|
46
|
+
film_build_parameters=film_analyzer.build_parameters,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
film_configuration = analyzer.film_strained_configuration
|
|
50
|
+
substrate_configuration = analyzer.substrate_strained_configuration
|
|
51
|
+
vacuum_configuration = VacuumConfiguration(
|
|
52
|
+
size=vacuum,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
config = InterfaceConfiguration(
|
|
56
|
+
stack_components=[substrate_configuration, film_configuration, vacuum_configuration],
|
|
57
|
+
xy_shift=xy_shift,
|
|
58
|
+
gaps=ArrayWithIds.from_values([gap]),
|
|
59
|
+
)
|
|
60
|
+
builder = InterfaceBuilder(
|
|
61
|
+
build_parameters=InterfaceBuilderParameters(make_primitive=reduce_result_cell_to_primitive)
|
|
62
|
+
)
|
|
63
|
+
interface = builder.get_material(config)
|
|
64
|
+
return interface
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def create_interface_simple(
|
|
68
|
+
substrate_crystal: Union[Material, MaterialWithBuildMetadata],
|
|
69
|
+
film_crystal: Union[Material, MaterialWithBuildMetadata],
|
|
70
|
+
substrate_miller_indices: Tuple[int, int, int] = (0, 0, 1),
|
|
71
|
+
film_miller_indices: Tuple[int, int, int] = (0, 0, 1),
|
|
72
|
+
substrate_number_of_layers: int = 1,
|
|
73
|
+
film_number_of_layers: int = 1,
|
|
74
|
+
substrate_termination_formula: Optional[str] = None,
|
|
75
|
+
film_termination_formula: Optional[str] = None,
|
|
76
|
+
substrate_xy_supercell_matrix: List[List[int]] = [[1, 0], [0, 1]],
|
|
77
|
+
film_xy_supercell_matrix: List[List[int]] = [[1, 0], [0, 1]],
|
|
78
|
+
gap: Optional[float] = None,
|
|
79
|
+
vacuum: float = 10.0,
|
|
80
|
+
xy_shift: List[float] = [0, 0],
|
|
81
|
+
use_conventional_cell: bool = True,
|
|
82
|
+
reduce_result_cell_to_primitive: bool = False,
|
|
83
|
+
) -> Material:
|
|
84
|
+
"""
|
|
85
|
+
Create an interface between two crystal materials by first creating slabs and then stacking them.
|
|
86
|
+
No strain matching is performed, the interface is created as a simple stack of two slabs.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
substrate_crystal (Union[Material, MaterialWithBuildMetadata]): Substrate crystal material.
|
|
90
|
+
film_crystal (Union[Material, MaterialWithBuildMetadata]): Film crystal material.
|
|
91
|
+
substrate_miller_indices (Tuple[int, int, int]): Miller indices for the substrate slab surface.
|
|
92
|
+
film_miller_indices (Tuple[int, int, int]): Miller indices for the film slab surface.
|
|
93
|
+
substrate_number_of_layers (int): Number of atomic layers in the substrate slab.
|
|
94
|
+
film_number_of_layers (int): Number of atomic layers in the film slab.
|
|
95
|
+
substrate_termination_formula (Optional[str]): Formula of the termination for substrate slab.
|
|
96
|
+
film_termination_formula (Optional[str]): Formula of the termination for film slab.
|
|
97
|
+
substrate_xy_supercell_matrix (List[List[int]]): Supercell matrix for substrate slab xy plane.
|
|
98
|
+
film_xy_supercell_matrix (List[List[int]]): Supercell matrix for film slab xy plane.
|
|
99
|
+
gap (Optional[float]): Gap between the two materials, in Angstroms.
|
|
100
|
+
vacuum (float): Size of the vacuum layer in Angstroms.
|
|
101
|
+
xy_shift (List[float]): Shift in x and y directions, in Angstroms.
|
|
102
|
+
use_conventional_cell (bool): Whether to use conventional cell for crystals.
|
|
103
|
+
reduce_result_cell_to_primitive (bool): Whether to reduce result cell to primitive.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Material: The interface material.
|
|
107
|
+
"""
|
|
108
|
+
substrate_slab = create_slab(
|
|
109
|
+
crystal=substrate_crystal,
|
|
110
|
+
miller_indices=substrate_miller_indices,
|
|
111
|
+
number_of_layers=substrate_number_of_layers,
|
|
112
|
+
vacuum=0,
|
|
113
|
+
termination_formula=substrate_termination_formula,
|
|
114
|
+
xy_supercell_matrix=substrate_xy_supercell_matrix,
|
|
115
|
+
use_conventional_cell=use_conventional_cell,
|
|
116
|
+
)
|
|
117
|
+
film_slab = create_slab(
|
|
118
|
+
crystal=film_crystal,
|
|
119
|
+
miller_indices=film_miller_indices,
|
|
120
|
+
number_of_layers=film_number_of_layers,
|
|
121
|
+
vacuum=0,
|
|
122
|
+
termination_formula=film_termination_formula,
|
|
123
|
+
xy_supercell_matrix=film_xy_supercell_matrix,
|
|
124
|
+
use_conventional_cell=use_conventional_cell,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
return create_interface_simple_between_slabs(
|
|
128
|
+
substrate_slab=substrate_slab,
|
|
129
|
+
film_slab=film_slab,
|
|
130
|
+
gap=gap,
|
|
131
|
+
vacuum=vacuum,
|
|
132
|
+
xy_shift=xy_shift,
|
|
133
|
+
reduce_result_cell_to_primitive=reduce_result_cell_to_primitive,
|
|
134
|
+
)
|